Preview only show first 10 pages with watermark. For full document please download

Aed 07

Aula de Algoritmo e Estrutura de Dados do Professor Patrick Pedreira.

   EMBED


Share

Transcript

Algoritmos e Estruturas de Dados Registros  Os vetores, lidam com conjuntos de dados sempre do mesmo tipo.  Todos os elementos de um vetor são inteiros, caracteres, reais ou booleanos, mas sempre são do mesmo tipo. Registros  Porém, há outras situações que não podem ser representadas por meio de estruturas homogêneas  podemos desejar trabalhar com um objeto mais complexo que necessite agregar informações que são naturalmente atreladas ao elemento  Por exemplo, em uma videolocadora, academia de ginástica, clube de natação ou mesmo em uma consulta médica, geralmente nos solicitam uma série de informações, como: nome, RG, CPF, endereço, etc. Todas essas informações podem ser representadas por variáveis primitivas separadamente. Mas isso não seria o ideal... Prof. Patrick Pedreira Registros Registros  Sintaxe  Exemplo (Cada (Cada campo funciona como uma variá variável primitiva, mas todos os campos estão agrupados no registro) registro)  uma maneira mais interessante de representar esse tipo de informaç informação seria o agrupamento desses valores de origem comum em uma única estrutura  há as variá variáveis compostas heterogêneas ou registros, podem armazenar tais informaç informações dentro de algoritmos.  Portanto, a variá variável Ficha_Academia agrupa as informaç informações referentes a um aluno da academia 1 Please purchase 'e-PDF Converter and Creator' on http://www.e-pdfconverter.com to remove this message. Registros  Acesso aos dados  Para se acessar esse tipo de variá variável, é necessá necessário especificar o registro nominando o campo que se deseja utilizar. Os registros não podem ser acessados sem a especificaç especificação individual dos campos, ou seja, operaç operações como as seguintes são invá inválidas: lidas: Registros  Podemos declarar um tipo especí específico para a declaraç declaração de registros. Isso facilita a utilizaç utilização dessas estruturas e melhora a legibilidade.  O correto seria acessar cada campo individualmente Registros Registros  Problema - Registro de uma crianç criança nascida Considere que uma crianç criança nasceu em 24 de dezembro de 2003 e a sua carteira de saú saúde será será feita. Essa carteira terá terá, na primeira página, os dados dela. Tais dados incluem o nome, a data de nascimento, o nome do pai e da mãe, o sexo, o endereç endereço (rua, nú número, complemento, bairro, CEP, cidade, estado, paí país), telefone (DDD e nú número) e nú número de declaraç declaração de nascido vivo. Crie um algoritmo que defina um tipo registro para armazenar tais dados e faç faça a atribuiç atribuição dos dados da crianç criança nascida. 2 Please purchase 'e-PDF Converter and Creator' on http://www.e-pdfconverter.com to remove this message. Registros Registros  Apesar de o algoritmo estar correto, alguns dados poderiam ser agregados de forma mais lógica.  Por exemplo, faz sentido agrupar os dados de endereç endereço em um registro separado. Esse tipo gené genérico “Endereç Endereço” també também poderia ser utilizado para criarmos a ficha da mãe ou do médico no armazenamento dos dados de seus endereç endereço.  O mesmo vale para o telefone e a data. Nada impede a utilizaç utilização de registros como campos de outros registros. Neste caso, a implementaç implementação é a seguinte: Registros  O acesso às variá variáveis seria feito do seguinte modo  Essa estruturaç estruturação fica mais limpa, deixando os tipos mais compactos e especí específicos Registros  Exercí Exercício – Utilizando as estruturas já já definidas faç faça um algoritmo que leia as informaç informações de cadastro em um evento conforme modelo de ficha seguinte: 3 Please purchase 'e-PDF Converter and Creator' on http://www.e-pdfconverter.com to remove this message. Registros  Compondo registros e vetores  Registros e vetores podem ser compostos a fim de resolver problemas mais complexos.  Considerando que um vetor é um conjunto de elementos do mesmo tipo, é natural que, quando precisarmos agrupar vá vários registros, utilizaremos vetores (conjuntos de registros).  Por outro lado, eventualmente podemos necessitar que um registro tenha como um de seus campos um vetor. Registros  Exemplo Registros  Vetores de registros  Os vetores de registros visam a armazenar conjuntos de elementos complexos. Por exemplo, em vez de armazenar apenas as notas dos alunos de uma turma, os vetores de registros podem armazenar as informaç informações cadastrais de todos os alunos da turma, como matrí matrícula, nome, disciplina, semestre, etc.  Um vetor de registro é declarado da seguinte forma: Registros  Para acessar os elementos do vetor, devedeve-se acessar a posiç posição do vetor, especificando o campo do registro, já já que cada elemento do vetor é um registro:  A estrutura acima poderia armazenar informaç informações de todos os alunos, de todas as disciplinas cursadas em todos semestres/anos 4 Please purchase 'e-PDF Converter and Creator' on http://www.e-pdfconverter.com to remove this message. Registros Registros  Problema - Cadastrar dados de um aluno, calcular médias e indicar o status  Considere uma Faculdade com um curso (de Ciência da Computação) em que todas as médias dos alunos em todas as disciplinas serão cadastradas. Além disso, essa Faculdade necessita identificar as médias aritméticas de todas as disciplinas que um determinado aluno tirou em um determinado ano/semestre. Por último, também é necessário identificar a média, o período, o status (reprovado/aprovado) e o nome de um determinado aluno, em um semestre/ano, em uma determinada disciplina. Portanto:  a) Faça um módulo de cadastro das informações de todos os alunos. Considere que serão inseridos dados até que seja colocada a matrícula -1 ou até que o número de elementos supere o tamanho do vetor.  Importante perceber que certas informaç informações são necessá necessárias para identificar um registro, ou seja, tornar um registro diferente de todos os outros outros pertencentes ao vetor.  b) Faça um módulo que escreva todas as disciplinas, médias, status, período e nome completo de um determinado aluno nas disciplinas cursadas por ele em um determinado semestre/ano.  c) Faça um módulo que retorne um registro do vetor a partir da chave.  Essa parte do registro é chamada de chave (analogia às chaves primá primárias em bancos de dados). A chave de um registro pode ser natural, quando campos campos do registro podem identificar unicamente o registro (exeplo (exeplo CPF), ou artificial quando é inserido um campo somente para identificar o registro (ex. um có código). Registros Registros  A resoluç resolução do primeiro item consiste na leitura e atribuiç atribuição dos dados do aluno/ disciplina aos registros do vetor 5 Please purchase 'e-PDF Converter and Creator' on http://www.e-pdfconverter.com to remove this message. Registros  b. Este mó módulo recebe como parâmetros de entrada a matrí matrícula do aluno e a época (semestre/ano) em que ele cursou as disciplinas. Utilizaremos Utilizaremos os mesmo tipos definidos no item anterior. Precisamos varrer todo o vetor, pois não podemos saber onde está está o último dado procurado (se o vetor estivesse ordenado, não haveria a necessidade de procurar o vetor vetor todo, mas só só até até encontrar os registros desejados): Registros  c. O lado mais interessante deste item é a identificaç identificação da chave dos registros. Considerando a estrutura do registro  Como elementos identificadores do registro, podemos selecionar a matrí matrícula, a disciplina (uma matrí matrícula pode ter vá várias disciplinas associadas) e o momento em que a disciplina foi cursada, representado representado pelos campos Semestre e Ano. Se considerarmos que o perí período da disciplina é fixo, não precisamos incluí incluí-lo como parte da chave. Portanto, uma disciplina cursada por determinado aluno (qualquer registro do conjunto) pode ser identificada unicamente pela matrí matrícula do aluno que a cursou, pelo nome da disciplina cursada e pelo momento em que foi foi cursada.  Os outros campos não são necessá necessários para identificar o registro, servindo apenas como informaç informações adicionais do registro.  Como há há apenas um registro a ser procurado (não há há chaves repetidas), a varredura no vetor deve ser feita somente até até o registro desejado ser encontrado, e não até até o final do vetor. Devemos també também considerar a hipó hipótese de o registro solicitado não existir no vetor. Neste caso, retornaremos um registro com matrí matrícula -1. Registros Registros  Registros com vetores  Um campo do registro pode ser de qualquer tipo, até até de algum tipo definido, como um outro registro ou um vetor. A aplicaç aplicação de vetores como campos de registro é justificada pela necessidade de se agrupar conjuntos de valores a um elemento composto.  No exemplo anterior, cada registro representava uma disciplina cursada por um aluno em um dado momento. Poderí Poderíamos adaptar esse registro para incluir todas as notas das provas e trabalhos que compuseram a mé média.  Poderí Poderíamos, ainda, criar este campo como uma matriz bidimensional, em que a primeira linha armazenaria as notas que o aluno tirou e a segunda linha, o peso dessa nota na composiç composição das mé médias. 6 Please purchase 'e-PDF Converter and Creator' on http://www.e-pdfconverter.com to remove this message. Registros  Como ficaria a nova implementaç implementação Registros  Registro com um campo vetor Registros  Poderí Poderíamos fazer operaç operações em um registro desse tipo Registros  Problema - Ler notas, calcular médias e exibir o status de um aluno Considerando a estrutura Registro_Aluno_Disciplina, Registro_Aluno_Disciplina, faç faça um algoritmo que leia os dados de um único aluno: leia as notas e os pesos dessas notas (má (máximo de 10 notas), calcule a média aritmé aritmética e registre se o aluno foi aprovado (mé (média superior a 5). Alé Além disso, leia todos os outros dados do registro. As notas são encerradas quando o usuá usuário entra com o valor -1. 7 Please purchase 'e-PDF Converter and Creator' on http://www.e-pdfconverter.com to remove this message. Registros Registros  Vetores com registros de vetores  Se um registro pode conter campos que são vetores e se vetores podem ser compostos de registros, é natural que seja possí possível a combinaç combinação dessas estruturas quantas vezes se fizer necessá necessária. Para acessarmos os campos de um registro que compõe um vetor, fazemos:  Neste caso, [i] é um registro, já já que o vetor é composto de registros. Para acessarmos um elemento de um vetor que seja um campo de registro, fazemos da seguinte forma:  Se tivermos um vetor de registros, cujos registros tenham como campo outro vetor, teremos que acessá acessá-lo da seguinte forma: Registros Registros  Problema - Exibir dados dos alunos reprovados em um determinado ano/semestre.  Considere um vetor de 1.500 elementos com todos os dados (Matrícula, Disciplina, Semestre, Ano, Período, Aluno (nome), Média, Status, Notas e seus pesos) de todos os alunos de um curso de Ciência da Computação de uma certa Faculdade.  Faça um módulo que escreva o nome do aluno, a disciplina, as médias e todas as notas com seus pesos, dos alunos que reprovaram em um determinado semestre/ano. Considere que as notas são no máximo 10, e, caso haja menos notas, será armazenado no vetor o valor -1. Utilize o tipo Registro_Aluno_Disciplina definido anteriormente. 8 Please purchase 'e-PDF Converter and Creator' on http://www.e-pdfconverter.com to remove this message.