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

Documentos relacionados
Linguagem de Programação

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

O que é a modularização

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

Ponteiro. Ponteiro. Objetivo. Compreender a definição e dominar a implementação de ponteiros em C.

INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1

Capítulo 06: Arquivos

Introdução à Programação

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

Referências. Arquivos. Tópicos Principais. Programação de Computadores II. Motivação. Motivação. Abertura de arquivo. Slides da profa.

Capítulo 6: Arquivos

Computação 2. Aula 9. Diego Addan Arquivos

Métodos Computacionais. Arquivos

INF 1620 P4-09/07/03 Questão 1 Nome:

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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

LINGUAGEM C: ARQUIVOS

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

Algoritmos e Programação

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

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

INF 1620 P4 11/12/06 Questão 1 Nome:

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

Aula 16: Manipulação de Arquivos em C

INF 1620 P2-23/10/04 Questão 1 Nome:

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

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-25/11/05 Questão 1 Nome:

INF 1620 P4 30/06/07 Questão 1 Nome:

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

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

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

INF 1620 P4-27/06/02 Questão 1 Nome:

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

ponteiros INF Programação I Prof. Roberto Azevedo

Manipulação de Arquivos. Técnicas de Programação

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

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

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

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

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

LINGUAGEM C: ARQUIVOS

Fundamentos de Programação

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

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

INF 1620 P3-29/06/04 Questão 1 Nome:

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

Outline. 33. Manipulação de arquivos DIM

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

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

Programação de Computadores

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Alocação Dinâmica de Memória - Exercício

INF 1620 P2-17/05/08 Questão 1 Nome:

Aluno: Matrícula: Turma:

LINGUAGEM C: ESTRUTURAS DEFINIDAS PELO

Prática de Programação. Prof. Tiago A. E. Ferreira Aula 9 Estruturas, Uniões, Enumerações e Tipos Definidos pelo Usuário

INF 1620 P3-27/11/04 Questão 1 Nome:

INF 1005 Programação I - Prof. Hélio Lopes 24/04/2012

Comandos de Entrada e Saída

Linguagem C: Introdução

Manipulação de Arquivos

Faculdade de Computação

Programação II. Arquivos - Conceito. Arquivos

LINGUAGEM C: ALOCAÇÃO DINÂMICA

Linguagem C vetores. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Programação I Funções. Prof. Carlos Alberto

Introdução a Programação. Tipos Estruturados de Dados

Linguagem C: Arquivo-Texto

INF 1620 P1-11/04/08 Questão 1 Nome:

INF 1620 P3-21/06/08 Questão 1 Nome:

Linguagem C Ficheiros Compilação Separada

Ponteiros de Variáveis

1/24 FICHEIROS DE TEXTO

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

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

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO

Aula 06 Introdução à Programação Matrizes

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

Algoritmos e Estruturas de Dados II IEC013

Métodos Computacionais em Física I (FIW234) Turmas IFA e IFB Noções Básicas de Linguagem C

Sumário. Ficheiros. Ficheiros

Introdução a Programação. Arquivos

Ponteiros. Baseado nos slides do Prof. Mauro.

Programação: Vetores

INF 1620 P1-18/09/04 Questão 1 Nome:

INF 1620 P3-06/12/03 Questão 1 Nome:

INF 1620 P4-06/12/02 Questão 1 Nome:

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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:

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

Programação Básica. Estrutura de um algoritmo

Aula 3:Introdução à Linguagem C

CCO 016 / COM 110 Fundamentos de Programação

P2 Programação II Departamento de Informática/PUC-Rio

Tipos Estruturados. Tipos Estruturados

Transcrição:

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

Motivação para a utilização de ponteiros O que precisamos para fazer para que uma função altere mais de um valor? Como fazer uma função que calcule a soma e o produto de dois números inteiros?

Por que o seguinte trecho de código não funciona?

fasdasdsadsadsadsadsad Endereços de memória Ao declarar uma variável, além de reservar certo espaço para a variável, também reservamos espaço para o endereço de memória da variável

Como declarar uma variável do tipo ponteiro Para declarar uma variável do tipo int, escrevemos: int a; Para declarar uma variável do tipo ponteiro para inteiro, escrevemos: int *p; Para armazenar o endereço da variável a no ponteiro p, utilizamos o operador & : p = &a;

Como declarar uma variável do tipo ponteiro De forma análoga, podemos declarar ponteiros de outros tipos: float * m; char * nome; double * xd; Ponto * p1; //este último é uma variável de um TAD

Trabalhando com ponteiros Podemos acessar o valor de uma variável através do operador * antes do ponteiro: acessar *p é equivalente a acessar a

Exercício 1 Faça um código que leia dois números inteiros e imprima o produto deles, mas realizando a multiplicação através de variáveis do tipo ponteiro.

Ponteiros e estruturas A forma de referenciar o conteúdo da struct apontada pelo ponteiro é sempre da forma: (*ponteiro).atributo Sendo os parênteses obrigatório.

