Successfully reported this slideshow.

Pascal Ponteiros

10,460 views

Published on

Published in: Technology, Education
  • ques vir a minha casa ajudarme a programar
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ola gato
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Pascal Ponteiros

  1. 1. PASCAL <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>Última atualização em 05/09/2007 </li></ul></ul>Alocação Dinâmica Ponteiros
  2. 2. Alocação dinâmica <ul><li>Usada sempre que não se sabe exatamente quanto de memória será usado para uma determinada tarefa. </li></ul><ul><li>Assim, reserva-se espaço da memória disponível (HEAP) à medida que mais memória torna-se necessária. </li></ul><ul><li>Também pode-se liberar posições de memória quando não forem mais necessárias. </li></ul><ul><li>A memória é alocada não no início do programa, mas sim no decorrer de sua utilização do sistema. </li></ul><ul><li>É como se pudéssemos definir um ARRAY com o seu tamanho sendo alterado à medida que fosse necessário. </li></ul>
  3. 3. Exemplo <ul><li>program usa_ponteiros; </li></ul><ul><li>Uses Crt; </li></ul><ul><li>var pInt : ^integer; </li></ul><ul><li>begin </li></ul><ul><li>ClrScr; </li></ul><ul><li>New(pInt); </li></ul><ul><li>pInt^ := 10; </li></ul><ul><li>Writeln('pInt^: ', pInt^); </li></ul><ul><li>Dispose(pInt); </li></ul><ul><li>Readkey; </li></ul><ul><li>end. </li></ul>
  4. 4. Exemplo <ul><li>program usa_sem_ponteiro; </li></ul><ul><li>Uses Crt; </li></ul><ul><li>var a, b : integer; </li></ul><ul><li>begin </li></ul><ul><li>ClrScr; </li></ul><ul><li>b := a; </li></ul><ul><li>b := 10; </li></ul><ul><li>Writeln('a: ', a); </li></ul><ul><li>Writeln('b: ', b); </li></ul><ul><li>a := 20; </li></ul><ul><li>Writeln('a: ', a); </li></ul><ul><li>Writeln('b: ', b); </li></ul><ul><li>Readkey; </li></ul><ul><li>end. </li></ul>
  5. 5. Exemplo <ul><li>program usa_ponteiros2; </li></ul><ul><li>Uses Crt; </li></ul><ul><li>var pA, pB : ^integer; </li></ul><ul><li>begin </li></ul><ul><li>ClrScr; </li></ul><ul><li>new(pA); </li></ul><ul><li>pB := pA; </li></ul><ul><li>pB^ := 10; </li></ul><ul><li>Writeln('pA^: ', pA^); </li></ul><ul><li>Writeln('pB^: ', pB^); </li></ul><ul><li>pA^ := 20; </li></ul><ul><li>Writeln('pA^: ', pA^); </li></ul><ul><li>Writeln('pB^: ', pB^); </li></ul><ul><li>Dispose(pA); </li></ul><ul><li>Readkey; </li></ul><ul><li>end. </li></ul>
  6. 6. Lista Encadeada Simples
  7. 7. Lista Encadeada Simples
  8. 8. Lista Encadeada Simples <ul><li>program nomes; </li></ul><ul><li>uses crt; </li></ul><ul><li>type tpRegistro = ^registro; </li></ul><ul><li>registro = Record </li></ul><ul><li>nome : String; </li></ul><ul><li>proximo : tpRegistro; </li></ul><ul><li>end; </li></ul><ul><li>var pAtual, pInicio, pAnterior : tpRegistro; </li></ul><ul><li>mais : char; </li></ul><ul><li>begin </li></ul><ul><li>clrscr; </li></ul><ul><li>repeat </li></ul><ul><li>write('Digite um nome: '); </li></ul><ul><li>new(pAtual); </li></ul><ul><li>readln(pAtual^.nome); </li></ul><ul><li>if pInicio = NIL then </li></ul><ul><li>pInicio := pAtual; </li></ul><ul><li>if pAnterior <> NIL then </li></ul><ul><li>pAnterior^.proximo := pAtual; </li></ul><ul><li>pAnterior := pAtual; </li></ul><ul><li>write('Insere mais (S/N)? '); </li></ul><ul><li>mais := upcase(readkey); writeln; </li></ul><ul><li>until mais = 'N'; </li></ul><ul><li>pAtual := pInicio; </li></ul><ul><li>while pAtual <> NIL do </li></ul><ul><li>begin </li></ul><ul><li>writeln('Nome: ', pAtual^.nome); </li></ul><ul><li>pAtual := pAtual^.proximo; </li></ul><ul><li>end; </li></ul><ul><li>readkey; </li></ul><ul><li>end. </li></ul>

×