14
1 Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Manipulação avançada de ficheiros Leitura / escrita de ficheiros Formato ascii Formato .mat Ligação a folhas de cálculo (Microsoft Excel) José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010 Entrada / Saída de dados 2

Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

Embed Size (px)

Citation preview

Page 1: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

1

Instituto Superior Técnico,Dep. de Engenharia Mecânica - ACCAII

Manipulação avançada de ficheiros

• Leitura / escrita de ficheiros

• Formato ascii

• Formato .mat

• Ligação a folhas de cálculo (Microsoft Excel)

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Entrada / Saída de dados

2222

Page 2: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

2

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Entrada / Saída de dados

3333

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010 4444

ASCII: .txt

.dat

Binário: .mat

Folha de cálculo: .xls

Formatos dos ficheiros de dados

(ficheiros de dados/texto típicos,podem ser abertos com o Notepad)

(ficheiros em formato proprietátioque SÓ podem ser abertos com oMatlab. Guardam os nomes econteúdo das variáveis)

(podem ser aberto com o Microsoft Excel)

Page 3: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

3

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Revisão das instruções entrada / saída

5555

Funções entrada: teclado → input

ficheiros → load

Funções saída: ecrã ← disp

ecrã / ficheiros ← fprintf

ficheiros ← save

>> Avaliacao = input('Tipo de avaliação: ','s');

Tipo de avaliação: Testes

>> Notas = input('Notas [N1 N2]: ');

Notas [N1 N2]: [12 14]

>> fprintf('Média dos %s é %.2f',Avaliacao,mean(Not as))

Média dos Testes é 13.00

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Leitura / escrita simples de ficheiros

6666

Funções entrada: ficheiros → load

Funções saída: ficheiros ← save

>> A = [8 9]; B = [ 1 2 3];

>> save dados A B

>> clear all

>> load dados

>> A

A =

8 9

>> B

B =

1 2 3

Page 4: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

4

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Leitura / escrita simples de ficheiros

7777

>> A = [8 9]; B = [ 1 2 3];

>> save dados.txt A B -ascii

>> clear all

>> load dados

??? Error using ==> load

Unable to read file dados: No such file or director y.

>> load -ascii dados.txt

??? Error using ==> load

Number of columns on line 1 of ASCII file C:\MATLAB\dados.txt

must be the same as previous lines.

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Leitura / escrita formatada de ficheiros

8888

• Leitura / escrita de ficheiros em que os dados são

armazenados com uma formatação específica

(conhecida!)

• Exemplos que justificam a necessidade:

• compatibilidade entre software quando os ficheiros de

dados são partilhados com outras aplicações

• os dados são gerados por outras aplicações, por exemplo

os controladores das cartas de entrada para aquisição de

sinais gerados por sensores

Page 5: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

5

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010 9999

Processo de leitura/escrita em ficheiros

Abertura

Fecho

Manipulação− Leitura− Escrita Total− Escrita c/ Anexação

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Abertura / fecho de ficheiros

10101010

Abertura: fid = open(nome_ficheiro, permissão)

Fecho: fclose(fid)

Permissões

permissão Descrição

r abertura para

leitura

w abertura para

escrita

a anexação

Identificadores

fid Descrição

-1 erro de abertura

0 a 2 identificadores

reservados para o

MATLAB

3 ousuperior

identificador do

ficheiro

Page 6: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

6

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Exemplos

11111111

>> fid = fopen('dados.txt','r');

>> if fid == -1

disp('File not open successful')

else

% ...

end

>> %...

>> closeresult = fclose(fid);

>> if closeresult == -1

disp('There were problems closing the file.')

elseif closeresult == 0

disp('File closed.')

end

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Instrução de escrita de ficheiros

12121212

Descrição: grava num ficheiro o conteúdo formatado

de uma cadeia de caracteres (também serve para

escrever no ecrã)

Sintaxe: f printf(fid,texto)

fprintf(fid,formato, var)

Page 7: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

7

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010 13131313

% 0- 12 .5 u

Inicio da

especificação

Flags Precisão

Caracter de

controlo

Tamanho

da cadeia

Especificação da cadeia de formatação:

Especificação da formatação

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Utilização de caracteres de formatação

14141414

