Você está na página 1de 23

ANHANGUERA EDUCACIONAL DE INDAIATUBA

ATPS ETAPAS 3 E 4

INDAIATUBA
2014

Captulo 3 - Ponteiros

O que so ponteiros?
Ponteiros (apontador) uma varivel capaz de armazenar endereos de memria ou
endereos de outras variveis. Na programao, o ponteiro um tipo de dado cujo valor se
refere na verdade a outro valor em outra localizao de memria. Os ponteiros so utilizados
e suportados em C, C++, Pascal e em muitas outras linguagens de programao.

Vantagens:

Proporciona uma grande flexibilidade para o gerenciamento de memria e otimizao


de algoritmo;

Flexibilidade;

Alocar e desalocar a memria durante o tempo de execuo permite criar objetos


grandes, como matrizes, de forma rpida e imediatamente liberar a memria quando
ele no mais necessrio

Desvantagens:

Aprender a usar ponteiros uma tarefa rdua para muitos programadores;

Voc pode acidentalmente substituir a memria crtica, modificar o cdigo de um


aplicativo em execuo, ou fazer com que seu aplicativo ou de outro aplicativo se
comportar ou sair inesperadamente;

Podem ocorrer vazamentos de memria.

Endereo
Todos os comutadores possuem uma memria com uma sequencia de bytes. Cada byte
armazena um de 256 possveis valores. Cada objeto na memria de um computador tem um
determinado nmero de bytes consecutivos.
Um char equivale a 1 byte, int equivale a 4 bytes e Double equivale a 8 bytes. Cada
objeto possui um endereo nico e na maioria dos computadores o endereo o endereo do
primeiro byte.

Quando e onde usar


Em algumas estruturas de dados os ponteiros so usados como referncias para
intercalar cada elemento da estrutura com seus vizinhos.
Os apontadores tambm so utilizados na simulao de passagem de parmetro por
referncia em linguagens que no possuem essa construo, como em C, por exemplo. Isso
faz com que a funo possa retornar com mltiplos valores.
O uso de ponteiros essencial para a implementao de modelos de re-chamada
(utilizado em manipulao de interfaces grficas).
Podemos utilizar tambm para comunicar informaes sobre a memria atravs da
funo malloc.
Os ponteiros podem ser usados no somente para que a funo passe valores para o
programa chamador, mas tambm para passar valores do programa para a funo.

Como utilizar
Um apontador, assim como qualquer varivel, precisa ser declarado como um tipo. No
caso do ponteiro, a varivel deve ser do mesmo tipo para qual ele aponta. Na declarao
especificamos o tipo da varivel e o nome precedido por asterisco.
3

Utilizamos o operador & (E comercial) para acessar o endereo de uma determinada


varivel. O & faz com que retorne um endereo na memria do operando. Por exemplo, se
uma varivel chamada Var for alocada no endereo de memria nmero 2000, a expresso
&Var valer 2000. Para atribuir um valor ao apontador utilizamos apenas seu nome de
varivel e esse valor diretamente ligado endereo de memria alocado.
Para cada varivel declarada, o compilador reserva dois bytes de memria onde os
endereos sero alocados.

Ponteiros com matrizes


Apontadores e matrizes esto diretamente conectados em algumas linguagens de
programao. O uso de ponteiros facilita muito a construo de cdigos com matrizes. Eles
podem ser organizados como qualquer outro tipo de dado.

Concluses

O operador & junto ao nome do apontador retorna o endereo do ponteiro;

O operador * junto ao nome do ponteiro retorna o contedo da varivel apontada;

O nome do apontador retorna o endereo para qual ele aponta;

Existem vantagens e desvantagens no uso de ponteiros.

EXERCCIOS

Problemas para tratar ponteiros:

1) Faa um programa usando ponteiros que libere trs variveis na memria e


mostre o caminho da mesma.

Cdigo Fonte:

Sada:

2) Faa um programa usando ponteiros que mostre o endereo de memria de um


nmero.

Cdigo Fonte:

Sada:

Problemas para tratar ponteiros para matriz:

1) Faa um programa que guarde uma string usando ponteiro com matriz e depois
mostre na tela o nome do ponteiro e a string armazenada.

Cdigo Fonte:

Sada:

2) Faa um programa para tratar ponteiros com matriz que guarde os dias da
semana e exibe na tela.

Cdigo Fonte:

Sada:

Problemas para tratar ponteiros para matriz usando funes:

1) Faa um programa usando ponteiros com matriz utilizando funes que


transforme uma frase de letras minsculas para letras maisculas e exiba na tela.
Cdigo Fonte:

Sada:

2) Faa um programa usando ponteiros com matriz utilizando funes que receba
dois nmeros e mostre qual maior.
Cdigo Fonte:

Sada:

10

Captulo 4 - Arquivos

O que so arquivos?
O arquivo (ficheiro) basicamente um recurso utilizado no armazenamento de
informaes. Um arquivo permanece disponvel para utilizao aps um programa em
execuo ser encerrado. Ficheiros podem ser comparados aos arquivos tradicionalmente
utilizados em escritrios. Um arquivo uma coleo de bytes referenciados por um nico
nome.

Como utilizar arquivos em programao


Programas em C podem gravar e ler arquivos de diferentes maneiras. As funes de
E/S (Entrada e Sada) em arquivos so declaradas no cabealho <stdio.h>.
A manipulao de arquivos tambm possvel por meio de streams. Uma stream
basicamente um dispositivo lgico que representa um dispositivo ou um arquivo, porm fica
independente dos mesmos. Sendo assim, a funo que manipula uma streams pode escrever
tanto em um arquivo no disco quanto em algum outro dispositivo, como o monitor. Um
arquivo interpretado como um dispositivo qualquer, desde arquivos em disco at mesmo um
scanner.
Na programao em C, as operaes realizadas com arquivos envolvem um
identificador de fluxo, que pode ser representada por uma varivel do tipo FILE. A
declarao de uma varivel FILE ocorre da mesma maneira que qualquer outra varivel.
Existem trs etapas bsicas para a manipulao de arquivos:

