Sie sind auf Seite 1von 25

Prof.

Adriano Teixeira de Souza

A memria de qualquer computador uma seqncia de bytes. Cada byte pode armazenar um nmero inteiro entre 0 e 255. Cada byte na memria identificado por um endereo numrico, independente do seu contedo.

Prof. Adriano Teixeira de Souza

Contedo

Endereo

0000 0001

0x0022FF16

0001 1001

0x0022FF17

0101 1010

0x0022FF18

1111 0101

0x0022FF19

1011 0011

0x0022FF1A

Prof. Adriano Teixeira de Souza

Cada objeto (variveis, strings, vetores, etc.) que reside na memria do computador ocupa um certo nmero de bytes:
Inteiros: Caracteres: Ponto-flutuante: 4 bytes consecutivos 1 byte 4 bytes consecutivos

Cada objeto tem um endereo.

Prof. Adriano Teixeira de Souza

Varivel char string1[4]

Valor
0001 1001 0101 1010 1111 0101 1011 0011 0000 0001 0001 1001 0101 1010 1111 0101

Endereo 0x0022FF24

0x0022FF14

1011 0011 0000 0001

float real[4]

0001 1001 0101 1010 1111 0101

1011 0011 0000 0001


0001 1001 0101 1010 1111 0101

1011 0011 0000 0001

char string[4]

0001 1001 0101 1010 1111 0101 1011 0011

0x0022FF10

Prof. Adriano Teixeira de Souza

int x = 100;

Ao declararmos uma varivel x como acima, temos associados a ela os seguintes elementos:
Um nome (x) Um endereo de memria ou referncia (0xbfd267c4) Um valor (100)

Para acessarmos o endereo de uma varivel, utilizamos o operador &

Prof. Adriano Teixeira de Souza

Um ponteiro (apontador ou pointer) um tipo especial de varivel cujo valor um endereo. Um ponteiro pode ter o valor especial NULL, quando no contm nenhum endereo. NULL uma constante definida na biblioteca stdlib.h.

Prof. Adriano Teixeira de Souza

*var

A expresso acima representa o contedo do endereo de memria guardado na varivel var Ou seja, var no guarda um valor, mas sim um endereo de memria.

Prof. Adriano Teixeira de Souza

int x; int *ap; ap = &x;

// apontador para inteiros // ap aponta para x

0000 0000 (00)


ap

0x0022FF14

0010 0010 (22) 1111 1111 (FF) 0001 0000 (10) 0000 0001
0x0022FF10

0001 1001
0101 1010

1111 0101
Prof. Adriano Teixeira de Souza

H vrios tipos de ponteiros:


ponteiros ponteiros ponteiros ponteiros ponteiros para para para para para caracteres inteiros ponteiros para inteiros vetores estruturas

O compilador C faz questo de saber de que tipo de ponteiro voc est definindo.

Prof. Adriano Teixeira de Souza

int char float double

*ap_int; *ap_char; *ap_float; *ap_double;

// // // //

apontador apontador apontador apontador

para para para para

int char float double

// apontador para apontador int **ap_ap_int;

Prof. Adriano Teixeira de Souza

Um conjunto limitado de operao aritmticas pode ser executado. Os ponteiros so endereos de memria. Assim, ao somar 1 a um ponteiro, voc estar indo para o prximo endereo de memria do tipo de dado especificado.

Prof. Adriano Teixeira de Souza

int

*ap;

00 22 FF 18
ap

00 22 FF 14
ap+1

00
22 FF 10
ap+2

Prof. Adriano Teixeira de Souza

Sempre que somar ou subtrair ponteiros, deve-se trabalhar com o tamanho do tipo de dado utilizado. Para isso voc pode usar o operador sizeof().

Prof. Adriano Teixeira de Souza

O while deve ser usado sempre que:

No soubermos exatamente quantas vezes o lao deve ser repetido O teste deva ser feito antes de iniciar a execuo de um bloco de comandos Houver casos em que o lao no deva ser repetido nenhuma vez antes do teste da condio

Ateno:
As variveis usadas no teste devem ser inicializadas antes do teste.

Prof. Adriano Teixeira de Souza

Permite que um certo trecho de programa seja executado AT QUE uma certa condio deixe de ser verdadeira:

do { <comandos_a_repetir> } while (<condio>); <comandos_aps_lao_do-while>


Prof. Adriano Teixeira de Souza

Funcionamento:
1.Executar os comando dentro do bloco do-while. 2.Testar a condio. 3.Se a condio for falsa, ento sair do lao. 4.Se a condio for verdadeira, ento retornar para o passo 1.

Prof. Adriano Teixeira de Souza

O comando do-while deve ser usado sempre que:


No soubermos exatamente quantas vezes o lao deve ser repetido O teste deva ser feito depois da execuo de um bloco de comandos

O bloco de comandos deve se executado pelo menos uma vez

Prof. Adriano Teixeira de Souza

Ler um nmero e verificar se este ou no um nmero primo. Dada uma dvida de 10 mil reais que cresce a juros de 2,5% ao ms e uma aplicao de 1.500 reais com rendimento de 4% ao ms, escrever um algoritmo que determine o numero de meses necessrios para pagar a dvida.

Prof. Adriano Teixeira de Souza

Permite que um certo trecho de programa seja executado um nmero determinado de vezes.

for (comandos_inic; condio_teste; incre/decremento) { <comandos_a_repetir> }


<comandos_aps_lao_for>;

Prof. Adriano Teixeira de Souza

Funcionamento:
1.Executar os comandos de inicializao. 2.Testar a condio.

3.Se a condio for falsa ento sair do lao for.


4.Se a condio for verdadeira ento executar os comandos que esto subordinados ao for.

5.Executar os comandos de incremento/decremento.


6.Voltar ao passo 2.

Prof. Adriano Teixeira de Souza

Observaes:
Os comandos de inicializao so executados apenas uma vez.

O contador incrementado/decrementado sempre ao final da execuo do bloco.


O teste feito sempre antes do incio da execuo do bloco de comandos.

Prof. Adriano Teixeira de Souza

O comando for deve ser usado sempre que:


Soubermos exatamente quantas vezes o lao deve ser repetido.

O teste deva ser feito antes da execuo de um bloco de comandos.


Houver casos em que o lao no deva ser repetido nenhuma vez.

Prof. Adriano Teixeira de Souza

Comandos for aninhados


Um comando for pode ser utilizado dentro de outro comando for. Cuidados devem ser tomados para no aumentar o tempo de execuo do algoritmo.

Prof. Adriano Teixeira de Souza

Desenvolver 3 programas, cada programa dever imprimir uma das figuras abaixo

********** ********* ******** ******* ****** ***** **** *** ** *

***** **** *** ** * * ** *** **** *****

********** **** **** *** *** ** ** * * * * ** ** *** *** **** **** **********

Prof. Adriano Teixeira de Souza

Das könnte Ihnen auch gefallen