Title: Aulas Anteriores
1Aulas 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
2Esta 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.
3Armazenamento de informação - temporário vs
permanente
Armazenamento permanente
Armazenamento temporário
Componentes habituais de um computador
4Armazenamento 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)
5Tipos 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 lteolngt 234rt lteolngt Uiu iu ewfr we
lteolngt (iuy) 4567 w! lteofgt
123 34 75 129 233 7 67 98 543 234
lteofgt
6Declaraçã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 lteolngt António Vasques lteolngt Manuel
Silva lteolngt Zeferino Mota lteofgt
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
7Declaraçã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
8Declaraçã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
9Leitura / 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
10Outras funções úteis
function eoln (var Ftext) boolean devolve
true se o caracter apontado pelo ponteiro do
ficheiro (próximo caracter a ser lido) for um
lteolngt function eof (var Ftext) boolean
devolve true se o caracter apontado pelo ponteiro
do ficheiro (próximo caracter a ser lido) for
um lteofgt
11Outras funções úteis
procedure truncate (var Ftext) trunca o
ficheiro a partir da posição actual apontada pelo
respectivo ponteiro function FileSize (var
Ftext) 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 ltgt0) I-/I -
activa/desactiva a verificação de erros no acesso
a ficheiros