Linguagem C Ficheiros Compilação Separada

Documentos relacionados
1/24 FICHEIROS DE TEXTO

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

Aula 16: Manipulação de Arquivos em C

Métodos Computacionais. Arquivos

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

Programação de Computadores II

Fundamentos de Programação 1

Sumário. Ficheiros. Ficheiros

Leitura de Arquivos. Prof. Fabrício Olivetti de França

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

SSC304 Introdução à Programação Para Engenharias. Arquivos. GE4 Bio

Manipulação de Ficheiros

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

TÉCNICAS DE PROGRAMAÇÃO

Listas (cont.) K&R: Capitulo 6. Lista Simplesmente Ligada IAED, 2012/2013. Conjunto de nós. Cada nó contém. head NULL. typedef struct node {

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

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 2. Aula 9. Diego Addan Arquivos

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

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Outline. 33. Manipulação de arquivos DIM

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

Programação II. Arquivos - Conceito. Arquivos

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

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

13a. Aula Manipulação de arquivos

Linguagem de Programação C. Arquivos Binários

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

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

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

Programação II. Files Read & Write. Bruno Feijó Dept. de Informática, PUC-Rio

Aula 26 - Arquivos. Prof. Laura Silva de Assis. Engenharia da Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca

LINGUAGEM C: ARQUIVOS

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

1/22 FICHEIROS BINÁRIOS

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

Básico: estrutura de programa, sintaxe Interface com linha de comando

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

Aula 16. Ficheiros de texto

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

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

C Arquivos. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

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

Linguagem de Programação

Aula 26: Arquivos de texto

LINGUAGEM C: ARQUIVOS

Estruturas de Dados. Módulo 15 - Arquivos. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Introdução a Programação. Arquivos

Linguagem C: Arquivo-Texto

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

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

Arquivos em C Parte 2

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Arquivos em C

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

Algoritmos e Estruturas de Dados II IEC013

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II

Ficheiros. IPC2 1999/2000 F. Nunes Ferreira

Mestrado em Engenharia Física Tecnológica

SSC INTRODUÇÃO À COMPUTAÇÃO PARA ENGENHARIA AMBIENTAL REGISTROS E ARQUIVOS. Profa. Dra. Milena Guessi Margarido

Programação de Computadores II. Cap. 9 Tipos Abstratos de Dados (TAD)

Programação de Computadores

Structs, Ponteiros e Arquivos. Prof. Maurício Dias

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

Manipulação de Arquivos

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

Algoritmos e Programação

INF 1620 P1-16/09/06 Questão 1 Nome:

4 MDP. void média e dp(int a[],int n,float em,float ed) 7. Variáveis auxiliares 7. Faça ed igual ao desvio padrão 6 }

Mestrado em Engenharia Física Tecnológica

Conhecendo a Linguagem de Programação C

UNIVERSIDADE DA BEIRA INTERIOR

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga

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

O pré-processador executa transformações controladas no arquivo fonte antes da compilação. Os comandos (sentenças) sempre são iniciados por #.

ADTs (Abstract Data Types): Motivação

Mestrado em Engenharia Física Tecnológica

Arquivos em C. Material da Prof. Ana Eliza

