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:
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:
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 strong>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.
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.
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:
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:
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: