{ Turbo Pascal and Virtual Pascal source }
Program Meu_Nome_na_Pilha;
uses crt;
const MEU_NOME : packed string[80] = ('Joao Paulo Schwarz Schuler');
type TNODO = record
DADO:char;
PROX:pointer;
end;
OPILHA = object { Objeto de pilha }
TAM:word; { TAM : tamanho da pilha }
NO,PRIM:^TNODO; { PRIM: aponta para o }
{ primeiro nodo da }
{ pilha. }
{ NO : aponta para o }
{ nodo de trabalho }
{ quase sempre com }
{ mesmo valor de }
{ PRIM. }
constructor INIT; { inicia a pilha }
procedure PUSH(DADO:char); { insere dado na pilha }
function POP:char; { retira dado da pilha }
function TAMANHO:word; { devolve tamanho da pilha }
destructor DONE; { desaloca pilha }
end;
POINTER_OPILHA = ^OPILHA;
constructor OPILHA.INIT;
begin
PRIM:=nil;
TAM:=0;
end;
procedure OPILHA.PUSH(DADO:char);
begin
new(NO);
NO^.DADO:=DADO;
NO^.PROX:=PRIM;
PRIM:=NO;
inc(TAM);
end;
function OPILHA.POP:char;
begin
POP:=NO^.DADO;
PRIM:=NO^.PROX;
dispose(NO);
NO:=PRIM;
dec(TAM);
end;
function OPILHA.TAMANHO:word;
begin
TAMANHO:=tam;
end;
destructor OPILHA.DONE;
var DADO:char;
begin
while TAM>0 do DADO:=POP;
end;
var P:POINTER_OPILHA; { P:apontador de objeto dinamico do tipo OPILHA }
LOOP:word;
L:word; { recebe tamanho do MEU_NOME }
begin { of program }
new(P,INIT); { aloca e inicia objeto dinamico }
L:=length(MEU_NOME);
for LOOP:=1 to L do P^.PUSH(MEU_NOME[LOOP]);
while P^.TAMANHO>0 do
begin
write(P^.POP);
end;
writeln;
dispose(P,DONE); { desaloca e termina objeto dinamico }
end. { of program }
Return to the Home Page
I want to read your E-Mail