Beruflich Dokumente
Kultur Dokumente
ESTRUTURAS DE DADOS
ESTRUTURAS DE DADOS
Tipos estruturados
ESTRUTURAS DE DADOS
Tipos estruturados
E%emplo:
struct ponto { &loat %$ &loat '$ #$
ESTRUTURAS DE DADOS
Tipos estruturados
E%emplo:
struct ponto p$
ESTRUTURAS DE DADOS
Tipos estruturados
ESTRUTURAS DE DADOS
Tipos estruturados
( operador de acesso ao campo (.) tem preced0ncia sobre o operador 1endere!o de2 (/).
ESTRUTURAS DE DADOS
Tipos estruturados
int main (void) { struct ponto p$ print&(3Digite as coordenadas do ponto(% '): 3)$ scan&(34& 4&35 /p.%5 /p.')$ print&(3( ponto &ornecido &oi: (4.6&54.6&)7n35 p.%5 p.')$ return +$ #
ESTRUTURAS DE DADOS
Tipos estruturados
E%emplo:
ESTRUTURAS DE DADOS
Tipos estruturados
8ar0nteses s"o necessrios pois o operador 1conte<do de2 (9) tem preced0ncia menor do =ue o operador de acesso.
ESTRUTURAS DE DADOS
Tipos estruturados
8assagem de estruturas para &un!>es: void imprime (struct ponto p) ou void imprime (struct ponto 9 pp) ???
@elAor passar apenas o ponteiro para a &un!"o5 pois copiar o ponteiro para a pilAa de e%ecu!"o B mais e&iciente do =ue copiar a estrutura inteira.
ESTRUTURAS DE DADOS
Tipos estruturados
void imprime (struct ponto9 pp) { print&(3( ponto &ornecido &oi: (4.6&54.6&)7n35 pp:;%5 pp:;')$ # void captura (struct ponto9 pp) { print&(3Digite as coordenadas do ponto(% '): 3)$ scan&(34& 4&35 /pp:;%5 /pp:;')$ #
Como &icaria a &un!"o main para leitura e impress"o de um ponto???
ESTRUTURAS DE DADOS
Tipos estruturados
Aloca!"o dinDmica de estruturas: struct ponto 9pp$ pp ) (struct ponto 9) malloc(si.eo&(struct ponto))$
ESTRUTURAS DE DADOS
Tipos estruturados
E%emplos:
Eeal B sinFnimo de &loat 8onto B sinFnimo de struct ponto declara!"o de ponto
8onto p$
ESTRUTURAS DE DADOS
Tipos estruturados
ESTRUTURAS DE DADOS
Tipos estruturados
AninAamento de estrutura: campos de uma estrutura podem ser estruturas de&inidas previamente.
typedef struct ponto { &loat %$ &loat '$ # 8onto$ struct circulo { 8onto p$ &loat r$ #
ESTRUTURAS DE DADOS
Tipos estruturados
Getores de estruturas:
Declara um vetor para arma.enar J pontos. p ) {{*.+5 *.+#5 {,.+5 *.+#5 {L.+5 J.+##$ iniciali.a!"o
ESTRUTURAS DE DADOS
Tipos estruturados
A utili.a!"o de vetores de ponteiros B mais e&iciente do =ue a utili.a!"o de vetores de estruturas por=ue ocupa somente o espa!o necessrio para arma.enar um ponteiro (L b'tes).
Ouando B necessrio alocar os dados de um ponto5 B &eita a aloca!"o dinDmica e seu endere!o B guardado no vetor de ponteiros.
ESTRUTURAS DE DADOS
Tipos estruturados
Tipo enumera!"o: conHunto de constantes inteiras com nomes =ue especi&icam valores possPveis para uma varivel da=uele tipo.
enum bool { TEQE ) *5 FARSE ) +5 #$ t'pede& enum bool Sool$ Sool r$ r pode receber apenas valores FARSE (+) ou TEQE (*)
ESTRUTURAS DE DADOS
Tipos estruturados
E%ercPcio:
Crie um tipo estruturado 1aluno2. Qm aluno deve possuir nome (cadeia com atB T+ caracteres) e matrPcula (n<mero inteiro). De&ina o novo nome 1Aluno2 para sua estrutura.
Ua &un!"o main crie um vetor de ponteiros para a estrutura aluno (cAamado tab com J posi!>es).
atribui UQRR a todos os elementos do vetor tab de alunos de tamanAo n void iniciali.a (int n5 Aluno99 tab)$
ESTRUTURAS DE DADOS
Tipos estruturados
E%ercPcio:
arma.ena os dados de um novo aluno em uma posi!"o i do vetor de tamanAo n void leAluno (int n5 Aluno99 tab5 int i)$ imprime os dados de um aluno arma.enado em uma posi!"o i do vetor void imprimeAluno(Aluno99 tab5 int i)$ remove os dados de um aluno. A posi!"o i do aluno B passada como parDmetro void retiraAluno(Aluno99 tab5 int i)$
ESTRUTURAS DE DADOS
Tipos estruturados
E%ercPcio:
imprime os dados de todos os alunos arma.enados na tabela void imprime_tudo(int n5 Aluno99 tab)$ Teste todas as &un!>es implementadas na &un!"o main.
ESTRUTURAS DE DADOS
(&erecem suporte ade=uado para a inser!"o e a remo!"o de elementos dinamicamente (n"o s"o estruturas prB:dimensionadas). 8ara cada elemento5 essas estruturas alocam memVria dinamicamente para seu arma.enamento.
ESTRUTURAS DE DADOS
W uma tBcnica de programa!"o baseada na de&ini!"o de tipos estruturados. Qm TAD procura encapsular (esconder) de =uem usa um determinado tipo a &orma concreta com =ue o tipo &oi implementado. Qm TAD B uma cole!"o bem de&inida de dados e um conHunto de operadores ou operaes =ue podem ser aplicados em tais dados.
ESTRUTURAS DE DADOS
Qma especi&ica!"o de um TAD descreve =uais dados podem ser arma.enados (caracterPsticas do TAD)5 como eles podem ser utili.ados (operaes)5 mas n"o descreve como isso B implementado no programa. Qm TAD consiste de:
Qma estrutura para arma.enamento de valores$ Qm conHunto de operadores para manipula!"o dos valores arma.enados.
ESTRUTURAS DE DADOS
( termo 1ocultao de dados2 B utili.ado para descrever essa Aabilidade. Ao usurio s"o &ornecidos a descri!"o dos valores e o conHunto de operadores do TAD5 mas a implementa!"o B invisvel e inacessvel. A separa!"o da de&ini!"o do TAD de sua implementa!"o5 permite =ue a mudan!a na implementa!"o n"o altere o programa que usa o TAD.
ESTRUTURAS DE DADOS
Qm programa em C pode ser dividido em vrios ar=uivos &ontes (e%tens"o .c) Mdulo B um ar=uivo com &un!>es =ue representam apenas parte da implementa!"o de um programa completo. A implementa!"o de um programa pode ser composta por um ou mais mVdulos. Cada mVdulo deve ser compilado separadamente gerando um ar=uivo obHeto(e%tens"o .o)
ESTRUTURAS DE DADOS
8rograma &onte
Compilador
8rograma obHeto
8ara =ue as &un!>es implementadas em um ar=uivo .c possam ser usadas por outro mVdulo5 B necessrio conAecer os protVtipos das &un!>es o&erecidas por esse ar=uivo.
ESTRUTURAS DE DADOS
Todo mVdulo de &un!>es C costuma ter associado um ar=uivo =ue contBm apenas os protVtipos das &un!>es o&erecidas pelo mVdulo e os tipos e%portados (t'pede&s5 structs5 etc). Esse ar=uivo de protVtipos tem o mesmo nome do mVdulo ao =ual est associado5 mas possui a e%tens"o .h Esse ar=uivo caracteri.a a interface do mdulo.
ESTRUTURAS DE DADOS
Deve:se documentar as &un!>es o&erecidas por um mVdulo com comentrios. Ao invBs de repetir os protVtipos de &un!>es5 todo mVdulo =ue usa as &un!>es de um ar=uivo .c deve incluir apenas o ar=uivo .A correspondente.
ESTRUTURAS DE DADOS