260 likes | 403 Views
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. Estrutura de Dados Heterogênea.
E N D
Universidade Federal de UberlândiaEngenharia 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
Estrutura de Dados Heterogênea • As variáveis vistas até agora eram: • Simples: definidas por tipo int, real e char; • Compostas homogêneas: definidas por array; • É possível que se criem novas estruturas a partir dos tipos básicos.
Estrutura de Dados Heterogênea • Estrutura: • Estrutura suporta K variáveis, cada qual com um tipo de dado próprio; • Sintaxe: estrutura nomestruct{ tipo1 campo1; tipo2 campo2; ... tipon campon; };
Estrutura de Dados Heterogênea • Estrutura • Ex.: estrutura cadastro { char nome[100]; int idade; char rua[50]; int numero; } ; cadastro
Estrutura de Dados HeterogêneaEstrutura - Declaração • Uma vez definida a estrutura, uma variável pode ser declarada de modo similar aos tipos já existente: • estrutura cadastro c; • Obs: por ser um tipo definido pelo programador, usa-se a palavra estrutura antes do tipo da nova variável. Palavra reservada Estrutura Já definida Nome variável
Estrutura de Dados HeterogêneaEstrutura • 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êneaEstrutura • Utilizando uma estrutura, o mesmo pode ser feito da seguinte maneira: • estrutura cadastro p1, p2, p3, p4, p5;
Estrutura de Dados HeterogêneaEstrutura • Exercício: • Declare uma estrutura capaz de armazenar o número de um aluno e 3 notas para um dado aluno.
Estrutura de Dados HeterogêneaEstrutura • 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; };
Estrutura de Dados HeterogêneaEstrutura – Acesso às Variáveis • Como é feito o acesso às variáveis da estrutura? • 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êneaEstrutura – Acesso às Variáveis • 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êneaEstrutura – 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);
Estrutura de Dados HeterogêneaEstrutura – Acesso às Variáveis • Note que cada variável dentro da estrutura pode ser acessada como se apenas ela existisse, não sofrendo nenhuma interferência das outras. • Assim: • Uma estrutura pode ser vista como um simples agrupamento de dados.
Estrutura de Dados HeterogêneaEstrutura • Voltando ao exemplo anterior, se, ao invés de 5 cadastros, quisermos fazer n cadastros?
Estrutura de Dados HeterogêneaArray de Estrutura • SOLUÇÃO: criar um array de estruturas; • Sua declaração é similar a declaração de uma array de um tipo básico: • estrutura cadastro c[100]; • Desse modo, declara-se um array de 100 cadastros.
Estrutura de Dados HeterogêneaArray de Estrutura • Lembrando: • 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êneaArray de Estrutura • Exercício: • 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êneaArray de Estrutura • Exercício: • Utilizando a estrutura do exercício anterior, faça um programa para ler o número e as 3 notas de 10 alunos. estrutura aluno { intnum_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
Estrutura de Dados HeterogêneaAtribuição entre Estruturas • Atribuições entre estruturas só podem ser feitas quando os campos são IGUAIS! • Ex.: • estrutura cadastro c1,c2; • c1 = c2; //CORRETO • Ex: • estrutura cadastro c1; • estrutura ficha c2; • c1 = c2; //ERRADO!! TIPOS DIFERENTES
Estrutura de Dados HeterogêneaAtribuiçã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.
Estrutura de Dados HeterogêneaEstrutura de Estruturas • Sendo uma estrutura um tipo de dado, podemos declarar uma estrutura que utilize outra estrutura previamente definida: estrutura endereco{ char rua[50] int numero; }; estrutura cadastro{ char nome[50]; int idade; estrutura enderecoender; };
Estrutura de Dados HeterogêneaEstrutura de Estruturas • Nesse caso, o acesso aos dados do endereço do cadastro é feito utilizando novamente o operador “.”; estrutura cadastro c; copia(c.nome,"João"); c.idade = 18; copia(c.ender.rua,"Avenida Brasil"); c.ender.numero = 1082;
Estrutura de Dados HeterogêneaEstrutura de Estruturas • Inicialização de uma estrutura de estruturas: estrutura ponto { int x, y; }; estrutura reta { estrutura ponto inicio, fim; }; estrutura reta r = {{10,20},{30,40}};
Referências • Adaptada da apresentação de André Backes; • Martins, L. G. A., Silva, A. J. Introdução à Algoritmos. Apostila da FACOM-UFU.