Baixe Registros: Agrupamento e Acesso a Informações em Registros e Vetores e outras Notas de aula em PDF para Informática, somente na Docsity!
Algoritmos e Estruturas de Dados
Prof. Patrick Pedreira
Registros
Registros
Registros
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.
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...
Registros
Registros
uma maneira mais interessante de representaruma maneira mais interessante de representar
esse tipo de informa esse tipo de informaçção seria o agrupamentoão seria o agrupamento
desses valores de origem comum em uma desses valores de origem comum em uma úúnicanica
estrutura estrutura
h
h
á
á
as vari
as vari
á
á
veis compostas heterogêneas ou
veis compostas heterogêneas ou
registros, podem armazenar tais informa
registros, podem armazenar tais informa
ç
ç
ões
ões
dentro de algoritmos.
dentro de algoritmos.
Registros
Registros
SintaxeSintaxe
Exemplo (Exemplo (Cada campo funcionaCada campo funciona
como uma vari como uma variáável primitiva, masvel primitiva, mas
todos os campos estão agrupados no todos os campos estão agrupados no
registro registro))
Portanto, a vari
Portanto, a vari á
á vel
vel Ficha_Academia
Ficha_Academia
agrupa as informa agrupa as informaçções referentes aões referentes a
um aluno da academia um aluno da academia
Registros
Acesso aos dadosAcesso aos dados
Para se acessar esse tipo de variPara se acessar esse tipo de variáável,vel, éé necessnecessááriorio
especificar o registro nominando o campo que se especificar o registro nominando o campo que se
deseja utilizar. Os registros não podem ser acessados deseja utilizar. Os registros não podem ser acessados
sem a especifica sem a especificaçção individual dos campos, ou seja,ão individual dos campos, ou seja,
opera operaçções como as seguintes são invões como as seguintes são inváálidaslidas::
O correto seria acessar cada campo individualmente
O correto seria acessar cada campo individualmente
Registros
Podemos declarar um tipo especPodemos declarar um tipo especíífico para afico para a
declaradeclaraçção de registros. Isso facilita a utilizaão de registros. Isso facilita a utilizaççãoão
dessas estruturas e melhora a legibilidade.dessas estruturas e melhora a legibilidade.
Registros
Registros
Problema
Problema
Registro de uma crian
Registro de uma crian
ç
ç
a nascida
a nascida
Considere que uma crian
Considere que uma crian
ç
ç
a nasceu em 24 de
a nasceu em 24 de
dezembro de 2003 e a sua carteira de sa dezembro de 2003 e a sua carteira de saúúdede
ser seráá feitafeita.. Essa carteira terEssa carteira teráá, na primeira, na primeira
p páágina, os dados dela. Tais dados incluem ogina, os dados dela. Tais dados incluem o
nome, a data de nascimento, o nome do pai e nome, a data de nascimento, o nome do pai e
da mãe, o sexo, o endere da mãe, o sexo, o endereçço (rua, no (rua, núúmero,mero,
complemento, bairro, CEP, cidade, estado, complemento, bairro, CEP, cidade, estado,
pa paíís), telefone (DDD e ns), telefone (DDD e núúmero) e nmero) e núúmero demero de
declara declaraçção de nascido vivo.ão de nascido vivo.
Crie um algoritmo que defina um tipo registro Crie um algoritmo que defina um tipo registro
para armazenar tais dados e fa
para armazenar tais dados e fa
ç
ç
a a atribui
a a atribui
ç
ç
ão
ão
dos dados da crian
dos dados da crian
ç
ç
a nascida.
a nascida.
Registros
Registros
Registros
Compondo registros e vetoresCompondo registros e vetores
Registros e vetores podem ser compostos a fim deRegistros e vetores podem ser compostos a fim de
resolver problemas mais complexos.resolver problemas mais complexos.
Considerando que um vetor
Considerando que um vetor
é
é
um conjunto de
um conjunto de
elementos do mesmo tipo,elementos do mesmo tipo, éé natural que, quandonatural que, quando
precisarmos agrupar v
precisarmos agrupar v
á
á
rios registros, utilizaremos
rios registros, utilizaremos
vetores (conjuntos de registros).vetores (conjuntos de registros).
Por outro lado, eventualmente podemos necessitarPor outro lado, eventualmente podemos necessitar
que um registro tenha como um de seus campos umque um registro tenha como um de seus campos um
vetor.vetor.
Registros
Vetores de registrosVetores de registros
Os vetores de registros visam a armazenar conjuntosOs vetores de registros visam a armazenar conjuntos
de elementos complexos. Por exemplo, em vez dede elementos complexos. Por exemplo, em vez de
armazenar apenas as notas dos alunos de umaarmazenar apenas as notas dos alunos de uma
turma, os vetores de registros podem armazenar asturma, os vetores de registros podem armazenar as
informainformaçções cadastrais de todos os alunos da turma,ões cadastrais de todos os alunos da turma,
como matrcomo matríícula, nome, disciplina, semestre, etc.cula, nome, disciplina, semestre, etc.
Um vetor de registro
Um vetor de registro
é
é
declarado da seguinte forma:
declarado da seguinte forma:
Registros
Registros
Exemplo
Exemplo
A estrutura acima poderia armazenar informaA estrutura acima poderia armazenar informaçções de todos osões de todos os
alunos, de todas as disciplinas cursadas em todos semestres/anos alunos, de todas as disciplinas cursadas em todos semestres/anos
Registros
Registros
Para acessar os elementos do vetor, deve
Para acessar os elementos do vetor, deve
se
se
acessar a posi
acessar a posi
ç
ç
ão do vetor, especificando o
ão do vetor, especificando o
campo do registro, jcampo do registro, jáá que cada elemento doque cada elemento do
vetorvetor éé um registro:um registro:
Registros
Importante perceber que certas informaImportante perceber que certas informaçções são necessões são necessáárias para identificar umrias para identificar um
registro, ou seja, tornar um registro diferente de todos os outr
registro, ou seja, tornar um registro diferente de todos os outr os pertencentes ao
os pertencentes ao
vetor.vetor.
Essa parte do registroEssa parte do registro éé chamada de chave (analogiachamada de chave (analogia ààs chaves prims chaves primáárias em bancosrias em bancos
de dados). A chave de um registro pode ser natural, quando campo
de dados). A chave de um registro pode ser natural, quando campo s do registro
s do registro
podem identificar unicamente o registro (podem identificar unicamente o registro (exeploexeplo CPF), ou artificial quandoCPF), ou artificial quando éé inseridoinserido
um campo somente para identificar o registro (ex. um cum campo somente para identificar o registro (ex. um cóódigo).digo).
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.
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.
Registros
Registros
A resoluA resoluçção do primeiro item consiste na leitura e atribuião do primeiro item consiste na leitura e atribuiçção dosão dos
dados do aluno/ disciplina aos registros do vetor dados do aluno/ disciplina aos registros do vetor
Registros
Registros
Registros
Como ficaria a nova implementaComo ficaria a nova implementaççãoão
Registros
PoderPoderííamos fazer operaamos fazer operaçções em um registroões em um registro
desse tipodesse tipo
Registros
Registros
Registro com um campo vetor
Registro com um campo vetor
Registros
Registros
Problema
Problema
- Ler notas, calcular médias e exibir o
status de um aluno
Considerando a estruturaConsiderando a estrutura
Registro_Aluno_DisciplinaRegistro_Aluno_Disciplina, fa, façça um algoritmoa um algoritmo
que leia os dados de umque leia os dados de um úúnico aluno: leia asnico aluno: leia as
notas e os pesos dessas notas (mnotas e os pesos dessas notas (mááximo de 10ximo de 10
notas), calcule anotas), calcule am méédiadia aritmaritméética e registre setica e registre se
o aluno foi aprovado (mo aluno foi aprovado (méédia superior adia superior a 5).5). AlAléémm
disso, leia todos os outros dados do registro. Asdisso, leia todos os outros dados do registro. As
notas são encerradas quando o usunotas são encerradas quando o usuáário entrario entra
com o valorcom o valor - -1.1.
Registros
Registros
Vetores com registros de vetoresVetores com registros de vetores
Se um registro pode conter campos que são vetores e seSe um registro pode conter campos que são vetores e se
vetores podem
vetores podem ser compostos de registros,
de registros, é
é natural que seja
natural que seja
posspossíível a combinavel a combinaçção dessas estruturas quantas vezes se fizerão dessas estruturas quantas vezes se fizer
necessnecessáária.ria.
Para acessarmos os campos de um registro que compõe um
Para acessarmos os campos de um registro que compõe um
vetor, fazemos:vetor, fazemos:
NesteNeste caso, caso, [i][i] éé um registro, jum registro, jáá que o vetorque o vetor éé
composto de registros.composto de registros.
Para acessarmos um elemento de um vetor que seja um campoPara acessarmos um elemento de um vetor que seja um campo
de registro, fazemos da seguinte forma:de registro, fazemos da seguinte forma:
Se tivermos um vetor de registros, cujos registros tenham comoSe tivermos um vetor de registros, cujos registros tenham como
campo outro vetor, teremos que acesscampo outro vetor, teremos que acessáá--lo da seguinte forma:lo da seguinte forma:
Registros
Registros
ProblemaProblema - - 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.
Registros
Registros