Programação Estruturada
Por: Giselle Santos • 23/8/2015 • Trabalho acadêmico • 785 Palavras (4 Páginas) • 225 Visualizações
Anhanguera Educacional
Unidade BH3
Tecnólogo em Análise e Desenvolvimento de Sistemas
Atividades Práticas Supervisionadas:
Etapa 3
Professor (a): Charles Fortes
Disciplina: Programação Estrutura II
Alunos: Gabrielle Targino Costa – R.A 9858492719
Giselle Santos - R.A 9858502542
Ricardo Wayne Andrade da Rocha – R.A 1577156201
Belo Horizonte
2015
Ponteiros
O que são Ponteiros?
Um ponteiro é uma variável contendo um endereço de memória. Esse endereço é a posição de uma outra variável na memória. Então, dizemos que a primeira variável aponta para a segunda variável indiretamente.
Declarando um ponteiro
Qualquer ponteiro deverá ser declarado antes de ser usado assim como qualquer variável. Para isso devemos informar um tipo de base, um * e o nome da variável. Os ponteiros declarados podem apontar para qualquer tipo de dados.
Na forma geral fica assim:
tipo*nome;
Abaixo um exemplo de como as variáveis alocam-se na memória. Observe que o valor 6 está no endereço de memória 1 e aponta para o endereço de memória 6 onde se encontra a variável 4.
[pic 1]
Figura 1 – Exemplo de variável apontando para outra variável
Operadores de Ponteiros
Para Ponteiros existem dois operadores, o & é um operador unário que retorna o valor de seu operando, ou seja seu endereço na memória. Exemplo:
x=#
em x é colocado o endereço da memória que contém a variável num ou x recebe o endereço de num.
O operador * , chamado de operador de referência indireta retorna o valor do objeto ao qual seu operando aponta. Como exemplo:
printf(“%d”, *num);
A instrução imprime o valor alocado na variável num.
Chamando Funções
Os Ponteiros e o operador de referência indireta podem ser usados para simular chamadas por referência onde são passados os endereços dos argumentos. Para tal deve-se aplicar o operador de endereço (&) á variável. O endereço de uma função é acessível através de uma variável do tipo ponteiro.
Um exemplo de utilização de ponteiro para função seria na organização ou ordenação de elementos de um arranjo de inteiros:
int comp_int ( int *d1, int *d2) {
return (*d1 - *d2);
}
O código acima compara dois dados inteiros e retorna: zero se os dois dados forem iguais, retornará um inteiro negativo quando o primeiro dado for menor que o segundo e por fim retornará um inteiro positivo se o primeiro dado for maior que o segundo. Mais adiante veremos exercícios práticos para exemplificar.
Ponteiros de Ponteiros
Variáveis declaradas com dois asteriscos são ponteiros para ponteiros. Exemplo
int main{
**ponteiro, *ponte;
}
**ponteiro é um ponteiro que aponta para outro ponteiro.
[pic 2]
Exercício 1
Vamos escrever um código fonte que imprima o valor alocado na variável a onde a=10 e *pa=7.
[pic 3]
Saída:
[pic 4]
Figura 1.– Exemplo mostra valor alocado em uma variável.
[pic 5]
Exercício 1.1
Vamos escrever um código fonte que conte a quantidade de caracteres de uma palavra qualquer.
[pic 6]
Saída:
[pic 7]
Figura 1.1 – Impressão de quantidade de caracteres de uma palavra
Ponteiros para matriz usando função!
Exercício 2[pic 8]
Sistema compondo uma função com matriz usando ponteiros para armazenar os valores da mesma.
Implementação do Código Fonte:
[pic 9]
Resolução Passo a Passo
Declarando a função matriz inicializando e passando seu tamanho juntamente com o ponteiro ‘ armazena ‘, fazendo com que o ponteiro receba os valores da matriz manipulando seus dados com o loop.
A função é chamada logo abaixo dentro do escopo principal mostrando os dados na tela como se vê a seguir:
...