PCI- Registros Profa. Mercedes Gonzales Márquez Conceito Variáveis compostas heterogêneas (não homogêneas) • Estruturas: variáveis que podem conter uma coleção de objetos (potencialmente) de tipos diferentes. – cada componente de uma estrutura é chamado de membro ou campo; – cada campo está associado a um tipo de dado; Sintaxe struct <identificador estrutura> { <tipo 1> <identificador campo 1>; <tipo 2> <identificador campo 2>; ...... <tipo k> <identificador campo k>; }; Ou typedef struct{ <tipo 1> <identificador campo1>; <tipo 2> <identificador campo2>; ...... <tipo k> <identificador campok>; Exemplos de declarações struct ponto { int coordx; int coordy; } struct ponto pto1, pto2; ou typedef struct{ int coordx; int coordy; }Ponto; Ponto pto1,pto2; Acesso aos campos de uma estrutura • Para acessar os campos de uma estrutura usa-se o nome da variável do tipo struct e o nome do campo que se quer acessar, separando-os com . (ponto). – No exemplo anterior: pto1.coordx e pto1.coordy acessam os campos coordenada x e coordenada y respectivamente. Acesso aos campos de uma estrutura • Exemplo Ponto pto1, pto2; pto1.coordx = 0.0; pto1.coordy = 0.0; pto2.coordx = pto1.cx + 2; pto2.coordy = pto1.cy + 3; Exercício: Faça um programa que permita o ingresso de 10 pontos no plano e que escreva em que quadrante eles se encontram. Acesso aos campos de uma estrutura #include <stdio.h> #include <stdlib.h> typedef struct{ int x; int y; }Ponto; Ponto pto[10]; int main() { int i; for (i=0; i<10; i++){ scanf (“%d”, &pto[i].x, &pto[i].y); Acesso aos campos de uma estrutura scanf (“%d”, &pto[i].x, &pto[i].y); if (pto[i].x>0 && pto[i].y>0) printf(“O ponto está no primeiro quadrante”); else if (pto[i].x<0 && pto[i].y>0) printf(“O ponto está no segundo quadrante”); else if (pto[i].x<0 && pto[i].y<0) printf(“O ponto está no terceiro quadrante”); else if (pto[i].x>0 && pto[i].y<0) printf(“O ponto está no quarto quadrante”); return 0; } Exemplos de Estruturas O exemplo a seguir cria um tipo de dado que pode armazenar as informações de um aluno da escola Exemplos de Estruturas /* TipoAluno.C */ /* Cria uma estrutura para armazenar dados de um aluno */ #include <stdio.h> #include <stdlib.h> typedef struct /*Inicio da definição da estrutura */ { int nmat; /* Número da matrícula */ float nota[3]; /* Notas */ float media; /* Média */ }Aluno; /* Fim da definição */ Exemplos de Estruturas int main() { Aluno Jose; /* Declara uma variável do tipo struct Aluno */ Jose.nmat= 456; Jose.nota[0]= 7.5; Jose.nota[1]= 5.2; Jose.nota[2]= 8.4; Jose.media= (Jose.nota[0] + Jose.nota[1] + Jose.nota[2])/3.0; printf("Matricula: %d\n", Jose.nmat); printf("Media : %.2f\n", Jose.media); system("PAUSE"); return 0; Aninhamento de Estruturas typedef struct { int dia; int mes; int ano; }data; typedef struct { char nome[10]; int cargo; data data_nasc; } TpFuncionario; Aninhamento de Estruturas TpFuncionario func1; func1.data_nasc.dia = 01; func1.data_nasc.mes = 10; func1.data_nasc.ano = 1001; Exercício: • Crie o tipo de dados Estoque e Estoque2. Implemente os algoritmos dos slides 20 e 21 de Registros da matéria de algoritmos. • Implemente os exercícios 4 até o 8 dos slides de Registros da matéria de algoritmos.