At 14 leitura e escrita de ficheiros
Upcoming SlideShare
Loading in...5
×
 

At 14 leitura e escrita de ficheiros

on

  • 969 views

 

Statistics

Views

Total Views
969
Views on SlideShare
491
Embed Views
478

Actions

Likes
0
Downloads
32
Comments
0

4 Embeds 478

http://ratosdotecnico.blogspot.pt 459
http://www.ratosdotecnico.blogspot.pt 13
http://ratosdotecnico.blogspot.com 5
http://www.ratosdotecnico.blogspot.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

At 14 leitura e escrita de ficheiros At 14 leitura e escrita de ficheiros Document Transcript

  • 11/3/2012 Computação e Programação MEMec, LEAN - 1º Semestre 2012-2013 Aula Teórica 14 • Ficheiros de dados • Processo de leitura/escrita em ficheiros de texto • Manipulação de uma base de dados • Ficheiros de dados do Matlab (.mat) • Folhas de cálculo (.xls) D.E.M. – Área Científica de Controlo Automação e Informática IndustrialAlinhamento da AT 14 • Ficheiros de dados • Processo de leitura/escrita em ficheiros de texto • Manipulação de uma base de dados • Ficheiros de dados do Matlab (.mat) • Folhas de cálculo (.xls) Computação e Programação 2012 / 2013 2 1
  • 11/3/2012Entrada / Saída de dados• O disco rígido providencia um suporte não-volátil para armazenamento de dados (ao contrário da memória do computador cuja informação se perde ao terminar o programa) Computação e Programação 2012 / 2013 3Entrada / Saída de dados• A gestão do conteúdo, comunicações, e a organização do disco rígido está normalmente a cargo do Sistema Operativo (Windows, MacOS, Unix, etc.)• Os programas podem aceder (ler/escrever) à informação no disco rígido sob a forma de ficheiros• Os ficheiros são blocos de informação identificados pelo Sistema Operativo com um dado nome, cuja forma exacta depende do Sistema Operativo nome_do_ficheiro.extensão Computação e Programação 2012 / 2013 4 2
  • 11/3/2012Formatos usuais dos ficheiros de dados Ficheiros com dados em .txt formato de texto (são editáveis ASCII .dat nos editores de texto comuns como o Notepad) Ficheiros em formato específico do MATLAB, Binário .mat guardam os nomes e conteúdo das variáveis Folha de .xls Folhas de cálculo do Excel cálculo Computação e Programação 2012 / 2013 5Alinhamento da AT 14 • Ficheiros de dados • Processo de leitura/escrita em ficheiros de texto • Manipulação de uma base de dados • Ficheiros de dados do Matlab (.mat) • Folhas de cálculo (.xls) Computação e Programação 2012 / 2013 6 3
  • 11/3/2012Leitura / escrita formatada de ficheiros• Os ficheiros não são apenas uma forma de guardar informação no disco rígido, podem ser também uma forma de comunicação relativamente simples e segura entre programas• Um ficheiro de texto com dados, criado num programa especializado, pode ser facilmente consultado ou modificado em qualquer editor de texto comum• Uma função pode ser facilmente criada para ler o seu conteudo e aplicá-lo nos cálculos de outro programa Computação e Programação 2012 / 2013 7Processo de leitura/escrita em ficheiros Cria ligação entre o ficheiro no1) Abertura disco rígido e um identificador no código fonte do programa Usualmente uma operação de − Leitura2) Manipulação − Escrita Total − Escrita em Anexo Termina ligação do ficheiro com o programa, libertando-o para3) Fecho ser utilizado por outros programas Computação e Programação 2012 / 2013 8 4
  • 11/3/2012 Processo de leitura/escrita em ficheiros Funções básicas1) Abertura fopen fgetl fgets Leitura2) Manipulação fscanf textscan fprintf Escrita3) Fecho fclose Computação e Programação 2012 / 2013 9Abertura de ficheiros• Cria ligação entre o ficheiro no disco rígido e um identificador no código fonte do programaSintaxe: fid = fopen(nome_ficheiro, permissão) Permissões Identificadorespermissão Descrição fid Descrição r abertura para -1 Erro na abertura leitura 0 a 2 identificadores w abertura para reservados para o escrita MATLAB a anexação 3 ou identificador do superior ficheiro Computação e Programação 2012 / 2013 10 5
  • 11/3/2012Fecho de ficheiros• Termina ligação do ficheiro com o programa, libertando-o para ser utilizado por outros programasSintaxe: resultado = fclose(fid) Identificadores resultado Descrição -1 erro no fecho 0 sucesso Computação e Programação 2012 / 2013 11Processo usual de abertura/fecho• Excerto de código fonte representando o processo de abertura e fecho de um ficheiro Computação e Programação 2012 / 2013 12 6
  • 11/3/2012 Escrita em ficheiros Descrição: grava num ficheiro o conteúdo formatado de uma cadeia de caracteres (também serve para escrever no ecrã) Sintaxe: fprintf(fid,texto) fprintf(fid,formato,var) Permissões usuais: w – escrita (cria um novo ficheiro ou re-escreve o ficheiro existente) a – anexação (acrescenta a informação ao final do ficheiro) Computação e Programação 2012 / 2013 13 Exemplo de escrita em ficheiro de texto Juntar o sufixo t à permissão para ficheiros texto (ver help da função fopen) Ciclo que percorre o vector eescreve os seus elementos linha-a-linha Computação e Programação 2012 / 2013 14 7
  • 11/3/2012 Exemplo de escrita em ficheiro de texto • Editor do MATLAB • A execução do script anterior cria um novo ficheiro de texto chamado MeusDados.txt com o conteúdo do vector >> escreveMeusDados >> • Notepad Computação e Programação 2012 / 2013 15 Exemplo de escrita em ficheiro de texto Permissão para anexaçãoDevido à formacomo funciona a função fprintf no MATLAB, ociclo for não é realmente necessário Computação e Programação 2012 / 2013 16 8
  • 11/3/2012Exemplo de escrita em ficheiro de texto • Editor do MATLAB• A execução do script anterior anexa o novo conjunto de valores ao ficheiro MeusDados.txt>> escreveMeusDados2>> • Notepad Computação e Programação 2012 / 2013 17Exemplo de código fonte completo Computação e Programação 2012 / 2013 18 9
  • 11/3/2012Leitura de ficheiros linha-a-linha função Descrição Lê uma cadeia de caracteres do ficheiro fgetl especificado até encontrar o carácter n, descartando-o Semelhante à instrução fgetl mas mantém o carácter de controlo n na cadeia de fgets caracteres. Permite especificar um número máximo de caracteres a ler. Devolve um valor lógico verdadeiro se na última feof operação de leitura for encontrado o fim do ficheiro Computação e Programação 2012 / 2013 19Leitura de ficheiros linha-a-linhaDescrição: ambas as funções lêm uma linha do ficheiroSintaxe: tline = fgetl(fid) tline = fgets(fid,num_caract_maximo)Permissões usuais: r – leitura Computação e Programação 2012 / 2013 20 10
  • 11/3/2012Exemplo de leitura linha-a-linha Enquanto não for encontrado o fim do ficheiro Obter nova linhaeof Computação e Programação 2012 / 2013 21Exemplo de leitura linha-a-linha• A execução do script anterior apresenta os dados com a nova formatação no ecrã. Note-se que, neste caso, os dados não ficaram guardados em memória, já que todas variáveis são redefinidas a cada passagem pelo ciclo. >> leitura_linha_a_linha 5.3 a 2.2 b 3.3 c 4.4 a 1.2 b >> Computação e Programação 2012 / 2013 22 11
  • 11/3/2012Exemplo de leitura de ficheiro com cabeçalho Leitura do cabeçalho de dimensão conhecidaLeitura dos dados Computação e Programação 2012 / 2013 23Exemplo de leitura de ficheiro com cabeçalho >> leitura_com_cabecalho 5.3 a 2.2 b 3.3 c 4.4 a 1.2 b >> disp(cabecalho) Guarda valores e código Data: 2011-11-01 Autores: José e Mariana >> disp(cabecalho(2,:)) Data: 2011-11-01 Computação e Programação 2012 / 2013 24 12
  • 11/3/2012Leitura de ficheiros completos função Descrição Lê dados formatados a partir de um ficheiro para variáveis compativeis com o formato fscanf especificado. Utiliza os mesmos caracteres de controlo da instrução fprintf. Semelhante à instrução fscanf mas o textscan resultado é armazenado num cell array . Computação e Programação 2012 / 2013 25Exemplo de leitura de ficheiro completo Leitura do conteúdo completo Separação e conversão dos dados Computação e Programação 2012 / 2013 26 13
  • 11/3/2012 Exemplo de leitura de ficheiro completo • A execução do script anterior guarda todos os dados na forma numérica sendo necessária a reconversão dos caracteres utilizando a função char.>> leitura_de_uma_vezdados = 5.3450 2.2220 3.3320 4.4160 1.1780 97.0000 98.0000 99.0000 97.0000 98.0000valores = 5.3450 2.2220 3.3320 4.4160 1.1780codigo =abcab Computação e Programação 2012 / 2013 27Alinhamento da AT 14 • Ficheiros de dados • Processo de leitura/escrita em ficheiros de texto • Manipulação de uma base de dados • Ficheiros de dados do Matlab (.mat) • Folhas de cálculo (.xls) Computação e Programação 2012 / 2013 28 14
  • 11/3/2012Exemplo base de dados de alunos Turma: AM21T 30 2 Nome: Joã Silmes Usar um vector 1 Nome: João Silva Número: 22331 de estruturas Nome: João Silva Número: 22331 para construir Número: Nota: 15 22331 uma base de Nota: 15 Nota: 15 dados da turma Turma AM21T Número da ficha Nome Numero de Aluno Nota 1 João Silva 22331 15 Alunos 2 Paulo Almeida 98734 17 … … … … 30 Manuel Gomes 12345 12 Computação e Programação 2012 / 2013 29Exemplo de introdução manual>> gerir_alunosIntroduza o número do aluno, ou 0 para terminar: 12345Introduza o nome: Antero PalhinhasIntroduza a nota: 14Novo aluno!Introduza o número do aluno, ou 0 para terminar: 98765Introduza o nome: Julia MansinhoIntroduza a nota: 17Novo aluno!Introduza o número do aluno, ou 0 para terminar: 45678Introduza o nome: Vitor FaquinhaIntroduza a nota: 19Novo aluno! Computação e Programação 2012 / 2013 30 15
  • 11/3/2012Ler dados para um vector de estruturas• A leitura dos dados para a ficha de um aluno pode ser feita de uma só vez, se for conhecido o formato da informação fornecida• Esta forma é mais comum na leitura de ficheiros de texto formatados• Neste caso é necessário dar quatro passos: 1. Ler todos os dados de um aluno para uma string 2. Partir a string no número de campos desejado 3. Converter os valores numéricos 4. Atribuir os dados aos campos da estrutura Computação e Programação 2012 / 2013 31Ler dados para um vector de estruturas• O vector completo de alunos pode ser lido num ciclo, que se repete até ao fim do ficheiro, em que, a cada nova linha, se acrescenta uma nova estrutura (um novo elemento) ao vector• Todos os dados de um aluno são escritos na mesma linha do ficheiro, podendo ser separados por caracteres especiais, ou organizados por colunas• No caso de serem separados por caracteres especiais, a função strtok pode ser utilizada para fazer a partição da string Computação e Programação 2012 / 2013 32 16
  • 11/3/2012Ler dados para um vector de estruturas• Caso os dados sejam organizados por colunas, basta utilizar os índices da string lida do ficheiro para separar os dados. Computação e Programação 2012 / 2013 33Ler dados para um vector de estruturasDados organizados por colunas [número] [nome] [nota]>> turmaMEMec = leTurmaFicheiro(turma_MEMec.dat);>> apresentaTurma(turmaMEMec);Numero Nome Nota 12345 Antero Palhinhas 14 98765 Julia Mansinho 17 45678 Vitor Faquinha 19 Computação e Programação 2012 / 2013 34 17
  • 11/3/2012Escrever um vector de estruturas• A escrita para um ficheiro requer que seja fornecido um identificador à função fprintf Computação e Programação 2012 / 2013 35Escrever um vector de estruturas• A mesma função pode ser utilizada para escrever a base de dados para o ecrã ou para um ficheiro, dado que o identificador 1 é reservado pelo MATLAB para o ecrã>> escreveTurma(turma,1)Numero Nome Nota 12345 Antero Palhinhas 14 98765 Julia Mansinho 17 45678 Vitor Faquinha 19 Computação e Programação 2012 / 2013 36 18
  • 11/3/2012Escrever um vector de estruturas>> id = fopen(BaseDeDados.txt,wt);>> escreveTurma(turma,id);>> fclose(id); Computação e Programação 2012 / 2013 37Alinhamento da AT 14 • Ficheiros de dados • Processo de leitura/escrita em ficheiros de texto • Manipulação de uma base de dados • Ficheiros de dados do Matlab (.mat) • Folhas de cálculo (.xls) Computação e Programação 2012 / 2013 38 19
  • 11/3/2012 Função pré-definida load *revisãoDescrição: carrega de um ficheiro para o workspace um conjunto de variáveis sem formataçãoSintaxe: load load NomeFicheiro Variáveis load(NomeFicheiro, Variáveis)>> load meu_ficheiro>> load meu_ficheiro variavel_2>> load meu_ficheiro var*>> load (meu_ficheiro, variavel_1); meu_ficheiro.mat Computação e Programação 2012 / 2013 39 Função pré-definida save *revisãoDescrição: grava num ficheiro um conjunto de variáveis sem formataçãoSintaxe: save save NomeFicheiro Variáveis save(NomeFicheiro, Variáveis)>> save meu_ficheiro>> save meu_ficheiro variavel_1 variavel_2>> save meu_ficheiro v*>> NomeFicheiro = meu_ficheiro;>> save(NomeFicheiro, variavel_1) meu_ficheiro.mat Computação e Programação 2012 / 2013 40 20
  • 11/3/2012Anexação de dados a um ficheiro .mat>> save –append meu_ficheiro nova_variavel meu_ficheiro.mat>> whos -file meu_ficheiro Name Size Bytes Class Attributes nova_variavel 1x1 8 double variavel_1 1x1 8 double variavel_2 1x1 8 double Computação e Programação 2012 / 2013 41Alinhamento da AT 14 • Ficheiros de dados • Processo de leitura/escrita em ficheiros de texto • Manipulação de uma base de dados • Ficheiros de dados do Matlab (.mat) • Folhas de cálculo (.xls) Computação e Programação 2012 / 2013 42 21
  • 11/3/2012Ligação a folhas de cálculo função Descrição Instrução de escrita numa folha de cálculo xlswrite com extensão .xls (formato padrão do Microsoft Excel) Instrução de leitura a partir de uma folha de xlsread cálculo com extensão .xls (formato padrão do Microsoft Excel) Computação e Programação 2012 / 2013 43 Exemplo Matlab2ExcelDescrição: cria uma folha de Excel, ou escreve dados numa folha já existente, e numa dada gama de índicesSintaxe: xlswrite(nome,M,folha,gama)>> matriz = [12.7 1.98 -9911.3 2.01 -87];>> xlswrite(meu_teste.xls,matriz);>> Computação e Programação 2012 / 2013 44 22
  • 11/3/2012 Exemplo Matlab2Excel>> matriz = [12.7 1.98 -9911.3 2.01 -87];>> xlswrite(meu_teste.xls,matriz,Minha Folha, ...B3:D4); Acrescenta a nova folha ao ficheiro e escreve a matriz nos índices indicados Computação e Programação 2012 / 2013 45 Exemplo Excel2MatlabDescrição: lê dados a partir de uma folha de Excel, separando a informação numérica da informação de textoSintaxe: [num,txt] = xlsread(nome,folha,gama) >> val = xlsread(meu_teste.xls) val = 12.7000 1.9800 -99.0000 11.3000 2.0100 -87.0000 Computação e Programação 2012 / 2013 46 23
  • 11/3/2012 Exemplo Excel2Matlab>> [num,nome] = xlsread(meu_teste.xls,Grupo,...A3:C4)num = 423 987nome = c David d Burt Lê da folha e gama especificadas, e atribui osvalores numéricos a um array, e o texto a um cell array Computação e Programação 2012 / 2013 47Referências• Capítulo 9 de Stormy Attaway (2012), “Matlab: A Practical Introduction to Programming and Problem Solving”, Elsevier. As aulas teóricas contêm contribuições de José Borges e Miguel Silva Computação e Programação 2012 / 2013 48 24