PROGRAMAÇÃO E ALGORITMOS (LEI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

INF 1620 P4-01/07/08 Questão 1 Nome:

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

E/S em Arquivo. Para ler ou escrever arquivos é preciso usar ponteiros de arquivo. Um ponteiro de arquivo é uma variável ponteiro do tipo FILE:

Introdução à programação Computadores e programação I 2003

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

prim = A ; prim = &A[0];

Manipulação de Arquivos

Manipulação de Arquivos Exercício/Exemplo:

Operações em Arquivos. MC102 Felipe Bergo

Manipulação de Arquivos

Tópicos em C. Eliade F. Lima

Estruturas. K&R: Capitulo 6. Estruturas IAED, 2014/2015. Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 10 Ficheiros (Files) e I/O

MAC-115 Introdução à Computação para Ciências Exatas e Tecnologia IO Terceiro Exercício-Programa Entregar até 09/11/2007

INF 1620 P3-02/07/02 Questão 1 Nome:

PROGRAMAÇÃO DE MICROPROCESSADORES 2007 / 2008

Depuração e Teste de programas C C Depuração e teste de programas C

A linguagem C (visão histórica)

Transcrição:

Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada

Definição de novos tipos em C É possível definir novos tipos em C A definição de um tipo é como a declaração de uma variável desse tipo, precedida pela palavra chave typedef Depois da definição o novo tipo pode ser usado como qualquer tipo pré-definido para declarar variáveis: typedef float real; // é definido o novo tipo real // como uma redefinição de float 2

Novos tipos em C (2) real x,y; // x e y são variáveis reais real f( real x ); // uma função que retorna reais Se quisermos simular alguns tipos: typedef int boolean; // define o tipo booleano como inteiro typedef char *String; // define o tipo String como // apontador para carácter 3

Typedef e struct Também podemos combinar typedef com struct: struct _data { int dia, mes, ano; }; typedef struct _data data; Ou de forma mais compacta: typedef struct { int dia, mes, ano; } data; 4

Apontadores para estruturas As estruturas são passadas para as funções por cópia Se quisermos preencher uma estrutura numa função temos que passar o seu endereço void preencher( data *d, { d->dia = dia; } d->mes = mes; d->ano = ano; int dia, int mes, int ano ) Operador -> desreferenciar apontador para estrutura s->campo o mesmo que (*s).campo 5

Preencher - utilização void preencher( data *d, int dia, int mes, int ano);... int main() { data d_nasc;... } preencher( &d_nasc, 10, 10, 1980 );... 6

Ficheiros em C Tipo ficheiro na biblioteca do standard do C: FILE * Um apontador para uma estrutura! Ficheiros pré-definidos: FILE *stdin; entrada standard FILE *stdout; saída standard FILE *stderr; saída de erros standard Normalmente associados à consola (terminal) Declarados em <stdio.h> Como todas as funções para ficheiros. 7

Abrir e fechar ficheiros Abrir um ficheiro: FILE *fopen(char *pathname,char *mode); Mode pode ser: r - leitura w escrita - cria ficheiro novo r+ - leitura/escrita w+ - leitura/escrita cria ficheiro novo Concatena-se b para ficheiros binários Retorna NULL em caso de erro! Fechar um ficheiro: fclose(file* f); Garante que os dados são realmente escritos 8

Ficheiros de texto Leitura e escrita formatada: fprintf( FILE *f, char *fmt,... ); fscanf( FILE *f, char *fmt,... ); printf e scanf em ficheiros Ler uma linha: fgets( char *linha, int max, FILE *f ); Preenche linha com a próxima linha lida de f Inclui o carácter \n na linha preenchida Retorna NULL no fim do ficheiro Escrever uma linha fputs( char *linha, FILE *f ); 9

Cópia de ficheiros linha a linha #include <stdio.h> #define MAXL 256 int main() { FILE *fin, *fout; char lin[maxl]; fin = fopen( "original.txt", "r" ); fout = fopen( "copia.txt", "w" ); if( fin == NULL fout == NULL ) // erro a abrir ficheiro while( fgets(lin, MAXL, fin)!= NULL ) fputs(lin, fout); fclose(fin); fclose(fout); } 10

Leitura e escrita de caracteres (bytes) fputc( int c, FILE *f ); Escreve o carácter c no ficheiro f fputchar( int c ); Definido como fputc( c, stdout ) int fgetc( FILE *f ); Le próximo carácter do ficheiro f Retorna EOF no fim do ficheiro EOF não é um caracter, mas um inteiro! int fgetchar( void ); Definido como fgetc( stdin ) 11

Cópia de ficheiros byte a byte #include <stdio.h> int main() { FILE *fin, *fout; int c; fin = fopen("original.txt", "rb" ); fout = fopen("copia.txt", "wb" ); if( fin == NULL fout == NULL ) // erro a abrir ficheiro while( ( c = fgetc(fin) )!= EOF ) fputc(c, fout); fclose(fin); fclose(fout); } 12

Ficheiros binários int fread( void *buf, int size, int n, FILE *f ); Preenche o vector buf com n elementos de tamanho size Retorna número de elementos efectivamente lidos Retorna 0 no fim do ficheiro int fwrite( void *buf, int size, int n, FILE *f ); Escreve no ficheiro n elementos de tamanho size do vector buf Retorna número de elementos escritos 13

Compilação Separada Podemos combinar vários módulos em C num único programa executável: prog.c modulo1.c modulo2.c Compilar prog.o modulo1.o modulo2.o Ligar prog Apenas o programa principal pode ter função main! 14

Ficheiros.h Servem como interfaces para os módulos Devem conter: Protótipos de funções Definições de tipos Declarações extern de variáveis globais Usados na directiva include #include modulo.h Para incluir as definições dos nossos módulos #include <modulo_sys.h> Para incluir as definições de módulos do sistema Como: stdio.h, stdlib.h, string.h, etc Não são compilados de forma independente! 15

Static Serve para denotar funções ou variáveis globais privadas do módulo Completamente invisíveis a outros módulos Não tem nada a ver com o static do Java! Variáveis globais são variáveis declaradas fora das funções Visíveis por todas as funções Não devem ser usadas, a menos que sejam realmente necessárias 16

Exemplo: Módulo contador contador.h void init_contador(void); void incr_contador(void); int ler_contador(void); contador.c #include "contador.h" static int val; void init_contador() { val = 0; } void incr_contador() { val++; } int ler_contador() { return val; } 17

Módulo Contador programa principal prog.c: #include <stdio.h> #include "contador.h" int main() { int n, i; scanf( "%d", &n ); init_contador(); while( (i = ler_contador()) < n ) { printf( "%d\n", i ); incr_contador(); } return 0; } 18

Compilação separada - comandos Podemos compilar todos os módulos numa linha de comando: gcc Wall g o prog main.c contador.c Ou separadamente: Compilar: gcc Wall g c main.c gcc Wall g c contador.c Opção c: compilar o ficheiro mas não linkar Gera ficheiro objecto (.o) Linkar: gcc Wall g o prog main.o contador.o 19