pascal ponteiros

Download Pascal Ponteiros

If you can't read please download the document

Upload: regis-magalhaes

Post on 20-Jun-2015

9.175 views

Category:

Technology


0 download

TRANSCRIPT

  • 1. PASCAL
      • Regis Pires Magalhes
    • ltima atualizao em 05/09/2007

Alocao Dinmica Ponteiros 2. Alocao dinmica

  • Usada sempre que no se sabe exatamente quanto de memria ser usado para uma determinada tarefa.
  • Assim, reserva-se espao da memria disponvel (HEAP) medida que mais memria torna-se necessria.
  • Tambm pode-se liberar posies de memria quando no forem mais necessrias.
  • A memria alocada no no incio do programa, mas sim no decorrer de sua utilizao do sistema.
  • como se pudssemos definir um ARRAY com o seu tamanho sendo alterado medida que fosse necessrio.

3. Exemplo

  • program usa_ponteiros;
  • Uses Crt;
  • var pInt : ^integer;
  • begin
  • ClrScr;
  • New(pInt);
  • pInt^ := 10;
  • Writeln('pInt^: ', pInt^);
  • Dispose(pInt);
  • Readkey;
  • end.

4. Exemplo

  • program usa_sem_ponteiro;
  • Uses Crt;
  • var a, b : integer;
  • begin
  • ClrScr;
  • b := a;
  • b := 10;
  • Writeln('a: ', a);
  • Writeln('b: ', b);
  • a := 20;
  • Writeln('a: ', a);
  • Writeln('b: ', b);
  • Readkey;
  • end.

5. Exemplo

  • program usa_ponteiros2;
  • Uses Crt;
  • var pA, pB : ^integer;
  • begin
  • ClrScr;
  • new(pA);
  • pB := pA;
  • pB^ := 10;
  • Writeln('pA^: ', pA^);
  • Writeln('pB^: ', pB^);
  • pA^ := 20;
  • Writeln('pA^: ', pA^);
  • Writeln('pB^: ', pB^);
  • Dispose(pA);
  • Readkey;
  • end.

6. Lista Encadeada Simples 7. Lista Encadeada Simples 8. Lista Encadeada Simples

  • program nomes;
  • uses crt;
  • type tpRegistro = ^registro;
  • registro = Record
  • nome: String;
  • proximo : tpRegistro;
  • end;
  • var pAtual, pInicio, pAnterior : tpRegistro;
  • mais : char;
  • begin
  • clrscr;
  • repeat
  • write('Digite um nome: ');
  • new(pAtual);
  • readln(pAtual^.nome);
  • if pInicio = NIL then
  • pInicio := pAtual;
  • if pAnterior NIL then
  • pAnterior^.proximo := pAtual;
  • pAnterior := pAtual;
  • write('Insere mais (S/N)? ');
  • mais := upcase(readkey); writeln;
  • until mais = 'N';
  • pAtual := pInicio;
  • while pAtual NIL do
  • begin
  • writeln('Nome: ', pAtual^.nome);
  • pAtual := pAtual^.proximo;
  • end;
  • readkey;
  • end.