Ponteiros e estruturas Acessar uma struct apontada por um ponteiro para muitos pode parecer confusa. É muito comum errar os parênteses necessários para garantir a precedência dos operadores. e * Porém existe o operador seta -> que facilita o uso de ponteiros para estruturas. (*p).atr; p->atr;

Ponteiros e funções Podemos passar ponteiros de variáveis como parâmetros de uma função. Isso é útil para resolver, por exemplo, o problema apresentado no começo da aula Quando alteramos o conteúdo de uma variável através de um ponteiro dentro de uma função, alteramos também o valor da variável onde a função foi chamada. Por que? A passagem de ponteiros para função é por referência.

Ponteiros como parâmetro de funções

Ponteiros como parâmetro de funções &a 5 &a

Ponteiros como parâmetro de funções Portanto, agora podemos alterar diversos valores com apenas uma chamada de função. Podemos resolver o problema apresentado no início da aula utilizando ponteiros, da seguinte forma:...

Exercício 2 Faça uma função que receba dois ponteiros para números inteiros e inverta os dois. Seu programa passará somente dois ponteiros para inteiros como os parâmetros da função e não poderá ter retorno (deverá ser do tipo void):

Ponteiros e vetores Ao declarar um vetor, por exemplo: int vet[10]; estamos reservando 10 espaços de memória do tamanho de int vet (sem a indexação) representa um ponteiro para a primeira célula do vetor (vet + 0) aponta para o primeiro elemento do vetor (vet + 1) aponta para o segundo elemento do vetor (vet + 2) aponta para o terceiro elemento do vetor (vet + 3) aponta para o quarto elemento do vetor

Ponteiros e vetores vet[4] é o valor do quinto elemento do vetor, e é uma forma simplificada de escrever *(vet + 4) vet + 0 vet + 1 vet + 2 vet + 3 vet + 4 vet + 5 vet + 6 vet + 7 vet + 8 vet + 9 vet[0] vet[1] vet[2] vet[3] vet[4] vet[5] vet[6] vet[7] vet[8] vet[9]

Vetores como parâmetros de funções Assim vimos que vetores são tratados como ponteiros, logo a passagem de vetores como parâmetros para funções pode ser feita da seguinte forma: void funcao (int *vet); ao inves de: void funcao (int vet[]);

Leitura de arquivos A linguagem C permite acesso tanto para leitura quanto para escrita de arquivos. O primeiro passo é criar um ponteiro para o arquivo, escrevendo: FILE * fp;

Leitura de arquivos Após criar o ponteiro do arquivo, deve-se chamar a função fopen e armazenar o retorno da função no ponteiro criado A função fopen possui 2 parâmetros: O caminho do arquivo e o modo de abertura. Exemplo de chamada da função: fp = fopen(''introcomp.txt'', ''a+''); Como padrão, o caminho começa onde o arquivo executável foi executado, mas é possível escrever o caminho desde a pasta raiz.

Modos de acesso ao arquivo r -> leitura do arquivo o arquivo acessado precisa existir w -> escrita no arquivo caso o arquivo já exista, o conteúdo anterior é perdido caso não exista, um novo arquivo é criado a -> escrita no final do arquivo caso o arquivo já exista, o conteúdo anterior permanece e o programa escreve no final do arquivo caso não exista, um novo arquivo é criado

Modos de acesso ao arquivo É possível ler e escrever ao mesmo tempo, basta utilizar o operador +, como r+, a+, w+. Vale lembrar que as regras citadas anteriormente continuam valendo.

Checando se um arquivo foi aberto corretamente Quando a função fopen funciona corretamente, ela retorna um ponteiro do tipo FILE* Entretanto, ao se deparar com algum erro, a função fopen retorna uma constante nula (NULL).

Funções de leitura de arquivo Podemos ler o conteúdo de um arquivo de forma similar a leitura do terminal a função fscanf possui 3 parâmetros, dois deles iguais a scanf fscanf(fp, %d %d, &a, &b); a função fgetc possui um parâmetro, que é do tipo FILE* fgetc(fp); para armazenar um caractere lido com essa função, deve-se utilizar seu retorno: c = fgetc(fp);

Funções de escrita no arquivo Podemos também escrever algo num arquivo de forma similar a qual escrevemos no terminal A função mais utilizada é a fprintf, que também possui 3 parâmetros, e dois deles são iguais aos do printf fprintf(fp, %d, %d, %d, a, b, c);

Fechamento do arquivo Ao terminar de trabalhar com o arquivo, deve-se sempre lembrar de o fechar a função fclose é bem simples, possuindo apenas um parâmetro: fclose(fp);

Exemplo de código O código abaixo faz a leitura de uma string do arquivo arq_entrada.txt, cria um arquivo de saída arq_saida.txt e escreve nele a string lida do primeiro arquivo.

Exercício 3 Faça um programa que leia do terminal o nome de uma pessoa e sua data de aniversário e salve essas informações num arquivo de texto (pessoa.txt) com o seguinte formato: Nome da pessoa: <nome> Data de aniversário: <data>

Exercício 4 Faça um programa que leia uma palavra do terminal e uma palavra num arquivo de texto e diga se as duas palavras são iguais.