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.