Computação e Programação

Documentos relacionados
Computação e Programação

Manipulação avançada de ficheiros

Computação e Programação

Manipulação avançada de ficheiros

Computação e Programação

Computação e Programação

COMPUTAÇÃO E PROGRAMAÇÃO 1º Semestre 2010/2011 MEMec, LEAN

Computação e Programação

Computação e Programação

1/24 FICHEIROS DE TEXTO

Sumário. Ficheiros. Ficheiros

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Computação e Programação

Estruturas de dados complexas: cell arrays e structures

Computação e Programação

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

Computação e Programação

TUTORIAL SIMPLIFICADO DE MATLAB

Computação e Programação

Matrizes como imagens Funções definidas pelo programador: Âmbito das variáveis Apresentação do projecto

Manipulação de strings e conversão entre tipos de dados

Programação em MATLAB

LINGUAGEM C: ARQUIVOS

Computação e Programação

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Manipulação de arquivos

Estruturas de dados complexas: cell arrays e structures

Computação e Programação

Departamento de Sistemas de Computação Universidade de São Paulo Introdução a Ciência de Computação I. Aula 13 Arquivos

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Manipulação de strings e conversão entre tipos de dados

Tópicos avançados sobre funções

Computação e Programação

LINGUAGEM C: ARQUIVOS

Computação e Programação

Faculdade de Computação

Computação Eletronica: Arquivos (Introdução)

Funções definidas pelo programador: Passagem de argumentos Formas de Funções comuns Programas modulares

Computação e Programação

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Informática para Ciências e Engenharias (B) 2016/17. Teórica 7

Aula 14 Oficina de Programação Tópicos Especiais em C: Arquivos. Profa. Elaine Faria UFU

Introdução a Programação. Manipulando Arquivos em Modo Texto

MC-102 Aula 24 Arquivos em C e Parâmetros do Programa

Existe uma quantidade de informação que pode ser armazenada para resolver o problema.

Manipulação de Arquivos

Cell arrays e estruturas: exemplos

O que é a modularização

Aula: ARQUIVOS. Introdução à Ciência da Computação I Simone Senger Souza. ICMC/USP São Carlos

Programação. Folha Prática 10. Lab. 10. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Mestrado em Engenharia Física Tecnológica

Informática para Ciências e Engenharias 2014/15. Teórica 8

Programação em MATLAB

Objetivo. Compreender a definição e dominar a implementação de ponteiros em C. Dominar a manipulação de arquivos

Computação e Programação 201*/201* - 1º Semestre

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Computação e Programação

Computação e Programação Exame Época de recurso

Computação e Programação

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Computação e Programação

Computação e Programação (2009/2010-1º Semestre)

13a. Aula Manipulação de arquivos

Programação para Computação 13ª Aula

Linguagem de Programação

Computação 2. Aula 8. Profª. Fabiany Arquivos

CURSO BÁSICO DE PROGRAMAÇÃO AULA 17. Manipulação de arquivos binários.

Arrays, Criação de Funções, Estruturas e Manipulação de Arquivos.

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Arquivos. Programação de Computadores I. Natália Batista.

Computação e Programação

Manipulação de Ficheiros

Algoritmos e Estruturas de Dados II IEC013

Programação II. Arquivos - Conceito. Arquivos

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computação e Programação (2009/2010-1º Semestre)

INF 1620 P2-14/10/05 Questão 1 Nome:

1.a) Qual a diferença entre uma linguagem de programação de alto nível e uma linguagem de programação de baixo nível?

Programação em MATLAB

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

Computação e Programação (2010/2011-1º Semestre)

Computação e Programação. MEMec - LEAN 1º Semestre

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Introdução à Programação em C Input / Output

Métodos Computacionais. Arquivos

Algoritmos e Estruturas de Dados I Linguagem C

Introdução ao MatLab Gráficos e manipulação de dados

Laboratório de Introdução à Ciência da Computação I

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Aula 16: Manipulação de Arquivos em C

Linguagem C Princípios Básicos (parte 1)

Aula 26: Arquivos de texto

Linguagem C Ficheiros Compilação Separada

Linguagem C. Armazenamento de Dados em Arquivos - Continuação

TÉCNICAS DE PROGRAMAÇÃO

Tópicos avançados sobre funções (cont.)

Informática para Ciências e Engenharias 2014/15. Teórica 9

Transcrição:

Computação e Programação MEMec, LEAN - 1º Semestre 2015-2016 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 Industrial Wrap Up da última aula Estruturas de dados Agregam diversos valores com alguma relação lógica entre si, podendo estes ser do mesmo tipo, ou de tipos diferentes Tipos de dados Iguais Diferentes Estruturas de dados Arrays(vectores ou matrizes) Structures(estruturas) Cell arrays(tabelas de células) 2 1

