1 / 19

Programa o em Pascal

Inform

Mercy
Download Presentation

Programa o em Pascal

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Programação em Pascal Estruturas de Dados + Algoritmos = Programas

    2. Informática - OGE Paulo Melo 2 Sumário Estruturas de Dados Strings Tipos definidos pelo utilizador Tipos simples Tipos definidos por enumeração Tipos definidos por subdomínio Estruturas complexas Matrizes (Arrays) Fichas (Records) Ficheiros (Files)

    3. Informática - OGE Paulo Melo 3 Cadeias de caracteres Strings Em pascal um tipo de dados serve para armazenar explicitamente sequências de caracteres – a string Pode ser dimensionada (com o número máximo de caracteres que pode conter) formato string[X] no caso de não ser dimensionada funciona como X=255 A função length obtém a verdadeira dimensão da string (em caracteres) Na prática uma string[X] é um array de caracteres String[X] é um array [1..X] of char É possível aceder a cada variável char que constitui a string individulmente

    4. Informática - OGE Paulo Melo 4 Cadeias de caracteres Strings - Exemplo Program TestaString; Var S: string; S1: string[80]; Begin Writeln('Introduza a string a analisar'); S:= 'A string que foi lida foi: '; Readln(S1); Writeln(S, S1); Writeln('O comprimento da string "',S1, '" é :',length(S1)); End.

    5. Informática - OGE Paulo Melo 5 Tipos definidos pelo programador Definição e Sintaxe Zona de definição de tipos Sintaxe: Type NomeTipo = definição_do_tipo; Tipo definido por enumeração Sintaxe: NomeTipo = ( nome1, nome2, nome3) Apresenta todos os componentes possíveis para o tipo As suas componentes são identificadores, não valores Cria um tipo enumerado Tipo definido por gama de valores ou subdomínio Sintaxe: NomeTipo= ValorInicial ..ValorFinal As suas componente são valores enumeráveis Define que esse tipo possui todos os valores desde ValorInicial até ValorFinal Pode ser definida uma gama de valores sobre qualquer tipo enumerado Nota Não podem ser usados directamente instruções de entrada (read) ou saída (write) em tipos definidos por enumeração.

    6. Informática - OGE Paulo Melo 6 Tipos definidos pelo programador Exemplo de aplicação ... Type Testacoes=(primavera, verao, outono, inverno); Tmeses= 1..12; ... Var estacao: Testacoes; mes: Tmeses; ... mes := 3; estacao := primavera; ... case estacao of verao: writeln('bom tempo'); primavera, outono: writeln('tempo aceitável'); inverno: writeln('tempo mau'); end; ...

    7. Informática - OGE Paulo Melo 7 Arrays Matrizes e Vectores Usam-se arrays para representar variáveis que são Elementos do mesmo tipo Relacionados entre si Sobre os quais pretendemos fazer operações semelhantes Que pretendemos representar por um nome comum Os arrays podem ser: Unidimensionais (chamados de vectores) Multidimensionais (chamados de matrizes) Cada componente de um array é uma variável individual Possui um nome (derivado do nome do array) Possui um tipo (o do tipo base do array) Possui um valor (manipulado como qualquer variável)

    8. Informática - OGE Paulo Melo 8 Sintaxe: Type tipo_array1 = array [ gama_de_valores1] of tipo_base1; {define o tipo tipo_array1 como um vector de valores do tipo tipo_base1 } ... Var nome_array1: tipo_array1; {declaração de um tipo definido anteriormente, que é um array} nome_array2: array [gama_de_valores2] of tipo_base2; {declaração explícita} Um vector é sempre definido sobre um tipo base Que pode ser qualquer tipo definido em Pascal Que é o tipo das componentes individuais do vector Qualquer tipo enumerado pode servir para a gama de valores Exemplo: Type tipolista= array [1..3] of real; Var lista: tipolista; Vectores Arrays unidimensionais

    9. Informática - OGE Paulo Melo 9 Vectores Exemplos de aplicação

    10. Informática - OGE Paulo Melo 10 Utilização de Vectores Exemplo de aplicação Program média (input, output); {programa que lê um conjunto de valores e apresenta para cada um destes a distância deste valor à média} Const dimensao = 8; Type ArrayReal = array[1..dimensao] of real; Var X: ArrayReal; media, soma: real; i: integer; Begin Writeln('Escreva ',dimensao,' números reais'); Soma := 0; For i:= 1 to dimensao do begin Readln(X[i]); soma:= soma+X[i]; End; Media := soma/dimensao; Writeln('O valor da média é ', média); Writeln('Tabela de diferenças entre os elementos e a média'); Writeln('Índice':8, 'Valor':12, 'Diferença':20); For i:= 1 to dimensao do Writeln(i:8,X[i]:12:2,(X[i]-media):20:2); End.

    11. Informática - OGE Paulo Melo 11 Arrays multidimensionais Matrizes O Pascal permite definir arrays com mais do que uma dimensão - matrizes Sintaxe: type tipo_array_mult1 = array [gama_valores1, gama_valores2,..., gama_valoresN] of tipo_base; No caso de apenas termos 2 dimensões podemos considerar o array como uma tabela tradicional Exemplo: Type TTab= array [1..4, 1..10] of integer; Var Tab: TTab;

    12. Informática - OGE Paulo Melo 12 Arrays multimensionais Mais que duas dimensões - exemplo

    13. Informática - OGE Paulo Melo 13 Records Fichas ou Registos Ocasionalmente é conveniente guardar informação relacionada entre si numa só estrutura, mesmo que sejam de tipos diferentes Exemplo: informação acerca de um livro: Em Pascal: Type Tlivro = record Titulo: string[80]; Autor: string; No_paginas: integer; Ano_edicao: 1457..2002; Preco: real; End;

    14. Informática - OGE Paulo Melo 14 Records Sintaxe e Exemplo de aplicação Sintaxe: Type ficha_util = record BI: integer; nome: string[80]; end; ... Var r1: ficha_util; r2: record campo1: tipo1; ... campoN: tipoN; end; Cada campo de uma variável de tipo record é acedido pelo seu nome: ... Writeln('Introduza o seu nome'); Readln(r2.nome); Writeln('Introduza o seu número de BI'); Readln(r2.BI); ... É possível usar outros tipos estruturados como blocos de construção (ex: array de records): ... Type grupo_utils= array[1..100] of ficha_util; Var g: grupo_utils; i: integer; ... for i:= 1 to 100 do begin Writeln('Utilizador: ', i); Writeln('Nome: ', g[i].nome); Writeln('Identidade:', g[i].nome); end; ... A estrutura assim construída pode ser tão complexa quanto se deseje

    15. Informática - OGE Paulo Melo 15 Arrays vs. Records Comparação dos tipos estruturados Comparação ARRAY-RECORD São ambos mecanismos de estruturar informação, mas com funções diferentes Num registo, os tipos dos dados podem ser diferentes Cada campo dentro de um record tem um tipo independente dos restantes campos Num registo, os nomes dos campos são identificadores Cada componente de um array é indexado por um valor de um tipo enumerado (X[1], Z[2,4], etc.) É possível usar ciclos para iterar (e fazer operações) sobre todos os elementos de um array Cada componente de um record é indexado por um nome (R.nome) Não é possível iterar sobre os campos de um record

    16. Informática - OGE Paulo Melo 16 Ficheiros Informação persistente Os dados (variáveis) de um programa em Pascal apenas existem enquanto o programa executa Uma variável perde o seu valor entre corridas sucessivas do programa Necessidade de um mecanismo de armazenagem de informação em memória secundária Ficheiros Ficheiros em Pascal Correspondem aos ficheiros geridos pelo sistema operativo São associados a um determinado tipo escolhido pelo programador (ficheiro de inteiros, reais, caracteres, etc.) Sintaxe: Type fich_inteiros = file of integer; ... Var fi: fich_inteiros; fichX: file of tipo_X; ft: text; {file of char}

    17. Informática - OGE Paulo Melo 17 Ficheiros em Pascal Características e Limitações Em Pascal um ficheiro Precisa de ser "aberto" antes de poder ser utilizado E "fechado" após ter sido usado Apenas pode ser usado para leitura OU escrita Não é possível ler de e escrever no mesmo ficheiro É necessário fechar o ficheiro e voltar a abri-lo para trocar de operações Apenas pode ser lido ou escrito sequencialmente não é possível alterar uma parte do meio de um ficheiro É necessário usar um ficheiro auxiliar... Porém, em Turbo Pascal algumas destas limitações podem ser levantadas... Em Turbo Pascal, para usar um ficheiro é preciso associar a variável que o representa em Pascal ao nome do ficheiro físico no sistema operativo Operação Assign Sintaxe: Assign(nome_var, nome_ficheiro) Onde nome_var: file of qualquer_tipo nome_ficheiro: string

    18. Informática - OGE Paulo Melo 18 Ficheiros em Pascal Operações de Leitura ou Escrita Leitura Abrir o ficheiro para leitura Reset(f); Ler do ficheiro um valor para a variável x Read(f,x); Fechar o ficheiro Close(f) Escrita Abrir o ficheiro para escrita Rewrite(f); Escrever no ficheiro o valor da variável x Write(f,x); Fechar o ficheiro Close(f)

    19. Informática - OGE Paulo Melo 19 Ficheiros em Pascal Exemplo de Aplicação Criar um programa para contar quantas linhas e caracteres existem num ficheiro de texto (de nome teste.txt) e escrever esses resultados num ficheiro de inteiros (de nome result.bin) Lê cada caracter e incrementa um contador de caracteres Usa as funções EOLN para determinar o fim da linha Quando está no fim da linha, incrementa o contador de linhas Usa a função EOF para saber quando chegou ao fim do ficheiro a ser lido

    20. Informática - OGE Paulo Melo 20 Ficheiros em Pascal Exemplo de aplicação (código) program contador (input,output); var ft: text; {podia ser usado file of char} fi: file of integer; c: char; conta_linhas, conta_chars: integer; begin assign(ft,'teste.txt'); reset(ft); conta_linhas:=0; conta_chars:=0; {vamos começar por fazer as contas} while not eof(ft) do begin {enquanto houver linhas no ficheiro} if (eoln(ft)) then begin conta_linhas:= conta_linhas+1; {estamos no fim da linha} readln(ft); {passa para a próxima linha } end; read(ft,c); conta_chars:= conta_chars+1; {leu mais 1 caracter} end; close(ft); assign(fi,'result.bin'); {agora vamos escrever os resultados no ficheiro de saída} rewrite(fi); write(fi, conta_linhas); write(fi, conta_chars); close(fi); end.

More Related