Post on 18-Jan-2016
description
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Aulas AnterioresAulas 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
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Esta AulaEsta 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.
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Armazenamento de informação - temporário Armazenamento de informação - temporário vs vs permanentepermanente
Comunicação com o mundo exterior
Processador Memória Principal
Memória de Massa(Disco Duro + Disquette
+ CD ROM)
Controlador de Comunicações(RDIS, Ethernet, etc.)
Controlador de terminal(placa gráfica + cont. de teclado
+ cont. de rato)
Componentes habituais Componentes habituais de um computadorde um computador
ArmazenamentoArmazenamento temporáriotemporário
ArmazenamentoArmazenamento permanentepermanente
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Armazenamento permanente de informação - FicheirosArmazenamento 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)
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Tipos de ficheiros disponíveis em PascalTipos 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>Abcd <eoln>
234rt <eoln>234rt <eoln>
Uiu iu ewfr we <eoln>Uiu iu ewfr we <eoln>
(iuy) 4567 w%! <eof>(iuy) 4567 w%! <eof>
123 –34 75 129 233 –7 123 –34 75 129 233 –7 –67 98 543 –234 <eof>–67 98 543 –234 <eof>
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Declaração e utilização de ficheiros de textoDeclaração e utilização de ficheiros de texto
varvar nomes_turma nomes_turma: : texttext;;
‘‘nomes_turmanomes_turma’ é uma ’ é uma variávelvariável do tipo do tipo ficheiro de texto.ficheiro de texto.
Não é o nome do ficheiro !!!Não é o nome do ficheiro !!!
DeclaraçãoDeclaração
João Afonso <eoln>João Afonso <eoln>
António Vasques <eoln>António Vasques <eoln>
Manuel Silva <eoln>Manuel Silva <eoln>
Zeferino Mota <eof>Zeferino Mota <eof>
(nomes_turma)(nomes_turma)
Ponteiro do ficheiroPonteiro do ficheiro
Aponta para a posição Aponta para a posição actual de leitura / escritaactual de leitura / escrita
É incrementado É incrementado automaticamente cada automaticamente cada vez que se faz uma vez que se faz uma leitura ou escrita do leitura ou escrita do ficheiroficheiro
EOF – caracter de EOF – caracter de controlo que indica controlo que indica o fim do ficheiroo fim do ficheiro
Leituras consecutivas devolvemLeituras consecutivas devolvem elementos consecutivos elementos consecutivos
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Declaração e utilização de ficheiros de textoDeclaração e utilização de ficheiros de texto
varvar nomes_turma nomes_turma: : texttext;;
beginbegin ... ...
assign assign ( nomes_turma, ‘nomes.txt’ );( nomes_turma, ‘nomes.txt’ ); resetreset ( nomes_turma ); ( nomes_turma ); ......
(* operações de leitura *) (* operações de leitura *) ... ...
close close ( nomes_turma )( nomes_turma );; ... ...
end.end.
AssociaAssocia o nome do o nome do ficheiro ‘nomes.txt’ à ficheiro ‘nomes.txt’ à variável ‘nomes_turma’variável ‘nomes_turma’
Abre o ficheiro e Abre o ficheiro e coloca o respectivo coloca o respectivo ponteiro no inícioponteiro no início
Fecha o ficheiroFecha o ficheiro
AberturaAbertura de um ficheiro existente de um ficheiro existente
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Declaração e utilização de ficheiros de textoDeclaração e utilização de ficheiros de texto
varvar nomes_turma nomes_turma: : texttext;;
beginbegin ... ...
assign assign ( nomes_turma, ‘nomes.txt’ );( nomes_turma, ‘nomes.txt’ ); rewriterewrite ( nomes_turma ); ( nomes_turma ); ......
(* operações de escrita *) (* operações de escrita *) ... ...
close close ( nomes_turma )( nomes_turma );; ... ...
end.end.
Cria um novo Cria um novo ficheiro vazio ou ficheiro vazio ou apaga-o se já existirapaga-o se já existir
Criação de um ficheiro novoCriação de um ficheiro novo
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Leitura / escrita em ficheiros de textoLeitura / escrita em ficheiros de texto
readread ( nomes_turma, lista de variáveis ); ( nomes_turma, lista de variáveis );readlnreadln ( nomes_turma, lista de variáveis ); ( nomes_turma, lista de variáveis ); write write ( nomes_turma, lista de variáveis e texto );( nomes_turma, lista de variáveis e texto );writelnwriteln ( nomes_turma, lista de variáveis e texto ); ( nomes_turma, lista de variáveis e texto );
Estes procedimentos são em tudo semelhantes aos Estes procedimentos são em tudo semelhantes aos correspondentes para ler do teclado ou escrever no écran, correspondentes para ler do teclado ou escrever no écran, respectivamente.respectivamente.
Existem, contudo, duas diferenças:Existem, contudo, duas diferenças: - a - a variável de ficheiro variável de ficheiro como 1º parâmetrocomo 1º parâmetro - o incremento automático do - o incremento automático do ponteiro do ficheiroponteiro do ficheiro
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Outras funções úteOutras funções úteiiss
function function eoln eoln ((varvar FF:text): :text): booleanboolean;;
devolve devolve true true se o caracter apontado pelo ponteiro do ficheirose o caracter apontado pelo ponteiro do ficheiro (próximo caracter a ser lido) for um <eoln> (próximo caracter a ser lido) for um <eoln>
function function eof eof ((varvar FF:text): :text): booleanboolean;;
devolve devolve true true se o caracter apontado pelo ponteiro do ficheirose o caracter apontado pelo ponteiro do ficheiro (próximo caracter a ser lido) for um <eof> (próximo caracter a ser lido) for um <eof>
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
Outras funções úteOutras funções úteiiss
procedure procedure truncate truncate ((varvar FF:text);:text);
trunca o ficheiro a partir da posição actual apontada pelo trunca o ficheiro a partir da posição actual apontada pelo respectivo ponteiro respectivo ponteiro
function function FileSize FileSize ((varvar FF:text): :text): longintlongint;;
devolve a dimensão do ficheiro em devolve a dimensão do ficheiro em bytesbytes
function function IOResultIOResult(): (): wordword;;
devolve devolve 0 0 se a última operação sobre um ficheiro teve sucessose a última operação sobre um ficheiro teve sucesso (se houver erro, e.g. ficheiro inexistente, devolve um valor <>0) (se houver erro, e.g. ficheiro inexistente, devolve um valor <>0)
{$I-}/{$I+} - activa/desactiva a verificação de erros no acesso a ficheiros{$I-}/{$I+} - activa/desactiva a verificação de erros no acesso a ficheiros