1 / 36

Introdução a Programação COM 100

Introdução a Programação COM 100. REGISTROS e ARQUIVOS Aula 09. Registros • tipo de estrutura de dados heterogêneo • é uma estrutura definida pelo usuário que representa uma diversidade de valores distintos

floyd
Télécharger la présentation

Introdução a Programação COM 100

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. Introdução a ProgramaçãoCOM 100 REGISTROS e ARQUIVOS Aula 09

  2. Registros • tipo de estrutura de dados heterogêneo • é uma estrutura definida pelo usuário que representa uma diversidade de valores distintos • os elementos de um record são denominados campos, onde cada campo de um determinado record possui um nome e um tipo definido. • utiliza-se o Var ou Type para definir-se um record

  3. Exemplo: Type TipoRegistro = Record Nome : String[20]; CPF : String[14]; Tel : String[10]; Cidade : String[20]; Estado : String[10]; End; {fim do registro} Var X : TipoRegistro;

  4. Begin X.Nome := ‘Axl Rose’; Readln(X.CPF); Readln(X.Tel); X.Cidade := ‘Maryanna’; X.Estado := ‘Imprevisível’; Writeln(X.Nome); Writeln(X.CPF); Writeln(X.Tel); Writeln(X.Estado) End.

  5. Begin X.Nome := ‘Axl Rose’; Readln(X.CPF); Readln(X.Tel); X.Cidade := ‘Maryanna’; X.Estado := ‘Imprevisível’; With X Do Writeln(Nome); Writeln(Estado); Writeln(Tel) End.

  6. Observação: Quando se escreve um procedimento ou função que recebe um array como argumento, o tipo do array deve estar predefinido num comando TYPE. Exemplo: Type TipoVetor ; Array[1..10] of Byte; ... ... Procedure Inchalah( V : TipoVetor );

  7. ASSIGN: associa a variável do tipo arquivo a um nome de arquivo específico o discoASSIGN(VarArquivo, “NomeDisco.txt”); Comandos - Arquivo

  8. REWRITE: cria um novo arquivo e o abre para operações de gravação (escrita). Alternativamente, o comando APPEND abre um arquivo já existente, de modo que você possa adicionar um novo texto no fim do arquivo.Utiliza-se os procedimentos WRITE E WRITELN. Comandos - Arquivo

  9. RESET: abre um arquivo existente, de modo que você pode usar o READ e READLN para ler os valores de dados e linhas de texto de um arquivo.OBS. Um arquivo texto pode ser aberto somente para uma operação por vez: gravação, junção ou leitura. Comandos - Arquivo

  10.  Desligam ou ligam a verificação de erros de I/O. Especificamente, você pode desligar a verificação de erros ara evitar um erro em tempo de execução, que ocorreria se você tenteasse abrir um arquivo inexistente para leitura ou junção. A função IORESULT informa se ocorreu ou não algum erro Diretivas {$I-} e {$I+}

  11.  A função EOF retorna com um valor do tipo BOOLEAN, que indica se o programa chegou ou não ao fim de um arquivo, durante uma operação de leitura. O comando CLOSE fecha o arquivo que foi aberto para leitura ou escrita. Comandos - Arquivo

  12. Exemplo:Var VarDeArquivo : TEXT; uma variável do tipo TEXT pode ser definida local ou globalmente, mas diferentemente das outras estruturas, o comprimento de uma variável de arquivo não é especificado. Variável de Arquivo-Texto

  13. Const NomeArqDisco = `AgendaRed.txt`VarAgenda : TEXT;BEGIN Assign(Agenda, NomeArqDisco);END. Variável de Arquivo-Texto

  14. BEGIN Assign(Agenda, NomeArqDisco); Rewrite(Agenda); {cria um novo arquivo para operação de escrita} Append(Agenda); {bre um arquivo existente para escrever um novo texto no final do mesmo} Reset(Agenda); {abre um arquivo existente para a leitura} END.

  15. OBS.: se um nome de arquivo já existir no disco, o comando Rewrite escreverá por cima dele, logo a versão antiga será perdida.Os comandos Append e Reset necessitam que um arquivo exista no disco.Para evitar erros em tempo de execução:

  16. {$I-} Reset(Agenda){$I+}If IORESULT = 0 Then {Lê o arquivo}Else {Ocorreu um erro de I/O}

  17. Escrevendo Dados:Write(Agenda, ‘Esta string vai ser escrita’);Writeln(Agenda, ‘Outra string !!!!’);OBS.: caracteres de retorno de carro e nova linha o final.

  18. Lendo Dados:Read(Agenda, <lista de variáveis>);OBS.: lê um ou mais valores de dados de um arquivo aberto e deixa o ponteiro de arquivo na linha atual; assim os comandos subseqüentes poderão ler informações adicionais na mesma linha.

  19. Lendo Dados:Readln(Agenda, <lista de variáveis>);OBS.: lê um ou mais valores de dados, de um arquivo aberto, na linha atual e depois pula par ao início da próxima linha do arquivo.nformações adicionais na mesma linha.

  20. Embora um arquivo do tipo texto contenha somente caracteres ASCII, um comando Read ou Readln pode ler apropriadamente os valores de dados para ambas as variáveis, numéricas ou string.

  21. Var Total : Real; Arq : Text; Produto : String[20];Begin Assign(Arq, ‘ESTOQUE.TXT’); Reset(Arq); ... Readln(Arq, Total, Produto);....

  22. Os caracteres a seguir, servem como delimitadores entre um e outro valor dentro de um arquivo texto:a) um caractere de espaçob) um caractere de tabulaçãoc) um caractere de returnQuando na leitura de uma seqüência de valores numéricos de um arquivo texto, a procedure READ reconhece esses caracteres como separadores entre um valor e outro.

  23.  Entretanto, uma tentativa de ler uma string de caracteres não-numéricos pra uma variável numérica resulta em erro em tempo de execução, exatamente como aconteceria com uma operação de entrada pelo teclado. Tipicamente, um programa usa uma estrutura de loop para ler os dados armazenados em um arquivo seqüencial.

  24.  Cada iteração do loop pode ler um item de dado, ou uma linha de itens de dados. Se você tiver certeza do número de itens ou linhas que estão armazenadas no arquivo, pderá usar um loop FOR para ler os dados. Entretanto, uma abordagem mais típica é usar a função EOF (end of file).

  25. While not EOF(Agenda) Do BeginReadln(Arq, Total, Produto);... End;OBS.: o programa deve fechar o arquivo quando a operação de leitura ou escrita terminar.

  26. FECHANDO UM ARQUIVOClose(Agenda); esse comando fecha o arquivo externo em disco, mas não termina a associação entre a variável de arquivo o nome do arquivo. o programa pode usar novamente um comando RESET, REWRITE, ou APPEND, para reabrir o mesmo arquivo (sem fazer um novo ASSIGN).

  27. Program Tabajara;Const MaxAlunos = 30;Type RegAluno : Record Nome : String[20]; Nota : Real End;Var Classe : Array[1 .. MaxAlunos] of RegAluno ArqClasse : Text;

  28. BEGIN {lendo os dados} For i := 1 To MaxAlunos Do Begin Read(Classe[ i ].Nome); Read(Classe[ i ].Nota) End; {escrevendo os dados} Assign(ArqClasse, “Classe.txt”); Rewrite(ArqClasse);

  29. For i := 1 To MaxAlunos Do Begin Write(ArqClasse, Classe[ i ].Nome); Writeln(ArqClasse, Classe[ i ].Nota) End;{fechando o arquivo}Close(ArqClasse);

  30. {abrindo o arquivo para leitura}Reset(ArqClasse);i := 1;While not EOF(ArqClasse) Do BeginReadln(Classe[ i ].Nome, Classe[ i ].Nota); Inc(i); End;...END.

  31. ARQUIVOS TIPADOS Um arquivo tipado contém uma seqüência de componentes individuais acessíveis, todos pertencendo ao mesmo tipo de dado ou estrutrua de dados.Var VariavelARq : FILE OF TipoArquivo;TipoArquivo: padrão, definido pelo usuário, exceto outro tipo FILE.

  32. ARQUIVOS TIPADOS X TEXTO um arquivo tipado aberto está disponível para ambas operações, leitura e escrita, ao mesmo tempo. o Turbo Pascal usa os seus próprios formatos internos de dados para armazenar os componentes de um arquivo tipado no disco. (não é armazenado o formato de linha a linha de texto em ASCII).

  33. ARQUIVOS TIPADOS X TEXTO um programa que funciona com um arquivo tipado usa a procedure SEEK, embutida no Turbo Pascal, para acessar um determinado registro em qualquer posição especificada dentro do arquivo. O programa pode ler o registro para a memória ou escrever um novo registro na mesma posição.

  34.  o comando SEEK é utilizado na programação de arquivos com acesso randômico.PASSOS BÁSICOS1) defina o tipo do componente do arquivo e declare a variável de arquivo como uma estrutura do tipo FILE (as declarações TYPE e VAR).

  35. 2) estabeleça uma associação entre a variável de arquivo e um nome de arquivo no disco (a procedure Assign).3) abra um novo arquivo ou um arquivo existente no disco (a procedure Reset ou Rewrite). Em ambos os casos, o arquivo está aberto tanto para a leitura como para a escrita ao mesmo tempo.

  36. 4) especifique uma determinada posição de registro no arquivo, como o alvo de uma operação subseqüente de leitura ou escrita (SEEK). Leia o registro para a memória (READ), ou escreva um novo registro para a posição de arquivo selecionada (WRITE).5) feche os arquivos no final das operações (CLOSE).

More Related