1 / 19

Programa o em Pascal

Inform

Mercy
Télécharger la présentation

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. Programao em Pascal Estruturas de Dados + Algoritmos = Programas

    2. Informtica - OGE Paulo Melo 2 Sumrio Estruturas de Dados Strings Tipos definidos pelo utilizador Tipos simples Tipos definidos por enumerao Tipos definidos por subdomnio Estruturas complexas Matrizes (Arrays) Fichas (Records) Ficheiros (Files)

    3. Informtica - OGE Paulo Melo 3 Cadeias de caracteres Strings Em pascal um tipo de dados serve para armazenar explicitamente sequncias de caracteres a string Pode ser dimensionada (com o nmero mximo de caracteres que pode conter) formato string[X] no caso de no ser dimensionada funciona como X=255 A funo length obtm a verdadeira dimenso da string (em caracteres) Na prtica uma string[X] um array de caracteres String[X] um array [1..X] of char possvel aceder a cada varivel char que constitui a string individulmente

    4. Informtica - 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. Informtica - OGE Paulo Melo 5 Tipos definidos pelo programador Definio e Sintaxe Zona de definio de tipos Sintaxe: Type NomeTipo = definio_do_tipo; Tipo definido por enumerao Sintaxe: NomeTipo = ( nome1, nome2, nome3) Apresenta todos os componentes possveis para o tipo As suas componentes so identificadores, no valores Cria um tipo enumerado Tipo definido por gama de valores ou subdomnio Sintaxe: NomeTipo= ValorInicial ..ValorFinal As suas componente so valores enumerveis Define que esse tipo possui todos os valores desde ValorInicial at ValorFinal Pode ser definida uma gama de valores sobre qualquer tipo enumerado Nota No podem ser usados directamente instrues de entrada (read) ou sada (write) em tipos definidos por enumerao.

    6. Informtica - OGE Paulo Melo 6 Tipos definidos pelo programador Exemplo de aplicao ... 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 aceitvel'); inverno: writeln('tempo mau'); end; ...

    7. Informtica - OGE Paulo Melo 7 Arrays Matrizes e Vectores Usam-se arrays para representar variveis que so Elementos do mesmo tipo Relacionados entre si Sobre os quais pretendemos fazer operaes 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 varivel individual Possui um nome (derivado do nome do array) Possui um tipo (o do tipo base do array) Possui um valor (manipulado como qualquer varivel)

    8. Informtica - 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; {declarao de um tipo definido anteriormente, que um array} nome_array2: array [gama_de_valores2] of tipo_base2; {declarao explcita} 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. Informtica - OGE Paulo Melo 9 Vectores Exemplos de aplicao

    10. Informtica - OGE Paulo Melo 10 Utilizao de Vectores Exemplo de aplicao Program mdia (input, output); {programa que l um conjunto de valores e apresenta para cada um destes a distncia deste valor mdia} Const dimensao = 8; Type ArrayReal = array[1..dimensao] of real; Var X: ArrayReal; media, soma: real; i: integer; Begin Writeln('Escreva ',dimensao,' nmeros 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 mdia ', mdia); Writeln('Tabela de diferenas entre os elementos e a mdia'); Writeln('ndice':8, 'Valor':12, 'Diferena':20); For i:= 1 to dimensao do Writeln(i:8,X[i]:12:2,(X[i]-media):20:2); End.

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

    12. Informtica - OGE Paulo Melo 12 Arrays multimensionais Mais que duas dimenses - exemplo

    13. Informtica - OGE Paulo Melo 13 Records Fichas ou Registos Ocasionalmente conveniente guardar informao relacionada entre si numa s estrutura, mesmo que sejam de tipos diferentes Exemplo: informao 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. Informtica - OGE Paulo Melo 14 Records Sintaxe e Exemplo de aplicao 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 varivel de tipo record acedido pelo seu nome: ... Writeln('Introduza o seu nome'); Readln(r2.nome); Writeln('Introduza o seu nmero de BI'); Readln(r2.BI); ... possvel usar outros tipos estruturados como blocos de construo (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 construda pode ser to complexa quanto se deseje

    15. Informtica - OGE Paulo Melo 15 Arrays vs. Records Comparao dos tipos estruturados Comparao ARRAY-RECORD So ambos mecanismos de estruturar informao, mas com funes 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 so identificadores Cada componente de um array indexado por um valor de um tipo enumerado (X[1], Z[2,4], etc.) possvel usar ciclos para iterar (e fazer operaes) sobre todos os elementos de um array Cada componente de um record indexado por um nome (R.nome) No possvel iterar sobre os campos de um record

    16. Informtica - OGE Paulo Melo 16 Ficheiros Informao persistente Os dados (variveis) de um programa em Pascal apenas existem enquanto o programa executa Uma varivel perde o seu valor entre corridas sucessivas do programa Necessidade de um mecanismo de armazenagem de informao em memria secundria Ficheiros Ficheiros em Pascal Correspondem aos ficheiros geridos pelo sistema operativo So 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. Informtica - OGE Paulo Melo 17 Ficheiros em Pascal Caractersticas e Limitaes Em Pascal um ficheiro Precisa de ser "aberto" antes de poder ser utilizado E "fechado" aps ter sido usado Apenas pode ser usado para leitura OU escrita No possvel ler de e escrever no mesmo ficheiro necessrio fechar o ficheiro e voltar a abri-lo para trocar de operaes Apenas pode ser lido ou escrito sequencialmente no possvel alterar uma parte do meio de um ficheiro necessrio usar um ficheiro auxiliar... Porm, em Turbo Pascal algumas destas limitaes podem ser levantadas... Em Turbo Pascal, para usar um ficheiro preciso associar a varivel que o representa em Pascal ao nome do ficheiro fsico no sistema operativo Operao Assign Sintaxe: Assign(nome_var, nome_ficheiro) Onde nome_var: file of qualquer_tipo nome_ficheiro: string

    18. Informtica - OGE Paulo Melo 18 Ficheiros em Pascal Operaes de Leitura ou Escrita Leitura Abrir o ficheiro para leitura Reset(f); Ler do ficheiro um valor para a varivel x Read(f,x); Fechar o ficheiro Close(f) Escrita Abrir o ficheiro para escrita Rewrite(f); Escrever no ficheiro o valor da varivel x Write(f,x); Fechar o ficheiro Close(f)

    19. Informtica - OGE Paulo Melo 19 Ficheiros em Pascal Exemplo de Aplicao 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 funes EOLN para determinar o fim da linha Quando est no fim da linha, incrementa o contador de linhas Usa a funo EOF para saber quando chegou ao fim do ficheiro a ser lido

    20. Informtica - OGE Paulo Melo 20 Ficheiros em Pascal Exemplo de aplicao (cdigo) 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 comear 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 prxima 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 sada} rewrite(fi); write(fi, conta_linhas); write(fi, conta_chars); close(fi); end.

More Related