Вы находитесь на странице: 1из 3

Universidade Estadual de Maring Departamento de Informtica

Prof. Josiane M. Pinheiro Ferreira


Disciplina de Fundamentos de Algoritmos

Agregados Heterogneos em Pascal - Registros


Vetores e matrizes so agregados homogneos de dados, ou seja, todos os elementos de uma matriz ou vetor
so do mesmo tipo. No entanto, em muitas situaes reais preciso associar dados que possuem tipos
diferentes. Por exemplo, os dados de uma pessoa possuem tipos diferentes: nome e endereo so cadeias de
caracteres, idade e nmero de filhos so inteiros, salrio, altura e peso so do tipo real.
Podemos representar isso usando um vetor para cada dado. Por exemplo: um vetor que guarda todos os nomes,
um outro que guarda todos os endereos, outro que guarda todos os salrios, outro todas as idades, e assim
por diante.
Maria Joana Joo Pedro Jos
Vnome
0 1 2 3 4

Rua x, Rua y, Rua k,


Av z, 56 Av k, 43
Vend 123 21 33
0 1 2 3 4

1.235,00 1.285,25 1.568,20 1.050,22 956,32


Vsal
0 1 2 3 4

35 41 33 28 26
Vidade
0 1 2 3 4

Dessa forma, todos os dados de uma pessoa esto no mesmo ndice, mas de vetores diferentes. Isso dificulta a
manipulao dos dados vinculados e a manuteno das correspondncias corretas.
O ideal seria se pudssemos colocar os dados de uma pessoa todos juntas. Podemos fazer isso representando
esses dados por meio de registros.
Um registro agregado heterogneo que permite a associao de um conjunto de dados que podem ser de
tipos diferentes ou no. Um registro pode conter quantos campos forem necessrios para representar os dados
associados a algo ou algum. Em Pascal, precisamos declarar um tipo que represente a coleo de dados
desejada. Por exemplo:
type Tpessoa = record
nome, end: string[40];
salario: real;
idade: integer;
end;
var pessoa: Tpessoa; //varivel para guardar as informaes de uma pessoa

O tipo pessoa definido acima (Tpessoa) possui quatro campos: nome, end, salario e idade. De tipos diferentes,
mas todos correspondentes mesma pessoa. Aps a definio do tipo Registro, uma varivel desse tipo (pessoa)
deve ser declarada para ser usada no programa. A varivel pessoa pode guardar as informaes de apenas uma
pessoa em cada momento.
Para acessar cada um dos campos dentro de um registros usamos o . como seletor. Por exemplo, se
quisssemos colocar informaes na varivel pessoa por atribuio:
...
pessoa.nome = Maria;
pessoa.end = Rua x, 123;
pessoa.salario = 1235,00;
pessoa.idade = 35;

ou receber informaes via teclado:

writeln('Digite seu nome');


readln(pessoa.nome); //observe a forma de acesso com .
writeln('Digite seu endereo');
readln(pessoa.end);
writeln('Digite seu salrio');
readln(pessoa.salario);
writeln('Digite sua idade');
readln(pessoa.idade);

Para representar as informaes de vrias pessoas, precisamos declarar ento um agregado do tipo pessoa:
var cadastro: array [0..N] of Tpessoa;

nome:Maria nome:Joana nome:Joo nome:Pedro nome:Jos


end:Rua X, end:Rua Y, 21 end:Rua K, 33 end:Av z, 56 end:Rua k,
Cadastro

123 salario:1.285,25 salario:1.568,20 salario:1.050,22 43


salario: idade: 41 idade: 33 idade: 28 salario:956,32
1.235,00 idade: 26
idade: 35

0 1 2 3 4

Dessa forma, para acessar as informaes das posies do vetor cadastro precisamos selecionar o ndice do
vetor, seguido do campo do registro. Exemplo:
cadastro[2].nome:=Joo;
cadastro[3].end:=Av z, 56;

Ou, percorrer toda a estrutura para executar alguma ao:


for i:=0 to 4 do
begin
writeln('Digite seu nome');
readln(cadastro[i].nome); //observe a forma de acesso com .
writeln('Digite seu endereo');
readln(cadastro[i].end);
writeln('Digite seu salrio');
readln(cadastro[i].salario);
writeln('Digite sua idade');
readln(cadastro[i].idade);
end.
Exerccios:
1) Foi realizada uma pesquisa de algumas caractersticas fsicas de cinco habitantes de uma regio. De cada
habitante foram coletados os seguintes dados: sexo, cor dos olhos (A = Azuis ou C = Castanhos), cor dos
cabelos (L = Louros, P = Pretos ou C = Castanhos) e idade.
a) Crie um tipo registro para representar cada pessoa;
b) Faa uma sub-rotina que leia os dados e armazene em um vetor de estruturas;
c) Faa uma sub-rotina que mostre o contedo do vetor na tela;
d) Faa um programa principal que mostre um menu de opes e chame as sub-rotinas
correspondentes;
e) Faa uma funo que determine a mdia de idade das pessoas com olhos castanhos e cabelos
pretos. Inclua essa funo no menu de opes.
f) Faa uma funo que determine e devolva a maior idade entre os habitantes. Inclua essa
funo no menu de opes.
g) Faa uma sub-rotina que remova uma pessoa escolhida pelo usurio, deixando os registros
todos contguos no vetor. Inclua essa funo no menu de opes.

Вам также может понравиться