Dicionário de Genealogia, autor Gilber Rubim Rangel
Capítulo 14 Livro Algoritmos e Programação de Computadores Autores JR., Dilermando
1. Objetivos
• Compreender o que são ponteiros e como
eles podem fornecer acesso a dados.
• Criar e utilizar ponteiros.
• Identificar em quais situações é adequado
usar ponteiros.
2. Para começar...
Suponha que haja três variáveis inteiras no seu programa:
x, y e z.
O compilador alocou (armazenou):
a variável x no endereço 200 da memória;
a variável y no endereço 204 e
a variável z no endereço 208.
Como ficou a memória?
4. Conhecendo a teoria para programar
Um ponteiro é uma variável que armazena um endereço de
memória.
Ponteiros permitem implementações mais flexíveis e
eficientes e são fundamentais na criação das estruturas
de dados dinâmicas, como listas ligadas, árvores e grafos.
7. var
x, y : inteiro
pont: ^inteiro
inicio
x <- 2
y <- 3
pont <- nulo
escreval(“valor da variável nula em VisualG:”, pont)
pont^ <- y
escreval(“valor de pont:”, pont,” e de pont^:”, pont^);
teste (x,y)
escreva1(“Novo valor de x:”, x, “ e de y:”, y)
escreval(“valor de pont:”, pont,” e de pont^:”, pont^);
fimalgoritmo
Vamos Programar
VisuAlg (continuação)
9. begin
x:= 2;
y:= 3;
writeln(“valor da variável nula em Pascal:”, pont)
pont^:= y;
writeln(“valor de pont:”, pont,” e de pont^:”, pont^);
teste (x,y);
writeln(“Novo valor de x:”, x, “ e de y:”, y);
writeln(“valor de pont:”, pont,” e de pont^:”, pont^);
end.
Vamos Programar
Pascal (continuação)
10. void teste (int pval, int *pref)
{
pval++;
(*pref)++;
}
Vamos Programar
C
11. int main()
{
int x, y, *pont=NULL;
printf("valor do ponteiro nulo em C=%dnn", pont);
x=2;
y=3;
pont=&x;
printf("x=%d, y=%d, endereco.x=%d, endereco.y=%dnn", x, y, &x, &y);
printf("pont=%d, endereco.pont=%d, conteudo.pont=%dnn", pont, &pont,
*pont);
teste(x, &y);
printf("x=%d, y=%d, endereco.x=%d, endereco.y=%dn", x, y, &x, &y);
getchar();
}
Vamos Programar
C (continuação)
12. Referencia refA = new Referencia();
refA.conteudo = "referencia A";
Referencia refB = new Referencia();
refB.conteudo = "referencia B";
Vamos Programar
Java
13. public class Referencia {
String conteudo;
public static void main(String[] args) {
int resultado = 10;
Referencia refA = new Referencia();
refA.conteudo = "referencia A”;
Referencia refB = new Referencia();
refB.conteudo = "referencia B";
System.out.println("Valor das variáveis conteudo do objetos
refA: "+refA.conteudo+" e refB: "+refB.conteudo+” e da variavel ”+resultado );
refA.recebeValores(refB, refA, resultado);
System.out.println("Valor das variáveis conteudo do objetos
refA: "+refA.conteudo+" e refB: "+refB.conteudo+” e da variavel ”+resultado );
}
Vamos Programar
Java (continuação)
14. public void recebeValores(Referencia refA, Referencia
refB, int resultado){
refA.conteudo = refB.conteudo;
resultado = 20;
}
Vamos Programar
Java (continuação)
16. De nada adianta construirmos sistemas que manipulam
cada vez mais dados se todas as vezes que quisermos usá-los
tivermos que digitá-los novamente. Imagine se todos os
sistemas funcionassem assim!
No próximo capítulo, vamos estudar como armazenar
dados em arquivos.