BotonMenu
BotonIndice

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL


2. TIPOS DE DATOS SIMPLES.
2.8. TIPOS DE DATOS ENUMERADOS.
2. TIPOS DE DATOS SIMPLES.
2.8. TIPOS DE DATOS ENUMERADOS.
2. TIPOS DE DATOS SIMPLES.
2.8. TIPOS DE DATOS ENUMERADOS.

SIGUIENTE

SIGUIENTE

SIGUIENTE


‒ Tipos de datos enumerados.

Los tipos de datos enumerados nos permiten crear tipos de datos con un orden en particular. Para crear un tipo de dato enumerado se hace uso de la palabra reservada Type, y se encierra entre paréntesis separando con comas, los valores que se pueden usar. Estos valores deben ser escritos usando letras del alfabeto en latín y números, pueden estar compuestos de 1 o más caracteres y no deben empezar con números. A continuación un ejemplo:


Descargar
{$codepage UTF8}

TYPE
  Numeros  = (Cero,Uno,Dos,Tres,Cuatro);

VAR
  N01  : Numeros;

BEGIN
  N01:=Cero;
  N01:=Uno;
  readln
END.
Código fuente 11: Creación de un tipo de dato enumerado.
Descargar

En este ejemplo se ha creado el tipo de dato Números, y después la variable N01, los únicos valores que pueden ser asignados a la variable N01, son: Cero,Uno,Dos,Tres y Cuatro, no se le puede asignar valores de otro tipo de dato.

Los tipos de datos enumerados se numeran de uno en uno empezando desde el 0, para saber qué número le corresponde a un dato, de tipo enumerado, podemos hacer uso de la rutina Ord, a continuación el ejemplo:


Descargar
{$codepage UTF8}

TYPE
  Numeros  = (Cero,Uno,Dos,Tres,Cuatro);

VAR
  N01  : Numeros;
  a  : byte; 

BEGIN
  N01:=Cero;
  a:=Ord(N01);
  Writeln(a);
  readln
END.
Código fuente 12: Uso de la rutina Ord.
Descargar

A diferencia de las rutinas write y read, Ord es una rutina que devuelve un resultado, la rutina Ord se debe asignar a una variable, en caso no se asigne a una variable el programa no podrá ser compilado. Este tipo de rutinas, siempre deben ser asignados a una variable, para que el compilador sepa que el resultado devuelto por la rutina, será colocado en dicha variable.

En el programa anterior se asigna a la variable N01, el dato Cero, y después usando Ord, nos devuelve 0, que es la posición que ocupa el dato dentro del tipo de dato Números, pero si se hubiese asignado Tres, Ord nos devolvería 3.

En el ejemplo siguiente, el programa usa como unidad monetaria el Nuevo sol, de uso en el Perú. Se puede observar que CincoSoles tiene la numeración 3, que es la posición que ocupa el valor dentro del tipo de dato Soles. Esto ocasionará un error de programación en el programa, porque el programa usa Ord, para saber la posición en donde se encuentra el dato CincoSoles.


Descargar
{$codepage UTF8}

TYPE
  Centimos = (CeroCentimos,CincoCentimos,DiezCentimos,CincuentaCentimos);
  Soles = (CeroSoles,UnSol,DosSoles,CincoSoles,DiezSoles,
           VeinteSoles,CincuentaSoles,CienSoles,DoscientosSoles);

VAR
  MiDineroC:Centimos; 
  MiDineroS:Soles;
  OrdinalC,OrdinalS:Byte;

BEGIN
  MiDineroC:=CincoCentimos;
  MiDineroS:=CincoSoles;
  OrdinalC:=Ord(MiDineroC);
  OrdinalS:=Ord(MiDineroS);
  Write('Tu  tienes : S/. ',OrdinalS, '  soles y ',OrdinalC, '/100  Nuevos Soles.');
  Readln()
END.
Código fuente 13: Error de programación al usar ord.
Descargar

Para remediar esta situación o error de programación, a los datos de los tipos enumerados se les puede asignar una numeración, siempre en orden ascendente. Para la asignación se usa los dos puntos y igual (:=), tal como se muestra a continuación.


Descargar
{$codepage UTF8}

