Professional Documents
Culture Documents
Estrutura de Dados.
Linguagem PASCAL 1
Arrays (“Variáveis compostas homogêneas”)
Arrays unidimensionais:
identificador: array [inicial..final] of tipo;
ex:
var Nota: array [1..10] of integer;
7,2 4,8 6,4 5,1 2,2 9,2 8,3 7,4 5,9 8,9
1 2 3 4 5 6 7 8 9 10
X:=Nota[3]; { X 6,4 }
Linguagem PASCAL 2
Arrays (“Variáveis compostas homogêneas”)
Exr: Leia cinco elementos e imprima
program Le;
var a: array[1..5] of integer;
i: integer;
begin
for i:=1 to 5 do
read (a[i]);
for i:=1 to 5 do
writeln (a[i]);
end.
Linguagem PASCAL 3
Arrays (“Variáveis compostas homogêneas”)
Exr: Ler e ordenar uma lista de N números
Linguagem PASCAL 4
Arrays (“Variáveis compostas homogêneas”)
Arrays multidimensionais:
identificador: array [i1..f1, i2..f2, ..., in..fn] of tipo;
ex:
var Matriz: array [1..4, 1..4] of integer;
1 1 2 3 4
X:=Matriz[3,2];
2 5 6 7 8
{ X10 }
3 9 10 11 12
4 13 14 15 16
1 2 3 4
Linguagem PASCAL 5
Exercício
Implementar um programa em
PASCAL que leia duas matrizes
A4x4 e B4x4 e imprima a matriz
resultado C = A*B.
Linguagem PASCAL 6
Registros (“Variáveis compostas heterogêneas”)
São conjuntos de dados logicamente relacionados,
mas de tipos diferentes.
CADASTRO PESSO AL
N om e:
E n d e re ç o :
B a ir ro : C id a d e : UF:
D a ta d e n a s c im e n to : / / P r o f is s ã o :
Linguagem PASCAL 7
Registros
Var Identificador: record
cadastro: record
nome: string[40]; componentes;
endereco: string[100];
end;
bairro: string[40];
cidade: string[40];
uf: string[2];
dia_nasc, mes_nasc, ano_nasc: integer;
profissao: string[40];
end;
Linguagem PASCAL 10
Registros
Exr:
Implementar um programa em PASCAL que leia
uma tabela de profissões composta de código,
nome e descrição da profissão. A tabela
comporta no máximo 100 profissões. Para
terminar o cadastro digite -1 no campo código.
Linguagem PASCAL 11
Arquivos
São estruturas de dados armazenadas fora da memória principal
do computador => memória secundária (HD, disquete, CD-ROM,
etc.)
Principais vantagens:
– quando a quantidade de informação é muito grande para ficar em memória;
– armazenar para uso futuro.
Tipos de arquivos:
– Binários: usam códigos binários para gravar os caracteres
• Ex: número 64 => grava o número 64 (aparece como @)
• Ex: letra A => grava o número 65
– Texto: armazena o código ASCII (arquivo fica maior!)
• Ex: número 64 => grava o 6 (cód. 54) e o 4 (cód. 53) => (aparece como 64 mesmo)
• Ex: letra A => grava o cód.65 (aparece o A mesmo)
Linguagem PASCAL 12
Arquivo binário
Organização sequêncial em registros (compostos de campos), mas o acesso pode ser direto
através do número do registro.
0 NO M E ENDEREÇO UF
1 NO M E ENDEREÇO UF
2 NO M E ENDEREÇO UF
3 NO M E ENDEREÇO UF
...
N NO M E ENDEREÇO UF
Linguagem PASCAL 13
Arquivo binário
Declaração:
var identificador: file of tipo;
Ex1:
var Notas: FILE OF integer;
Ex2:
type Pessoa = record
nome: string[40];
telefone: string[30];
endereco_completo: string[200];
end;
var Agenda: file of Pessoa;
Linguagem PASCAL 14
Arquivo binário
Associação do identificador (nome interno) ao nome
do arquivo (nome externo):
assign (identificador, ´arquivo.ext´);
Cada arquivo possui um ponteiro para a posição do
registro. Para abrir o arquivo e apontar para o início
use:
reset (identificador);
Para criar um arquivo novo (ou apagar um já
existente), abrir e apontar para o início use:
rewrite (identificador);
E para fechar após o uso:
close (identificador);
Linguagem PASCAL 15
Arquivo binário
program AbreFecha;
type Registro=record
Matricula: real;
NomeAluno: string[25];
NotaTotal: real;
end;
Arquivo = file of Registro;
var Notas: Arquivo;
begin
assign (Notas, ´NOTAS.DAT´);
rewrite (Notas);
{
Comandos para gravar no arquivo
}
close (Notas);
reset (Notas);
{
Comandos para ler do arquivo
}
close (Notas);
end. Linguagem PASCAL 16
Arquivo binário
Leitura de arquivo:
read (identificador, lista-de-registros);
Escrita em arquivo:
write (identificador, lista-de-registros);
Fim de arquivo
EOF (identificador);
Linguagem PASCAL 17
Arquivo binário
program Backup;
type Pessoa = record Nome: string[15];
Idade: integer;
end;
var A, B: file of Pessoa;
T: Pessoa;
begin
assign (A, ´dados.dat´);
assign (B, ´backup.dat´);
reset (A); rewrite (B);
while not EOF (A) do
begin
read (A, T);
write (B, T);
end;
close (A);
close (B); Linguagem PASCAL 18
end.
Arquivo binário
Acesso direto a um registro, sem a procura sequencial:
seek (identificador, numero-do-registro);
Linguagem PASCAL 19
Arquivo binário
Exr1: Faça um programa que crie uma base de dados com 10
alunos. O arquivo em disco deve conter:
– matrícula do aluno;
– nome do aluno;
– nota VEsp;
– nota VC.
Linguagem PASCAL 20
program exr1;
type Registro = record matricula: integer;
nome: string[40];
vesp: real;
vc: real;
end;
Arquivo = file of Registro;
const N=10;
var Aluno: Registro;
Turma: Arquivo;
i: integer;
begin
assign (Turma, 'ALUNOS.DAT');
rewrite (Turma);
for i:=1 to N do
begin
write (´Entre com a matrícula: ´); readln(Aluno.matricula);
write (´Entre com o nome: ´); readln(Aluno.nome);
write (´Entre com a nota de VEsp: ´); readln(Aluno.vesp);
write (´Entre com a nota de VC: ´); readln(Aluno.vc);
achei:=false; N:=0;
while (not achei) and (not EOF(Turma)) do
begin
seek (Turma, N);
read (Turma, Aluno);
if (Aluno.matricula = matricula) then achei:=true;
N:=N+1;
end;
close (Turma);
achei:=false;
N:=0;
while (not achei) and (not EOF(Turma)) do
begin
seek (Turma, N);
read (Turma, Aluno);
if (Aluno.matricula = matricula) then begin
achei:=true;
Aluno.vesp:= vesp;
Aluno.vc:=vc;
write (Turma, Aluno);
end;
N:=N+1;
end;
close (Turma);
Declaração:
var identificador: text;
• ex: var documento: text;
Linguagem PASCAL 24
Arquivo texto
Abertura de um arquivo
• Exclusivamente para leitura de um arquivo já
existente (erro de execução caso não exista):
reset (identificador);
• Exclusivamente para escrita. Cria um novo. Se já
existe apaga e cria de novo:
rewrite (identificador);
• Exclusivamente para escrita em um arquivo já
existente. Grava a partir do último registro (erro
de execução caso não exista):
append (identificador);
Linguagem PASCAL 25
Arquivo texto
Fechamento do arquivo
close (identificador);
Comandos de leitura
read (identificador, variáveis);
readln (identificador, variáveis);
Comandos de escrita
write (identificador, variáveis);
writeln (identificador, variáveis);
Fim de arquivo
EOLn (identificador);
Linguagem PASCAL 26
Arquivo texto
Em PASCAL, os dispositivos periféricos são tratados como arquivos texto:
CON: vídeo (console)
LPT1, LPT2, LPT3: impressoras
PRN: mesmo que LPT1
program VideoImpressora;
var dispositivo: text; k: char;
begin
write (´Vídeo ou impressora (V ou I) ? ´); readln(k);
if (k=´V´) then assign (dispositivo, ´CON´);
else assign (dispositivo, ´LPT1´);
rewrite (dispositivo);
writeln (´Olá !!!!´);
close (dispositivo);
end.
Linguagem PASCAL 27
Arquivo texto
Exr: Implemente um sistema criptográfico
que leia um arquivo texto escrito por você e
embaralhe as letras de acordo com uma
senha N. Essa senha irá deslocar o alfabeto
de N posições. Use A-Z, a-z e 0-9.
A B C D E ........................................................Z
N=-4
...W X Y Z A B C D E ...........................................
Linguagem PASCAL 28
Trabalho #5
Implementar um “Sistema de Agenda”
Requisitos do sistema:
– o sistema deverá ter um menu de inserção,
alteração e deleção de cadastros;
– deverá permitir também consulta aos dados
por nome, cidade ou estado;
– os dados ficarão gravados em disco;
– os cadastros deverão conter: nome,
endereço, bairro, cidade, estado, cep,
telefone e celular.
Linguagem PASCAL 29