Wrap Up da última aula Struct (estrutura) agrupa dados logicamente relacionados de qualquer tipo, num conjunto de campos Vantagens Desvantagens os campos possuem identificadores, o que torna mais claro que tipo de informação contêm É fácil agrupar várias estruturas com a mesma forma num vector numa estrutura não se pode aceder à informação através de indíces numéricos, o que faz com que não se possa percorrer toda a informação com ciclos 3 Wrap Up da última aula Struct (estrutura) agrupa dados logicamente relacionados de qualquer tipo, num conjunto de campos Criação Preferencialmente através da função (constructor) struct. Exemplo: aluno = struct('nome','joão','numero',22331) Acesso aos dados Usando o operador. antes do nome do campo. Exemplo: disp(aluno.numero) 4 2

Alinhamento 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) 5 Entrada / 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) 6 3

Entrada / 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 7 Formatos usuais dos ficheiros de dados ASCII Binário.txt.dat.csv ( ).mat Ficheiros com dados em formato de texto (são editáveis nos editores de texto comuns como o Notepad) Ficheiros em formato específico do MATLAB, guardam os nomes e conteúdo das variáveis Folha de cálculo.xls Folhas de cálculo do Excel 8 4

Alinhamento 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) 9 Leitura / 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 10 5

Processo de leitura/escrita em ficheiros 1) 2) 3) Abertura Manipulação Fecho Cria ligação entre o ficheiro no disco rígido e um identificador no nosso código fonte Usualmente uma operação de Leitura Escrita Total Escrita em Anexo Termina ligação do ficheiro com o programa, libertando-o para ser utilizado por outros programas 11 Processo de leitura/escrita em ficheiros Funções básicas 1) Abertura fopen fgetl 2) Manipulação fgets fscanf textscan fprintf Leitura Escrita 3) Fecho fclose 12 6

Abertura de ficheiros Cria ligação entre o ficheiro no disco rígido e um identificador no código fonte do programa Sintaxe: fid = fopen(nome_ficheiro, permissão) Permissões permissão Descrição r w a abertura para leitura abertura para escrita anexação Identificadores fid Descrição -1 Erro na abertura 0 a 2 identificadores reservados para o MATLAB 3 ou superior identificador do ficheiro 13 Fecho de ficheiros Termina ligação do ficheiro com o programa, libertando-o para ser utilizado por outros programas Sintaxe: resultado = fclose(fid) Identificadores resultado Descrição -1 erro no fecho 0 sucesso 14 7

Processo usual de abertura/fecho Excerto de código fonte num script representando o processo de abertura e fecho de um ficheiro 15 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ão necessária:'w' escrita (cria um novo ficheiro ou re-escreve o ficheiro existente) 'a' anexação (acrescenta a informação ao final do ficheiro) 16 8

Exemplo de escrita em ficheiro de texto Variável contendo o identificador do ficheiro Juntar o sufixo 't' à permissão para ficheiros texto (ver help da função fopen) Ciclo que percorre o vector e escreve os seus elementos linha-a-linha 17 Exemplo de escrita em ficheiro de texto A execução do script anterior cria um novo ficheiro de texto chamado MeusDados.txtcom o conteúdo do vector Editor do MATLAB >> escrevemeusdados >> Notepad 18 9

Exemplo de escrita em ficheiro de texto Permissão para anexação Devido à forma como funciona a função fprintfno MATLAB, o ciclo fornão é realmente necessário nalguns casos 19 Exemplo de escrita em ficheiro de texto A execução do script anterior anexa o novo conjunto de valores ao ficheiro MeusDados.txt Editor do MATLAB >> escrevemeusdados2 >> Notepad 20 10

Exemplo de código fonte completo 21 Leitura de ficheiros linha-a-linha função fgetl fgets feof Descrição Lê uma cadeia de caracteres do ficheiro especificado até encontraro carácter \n, descartando-o Semelhante à instrução fgetlmas mantém o carácter de controlo \nna cadeia de caracteres. Permite especificar um número máximo de caracteres a ler. Devolve um valor lógico verdadeiro se na última operação de leitura for encontrado o fim do ficheiro 22 11

Leitura de ficheiros linha-a-linha Descrição: ambas as funções lêm uma linha do ficheiro Sintaxe: tline = fgetl(fid) tline = fgets(fid,num_caract_maximo) Permissão necessária: 'r' leitura 23 Exemplo de leitura linha-a-linha Enquanto não for encontrado o fim do ficheiro Obter nova linha eof 24 12

Exemplo 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 >> 25 Exemplo de leitura de ficheiro com cabeçalho Leitura do cabeçalho de dimensão conhecida Leitura dos dados 26 13

