320 likes | 510 Views
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.
E N D
Linguagem PASCAL Módulo 3 Estrutura de Dados. Linguagem PASCAL
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
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
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
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 2 3 4 1 X:=Matriz[3,2]; { X10 } 5 6 7 8 2 9 10 11 12 3 13 14 15 16 4 1 2 3 4 Linguagem PASCAL
Exercício • Implementar um programa em PASCAL que leia duas matrizes A4x4 e B4x4 e imprima a matriz resultado C = A*B. Linguagem PASCAL
Registros (“Variáveis compostas heterogêneas”) • São conjuntos de dados logicamente relacionados, mas de tipos diferentes. Linguagem PASCAL
Registros Identificador: record componentes; end; 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; Ex: Writeln(´Nome: ´, cadastro.nome); Linguagem PASCAL
Registros dentro de Registros Var 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
Conjunto de Registros • identificador: array [i1..f1, i2..f2, ..., in..fn] of tipo; Var camisas: record descricao: string[100]; preco: real; estoque: real; end; mercadorias: array[1..100] of camisas; Writeln(´Estoque da camisa cod.55: ´, mercadorias[55].camisas.estoque); Linguagem PASCAL
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
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
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. Linguagem PASCAL
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
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
Arquivo binário Linguagem PASCAL
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
Arquivo binário Linguagem PASCAL
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
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
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
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
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
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
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
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