Escolar Documentos
Profissional Documentos
Cultura Documentos
Computação
Unidade X: Registros
1
Escola Nacional de Ciências Estatísticas
Introdução
TP_CLIENTE
NOME
ENDEREÇO
IDADE
SEXO
Para que seja possível utilizar um registro dentro de um programa Pascal, é preciso,
primeiro executar uma ação denominada especificação do registro. Esse processo consiste
simplesmente em dizer ao Pascal quais os campos que farão parte do registro. A
especificação de um registro é realizada com o uso de duas palavras-chave: TYPE e
RECORD. Somente depois da especificação do registro, torna-se possível declarar
variáveis como sendo do tipo especificado. Observe os exemplos a seguir
2
Escola Nacional de Ciências Estatísticas
{especificação do registro}
type NOME_DO_REGISTRO = Record
campo1: tipo_do_campo1;
campo2: tipo_do_campo2;
...
campon: tipo_do_campon;
end;
3
Escola Nacional de Ciências Estatísticas
var P: TP_PESSOA;
Exemplo X.6 - acesso aos campos da variável CLIENTE (que é do tipo TP_CLIENTE).
CLIENTE.IDADE := 38;
CLIENTE.SEXO := 'M';
4
Escola Nacional de Ciências Estatísticas
begin
{inicializa PROD1 e PROD2}
PROD1.CODIGO := 1;
PROD1.NOME := 'ERVILHAS EM CONSERVA';
PROD2.CODIGO := 2;
PROD2.NOME := 'MILHO VERDE EM CONSERVA';
readln;
end.
5
Escola Nacional de Ciências Estatísticas
Exemplo X.7 - criação de uma tabela capaz de armazenar o NOME, CPF, SEXO e SALÁRIO de
10 funcionários de uma empresa.
Um vetor de registros é algo muito similar a uma matriz. A diferença está apenas no
fato de que em uma matriz todas as colunas precisam ser do mesmo tipo de dado (a matriz é
toda de inteiros ou toda de real, por exemplo). De maneira oposta, em um vetor de registros
cada coluna pode ter um tipo diferente. No exemplo acima, NOME é do tipo string, CPF é
do tipo string[11], SALARIO do tipo real e SEXO do tipo char.
Para armazenar um dado numa determinada célula da tabela criada com a
especificação de um vetor de registros, basta fazer como o indicado no exemplo a seguir:
6
Escola Nacional de Ciências Estatísticas
NOME LITERAL
SALARIO_HORA NUMÉRICO
HORAS_NORMAIS NUMÉRICO
HORAS_EXTRAS NUMÉRICO
program Ex1;
{especificação do registro TP_FUNCIONARIO}
type TP_FUNCIONARIO = record
NOME: string;
SAL_HORA: real;
HOR_NORM: integer;
HOR_EXTRA: integer;
end;
begin
{esse programa não faz nada…}
readln;
end.
Exemplo X.9 - Altere o Exercício 1. Faça a variável FUNC1 ser preenchida via teclado.
program Ex2;
{especificação do registro TP_FUNCIONARIO}
type TP_FUNCIONARIO = record
NOME: string;
SAL_HORA: real;
HOR_NORM: integer;
HOR_EXTRA: integer;
end;
begin
{esse programa agora faz algo}
write('NOME DO FUNCIONARIO: '); readln(FUNC1.NOME);
write('SALARIO POR HORA: '); readln(FUNC1.SAL_HORA);
write('TOTAL DE HORAS NORMAIS TRABALHADAS: '); readln(FUNC1.HOR_NORM);
write('TOTAL DE HORAS EXTRAS TRABALHADAS: '); readln(FUNC1.HOR_EXTRA);
readln;
end.
7
Escola Nacional de Ciências Estatísticas
Exemplo X.10 - Escrever um programa que receba, via teclado, a matrícula, o nome e a
média dos 5 alunos de uma turma de Programação Java. Os dados dos alunos devem ser
armazenados numa tabela em memória. Após a tabela ser carregada, imprimir os dados dos
alunos na tela.
program Ex3;
{especificação do registro TP_ALUNO}
type TP_ALUNO = record
MATRICULA: string[12];
NOME: string;
MEDIA: real;
end;
begin
{carrega os dados dos alunos}
for I:=1 to 5 do
begin
write('MATRICULA ',I,': '); readln(VET_ALUNOS[I].MATRICULA);
write('NOME ',I,': '); readln(VET_ALUNOS[I].NOME);
write('MEDIA ',I,': '); readln(VET_ALUNOS[I].MEDIA);
writeln;
end;
readln;
end.
8
Escola Nacional de Ciências Estatísticas
(a) Receba os seguintes dados de um funcionário via teclado: nome, valor do salário-
hora, total de horas normais trabalhadas (horas trabalhadas de segunda a sexta),
total de horas-extras trabalhadas (horas trabalhadas no sábado e domingo). Os
dados do funcionário devem ser armazenados num registro do tipo
TP_FUNCIONARIO, o mesmo especificado no Exercício 1.
(b) Em seguida calcule e imprima o salário que o funcionário receberá no mês. Para
calcular o salário use a seguinte fórmula:
9
Escola Nacional de Ciências Estatísticas
program Ex4;
var F: TP_FUNCIONARIO;
SAL_MEN: real; {salário}
OPCAO: char;
begin
repeat
{lê os dados do funcionario}
write('NOME DO FUNCIONARIO: '); readln(F.NOME);
write('SALARIO POR HORA: '); readln(F.SAL_HORA);
write('TOTAL DE HORAS NORMAIS TRABALHADAS: '); readln(F.HOR_NORM);
write('TOTAL DE HORAS EXTRAS TRABALHADAS: '); readln(F.HOR_EXTRA);
writeln('O salario a ser pago para ', F.NOME, ' eh: ', SAL_MEN:6:2);
10
Escola Nacional de Ciências Estatísticas
Exemplo X.12 - Foi realizada uma pesquisa sobre características físicas de 50 habitantes de
uma certa cidade localizada na Serra Gaúcha. De cada habitante foram coletados os
seguintes dados: sexo, altura, idade e cor dos olhos (A = Azuis, V = Verdes, C = Castanhos,
N = Negros).
(a) A quantidade de pessoas do sexo feminino cuja idade esteja entre 20 e 30 anos;
(b) A quantidade de pessoas com olhos azuis ou verdes e altura igual ou superior a 170cm.
program Ex5;
{especificação do registro TP_PESSOA}
type TP_PESSOA = record
SEXO: char; {F = Feminino, M = Masculino}
ALTURA: integer; {em centimetros}
IDADE: integer;
OLHOS: char; {A = Azuis, V = Verdes, C = Castanhos, N = Negros}
end;
begin
11
Escola Nacional de Ciências Estatísticas
{PASSO 2: LAÇO QUE DETERMINA OS ITENS (a) e (b) COM O AUXÍLIO
DE DIVERSOS COMANDOS "IF" E DAS VARIÁVEIS AUXILIARES}
QTD_F_20_30:=0;
QTD_AV_170:=0;
readln;
end.
Neste programa, no primeiro passo realizamos a leitura dos dados via teclado e no
segundo passo é feito um loop para obter os resultados das questões (a) e (b). Embora esse
cálculo pudesse ser feito logo na entrada de dados, preferimos separar em duas fases
distintas para o exemplo ficar mais didático.
12
Escola Nacional de Ciências Estatísticas
Exercícios Propostos
(3) Escreva o trecho de programa Pascal capaz de armazenar uma tabela com o NOME,
IDADE, ALTURA e PESO de 14 jogadoras que integram uma equipe de vôlei feminino.
(4) Escreva o trecho de programa Pascal capaz de armazenar uma tabela com os dados de
200 filmes que farão parte da programação de um canal de TV a Cabo no mês de
Novembro. Na hora de especificar o registro, pense no que seriam os principais atributos de
um filme exibido pela TV a Cabo (exemplos: título do filme, data e hora da exibição, e
outros atributos a sua escolha).
(5) A Pesquisa Industrial Anual (PIA) é uma pesquisa do IBGE tem por objetivo identifi-
car as características estruturais básicas do segmento empresarial da atividade industrial no
Brasil1. A pesquisa é realizada da seguinte forma: um pesquisador do IBGE visita cada em-
presa selecionada para fazer parte da amostra da pesquisa e realiza uma entrevista com os
responsáveis de cada empresa, com o auxílio de um questionário. Dentre as principais va-
riáveis pesquisadas pela PIA, encontram-se: (i) CNPJ, (ii) endereço completo, (iii) valor
gasto com o pagamento salários no ano da pesquisa, (iv) receita líquida de vendas no ano
da pesquisa, (v) total de pessoas ocupadas na empresa (funcionários) em 31/12 do ano da
pesquisa e (vi) descrição da atividade da empresa (ex: “fabricação de sapatos”, “fabricação
de comida congelada”).
De posse destas informações, crie o trecho de programa Pascal capaz de armazenar em me-
mória uma tabela com os dados de 45.000 empresas entrevistadas pela PIA.
1
http://www.ibge.gov.br/home/estatistica/economia/industria/pia/empresas/notatecnica2005.pdf
13
Escola Nacional de Ciências Estatísticas
(7) Faça um programa que carregue a matrícula e as notas na VAE 1 e VAE 2 de 30 alunos
de um curso de computação. Use um vetor de registros para armazenar os dados. Em
seguida, imprima:
(8) Foi feita uma pesquisa de audiência de canais de TV através de dados coletados em
1000 residências. Para cada residência visitada, foi anotado o número do canal onde a TV
estava sintonizada (existem apenas sete canais possíveis: 2, 4, 6, 7, 9, 11 e 13) e a
quantidade de pessoas que estavam assistindo ao canal em questão (para simplificar,
considere que existia apenas um televisor em cada residência). Elabore um programa que:
• Leia os dados desta pesquisa a partir do teclado (ou seja, leia pares de valores
CANAL e QUANTIDADE DE PESSOAS) e armazene num vetor de registros.
• Ao final da leitura o programa deve imprimir dados sobre a audiência dos canais,
ou seja, o total de pessoas que assistiu a cada um dos 7 canais.
(9) Foi realizada uma pesquisa entre 20 habitantes de uma cidade. De cada habitante foram
coletados os dados: idade, sexo, renda familiar e número de filhos. Faça um programa que
leia esses dados, armazenando em um vetor de registros. Em seguida calcule e mostre:
(10) Agora que o campeonato de futebol da Croácia chegou ao fim, será preciso escrever
um programa em Pascal para divulgar as estatísticas desta fantástica competição. O
campeonato é disputado por 12 clubes em 22 rodadas (cada rodada é composta por 6
jogos). Levando em conta esta informação, escreva um programa que:
14
Escola Nacional de Ciências Estatísticas
15