Upload
dalila
View
42
Download
1
Embed Size (px)
DESCRIPTION
Linguagem PASCAL. Módulo 3 Estrutura de Dados. 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. - PowerPoint PPT Presentation
Citation preview
Linguagem PASCAL 1
Linguagem PASCAL
Módulo 3
Estrutura de Dados.
Linguagem PASCAL 2
Arrays (“Variáveis compostas homogêneas”)
Arrays unidimensionais:identificador: array [inicial..final] of tipo;
ex:
var Nota: array [1..10] of integer;
4,8 6,4 5,17,2 2,2 8,3 7,4 5,99,2 8,91 2 3 4 5 6 7 8 9 10
X:=Nota[3]; { X 6,4 }
Linguagem PASCAL 3
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 4
Arrays (“Variáveis compostas homogêneas”)
Exr: Ler e ordenar uma lista de N números
Idéia: Para inserir um número aj supõe-se a1, a2, ..., aj-1 já ordenados, então compara-se aj com aj-1, aj-2, ... até se descobrir que ele deve ser inserido entre ai e ai+1.
Move-se então ai+1 e os elementos seguintes, já ordenados, atribuindo-se a ai+1 o
valor original de aj.
Linguagem PASCAL 5
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;
14 15 1613
1 2 3 4
10 11 129
6 7 85
2 3 411
2
3
4
X:=Matriz[3,2];
{ X10 }
Linguagem PASCAL 6
Exercício
Implementar um programa em PASCAL que leia duas matrizes A4x4 e B4x4 e imprima a matriz resultado C = A*B.
Linguagem PASCAL 7
Registros (“Variáveis compostas heterogêneas”)
São conjuntos de dados logicamente relacionados, mas de tipos diferentes.
Nom e:
Endereço:
Bairro: Cidade:
CADASTRO PESSOAL
UF:
Data de nascim ento: / / Profissão:
Linguagem PASCAL 8
Registros
Var
cadastro: record
nome: string[40];
endereco: string[100];
bairro: string[40];
cidade: string[40];
uf: string[2];
dia_nasc, mes_nasc, ano_nasc: integer;
profissao: string[40];
end;
Identificador: record
componentes;
end;
Ex: Writeln(´Nome: ´, cadastro.nome);
Linguagem PASCAL 9
Registros dentro de RegistrosVar
cadastro: record
nome: string[40];
endereco: record
rua: string[100];
bairro: string[40];
cidade: string[40];
uf: string[2];
end;
dia_nasc, mes_nasc, ano_nasc: integer;
profissao: string[40];
end;
Ex: Writeln(´Estado: ´, cadastro.endereco.uf);
Linguagem PASCAL 10
Conjunto de Registros
Var
camisas: record
descricao: string[100];
preco: real;
estoque: real;
end;
mercadorias: array[1..100] of camisas;
identificador: array [i1..f1, i2..f2, ..., in..fn] of tipo;
Writeln(´Estoque da camisa cod.55: ´, mercadorias[55].camisas.estoque);
Linguagem PASCAL 11
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.
Então, você informa um código e o programa informa o nome e a descricao da profissão.
Linguagem PASCAL 12
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 – Texto: armazena o código ASCII (arquivo fica maior!)
Linguagem PASCAL 13
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.
NOME ENDEREÇO UF0
NOME ENDEREÇO UF1
NOME ENDEREÇO UF2
NOME ENDEREÇO UF3
NOME ENDEREÇO UFN
...
Linguagem PASCAL 14
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 15
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 16
Arquivo binárioprogram 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 17
Arquivo binário Leitura de arquivo:
read (identificador, lista-de-registros); Escrita em arquivo:
write (identificador, lista-de-registros); Fim de arquivo
EOF (identificador);
EOF - “End of File” = “Fim de arquivo”
Retorna: true, se atingiu o fim do arquivo
false, cc.
Linguagem PASCAL 18
Arquivo binárioprogram Backup;type Pessoa = record Nome: string[15];
Idade: integer; end;
var A, B: file of Pessoa;T: Pessoa;
beginassign (A, ´dados.dat´);assign (B, ´backup.dat´);reset (A); rewrite (B);while not EOF (A) dobegin
read (A, T);write (B, T);
end;close (A);close (B);
end.
Linguagem PASCAL 19
Arquivo binário Acesso direto a um registro, sem a procura sequencial:
seek (identificador, numero-do-registro);
obs: o primeiro registro é o 0 (zero).
Função que retorna o número total de registros em um arquivo:
FileSize (identificador);
obs: seek (identificador, FileSize(identificador); posiciona o arquivo logo após o último registro gravado, corresponde ao comando append.
Linguagem PASCAL 20
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.
Exr2: Faça um programa que, dado a matrícula do aluno, retorne seu nome e média.
Exr3: Faça um programa que, dado a matrícula do aluno, altere suas notas.
Linguagem PASCAL 21
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;
beginassign (Turma, 'ALUNOS.DAT');rewrite (Turma);for i:=1 to N dobegin
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);
write (Turma, Aluno);end;close (Turma);
end.
Linguagem PASCAL 22
program exr2;type Registro = record matricula: integer;
nome: string[40];vesp: real;vc: real;
end;Arquivo = file of Registro;
var Aluno: Registro;Turma: Arquivo;N, matricula, i: integer;achei: boolean;
beginassign (Turma, 'ALUNOS.DAT');reset (Turma);write (´Digite a matrícula: ´); readln (matricula);
achei:=false; N:=0;while (not achei) and (not EOF(Turma)) dobegin
seek (Turma, N);read (Turma, Aluno);if (Aluno.matricula = matricula) then achei:=true;N:=N+1;
end;close (Turma);
if achei then writeln (´Aluno ´, Aluno.nome, ´ possui média igual a ´, (Aluno.vesp+Aluno.vc)/2:5:2)
else writeln (´Aluno não encontrado !´);end.
Linguagem PASCAL 23
program exr3;...var vesp, vc: real;begin
assign (Turma, 'ALUNOS.DAT');reset (Turma);write (´Digite a matrícula: ´); readln (matricula);write (´Digite a nota de VEsp e VC: ´); readln (vesp, vc);
achei:=false;N:=0;while (not achei) and (not EOF(Turma)) dobegin
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);
if achei then writeln (´Notas alteradas com sucesso !´)else writeln (´Aluno não encontrado !´);
end.
Linguagem PASCAL 24
Arquivo texto A organização de um arquivo texto também é
sequêncial, mas não permite acesso direto.
Declaração:
var identificador: text;• ex: var documento: text;
Associação com o arquivo:
assign (identificador, ‘ARQ.TXT’);• ex: assign (documento, ‘docs.txt’);
Linguagem PASCAL 25
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 26
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 27
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 28
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
A B C D E ..............................................W X Y Z
N = - 4
Linguagem PASCAL 29
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.