Aulas Anteriores

11
Departamento de Electrónica e Telecomunicações - Universidade de Avei Aulas Anteriores 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

description

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. - PowerPoint PPT Presentation

Transcript of Aulas Anteriores

Page 1: Aulas Anteriores

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

Page 2: Aulas Anteriores

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.

Page 3: Aulas Anteriores

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

Page 4: Aulas Anteriores

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)

Page 5: Aulas Anteriores

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>

Page 6: Aulas Anteriores

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

Page 7: Aulas Anteriores

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

Page 8: Aulas Anteriores

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

Page 9: Aulas Anteriores

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

Page 10: Aulas Anteriores

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>

Page 11: Aulas Anteriores

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