TYPE
  Centimos = (CeroCentimos,CincoCentimos:=5,DiezCentimos:=10, CincuentaCentimos:=50);
  Soles = (CeroSoles,UnSol,DosSoles,CincoSoles:=5, DiezSoles:=10,VeinteSoles:=20,
           CincuentaSoles:=50,CienSoles:=100, DoscientosSoles:=200);

VAR
  MiDineroC:Centimos; 
  MiDineroS:Soles;
  OrdinalC,OrdinalS:Byte;

BEGIN
  MiDineroC:=CincoCentimos;
  MiDineroS:=CincoSoles;
  OrdinalC:=Ord(MiDineroC);
  OrdinalS:=Ord(MiDineroS);
  Write('Tu  tienes : S/. ',OrdinalS,'  soles y ',OrdinalC,'/100  Nuevos Soles.');
  Readln()
END.
Código fuente 14: Asignando su propia numeración en los tipos de datos enumerados.
Descargar

Los tipos de datos enumerados no se pueden usar con las rutinas Read y Readln, directamente. Pero sin embargo, las rutinas Write y Writeln, se pueden usar, para mostrar tipos de datos enumerados. Ejemplo:


Descargar
{$codepage UTF8}

TYPE
  Puntajes=(PA:=10000,PB:=20000,PC:=30000,PD:=40000);
											 
VAR
  Participante01_Puntos:Puntajes;
  n:longint;
  
BEGIN
  Participante01_Puntos:=PC;
  n:=Ord(Participante01_Puntos);
  Writeln('El participante 1 tiene:');
  Writeln(Participante01_Puntos,'=',n);
  readln
END.
Código fuente 15: Uso de writeln con tipo de datos enumerado.
Descargar

Las rutinas Write y Writeln, mostrarán el valor asignado a la variable Participante01_Puntos, que en este caso es PC, las rutinas Write y Writeln, no mostrará la posición que tiene PC, dentro del tipo de dato enumerado Puntajes, es por eso que se usa la función Ord, que nos permite saber la posición que tiene PC, dentro del tipo de dato enumerado. Los tipos de datos enumerados se enumeran de uno en uno, es decir si declaramos el siguiente tipo de dato:

TYPE
   TNum=(Diez:=10,Veinte,Treinta,Cuarenta,Cincuenta);

El valor Veinte, será numerado como 11 y no como 20, es decir no se enumerarán de diez en diez. Lo correcto es colocar para cada uno la numeración correspondiente. Ejemplo:


Descargar
{$codepage UTF8}
											   
TYPE  
  TNum=(Diez:=10,Veinte:=20,Treinta:=30,Cuarenta:=40,Cicuenta:=50); 

VAR 
  Num01:TNum; 
  n:longint; 

BEGIN 
  Num01:=Treinta;
  n:=Ord(Num01); 
  Writeln(Num01,'=',n); 
  readln 
END.
Código fuente 16: Enumeración de diez en diez.
Descargar

La numeración que se puede asignar a un tipo de dato enumerado puede ser desde: -2147483648, hasta: 2147483647, que es el mismo rango de valores del tipo de dato longint. Ejemplo:


Descargar
{$codepage UTF8}

TYPE
  Rango = (desde:=-2147483648,hasta:=2147483647);

VAR
  N01:Rango;
  n:longint;

BEGIN
  N01:=desde;
  n:=Ord(N01);
  Writeln(n);
  N01:=hasta;
  n:=Ord(N01);
  Writeln(n);
  Readln()
END.
Código fuente 17: Rango de valores que se pueden usar en un tipo de dato enumerado.
Descargar




SIGUIENTE
SIGUIENTE
SIGUIENTE


 
‒ Comentarios y sugerencias.

Agradezco de antemano, todo comentario, sugerencia, y donativo (a través de Paypal me), que ayude a mejorar los contenidos educativos de Conoce 3000. Además, cualquier pregunta o duda que tengas lo puedes hacer por este medio. Pero, todo contenido que pueda resultar ofensivo, malicioso, racista, sexista, discriminatorio, obsceno, vulgar será eliminado.








PORTADA |  INTERESANTE |  APUNTES |  LIBROS |  GALERIA


Creative Commons License


Todos los textos, imágenes y videos de Conoce3000 estan colocados bajo una licencia : Creative Commons Reconocimiento-NoComercial 3.0 Unported License.