110 likes | 203 Views
Aulas Anteriores. Estruturas de dados tipos definidos pelo utilizador tipos enumerados e sub-intervalos (gamas) tipo string funções e procedimentos associados os construtores array e record. Esta Aula.
E N D
Aulas Anteriores • Estruturas de dados • tipos definidos pelo utilizador • tipos enumerados e sub-intervalos (gamas) • tipo string • funções e procedimentos associados • os construtoresarray e record
Esta Aula • Utilização de Ficheiros (unidades de armazenamento permanente de informação) Conceito de ficheiros de texto e binários. Utilização de ficheiros de texto. • Exercícios Leitura de um nome de um ficheiro a partir do teclado e escrita do conteúdo desse ficheiro no écran.
Memória de Massa (Disco Duro + Disquette + CD ROM) Memória Principal Processador Controlador de Comunicações (RDIS, Ethernet, etc.) Controlador de terminal (placa gráfica + cont. de teclado + cont. de rato) Comunicação com o mundo exterior Armazenamento de informação - temporário vs permanente Armazenamentopermanente Armazenamentotemporário Componentes habituais de um computador
Armazenamento permanente de informação - Ficheiros • Os valores actuais das variáveis de um programa são guardados na memória principal. • Quando o programa termina, o espaço de memória que ocupava é libertado e as variáveis que lá estavam são descartadas, perdendo-se os respectivos valores. • Para que os valores lidos do teclado ou calculados pelo programa possam ser preservados para além da terminação do programa (por exemplo para serem reutilizados mais tarde) é necessário guardá-los sob a forma de um ficheiro em memória de massa (e.g. disco duro, disquete)
Tipos de ficheiros disponíveis em Pascal • Ficheiros de texto Permitem armazenar informação de tipo char (i.e. sequências de caracteres), sendo a informação organizada em linhas. • Ficheiros binários Permitem armazenar informação de qualquer outro tipo simples ou estruturado, sendo a informação organizada em elementos correspondentes ao tipo definido na declaração do ficheiro. Abcd <eoln> 234rt <eoln> Uiu iu ewfr we <eoln> (iuy) 4567 w%! <eof> 123 –34 75 129 233 –7 –67 98 543 –234 <eof>
Declaração e utilização de ficheiros de texto Declaração ‘nomes_turma’ é uma variável do tipo ficheiro de texto.Não é o nome do ficheiro !!! var nomes_turma: text; (nomes_turma) João Afonso <eoln> António Vasques <eoln> Manuel Silva <eoln> Zeferino Mota <eof> Ponteiro do ficheiro Aponta para a posição actual de leitura / escrita É incrementado automaticamente cada vez que se faz uma leitura ou escrita do ficheiro EOF – caracter de controlo que indica o fim do ficheiro Leituras consecutivas devolvem elementos consecutivos
Declaração e utilização de ficheiros de texto Abertura de um ficheiro existente var nomes_turma: text; begin ... assign ( nomes_turma, ‘nomes.txt’ );reset ( nomes_turma );... (* operações de leitura *) ...close ( nomes_turma ); ...end. Associa o nome do ficheiro ‘nomes.txt’ à variável ‘nomes_turma’ Abre o ficheiro e coloca o respectivo ponteiro no início Fecha o ficheiro
Declaração e utilização de ficheiros de texto Criação de um ficheiro novo var nomes_turma: text; begin ... assign ( nomes_turma, ‘nomes.txt’ );rewrite ( nomes_turma );... (* operações de escrita *) ...close ( nomes_turma ); ...end. Cria um novo ficheiro vazio ou apaga-o se já existir
Leitura / escrita em ficheiros de texto • read ( nomes_turma, lista de variáveis );readln ( nomes_turma, lista de variáveis ); write ( nomes_turma, lista de variáveis e texto );writeln ( nomes_turma, lista de variáveis e texto ); • Estes procedimentos são em tudo semelhantes aos correspondentes para ler do teclado ou escrever no écran, respectivamente. • Existem, contudo, duas diferenças: - a variável de ficheiro como 1º parâmetro - o incremento automático do ponteiro do ficheiro
Outras funções úteis function eoln (varF:text): boolean; devolve true se o caracter apontado pelo ponteiro do ficheiro (próximo caracter a ser lido) for um <eoln> function eof (varF:text): boolean; devolve true se o caracter apontado pelo ponteiro do ficheiro (próximo caracter a ser lido) for um <eof>
Outras funções úteis procedure truncate (varF:text); trunca o ficheiro a partir da posição actual apontada pelo respectivo ponteiro function FileSize (varF:text): longint; devolve a dimensão do ficheiro em bytes function IOResult(): word; devolve 0 se a última operação sobre um ficheiro teve sucesso (se houver erro, e.g. ficheiro inexistente, devolve um valor <>0) {$I-}/{$I+} - activa/desactiva a verificação de erros no acesso a ficheiros