Abrir

Ler/gravar

Fechar

Abrindo e fechando arquivos


Para abrir um arquivo utilizamos a funo fopen() e ao termino na manipulao, o ser
encerrado pela funo fclose()
11

Funes principais

FUNO

FINALIDADE

fopen( )
fclose( )
putc( )
fputc( )
getc( )
fgetc( )
fseek( )

Abrir um arquivo
Fechar um arquivo
Escrever um caractere em um arquivo
Escrever um caractere em um arquivo
Ler um caractere de um arquivo
Ler um caractere de um arquivo
Posicionar o ponteiro de arquivo em um byte
especfico
para o arquivo o que printf para o
console
para o arquivo o que scanf para o console
Devolve verdadeiro se o fim do arquivo foi
atingido
Devolve verdadeiro se ocorreu um erro
Posicionar o ponteiro de arquivo no incio
deste
Apagar um arquivo
Descarregar um arquivo

fprintf( )
fscanf( )
feof( )
ferror( )
rewind( )
remove( )
fflush( )

Outro tema importante na programao com arquivos o uso de macros: um padro de


entrada que substitudo por um novo padro de sada.

MACROS

FINALIDADE

NULL
EOF

Define um ponteiro nulo.


Geralmente definida como -1 e devolve
este valor quando uma funo de entrada
tenta ler alm do final do arquivo.
Define um valor inteiro que determina o
nmero de arquivos que podem ser abertos
ao mesmo tempo
So usadas com a funo fssek( ) para o
acesso aleatrio a um arquivo.

SEEK_SET, SEEK_CUR e SEEK_END

SEEK_SET, SEEK_CUR e SEEK_END

12

Ponteiros e arquivos
Um ponteiro de arquivo responsvel por identificar um arquivo especfico. Ele
usado pela stream para direcionar as operaes das funes de entrada/sada. O ponteiro de
arquivo do tipo FILE
Basicamente um ponteiro de arquivo identifica um arquivo especfico e usado
pela stream para direcionar as operaes das funes de E/S. Um ponteiro de arquivo uma
varivel ponteiro do tipo FILE. Esta varivel um tipo pr-definido pela linguagem C.
Normalmente ela definida no arquivo de cabealho stdio.h, mas isso depende do seu
compilador. Para ler ou escrever em arquivos seu programa precisa usar os poteiros de
arquivo. Para declarar uma varivel como ponteiro de arquivo use a seguinte sintaxe:
FILE *arquivo;

Concluso

Um ponteiro de arquivo um apontador para uma estrutura que contm informaes


sobre o arquivo, incluindo o seu nome, a posio atual do arquivo, se o arquivo est
sendo lido ou escrito, e se ocorreram erros. O operador * junto ao nome do ponteiro
retorna o contedo da varivel apontada;

13

EXERCCIOS
Dois problemas para tratar arquivos gravar e ler caractere a
caractere:

1) Faa um programa que leia um arquivo de texto de uma msica.

Cdigo Fonte:

Sada:

14

2) Faa um programa que conte as linhas de um arquivo de texto.

Cdigo Fonte:

15

Sada:

Dois problemas para tratar arquivos gravar e ler linha a linha:

1) Faa um programa que leia um arquivo de texto e o separe por caractere em trs
linhas.
Cdigo Fonte:

16

Sada:

2) Faa um programa que grave um arquivo de texto com uma palavra digitada
pelo usurio.
Cdigo Fonte:

Sada:

17

Dois problemas para tratar arquivos gravar e ler de forma


formatada:

1) Faa um programa que leia e grave de forma formatada uma varivel do tipo int,
float, char e double.

18

Cdigo Fonte:

Sada:

19

2) Faa um programa que grave de forma formatada o valor de PI em um


arquivo.
Cdigo Fonte:

Sada:

20

Dois problemas para tratar arquivos gravar e ler registros:

1) Faa um programa que crie um arquivo de texto com o nome ATPS.

Cdigo Fonte:

Sada:

2) Faa um programa que crie um arquivo de registro com a frase Ol mundo


21

Cdigo Fonte:

Sada:

22

BIBLIOGRAFIA

HASHIMOTO F., RONALDO . Matrizes, Ponteiros e Funes. Disponvel em:

<<http://www.ime.usp.br/~hitoshi/introducao/23-matrizes_ponteiros.pdf

>.

Acesso

em: 10. Jun 2014

Autor Desconhecido. Como utilizar ponteiros com matrizes. Disponvel em:


<http://tecnologia.hsw.uol.com.br/programacao-em-c34.htm >. Acesso em: 10 jun.
2014.

Autor Desconhecido. Programar em C/Entrada e Sada de Dados. Disponvel em:

< http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_em_arquivos >.


Acesso em: 11 jun. 2014.

PAZINATTO,

EDER.

Matrizes

Ponteiros

Disponvel

em:

<https://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=9&cad=rj

a&uact=8&ved=0CGMQFjAI&url=http%3A%2F%2Fwww.professores.unirg.edu.br
%2Fmarcelo%2Fcoordenacao%2FEder%2FLp_I%2FLPI_unid6MatPont.doc&ei=5HYU_C1OculsATDyoGAAw&usg=AFQjCNEVl5sVlq7Pj5cZ53QBon_lC7KIkA&sig2
=FpooUUCv0YBo7PQuTVtpRQ&bvm=bv.68693194,d.cWc> Acesso em:

10 jun.

2014.

23