Exemplo 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 27 Leitura de ficheiros completos função fscanf textscan Descrição Lê dados formatados a partir de um ficheiro para variáveis compativeis com o formato especificado. Utiliza os mesmos caracteres de controlo da instrução fprintf. Semelhante à instrução fscanfmas o resultado é armazenado num cell array. 28 14

Exemplo de leitura de ficheiro completo Leitura do conteúdo completo Separação e conversão dos dados 29 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_vez dados = 5.3450 2.2220 3.3320 4.4160 1.1780 97.0000 98.0000 99.0000 97.0000 98.0000 valores = codigo = abcab 5.3450 2.2220 3.3320 4.4160 1.1780 30 15

Alinhamento 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) 31 Exemplo base de dados de alunos Turma: AM21T 30 2 Nome: Joã Silmes 1 Número: Nome: João 22331 Silva Nome: Número: João 22331 Silva Número: Nota: 2233115 Nota: 15 Nota: 15 Usar um vector de estruturas para construir uma base de dados da turma Alunos Turma AM21T Número da ficha Nome Numero de Aluno Nota 1 João Silva 22331 15 2 Paulo Almeida 98734 17 30 Manuel Gomes 12345 12 32 16

Exemplo de introdução manual >> gerir_alunos Introduza o número do aluno, ou 0 para terminar: 12345 Introduza o nome: Antero Palhinhas Introduza a nota: 14 Novo aluno! Introduza o número do aluno, ou 0 para terminar: 98765 Introduza o nome: Julia Mansinho Introduza a nota: 17 Novo aluno! Introduza o número do aluno, ou 0 para terminar: 45678 Introduza o nome: Vitor Faquinha Introduza a nota: 19 Novo aluno! 33 Ler 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 stringno número de campos desejado 3. Converter os valores numéricos 4. Atribuir os dados aos campos da estrutura 34 17

Ler 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 serseparados por caracteres especiais, ou organizados por colunas No caso de serem separados por caracteres especiais, a função strtokpode ser utilizada para fazer a partição da string 35 Ler 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. 36 18

Ler dados para um vector de estruturas Dados 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 37 Escrever um vector de estruturas A escrita para um ficheiro requer que seja fornecido um identificador à função fprintf 38 19

Escrever 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 39 Escrever um vector de estruturas >> id = fopen('basededados.txt','wt'); >> escreveturma(turma,id); >> fclose(id); 40 20

Alinhamento 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) 41 Função pré-definida load *revisão Descrição: carrega de um ficheiro para o workspace um conjunto de variáveis sem formatação Sintaxe: 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 42 21

Função pré-definida save *revisão Descrição: grava num ficheiro um conjunto de variáveis sem formatação Sintaxe: 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 43 Anexaçã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 44 22

Alinhamento 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) 45 Ligação a folhas de cálculo função xlswrite xlsread Descrição Instrução de escrita numa folha de cálculo com extensão.xls (formato padrãodo Microsoft Excel) Instrução de leitura a partir de uma folha de cálculo com extensão.xls (formato padrãodo Microsoft Excel) 46 23

Exemplo Matlab2Excel Descrição: cria uma folha de Excel, ou escreve dados numa folha já existente, e numa dada gama de índices Sintaxe: xlswrite(nome,m,folha,gama) >> matriz = [12.7 1.98-99 11.3 2.01-87]; >> xlswrite('meu_teste.xls',matriz); >> 47 Exemplo Matlab2Excel >> matriz = [12.7 1.98-99 11.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 48 24

Exemplo Excel2Matlab Descrição: lê dados a partir de uma folha de Excel, separando a informação numérica da informação de texto Sintaxe: [num,txt] = xlsread(nome,folha,gama) >> val = xlsread('meu_teste.xls') val = 12.7000 1.9800-99.0000 11.3000 2.0100-87.0000 49 Exemplo Excel2Matlab >> [num,text] = xlsread('meu_teste.xls','grupo',... 'A3:C4') num = 423 987 text = 'c' '' 'David' 'd' '' 'Burt' Lê da folha e gama especificadas, e atribui os valores numéricos a um array, e o texto a um cell array 50 25

Boas práticas de Programação Fechar sempre os ficheiros que foram abertos. Verificar sempre se os ficheiros foram correctamente abertos e fechados. Utilizarumarepetiçãoatéatingiro fimdo ficheiro quando se lê um ficheiro linha-a-linha, para garantir quetodaa informaçãoé lida. Tero cuidadode utilizara stringde formatação correcta com as funções fscanf ou textscan. 51 Referê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 dos profs. José Borges e Miguel Silva 52 26