29
Linguagem PASCAL 1 Linguagem PASCAL Módulo 3 Estrutura de Dados.

Linguagem PASCAL

  • Upload
    dalila

  • View
    45

  • 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

Page 1: Linguagem PASCAL

Linguagem PASCAL 1

Linguagem PASCAL

Módulo 3

Estrutura de Dados.

Page 2: Linguagem PASCAL

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 }

Page 3: Linguagem PASCAL

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.

Page 4: Linguagem PASCAL

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.

Page 5: Linguagem PASCAL

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 }

Page 6: Linguagem PASCAL

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.

Page 7: Linguagem PASCAL

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:

Page 8: Linguagem PASCAL

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);

Page 9: Linguagem PASCAL

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);

Page 10: Linguagem PASCAL

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);

Page 11: Linguagem PASCAL

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.

Page 12: Linguagem PASCAL

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!)

Page 13: Linguagem PASCAL

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

...

Page 14: Linguagem PASCAL

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;

Page 15: Linguagem PASCAL

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);

Page 16: Linguagem PASCAL

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.

Page 17: Linguagem PASCAL

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.

Page 18: Linguagem PASCAL

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.

Page 19: Linguagem PASCAL

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.

Page 20: Linguagem PASCAL

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.

Page 21: Linguagem PASCAL

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.

Page 22: Linguagem PASCAL

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.

Page 23: Linguagem PASCAL

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.

Page 24: Linguagem PASCAL

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’);

Page 25: Linguagem PASCAL

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);

Page 26: Linguagem PASCAL

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);

Page 27: Linguagem PASCAL

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.

Page 28: Linguagem PASCAL

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

Page 29: Linguagem PASCAL

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.