Aula 11 Conteúdo: 15. Estruturas de dados heterogêneas 15. Estruturas de Dados Heterogêneas Já vimos que os conjuntos de dados homogêneos (vetores e matrizes) armazenavam arranjos unidimensionais ou bidimensionais de elementos de um mesmo tipo, conforme a necessidade do algoritmo desenvolvido. Por exemplo, se quiséssemos armazenar as idades de um grupo de pessoas poderíamos declarar um vetor de elementos do tipo inteiro (idade: vet [1..N] de Inteiros) que estaria representando o conjunto de idades desse grupo de pessoas. Para os casos em que temos um conjunto de elementos que não são do mesmo tipo, necessitamos de uma estrutura que comporte esses tipos heterogêneos, e estaríamos definindo estruturas de dados heterogêneas, os s. 15.1. Registros Uma empresa vai fornecer o crediário para um cliente efetuar o pagamento em várias parcelas, mas para isso será necessário efetivar um cadastro dos dados mais relevantes para a localização do cliente, caso algum problema venha a ocorrer com os pagamentos. Estas informações seriam: Nome, Endereço, Número do CPF. A criação destas fichas cadastrais conterá dados com tipos diferentes, não sendo possível usar uma variável composta homogênea para guardar todos eles. Apesar disso, todos estes dados são relacionados, pois pertencem a uma mesma pessoa, ou seja, cada ficha possuirá diferentes dados (nome, endereço e CPF), mas todos eles são de um mesmo cliente, sendo todos estes dados relacionados logicamente a este cliente. Cada um dos dados que formam esta ficha é chamado de componente ou elemento do, sendo cada ficha completa identificada como um código de. Portanto, neste exemplo, só será possível conseguir um crediário após a efetivação do do cliente, sendo este formado pelos componentes nome, endereço e número do CPF. FICHA: 0 (ou primeiro ) NOME João Carlos da Silva caracter ENDEREÇO Rua São José, 576 caracter CPF 04568715898 inteiro componentes dados armazenados tipo de dados Aula 11 - Prof. Cláudio Marques - Pág. 1
Esta empresa também não fará o crediário somente para um cliente, mas para os vários clientes que possuírem um perfil interessante para a mesma. Assim, será necessário criar uma estrutura de dados que possa armazenar vários dados (composta) de tipos diferentes (heterogênea). Estas estruturas (compostas heterogêneas) também são chamadas de s e permitem uma organização eficiente no armazenamento e manipulação dos dados que estão implicitamente relacionados. As características dos s são: Pode conter vários s com valores (número definido); Os valores não precisam ser do mesmo tipo de dado; Um possui um único nome (identificador); Cada é acessível independentemente, sendo seus elementos também independentes de acordo com o seu nome significativo. Primeiro Registro[0] Segundo Registro[1] NOME: João Carlos da Silva ENDEREÇO: Rua São José, 576 CPF: 045687158-98 NOME: Maria Rita Amaral ENDEREÇO: Avenida Rui Barbosa, 234 apto. 31 CPF: 132876851-01 Observe o exemplo com dois s cadastrados. A primeira ficha contém os dados do João Carlos da Silva, enquanto que a segunda possui os dados da Maria Rita Amaral. 15.2. Declaração de s em algoritmos Para que um seja acessado deve existir uma variável do tipo do declarada, sendo esta uma variável simples, um vetor ou uma matriz. <identificador> = <lista dos campos e seus tipos> <variáveis> : <identificador> Identificador é o nome do tipo e lista dos campos e seus tipos é a relação de variáveis que serão usadas como campos, bem como seu tipo de estrutura de dados, podendo ser real, inteiro, lógico ou caractere. TCARRO = marca, modelo : caractere ano: inteiro Aula 11 - Prof. Cláudio Marques - Pág. 2
carro : TCARRO O declarado é denominado carro e possui três campos: os campos marca e modelo são do tipo caractere e o campo ano é do tipo inteiro. Carro Marca Modelo Ano carro.marca carro.modelo carro.ano 15.3. Atribuição de valores a campos de s nos algoritmos A atribuição de valores aos campos de um é feita referenciando-se a variável seguida do operador ponto (. ) e o nome do campo que receberá o valor. carro.marca Volkswagen carro.modelo Gol carro.ano 2008 variável.campo valor 15.4. Leitura e gravação em campos de s nos algoritmos A leitura dos valores dos campos de um, bem como a escrita, são feitas através dos comandos LEIA e ESCREVA. LEIA carro.ano ESCREVA carro.ano LEIA variável.campo ESCREVA variável.campo Exemplo de algoritmo com variável : Algoritmo Médias TAluno = Nummat: inteiro Nome: caractere Aula 11 - Prof. Cláudio Marques - Pág. 3
p1, p2, p3, media: real Aluno : TAluno Início ESCREVA Digite o número de matrícula do aluno: LEIA aluno.nummat ESCREVA Digite o nome do aluno: LEIA aluno.nome ESCREVA Digite a nota da 1ª prova: LEIA aluno.p1 ESCREVA Digite a nota da 2ª prova: LEIA aluno.p2 ESCREVA Digite a nota da 3ª prova: LEIA aluno.p3 aluno.media (aluno.p1 + aluno.p2 + aluno.p3) / 3 Fim ESCREVA O aluno, aluno.nome, cujo codigo de matricula é, aluno.nummat, possui media, aluno.media 15.5. Conjunto de s (Vetores ou matrizes de s) Em geral, não queremos guardar informações de um único carro ou de um único funcionário. Podemos também ter conjuntos de s (carros, funcionários), referenciáveis por um mesmo nome e individualizados por índices. Ou seja, podemos utilizar vetores ou matrizes de s. Considere o de uma mercadoria de uma loja: CÓDIGO NOME 7721 CAMISA AZUL PREÇO ESTOQUE 148200 2732 O conjunto de mercadorias da loja poderia ser agrupado numa variável composta heterogênea MERCADORIAS, onde cada elemento deste conjunto é um constituído por quatro componentes (CÓDIGO, NOME, PRECO e ESTOQUE). TMercadoria = nome: caractere código, estoque: inteiro preço: real mercadorias : vet [1..3] de Tmercadoria Aula 11 - Prof. Cláudio Marques - Pág. 4
mercadorias Nome Código Preço mercadorias[1].nome mercadorias[1].codigo mercadorias[1].preco Estoque Nome Código Preço Estoque Nome Código Preço Estoque mercadorias[1].estoque mercadorias[2].nome mercadorias[2].codigo mercadorias[2].preco mercadorias[2].estoque mercadorias[3].nome mercadorias[3].codigo mercadorias[3].preco mercadorias[3].estoque Exemplo de algoritmo com vetor de s Algoritmo que lê o nome, idade, sexo (masculino, feminino) de n pessoas (onde n 40), imprime o nome das pessoas que têm mais de 30 anos e são do sexo feminino. Algoritmo Maior_de_Trinta Início TPessoa = pessoas : vet [1..40] de TPessoa n, I: inteiro Nome, sexo: caractere idade: inteiro ESCREVA Digite o número de pessoas: ( 40) LEIA n Para i de 1 até n faça ESCREVA Digite o nome da, i, ª pessoa: LEIA pessoas[i].nome ESCREVA Digite o sexo (masculino, feminino): LEIA pessoas[i].sexo ESCREVA Digite a idade: Aula 11 - Prof. Cláudio Marques - Pág. 5
Fim Universidade Veiga de Almeida LEIA pessoas[i].idade Fim_para i 1 Enquanto i n faça Se (pessoas[i].idade > 30).e. (pessoas[i].sexo = feminino ) então ESCREVA pessoas[i].nome Fim_se i i +1 Fim_enquanto Aula 11 - Prof. Cláudio Marques - Pág. 6