UNIVERSIDADE FEDERAL DE
UBERLÂNDIA
ENGENHARIA CIVIL
TIPOS ESTRUTURADOS DE
DADOS
Professora: Fabíola Gonçalves.
AGENDA
Estrutura de Dados Heterogênea
Sintaxe
Acesso as variáveis
Atribuição de Valores
Array de Estruturas
Atribuição entre Estruturas
2
ESTRUTURA DE DADOS HETEROGÊNEA
As variáveis vistas até agora eram:
É possível que se criem novas estruturas a partir dos
tipos básicos.
3
Simples: definidas por tipo int, real e char;
Compostas homogêneas: definidas por array;
ESTRUTURA DE DADOS HETEROGÊNEA
Estrutura:
Estrutura suporta K variáveis, cada qual com um tipo
de dado próprio;
Sintaxe:
4
estrutura nomestruct{
tipo1 campo1;
tipo2 campo2;
...
tipon campon;
};
ESTRUTURA DE DADOS HETEROGÊNEA
Estrutura
Ex.:
5
estrutura cadastro {
char nome[100];
int idade;
char rua[50];
int numero;
};
char nome[100];
int idade;
char rua[50];
int numero;
cadastro
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA - DECLARAÇÃO
estrutura cadastro c;
Palavra
Estrutura
reservada Já definida
Nome variável
Obs: por ser um tipo definido pelo programador, usase a palavra estrutura antes do tipo da nova
variável.
6
Uma vez definida a estrutura, uma variável pode ser
declarada de modo similar aos tipos já existente:
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA
7
O uso de estruturas facilita na manipulação dos dados do
programa;
Imagine ter que declarar 4 cadastros, para 4
diferentes pessoas:
char nome1[100], nome2[100], nome3[100], nome4[100];
int idade1, idade2, idade3, idade4;
char rua1[50], rua2[50], rua3[50], rua4[50];
int numero1, numero2, numero3, numero4;
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA
Utilizando uma estrutura, o mesmo pode ser feito
da seguinte maneira:
estrutura cadastro p1, p2, p3, p4, p5;
8
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA
Exercício:
Declare uma estrutura capaz de armazenar o número
de um aluno e 3 notas para um dado aluno.
9
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA
Exercício:
Declare uma estrutura capaz de armazenar o número
e 3 notas para um dado aluno.
estrutura aluno {
int num_aluno;
int nota1, nota2, nota3;
};
10
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA – ACESSO ÀS VARIÁVEIS
Como é feito o acesso às variáveis da estrutura?
11
Cada variável da estrutura pode ser acessada com o operador
“.”.
Sintaxe: nomeEstrutura.nomeVariavel
Ex.:
copiar(c.nome,"João");
c.idade = 18;
copiar(c.rua,"Avenida Brasil");
c.numero = 1082;
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA – ACESSO ÀS VARIÁVEIS
12
Como nos arrays, uma estrutura pode ser previamente
inicializada:
estrutura ponto {
int x;
int y;
};
estrutura ponto p1 = { 220, 110 };
Permite inicializar as variáveis
da estrutura.
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA – ACESSO ÀS VARIÁVEIS
E se quiséssemos ler os valores das variáveis da
estrutura do teclado?
Resposta:
basta
ler
cada
variável
independentemente, respeitando seus tipos.
EX:
leia(c.nome);
escreva(c.idade);
leia(c.rua);
escreva(c.numero);
13
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA – ACESSO ÀS VARIÁVEIS
Assim:
Uma estrutura pode ser vista como um simples
agrupamento de dados.
14
Note que cada variável dentro da estrutura pode
ser acessada como se apenas ela existisse, não
sofrendo nenhuma interferência das outras.
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA
Voltando ao exemplo anterior, se, ao invés de 5
cadastros, quisermos fazer n cadastros?
15
ESTRUTURA DE DADOS HETEROGÊNEA
ARRAY DE ESTRUTURA
estrutura cadastro c[100];
Desse modo, declara-se um array de 100 cadastros.
16
SOLUÇÃO: criar um array de estruturas;
Sua declaração é similar a declaração de uma array
de um tipo básico:
ESTRUTURA DE DADOS HETEROGÊNEA
ARRAY DE ESTRUTURA
Lembrando:
17
estrutura: define um “conjunto” de variáveis
que podem ser de tipos diferentes;
array: é uma “lista” de elementos de mesmo
tipo.
Como assim?
ESTRUTURA DE DADOS HETEROGÊNEA
ARRAY DE ESTRUTURA
Exercício:
18
Utilizando a estrutura do exercício anterior, faça um
programa para ler o número e as 3 notas de 10 alunos.
ESTRUTURA DE DADOS HETEROGÊNEA
ARRAY DE ESTRUTURA
Exercício:
estrutura aluno {
int num_aluno;
int nota1, nota2, nota3;
};
estrutura aluno a[10];
int i;
para i de 1 até 10 faça
leia(a[i].num_aluno);
leia(a[i].nota1);
leia(a[i].nota2);
leia(a[i].nota3);
fim para
19
Utilizando a estrutura do exercício anterior, faça um
programa para ler o número e as 3 notas de 10 alunos.
ESTRUTURA DE DADOS HETEROGÊNEA
ATRIBUIÇÃO ENTRE ESTRUTURAS
Ex.:
estrutura cadastro c1,c2;
c1 = c2; //CORRETO
Ex:
estrutura cadastro c1;
estrutura ficha c2;
c1 = c2; //ERRADO!! TIPOS DIFERENTES
20
Atribuições entre estruturas só podem ser feitas
quando os campos são IGUAIS!
ESTRUTURA DE DADOS HETEROGÊNEA
ATRIBUIÇÃO ENTRE ESTRUTURAS
No caso de estarmos trabalhando com arrays, a
atribuição entre diferentes elementos do array
também é válida;
Ex:
estrutura cadastro c[10];
c[1] = c[2]; //CORRETO
Note que nesse caso, os tipos dos diferentes elementos
do array são sempre IGUAIS.
21
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA DE ESTRUTURAS
estrutura endereco{
char rua[50]
int numero;
};
estrutura cadastro{
char nome[50];
int idade;
estrutura endereco ender;
};
22
Sendo uma estrutura um tipo de dado, podemos
declarar uma estrutura que utilize outra estrutura
previamente definida:
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA DE ESTRUTURAS
estrutura cadastro c;
copia(c.nome,"João");
c.idade = 18;
copia(c.ender.rua,"Avenida Brasil");
c.ender.numero = 1082;
23
Nesse caso, o acesso aos dados do endereço do
cadastro é feito utilizando novamente o operador “.”;
ESTRUTURA DE DADOS HETEROGÊNEA
ESTRUTURA DE ESTRUTURAS
Inicialização de uma estrutura de estruturas:
estrutura reta {
estrutura ponto inicio, fim;
};
estrutura reta r = {{10,20},{30,40}};
24
estrutura ponto {
int x, y;
};
REFERÊNCIAS
Martins, L. G. A., Silva, A. J. Introdução à
Algoritmos. Apostila da FACOM-UFU.
25
Adaptada da apresentação de André Backes;