Descrição Caracteres Descrição

Flags

Sinal -

Sinal +

Espaço

Zero

Justificação à esquerda

Impressão do caracter de sinal ("+" ou "-" )

Insere espaço em branco

Enche espaço disponível com zeros

Caracteres

de

formatação

\n

\t

\b

%%

New line

Horizontal tab

Backspace

Símbolo de percentagem

Caracteres de

controlo

%c%d,%i

%u%f%s

Single character

Decimal notation (signed)

Decimal notation (unsigned)

Fixed-point notation

String of characters

Page 8: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

8

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Exemplo: fprintf

15151515

>> test_1

The loop variable is 1

The loop variable is 2

The loop variable is 3

>>

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Escrita não destrutiva: Anexação

16161616

Objectivo: anexar novos dados sem destruir o conteúdo existente

Abertura: fid = open(nome_ficheiro, permissão)

Escrita: fprintf(fid,formato, var)

Page 9: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

9

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Instruções de leitura de ficheiros

17171717

comando Descrição

fgetl

Lê uma cadeia de carácteres do ficheiro

especificado linha a linha até ao carácter “end of

line”. O final do finheiro é assinalado pelo, que

pode ser testado com a instrução feof(fid) .

fgetsSemelhante à instrução fgetl , mas mantém o

carácter de controlo \n no final da linha.

Sintaxe:

tline = fgetl(fid)

tline = fgets(fid,numero_caracteres_maximo)

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Exemplo: load

18181818

>> load subjexp

??? Error using ==> load

Unable to read file subjexp: No such file or directory.

>> load subjexp.dat

??? Error using ==> load

Unknown text on line number 1 of ASCII file

D:\MyTeaching\200910\CP\Lectures\AT16\subjexp.dat

"a".

Page 10: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

10

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Exemplo: fgetl

19191919

>> fileex

5.30 a

2.20 b

3.30 c

4.40 a

1.10 b

File close successful

eof

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Instruções de leitura de ficheiros

20202020

comando Descrição

fscanf

Lê dados formatados a partir de um ficheiro

para variáveis compativeis com o formato

especificado. Podem ser usados os caracteres

de controlo da instrução fprintf .

textscanSemelhante à instrução fscanf mas o

resultado é armazenado num cell array .

Sintaxe:

[variável,contador] = fscanf(fid,formato,tamanho)

cell_array = textscan(fid,formato)

Page 11: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

11

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Exemplo: fscanf

21212121

>> fileex_2

mat =

5.3000 2.2000 3.3000 4.4000 1.1000

97.0000 98.0000 99.0000 97.0000 98.0000

nums =

5.3000 2.2000 3.3000 4.4000 1.1000

text =

abcab

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Exemplo: textscan

22222222

>> fileex

5.30 a

2.20 b

3.30 c

4.40 a

1.10 b

File close successful

Page 12: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

12

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Ligação a folhas de cálculo

23232323

comando Descrição

xlswriteInstrução de escrita numa folha de cálculo com

extensão .xls (formato padrao do Microsoft

Excel)

xlsreadInstrução de leitura a partir de uma folha de

cálculo com extensão .xls (formato padrao do

Microsoft Excel)

Sintaxe:

[estado,mensagem]= xlswrite(nome,vars,folha,gama)

[numérica,texto,outros] = xlsread(nome)

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Exemplo Matlab2Excel

24242424

Page 13: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

13

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

>> test_xls

nums =

12.7000 5.0200 -98.0000

63.9000 -0.2000 56.0000

Exemplo Excel2Matlab

25252525

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

>> test_xls2

nums =

123

333

432

987

text =

'a' '' 'Cindy'

'b' '' 'Suzanne'

'c' '' 'David'

'd' '' 'Burt'

Exemplo Excel2Matlab

26262626

Page 14: Manipulação avançada de ficheiros - Autenticação · Podem ser usados os caracteres de controlo da instrução fprintf . textscan Semelhante à instrução fscanf mas o ... 5.3000

14

José Borges - Miguel Pedro Silva Computação e Programação 2009 / 2010

Referências

27272727

• Capítulo 8 de Stormy Attaway (2009), “Matlab: A Practical

Introduction to Programming and Problem Solving”, Elsevier.