Buscar

aula15

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Fundamentos da 
Computação
Priscilla Fonseca de Abreu 
Braz
turmas_uerj@yahoo.com.br
Universidade do Estado do Rio de Janeiro
Instituto de Matemática e Estatística
Matrizes x Registros 
Quando trabalhamos com matrizes percebemos que somente foi 
possível agrupar informações com o mesmo tipo de dados. Caso 
fosse necessário trabalhar com mais de um tipo de dado, 
precisaríamos criar matrizes diferentes.
Por exemplo: Em uma escola é necessário armazenar os dados de 
diversos alunos. Suponha que tenhamos uma turma com 20 alunos 
e os dados necessários são: nome, matrícula, endereço e telefone. 
Na forma tradicional que vimos até o momento, seria necessário 
declarar um vetor para cada tipo de dado:
VAR
nome: array[1..20] of string;
matr: array [1..20] of integer;
end: array[1..20] of string;
tel: array[1..20] of string; 
Para solucionar esta deficiência podemos utilizar uma estrutura de 
dados chamada de Registro.
Registros 
Em um registro(record) poderemos utilizar uma estrutura que 
agrupe várias informações, que podem ser de tipos de dados 
diferentes. Por esta razão, este tipo de dado é considerado 
heterogêneo.
Sintaxe:
type
<identificador> = record
<lista de campos e seus tipos>
end;
var
<variavel> : <identificador_registro>
Ao definir uma variável do tipo record, devemos definir também 
quais serão as partes (campos) que compõem esta variável 
juntamente com seu tipo. Dessa forma, uma variável do tipo record 
pode ter campos de qualquer tipo válido do Pascal, sendo permitido 
inclusive que um record seja definido dentro do outro, ou como 
parte de um array.
Registros 
Exemplos:
Type 
discente = record
nome:string;
matricula:integer;
ende:string;
telefone:string;
n1,n2:real;
end;
Var
aluno:discente;
Type 
pessoa = record
nome:string;
idade:integer;
sexo:string;
profissao:string;
telefone:string;
end;
Var
func:pessoa;
Registros 
Utilizando Records
Para acessar os campos de um registro utilizamos o “.”
Exemplo 
Utilizando o exemplo anterior, para 
atribuir o valor “João” ao campo nome 
da variável aluno: 
aluno.nome:=‘Joao’;
Leitura de Valores:
Writeln(‘Informe o nome:’);
Readln(aluno.nome);
Type 
discente = record
nome:string;
matricula:integer;
end:string;
telefone:string;
end;
Var
aluno:discente;
Registros : exemplo
program EX_REGISTRO1;
Uses crt;
type
CAD_ALUNO = record
NOME : string;
NOTA1 : real;
NOTA2 : real;
NOTA3 : real;
NOTA4 : real;
end;
var
ALUNO : cad_aluno;
begin
writeln(‘Cadastro de Aluno’);
write(‘Informe o nome..............: ’); readln(ALUNO.NOME);
write(‘Informe a primeira nota..: ’); readln(ALUNO.NOTA1);
write(‘Informe a segunda nota...: ’); readln(ALUNO.NOTA2);
write(‘Informe a terceira nota....: ’); readln(ALUNO.NOTA3);
write(‘Informe a quarta nota......: ’); readln(ALUNO.NOTA4);
writeln;
writeln(‘Nome..: ’ , ALUNO.NOME);
writeln(‘Nota 1.: ’ , ALUNO.NOTA1 :2:2);
writeln(‘Nota 2.: ’ , ALUNO.NOTA2 :2:2);
writeln(‘Nota 3.: ’ , ALUNO.NOTA3 :2:2);
writeln(‘Nota 4.: ’ , ALUNO.NOTA4 :2:2); writeln;
readkey;
end.
Registros 
Perceba que o registro está sendo denominado como CAD_ALUNO, o 
qual será um conjunto de dados heterogêneos (um campo tipo 
string e quatro do tipo real). Desta forma, é possível guardar em 
uma mesma estrutura, vários tipos diferentes de dados.
Para armazenar as notas do aluno foram necessárias 4 variáveis. E 
se utilizássemos um vetor para armazenar as notas, como já
fizemos anteriormente?
Vejamos como ficará:
Registros : exemplo
program EXEMPLO_REGISTRO2;
uses crt;
type
NOTAS = array[1..4] of real;
CAD_ALUNO = record
NOME : string;
NOTA : notas;
end;
var
ALUNO : cad_aluno;
I : integer;
begin
writeln(‘Cadastro de Aluno’);
write(‘Informe o nome..............: ’); readln(ALUNO.NOME);
writeln;
for I := 1 to 4 do
begin
write(‘Informe a ’ , I, ‘a. nota..: ’);
readln(ALUNO.NOTA[I]);
end;
writeln;
writeln(‘Nome..: ’ , ALUNO.NOME);
for I := 1 to 4 do
writeln(‘Nota ’ ,I, ‘...: ’, ALUNO.NOTA[I]:2:2);
readkey;
end.
Registros : exemplo
Até agora, os dois exemplos apresentados só servem para a leitura e 
exibição das notas de um aluno. E se quiséssemos apresentar todos 
os dados de cinco alunos? 
Vamos ver como ficaria um programa assim:
VET
1
2
3
4
5
Nome
Nota
1 2 3 4
Registros : exemplo
program EXEMPLO_REGISTRO3;
type
NOTAS = array[1..4] of real;
CAD_ALUNO = record
NOME : string;
NOTA : notas;
end;
var
ALUNO : array[1..5] of cad_aluno;
I , J: integer;
begin
writeln(‘Cadastro de Aluno’);
for J := 1 to 5 do
begin
write(‘Informe o nome do ’, J, ‘o. aluno: ’);
readln(ALUNO[J].NOME);
for I := 1 to 4 do
begin
write(‘Informe a ’ , I, ‘a. nota: ’);
readln(ALUNO[J].NOTA[I]);
end;
end;
for J := 1 to 5 do
begin
writeln(‘Nome aluno ’ , J, ‘: ’, ALUNO[J].NOME);
for I := 1 to 4 do
writeln(‘Nota ’ ,I, ‘: ’, ALUNO[J].NOTA[I]:2:2);
end;
readkey;
end.
Exercícios
1) Crie a estrutura de código em Pascal para os seguintes 
registros:
a) b) REG
Nome
Salário 
Idade Sexo
Funcionário
Nome
Rua/Av Nº CEP
CPF
Sexo Horas trabalhadas na semana
1 2 3 4
Data de Nascimento
Tem Dependentes?
Resolução
1) Crie a estrutura de código em Pascal para os seguintes 
registros:
a) REG
Nome
Salário 
Idade Sexo
Type
registro = record
nome:string;
salario: real;
idade: integer;
sexo: char;
end;
Var
pessoa: registro;
Resolução
1) Crie a estrutura de código em Pascal para os seguintes 
registros:
b) 
Type
vet = array[1..4] of real;
funcionario = record
nome,rua, CEP, CPF:string;
num: integer;
dt_nasc:string;
sexo,dep: char;
horas:vet;
end;
Var
func: funcionario;
Funcionário
Nome
Rua/Av Nº CEP
CPF
Sexo Horas trabalhadas na 
semana
1 2 3
Data de Nascimento
Tem Dependentes?
Exercício
1) Faça um programa que leia um registro de passagem contendo 
o número da passagem, informação se o passageiro é
fumante, origem, destino, horário, número da poltrona, 
distância e calcule o preço da seguinte forma:
Para distâncias:
até 100 km: R$ 100,00
Entre 101 e 200 km: R$ 200,00
Acima de 200 km: R$ 300,00
Ao final, todo o registro deve ser impresso.
Exercício
program EX1;
uses crt;
type
CAD_VOO = record
cod, n_polt:integer;
fumante:char;
dist,vl_total:real;
ori,des,hor: string;
end;
var
pass: CAD_VOO;
begin
writeln('Mercadorias');
write('Informe o numero da passagem: ');
readln(pass.cod);
writeln('Fumante? (S ou N)');
readln(pass.fumante);
writeln('Informe a origem: ');
readln(pass.ori);
writeln('Informe o destino: ');
readln(pass.des);
writeln('Informe o horario: ');
readln(pass.hor);
writeln('Informe o numero da poltrona: ');
readln(pass.n_polt);
writeln('Informe a distância: ');
readln(pass.dist);
if (pass.dist<=100) thenpass.vl_total:=100
else
begin
if (pass.dist>200) then
pass.vl_total:=300
else
pass.vl_total:=200
end;
writeln;
writeln('...Resultados...');
writeln('Numero da passagem: ', pass.cod);
writeln('Fumante : ', pass.fumante);
writeln('Origem: ', pass.ori);
writeln('Destino: ', pass.des);
writeln('Horario: ', pass.hor);
writeln('Numero da poltrona: ', pass.n_polt);
writeln('Distância: ', pass.dist:0:1);
writeln('Valor total: ', pass.vl_total:0:1);
readkey;
end.
Exercícios
2) Elabore um programa que leia um registro de mercadoria com 
os seguintes dados: código, nome, valor unitário do produto, 
quantidade vendida e calcule o valor total a pagar. Ao final, o 
registro deve ser impresso.
3) Com base no exercício anterior, elabore um programa que 
exiba um menu que possibilite o cadastro de até 50 
mercadorias, consulta a uma mercadoria específica através do 
seu código e a impressão de todas as mercadorias 
cadastradas.

Outros materiais