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.
Download

PCI-Registros