tpu/u_cuchar.pas
{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION
Unidad auxiliar para conjuntos por arreglos de bits: con
las funciones INDICE/ELEMENTO y el procedimiento IMPRIME,
cuando el conjunto universal es el Alfabeto a-z
[Usada por u_setvbi.pas]
keywords: conjunto
FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $Id: u_cuchar.pas 2003/06/12 12:24 mstorti Exp jdelia $ }
unit u_cuchar;
interface
const
nuniv = 26; {cantidad de elementos en el conj universal}
type
tipo_univ = char; {tipo de los elementos del conj universal}
cuchar = object
private
procedure ERROR (s: string);
public
function INDICE (c:tipo_univ; var i:integer) : boolean;
function ELEMENTO (i:integer; var c:tipo_univ) : boolean;
procedure IMPRIME (i:integer);
end;
implementation
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure cuchar.ERROR (s: string);
begin
write ('error: ');
writeln (s);
halt;
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function cuchar.INDICE ( c: tipo_univ;
var i: integer): boolean;
{ Retorna la posicion de un elemento dado dentro
del conjunto universal. Si no existe --> false }
begin
i := ord (c) - ord ('a') + 1;
INDICE := (i >= 1) and (i <= Nuniv);
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function cuchar.ELEMENTO ( i: integer;
var c: tipo_univ): boolean;
{ Dada la posicion dentro del conjunto universal, si existe,
entonces devuelve True y el elemento correspondiente sino
retorna false }
begin
c := chr ( i + ord ('a') - 1 );
ELEMENTO := (i >= 1) and (i <= Nuniv);
end;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
procedure cuchar.IMPRIME (i: integer);
var
c: tipo_univ;
begin
if (i >= 1) and (i <= Nuniv) then begin
c := chr ( i + ord ('a') - 1 );
write (c); end
else begin
writeln ('En el Conj Univ, no existe elemento ', i)
end ; {if}
end;
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
Generated by GNU enscript 1.6.1.