Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Veiga de Almeida Algoritmos e Linguagem I 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 registros. 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 registro, sendo cada ficha completa identificada como um código de registro. Portanto, neste exemplo, só será possível conseguir um crediário após a efetivação do registro do cliente, sendo este registro formado pelos componentes nome, endereço e número do CPF. FICHA: 0 (ou primeiro registro) 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 Universidade Veiga de Almeida Algoritmos e Linguagem I 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 registros e permitem uma organização eficiente no armazenamento e manipulação dos dados que estão implicitamente relacionados. As características dos registros são: • Pode conter vários registros com valores (número definido); • Os valores não precisam ser do mesmo tipo de dado; • Um registro possui um único nome (identificador); • Cada registro é acessível independentemente, sendo seus elementos também independentes de acordo com o seu nome significativo. Exemplo: Primeiro Registro[0] NOME: João Carlos da Silva ENDEREÇO: Rua São José, 576 CPF: 045687158-98 Segundo Registro[1] NOME: Maria Rita Amaral ENDEREÇO: Avenida Rui Barbosa, 234 apto. 31 CPF: 132876851-01 Observe o exemplo com dois registros 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 registros em algoritmos Para que um registro seja acessado deve existir uma variável do tipo do registro declarada, sendo esta uma variável simples, um vetor ou uma matriz. Tipo <identificador> = registro <lista dos campos e seus tipos> fim_registro Var <variáveis> : <identificador> Identificador é o nome do tipo registro 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. Exemplo: Tipo TCARRO = registro marca, modelo : caractere ano: inteiro fim_registro Aula 11 - Prof. Cláudio Marques - Pág. 2 Universidade Veiga de Almeida Algoritmos e Linguagem I Var carro : TCARRO O registro 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. Marca carro.marca Modelo carro.modelo Carro Ano carro.ano 15.3. Atribuição de valores a campos de registros nos algoritmos A atribuição de valores aos campos de um registro é feita referenciando-se a variável seguida do operador ponto (“.”) e o nome do campo que receberá o valor. variável.campo ← valor Exemplo: carro.marca ← “Volkswagen” carro.modelo ← “Gol” carro.ano ← “2008” 15.4. Leitura e gravação em campos de registros nos algoritmos A leitura dos valores dos campos de um registro, bem como a escrita, são feitas através dos comandos “LEIA” e “ESCREVA”. LEIA variável.campo ESCREVA variável.campo Exemplo: LEIA carro.ano ESCREVA carro.ano Exemplo de algoritmo com variável registro: Algoritmo Médias Tipo TAluno = registro Nummat: inteiro Nome: caractere Aula 11 - Prof. Cláudio Marques - Pág. 3 Universidade Veiga de Almeida Algoritmos e Linguagem I p1, p2, p3, media: real fim_registro Var 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 ESCREVA “O aluno ”, aluno.nome, “cujo codigo de matricula é ”, aluno.nummat, “possui media”, aluno.media Fim 15.5. Conjunto de registros (Vetores ou matrizes de registros) Em geral, não queremos guardar informações de um único carro ou de um único funcionário. Podemos também ter conjuntos de registros (carros, funcionários), referenciáveis por um mesmo nome e individualizados por índices. Ou seja, podemos utilizar vetores ou matrizes de registros. Considere o registro de uma mercadoria de uma loja: O conjunto de mercadorias da loja poderia ser agrupado numa variável composta heterogênea MERCADORIAS, onde cada elemento deste conjunto é um registro constituído por quatro componentes (CÓDIGO, NOME, PRECO e ESTOQUE). CÓDIGO NOME 7721 CAMISA AZUL PREÇO ESTOQUE 148200 2732 Tipo TMercadoria = registro nome: caractere código, estoque: inteiro preço: real fim_registro Var mercadorias : vet [1..3] de Tmercadoria Aula 11 - Prof. Cláudio Marques - Pág. 4 Universidade Veiga de Almeida Algoritmos e Linguagem I Nome mercadorias[2].nome Código mercadorias[2].codigo Preço mercadorias[2].preco Estoque mercadorias[2].estoque Nome mercadorias[3].nome Código mercadorias[3].codigo Preço mercadorias[3].preco Estoque mercadorias[3].estoque Nome mercadorias[1].nome Código mercadorias[1].codigo Preço mercadorias[1].preco mercadorias Estoque mercadorias[1].estoque Exemplo de algoritmo com vetor de registros 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 Tipo TPessoa = registro Nome, sexo: caractere idade: inteiro fim_registro Var pessoas : vet [1..40] de TPessoa n, I: inteiro Início 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 Universidade Veiga de Almeida Algoritmos e Linguagem I 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 Fim Aula 11 - Prof. Cláudio Marques - Pág. 6 Tipo Var Tipo Var Tipo Var Início Fim Tipo Var Tipo Var Início Fim
Compartilhar