programação estruturada ii · ponteiros para matrizes usando funções criamos a função...

8
1 Programação Estruturada II Ponteiros Prof. Rodrigo Rocha [email protected] http://www.bolinhabolinha.com Apresentação Prof. Rodrigo Rocha – [email protected] Ementa Depuração e Documentação interna Modularização. Uso de funções Por valor Por referência Ponteiros e suas aplicações Básico Uso avançado • Registros Básico Uso avançado de vetores e matrizes • Arquivos • Recursão

Upload: others

Post on 16-Nov-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação Estruturada II · Ponteiros para matrizes usando funções Criamos a função recebendo o ponteiro para a matriz Chamamos a função, passando a matriz como parâmetro

1

Programação Estruturada II

Ponteiros

Prof. Rodrigo [email protected] http://www.bolinhabolinha.com

Apresentação

Prof. Rodrigo Rocha – [email protected]

Ementa

• Depuração e Documentação interna

• Modularização. Uso de funções Por valor

Por referência

• Ponteiros e suas aplicações Básico

Uso avançado

• Registros Básico

Uso avançado de vetores e matrizes

• Arquivos

• Recursão

Page 2: Programação Estruturada II · Ponteiros para matrizes usando funções Criamos a função recebendo o ponteiro para a matriz Chamamos a função, passando a matriz como parâmetro

2

Ponteiros

O que são

• Um modo de acesso a variáveis sem referenciá-lasO mecanismo utilizado é o endereço da variável

• Representação simbólica de um endereço

Razões para o uso de ponteiros

• Fornecer maneiras com as quais as funções podem realmente modificar os argumentos que recebem

• Passagem de matrizes e strings de uma função a outra

• Manipular matrizes

• Criar estruturas de dados complexas: listas, árvores (estruturas que contém referências a outra estrutura)

• Comunicar informações de memória

• Notações de ponteiros compilam mais rapidamente

Variáveis

Entendendo um pouco mais a fundo....

Cada variável ocupa um espaço de memória

• printf(“Tamanho so short %d\n", sizeof(short));

• printf(“Tamanho do inteiro %d\n", sizeof(int));

• printf(“Tamanho do long %d\n", sizeof(long));

Page 3: Programação Estruturada II · Ponteiros para matrizes usando funções Criamos a função recebendo o ponteiro para a matriz Chamamos a função, passando a matriz como parâmetro

3

Endereços

Toda variável possui um endereço

• Exemplo:

int variavel;

variavel=10;

printf("Valor da variavel=%d \n",variavel); //valor da variável

printf(“Endereco da variavel=%d \n",&variavel); //Endereço da variável

printf(“End. Em Hexa da variavel=%x \n",&variavel); //Endereço em hexa

Símbolos especiais

• Retorna o valor apontado pelo ponteiro *

• Retorna o endereço da variável &

• Seleciona um membro da estrutura ->

Declaração

Sintaxe:

• Tipo_apontado *nomeponteiro;

Exemplo:

• int *px;

O exemplo acima declara o ponteiro px, e px contém endereço da variável do tipo inteiro;

Page 4: Programação Estruturada II · Ponteiros para matrizes usando funções Criamos a função recebendo o ponteiro para a matriz Chamamos a função, passando a matriz como parâmetro

4

Funcionamento de Ponteiros

Verificando o funcionamento do ponteiro:

int a=100;

int *pta;

//Ponteiro recebe o endereço da variável

pta=&a;

printf("\n Ponteiro pta: %u",pta);

printf("\n Endereco do ponteiro &pta: %u",&pta);

printf("\n Endereco da variavel a : %u",&a);

printf("\n Conteudo apontado por *pta: %i",*pta);

Entendendo...

Page 5: Programação Estruturada II · Ponteiros para matrizes usando funções Criamos a função recebendo o ponteiro para a matriz Chamamos a função, passando a matriz como parâmetro

5

Incremento e Decremento

Podemos utilizar os operadores ++ e --, para incrementar ou decrementar endereços

Exemplo:

O exemplo mostrará:

Ponteiros e matrizes

Relacionamento estreito entre matrizes e ponteiros

O compilador transforma matrizes em ponteiros quando compila

Qualquer operação que pode ser feita com índice de matriz pode ser feita com ponteiros

Exemplo:

*(matriz+indice) É O MESMO QUE matriz[indice]

Page 6: Programação Estruturada II · Ponteiros para matrizes usando funções Criamos a função recebendo o ponteiro para a matriz Chamamos a função, passando a matriz como parâmetro

6

Exemplo

Percorrendo o vetor utilizando operações nos ponteiros• Exemplo:

int a[3]={5,6,7,8,9,10,11,12,13,14};

int *pa;

int i;

pa=&a[0];

for(i=0; i<3;i++) {

printf("\n a[%d] no endereco[%d] vale: %d",i,pa,*pa);

*pa++;

}

Ponteiros para matrizes usando funções

Criamos a função recebendo o ponteiro para a matriz

Chamamos a função, passando a matriz como parâmetro

Saída

Page 7: Programação Estruturada II · Ponteiros para matrizes usando funções Criamos a função recebendo o ponteiro para a matriz Chamamos a função, passando a matriz como parâmetro

7

Ponteiros para Estrutura

Utilização semelhante a ponteiros para variáveis

Para ler os elementos da estrutura, podemos utilizar

• (*ponteiro.elemento) ou

• ponteiro->elemento

Strings e Ponteiros

Uma das melhores maneiras de manipular strings em “C” é utilizando ponteiros

Todo string termina com “\0”

Exemplo: (manipulando string)

Page 8: Programação Estruturada II · Ponteiros para matrizes usando funções Criamos a função recebendo o ponteiro para a matriz Chamamos a função, passando a matriz como parâmetro

8

Bibliografia

Livro texto• MIZRAHI, Victorine Viviane. Treinamento em linguagem C : módulos 1 e 2

: PLT.. 1ª ed. São Paulo: Pearson Prentice Hall, 2007.

• ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene A. V.i de. Fundamentos da Programação de Computadores : algoritmos, pascal e

C/C++. 1ª ed. São Paulo: Pearson Education, 2003.• SCHILDT, Herbert. C Completo e Total. 3ª ed. São Paulo: Pearson

Education, 2005.

Complementar• 1) KERNIGHAN, Brian. C : a linguagem de programação. 3ª ed. Rio de

Janeiro: CAMPUS, 1986.

• 2) HARBISON III, Samuel P.; STEELE/JR., Guy; HARTMANN, Savannah. C : manual de referência. 1ª ed. Rio de Janeiro: Ciência Moderna, 2002.

• 3) LOPES, Anita; GARCIA, Guto. Introdução à Programa. ç1ãªo ed. Rio de Janeiro: CAMPUS, 2002.

• 4) DAMAS, Luís. Linguagem C. 10ª ed. São Paulo: LTC, 2007.