tpu/u_colaar.pas
{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION
Colas de reales por arreglos.
keywords: cola, arreglos
FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $Id: u_colaar.pas,v 1.1 2002/04/25 15:57:09 mstorti Exp mstorti $}
unit u_colaar;
interface
const
long_max = 100;
type
tipo_elemento = real ;
colaar = object
private
elementos : array [1..long_max] of tipo_elemento;
ant, post: integer;
procedure ERROR (s: string);
function SUMA_UNO (i: integer): integer;
public
procedure ANULA;
procedure PONE (x: tipo_elemento);
procedure QUITA;
function VACIA : boolean;
function FRENTE : tipo_elemento;
procedure IMPRIME (s : string) ;
end;
implementation
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colaar.ERROR (s: string);
begin
write ('error: ');
writeln (s);
halt;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function colaar.SUMA_UNO (i: integer): integer;
begin
suma_uno := (i mod long_max) + 1;
end; {suma_uno}
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colaar.ANULA;
begin
ant := 1;
post := long_max;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colaar.PONE (x: tipo_elemento);
begin
if (SUMA_UNO (SUMA_UNO (post) ) = ant) then
ERROR ('la cola esta llena')
else begin
post := SUMA_UNO (post) ;
elementos [post] := x ;
end ; {if}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colaar.QUITA;
begin
if ( VACIA ) then
ERROR ('la cola esta vacia')
else begin
ant := SUMA_UNO (ant)
end ; {if}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function colaar.VACIA : boolean;
begin
VACIA := (SUMA_UNO (post) = ant);
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function colaar.FRENTE : tipo_elemento;
begin
if ( VACIA ) then
ERROR (' la cola esta vacia')
else begin
FRENTE := elementos [ant] ;
end ; {if}
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure colaar.IMPRIME (s : string) ;
var
i, z : integer;
begin
if ( VACIA ) then
writeln ('la cola esta vacia')
else begin
if length (s) > 0 then writeln (s);
writeln ('cola: ');
i := ant;
z := SUMA_UNO (post);
while (i <> z) do begin
writeln (elementos [i]);
i := SUMA_UNO (i);
end ; {while}
writeln ;
end ; {if}
end;
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
Generated by GNU enscript 1.6.1.