Octave
Ficheiros
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.1
Ficheiros (1)


Na vossa pasta criar um ficheiro de texto chamado
“abracadabra” (não é preciso ser um ficheiro do
octave)
Abrir o ficheiro e escrever lá qualquer coisa na
primeira linha, por exemplo: “bla, ble, etc”
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.2
Ficheiros (2)

Para se fazerem coisas com o conteúdo de um
ficheiro é preciso primeiro 'abrir' o ficheiro:
[fid,msg]=fopen(nome-do-ficheiro, modo)


nome-do-ficheiro: string com o nome do ficheiro
para abrir, por exemplo “abracadabra.txt”
modo: uma das seguintes strings:



“r” - se o ficheiro é para ser lido
“w” - se o ficheiro é para ser escrito (substituindo o que lá
estiver)
“a” - se o ficheiro é para ser escrito (acrescentando ao que lá
estiver)
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.3
Ficheiros (3)

Ler um caracter do ficheiro:
[c1,count] = fscanf(fid,”%c”,”C”)

Ler dois caracteres do ficheiro:
[c1,c2,count] = fscanf(fid,”%c %c”,”C”)
ou então:
v=[ ]
for i=1:2
[v(i),count] = fscanf(fid,”%c”,”C”)
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.4
Ficheiros (4)

Para testar se já chegamos ao fim do ficheiro:
feof(fid)
Devolve 1 ou 0, caso respectivamente já
estejamos ou não no fim do ficheiro.
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.5
Ficheiros (5)

Quando se deixa de usar um ficheiro é necessário
“fechá-lo”:
fclose(fid)
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.6
Exercício 1

Fazer uma função “le_caracteres” que retorna uma
cadeia com todos os caracteres de um ficheiro
juntamente com o comprimento dessa cadeia.
function [cadeia,comprimento]=le_caracteres(nome_do_ficheiro)
...
endfunction
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.7
Exercício 2

Fazer uma função “conta_vogais” que conta o
número de vogais num ficheiro.
function n=conta_vogais(nome_do_ficheiro)
...
endfunction
Dica: Para testarmos se um caracter c é uma vogal podemos
fazer:
c_maiusculo = toupper(c)
if index("AEIOU",c_maiusculo) > 0
... etc ...
endif
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.8
Ler uma matriz de um ficheiro

fscanf(fid,formato,[colunas,linhas])
octave:1> [matriz,c]=fscanf(fid,formato,[2,2]);
octave:2> matriz'
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.9
Exercício 1

Fazer uma função “ler_matriz” que lê uma matriz de
um ficheiro
function n=ler_matriz(fid,formato,colunas)
...
endfunction
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.10
Exercício 2

Fazer uma função “sel_matriz” que selecciona
linhas de uma matriz se o valor na coluna 'coluna'
está no intervalo [min,max].
function r=sel_matriz(matriz,coluna,min,max)
...
endfunction
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.11
Exercício 3

Fazer uma função “med_mat” que calcula a média
de todos os valores de uma linha de uma matriz
function media=med_mat(matriz,linha)
...
endfunction
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.12
Exercício 4

Fazer uma função “le_data” que lê uma data de um
ficheiro e retorna 3 variáveis: dia, mês e ano
function [dia,mes,ano]=le_data(fid)
...
endfunction
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.13
Exercício 5

Fazer uma função “le_palavras” que lê uma
sequência de palavras de um ficheiro. A sequência
termina com o caracter “\t”.
function seq_palavras=le_palavras(fid)
...
endfunction
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.14
Registos

Tal como uma matriz, um registo é um tipo de
variável que contém vários valores.
>> registo.nome = “Carlos”;
>> registo.numero = 2345;
>> registo
registo =
{
nome = Carlos
numero = 2345
}
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.15
Ler um registo de um ficheiro

Fazer uma função “le_registo” que lê um registo de
um ficheiro de chamadas de telemóvel. O ficheiro é
composto de várias linhas e 3 colunas: data,
descrição e número de minutos.
function registo=le_registo(fid)
...
endfunction
Introdução aos Computadores e à Programação
DI-FCT-UNL-2006/2007
Ficheiros 5.16
Download

Octave5