Вы находитесь на странице: 1из 17

Estruturas Compostas

Laboratório de Programação I
Profa Sandra Piovesan
Estruturas (struct)
• “structs” são Estruturas de Dados Heterogêneas
• Uma estrutura agrupa várias variáveis numa só.
• Funciona como uma espécie de “ficha”. A ficha
armazena diversos dados relacionados, porém de tipos
diferente.
• A estrutura, então, serve para agrupar um conjunto de
dados não similares, formando um novo tipo de dados.
Estruturas (struct)
• Declaração:
struct nome_do_tipo_da_estrutura
{
tipo_campo1 nome_campo1;
tipo_campo2 nome_campo2;
...
} variáveis_que_armazenam_a_estrutura;

Onde:
– tipo_campo1, tipo_campo2: tipos de dados em C (char, int, float,
double, char[])
Estruturas (struct)
• Exemplo 1:
struct tipo_ficha_cadastral
{
char nome[50];
long int RA;
int idade;
} aluno1, aluno2;
strcpy(aluno1.nome , “Joao da Silva”);
aluno1.RA = 992042;
aluno1.idade = 21;
strcpy(aluno2.nome , “Jose dos Santos”);
aluno2.RA = 899932;
aluno2.idade = 19;
Estruturas (struct)
• Exemplo 2:
struct data
{
int dia, mes, ano;
} data1, data2;

data1.dia = 23;
data1.mes = 11;
data1.ano = 1971;
data2.dia = 15;
data2.mes = 9;
data2.ano = 2008;
Estruturas (struct)

• Exemplo 2: É possível calcular quantos anos tem


uma pessoa que nasceu na “data1”, se hoje é
“data2”?
Estruturas (struct)
• Exemplo 2: É possível calcular quantos anos tem uma
pessoa que nasceu na “data1”, se hoje é “data2”?

int idade;
idade = data2.ano – data1.ano;
if ( data1.mes > data2.mes )
idade = idade - 1;
else
if (p.mes == mes)
if (p.dia > dia)
idade = idade - 1;
Estruturas (struct)

• Exemplo 2 com função: É possível calcular quantos


anos tem uma pessoa que nasceu na “data1”, se hoje é
“data2”?
• Será que conseguimos fazer uma função que calcule
isto?
int calc_idade(struct data d1, struct data d2)
Estruturas (struct)
int calc_idade(struct data d1, struct data d2 )
{
int idade;
idade = d2.ano – d1.ano;
if ( d1.mes > d2.mes )
idade = idade - 1;
else
if (d1.mes == d2.mes)
if (d1.dia > d2.dia)
idade = idade - 1;
return(idade);
}
Estruturas (struct)
struct data
{
int dia, mes, ano;
} data1, data2;

int calc_idade(struct data d1, struct data d2);

int main(){
int idade_calculada;
data1.dia = 23;data1.mes = 11; data1.ano = 1971;
data2.dia = 15;data2.mes = 9;data2.ano = 2008;
idade_calculada = calc_idade(data1, data2);
printf(“A idade do prof. eh %d anos!\n”, idade_calculada);
}
Estruturas Compostas(struct)
• Declaração Estruturas Compostas:
struct nome_do_tipo_da_estrutura
{
struct nome_de_outra_estrutura nome_campo1;
tipo_campo2 nome_campo2;
...
} variáveis_que_armazenam_a_estrutura;

• Desta forma, uma estrutura pode ser parte de outra


estrutura!
Estruturas Compostas(struct)
• Exemplo:
struct tipo_data
{
int dia, mes, ano;
}
struct tipo_ficha_cadastral
{
char nome[50];
struct tipo_data nascimento;
int idade;
} aluno1;
strcpy(aluno1.nome , “Joao da Silva”);
aluno1.nascimento.dia = 11;
aluno1.nascimento.mes = 2;
aluno1.nascimento.ano=1990;
Estruturas (struct)
• Exemplo 3:
– Criar um programa em C que leia 4 pontos num plano cartesiano,
e o armazene na estrutura “retângulo” definida abaixo, verificando
se os 4 pontos formam realmente um retângulo.
struct ponto {
int x;
int y;
};
struct retangulo {
struct ponto p1;
struct ponto p2;
struct ponto p3;
struct ponto p4;
} ret1;
1 - Utilize a Struct abaixo mostrar na tela o
cadastro de uma pessoa:

struct tipo_endereco
{
char rua [50];
int numero;
char bairro [20];
char cidade [30];
char sigla_estado [3];
long int CEP;
};
struct ficha_pessoal
{
char nome [50];
long int telefone;
struct tipo_endereco endereco;
};
2 - Faça um programa com a Struct:
struct cadastro {
char nome[20];
char end[50];
char telefone[11];
};

Esta estrutura deve coletar do teclado o


cadastro de 5 pessoas.
3 - Criar uma estrutura chamada que armazena o
número e a média de 4 aluno. Na função main:
criar uma variável que é uma estrutura
DadosAluno; ler o numero e a nota de cada aluno
e armazenar na variável criada. Exibir na tela o
número e a nota de cada aluno e a média do
grupo.
4 - Escreva um programa que receba um
número inteiro que representa um intervalo
de tempo medido em minutos e devolva o
correspondente número de horas e minutos
(por exemplo, converte 131 minutos em 2
horas e 11 minutos). Use uma struct como a
seguinte: struct hm { int horas; int minutos; }.