tpu/u_colexp.pas
{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION
Cola de expresi\'on usada en evaluaci\'on de expresiones
algebraicas. keywords: cola
FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $Id: u_colexp.pas,v 1.1 2002/04/25 15:57:09 mstorti Exp mstorti $}
unit u_colexp ;
interface
type
tipo_elemento1 = real;
tipo_elemento2 = boolean;
ptipo_celda = ^tipo_celda;
tipo_celda = record
a : tipo_elemento1;
b : tipo_elemento2;
sig: ptipo_celda
end;
colexp = object
private
ant, post: ptipo_celda;
procedure ERROR (s: string);
public
procedure ANULA;
procedure PONE (x: tipo_elemento1; y: tipo_elemento2);
procedure QUITA;
function VACIA: boolean;
function FRENTE1: tipo_elemento1;
function FRENTE2: tipo_elemento2;
procedure IMPRIME;
end;
implementation
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colexp.ERROR (s: string);
begin
write ('error: ');
writeln (s);
halt;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colexp.ANULA;
begin
new (ant);
ant^.sig := nil;
post := ant;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colexp.PONE (x: tipo_elemento1; y: tipo_elemento2);
begin
new (post^.sig);
post := post^.sig;
post^.a := x;
post^.b := y;
post^.sig := nil;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colexp.QUITA;
begin
if (VACIA) then
ERROR ('la cola esta vacia')
else begin
ant := ant^.sig
end ; {if}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function colexp.VACIA : boolean;
begin
VACIA := ( ant = post );
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function colexp.FRENTE1 : tipo_elemento1;
begin
if ( VACIA ) then
ERROR (' la cola esta vacia')
else begin
FRENTE1 := ant^.sig^.a;
end ; {if}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function colexp.FRENTE2 : tipo_elemento2;
begin
if ( VACIA ) then
ERROR (' la cola esta vacia')
else begin
FRENTE2 := ant^.sig^.b;
end ; {if}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colexp.IMPRIME;
var
p: ptipo_celda;
begin
p := ant^.sig;
while (p <> nil) do begin
writeln (p^.a, p^.b);
p := p^.sig;
end ; {while}
end;
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
Generated by GNU enscript 1.6.1.