Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos II 2º Aula Registros Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: • entender o conceito de registros; • saber como programar variáveis de registros em um algoritmo. Pessoal, para iniciarmos nossos estudos, nesta disciplina, vamos ver as estruturas de dados heterogêneas, chamadas também de Registros. Esse conceito permite que se agrupem dados de tipos diferentes, com alguma relação lógica entre eles em uma variável única, facilitando a estruturação dos dados do programa. Esse é um tópico muito importante para a programação, pois além de ajudar na organização de variáveis, vários avanços na programação se basearam nesse conceito, como a Programação Orientada a Objetos (que você verá em outra disciplina). Como sempre, se houver alguma dúvida, sempre utilizem as ferramentas de apoio que estão à sua disposição. Boa aula ! Bons estudos! 11 Seções de estudo 1 - Introdução aos Registros 1 - Introdução aos Registros 2 - Como criar e usar Registros 3 - Usando conjuntos dentro de um Registro 4 - Usando conjunto de registros Você viu, na aula anterior, que podemos criar variáveis compostas por um tipo só, denominadas de variáveis compostas homogêneas. Porém, na vida real, várias situações envolvem dados de diversos tipos, por exemplo: 1. Uma pessoa pode ser identificada pelo seu nome (caractere), sua idade (inteiro), sua altura (real), pelo seu sexo (pode ser uma variável do tipo caractere) e se é um doador de órgãos (como os valores possíveis são sim ou não, podemos colocar do tipo lógico, para representar isso); 2. Uma reserva de um hotel pode ser identificada pelo nome do responsável (caractere), quantidade de hóspedes (inteiro), e a data de saída (caractere); 3. Um produto em uma loja tem um nome (caractere), valor (real) e a sua quantidade (inteiro). Para abrigar essas possibilidades, podemos usar as variáveis compostas heterogêneas, também denominadas de registros. Um registro é como se fosse um tipo novo de dados a ser acrescido no algoritmo. Esse tipo define campos a serem preenchidos. 2 - Como criar e usar Registros Como falamos, um registro é um tipo de dados em que você define quais campos serão compostos de uma variável desse tipo. Assim, na linguagem PORTUGOL, devemos declarar primeiro a estrutura do registro. Para isso, usamos a sintaxe: tipo <Identificador> = registro <lista de campos> fimregistro Atenção: O bloco tipo sempre deve ser declarado antes do bloco var. Após declararmos o registro, podemos criar variáveis desse tipo, por meio do bloco var. Ao invés de usarmos um dos tipos primitivos de dados (inteiro, real, caractere e lógico), usamos o identificador do registro que criamos. Depois de criarmos as variáveis desse tipo, podemos usá- las em nosso código, de forma similar que usamos em variáveis comuns. A única diferença que devemos atentar é que no registro, devemos indicar qual campo dele devemos usar. Para isso, devemos usar a sintaxe <nome da variável>.<nome do campo>. A seguir, vamos mostrar alguns exemplos de uso de registros, dentro de um algoritmo. Exemplo 1: Escreva um algoritmo que leia e apresente os dados de uma pessoa. Uma pessoa tem como dados seu nome, sua idade, sua altura, seu sexo (deve ser lido um caractere M ou F) e se a pessoa é doadora de órgãos ou não. algoritmo “Exemplo Pessoa” //declara aqui o tipo pessoa tipo Pessoa = registro nome : caractere idade : inteiro altura : real sexo : caractere doadorOrgaos : logico fimregistro var cidadao : Pessoa //Aqui declaramos uma variável do tipo Pessoa inicio //leia os dados da pessoa leia(cidadao.nome) leia(cidadao.idade) leia(cidadao.altura) leia(cidadao.sexo) leia(cidadao.doadorOrgaos) //escreva os dados da pessoa escreva(cidadao.nome) escreva(cidadao.idade) escreva(cidadao.altura) escreva(cidadao.sexo) escreva(cidadao.doadorOrgaos) fimalgoritmo Exemplo 2: Escreva um algoritmo que leia e exiba na tela o nome, o seu preço e a quantidade em estoque de um produto na loja. algoritmo “Exemplo Produtos” //declara aqui o tipo Reg_Produtos tipo Reg_Produtos = registro nome : caractere preco : real estoque : inteiro fimregistro var produto : Reg_Produtos //Aqui declaramos uma variável do tipo Reg_Produtos inicio //leia os dados do produto leia(produto.nome) leia(produto.preco) leia(produto.estoque) //escreva os dados desse produto escreva(produto.nome) escreva(produto.preco) escreva(produto.estoque) fimalgoritmo 12Algoritmos II 3 - Usando conjuntos dentro de um Registro Você pode usar além dos tipos primitivos, um conjunto (vetor ou matriz) de um tipo primitivo para ser um campo de um registro. Para isso, podemos usar a mesma notação que usamos para declarar um registro, só que aplicado a um campo de um registro. Supomos que queremos registrar as notas de um aluno durante quatro bimestres, além de seu nome. Para isso, podemos usar essa sintaxe: tipo Registro_Aluno = registro nome : caractere notas : vetor[1..4] de real fimregistro Para ler ou escrever dados em um campo composto de um vetor, usamos a mesma sintaxe para um campo comum, acrescentado pelo índice do elemento que devemos usar, assim como acessamos índices de um vetor ou matriz, que vimos em Algoritmos I. leia(aluno.notas[1]) escreva(aluno.notas[1]) Vamos ver um exemplo para contextualizar essa situação. Exemplo 3: Escreva um algoritmo que leia e escreva os dados de um aluno. Um aluno é identificado pelo seu nome, além das notas dos seus quatro bimestres. algoritmo “Exemplo Alunos” //declara aqui o tipo para o aluno tipo Registro_Aluno = registro nome : caractere notas : vetor[1..4] de real fimregistro var aluno : Registro_Aluno //Aqui declaramos uma variável do tipo Registro_Aluno i : inteiro inicio //leia os dados desse aluno leia(aluno.nome) para i de 1 ate 4 passo 1 faca leia(aluno.notas[i]) fimpara //escreva os dados desse aluno escreva(aluno.nome) para i de 1 ate 4 passo 1 faca escreva(aluno.notas[i]) fimpara fimalgoritmo 4 - Usando conjunto de registros Normalmente, quando escrevemos algoritmos envolvendo registros, usamos um conjunto de registros para armazenar uma quantidade de dados. Um conjunto funciona da mesma forma que um vetor ou uma matriz, mas ao invés de cada posição armazenar um dado, ela armazena uma série de campos que foram definidos previamente. Figura 1 - Estrutura de um vetor de registros. Fonte: Acervo Pessoal. Para criarmos um vetor ou uma matriz de registros, devemos primeiro declarar a estrutura do registro, da mesma forma que você aprendeu na seção II. Depois, você deve declarar uma variável como um vetor ou uma matriz, da mesma forma que você aprendeu na disciplina anterior. A diferença fica no fato de que, ao invés de declarar como um dos tipos primitivos, você declara essa variável como sendo do tipo que você definiu previamente. Por exemplo, um registro para registrar alunos da seguinte estrutura: //declara aqui o tipo para o aluno tipo Registro_Aluno = registro nome : caractere notas : vetor[1..4] de real fimregistro Podemos declarar um vetor para armazenar 8 alunos da seguinte forma: var alunos : vetor[1..8] de Registro_Aluno Para declarar uma matriz de 8 linhas e 8 colunas para os alunos, podemos usar a seguinte instrução: alunosM :vetor[1..8,1..8] de Registro_Aluno Depois, para usar os dados do conjunto de registros, devemos primeiramente indicar o nome do conjunto, depois indicamos o(s) índice(s) do conjunto a ser acessado. Em seguida, colocamos um ponto e indicamos o nome do campo a ser acessado. //lê o campo nome da primeira posição do vetor de alunos leia(alunosV[1].nome) //escreve na tela a segunda posição do campo notas da posição 2,2 da matriz de alunos. escreva(alunosM[2,2].notas[2]) Para ilustrar melhor, vamos ver mais um exemplo: Exemplo 4: Escreva um algoritmo que registre os dados de 10 praças de pedágio. Para cada praça, registre o nome da rodovia, o quilômetro da rodovia onde fica esse pedágio, a cidade onde fica esse pedágio e o seu valor. No final calcule o valor total dos pedágios neste trajeto. algoritmo “Calcula Pedágios” tipo Registro_Pedagios = registro nome : caractere quilometro : inteiro cidade : caractere valor : real fimregistro var pedagios : vetor[1..10] de Registro_Pedagios i : inteiro valorTotal : real 13 inicio para i de 1 ate 10 passo 1 faca leia(pedagios[i].nome) leia(pedagios[i].quilometro) leia(pedagios[i].cidade) leia(pedagios[i].valor) fimpara valorTotal <- 0.0 para i de 1 ate 10 passo 1 faca valorTotal <- valorTotal + pedagios[i].valor fimpara escreva(valorTotal) fimalgoritmo Com esse exemplo, finalizamos aqui os nossos estudos sobre registro. Na próxima aula, você estudará sobre como modularizar os seus códigos, usando procedimentos e registros. Retomando a aula Chegamos ao final da nossa segunda aula, que tratamos sobre registros. Vamos recordar? 1 - Introdução aos Registros Um registro é um tipo de dados criado pelo próprio programador, o qual são definidos campos a serem preenchidos. É como se fosse um vetor, mas ao invés de abrigar dados do mesmo tipo, abrigam dados de tipos diferentes. E ao invés de ser indexado por um número, um dado é identificado pelo nome de seu campo. 2 - Como criar e usar Registros Devemos declarar os tipos dos registros antes da declaração das variáveis. Para cada tipo é definido um nome e a lista de campos que terá esse registro. Depois disso, declaramos uma variável como sendo do tipo do registro, da mesma forma que uma variável comum. Para acessar os campos dessa variável, indicamos o nome da variável e o nome do respectivo campo a ser acessado, separado por um ponto. 3 - Usando conjuntos dentro de um Registro Vetores e matrizes podem ser campos de um registro. Para isso, o campo deve ser declarado da mesma forma que é declarado um vetor. Para acessar esses campos, deve ser colocado o índice do elemento que deseja acessar depois do nome do campo. 4 - Usando conjunto de registros Finalmente, podemos criar vetores e matrizes de um registro. Essas variáveis devem ser declaradas como se fosse um vetor ou uma matriz comum. Para acessar, deve se colocar o índice do elemento que deseja acessar depois do nome da variável. MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de Oliveira. Algoritmos - lógica para desenvolvimento de programação. 2. ed. São Paulo: Érica, 2014. VENANCIO, Claudio Ferreira. Desenvolvimento de Algoritmos: Uma Nova Abordagem. São Paulo: Érica, 2000. FARRER, Harry; et. al. Algoritmos Estruturados. 3. ed. São Paulo: LTC, 1999. Vale a pena Vale a pena ler Vale a pena acessar REVISTABW. Criando Registros e Funções em Lógica de Programação.Revista Brasileira de Web, 2013. Disponível em: <http://www.revistabw.com.br/revistabw/criando- registros-e-funcoes-em-logica-de-programacao/>. Criado em: 05 jan. 2013. Última atualização: 24 jul. 2015. Visitado em: 26 out. 2017 CARDOSO, José Victor. Algoritmo – Registros. Jvictor, 2010. Disponível em: < http://jvictorcardoso. blogspot.com.br/2010/02/algoritmo-registros.html>. Acesso em: 26 out. 2017. Minhas anotações
Compartilhar