Sie sind auf Seite 1von 4

Recuerde que estos son apuntes

muy simplificados que deber


completar con la bibliografa
recomendada
PROGRAMACIN DIGITAL 10. Prof. Dolores Cuias H.
APUNTES N 3

DATOS DE TIPO SUBRANGO Y TIPO ENUMERADO: Estos tipos de datos pertenecen al
grupo de los datos estticos, simples, ordinales, conocidos como datos definidos por el usuario.
DATOS DE TIPO SUBRANGO:
Un tipo subrango se deriva de un tipo ordinal, especificando dos constantes de este tipo, que
actan como lmite inferior y superior del conjunto de datos de ese tipo.
Ejemlo: 1..5 consta de los elementos 1,2,3,4,5
F..I consta de los elementos F,G,H,I

Las declaraciones de los datos tipo subrango se sitan entre las declaraciones de
CONSTANTES y VARIABLES de la siguiente forma:

TYPE nombre = lmite inferior .. lmite superior;

Ejemplo: PROGRAM RESULTADOS;
CONST
A=386;
TYPE
B=-5..8;
ALFABETO=a..z;
VAR
C: INTEGER;
ALFA: ALFABETO;
LIMITE: B;
X,Y: REAL;

NOTA: Los datos de tipo subrango se usan para mejorar la legibilidad y la comprensin , as
como para aumentar la fiabilidad de los programas debido a que el lenguaje Pascal detecta si
un valor est fuera del intervalo declarado. En el caso de que al ejecutar el programa no se
produzca un mensaje de error cuando el valor de un tipo subrango est fuera de su rango
definido, inserte al principio del programa el siguiente comando {$R+}

Ejemplo: Si se espera que una variable X contenga slo enteros positivos, se debe declarar
as:
TYPE
ENTEROPOS = 1..MAXINT;
VAR
X: ENTEROPOS;
Es posible definir los subrangos
directamente en las declaraciones de
VAR, pero no es recomendable.
Ejemplo:
VAR
ALFA: a..z;
LIMITE: 5..8;
MAXINT indica el mximo valor entero
Si se introduce un valor 0 o negativo da error. De
no producirse el mensaje de error coloque
despus del program {$R+} y pruebe
nuevamente. Ejm:
Program nombre programa;
{$R+}
TYPE
Si se introduce un valor diferente de
A,B,C,D o E debe dar error
RANGO= A..E;
VAR
CODIGO: RANGO;

DATOS TIPO ENUMERADO:
Es un conjunto de valores referenciados por identificadores, que se declaran de la siguiente
forma.

TYPE nombre = (constante1, constante2, .., constanten);

Ejemplo: TYPE
VEHICULOS=(MOTO, AUTOMOVIL, AUTOBUS, TANVIA,TREN);
FRUTAS=(NARANJAS,MELOCOTONES, UVAS,LECHOZAS);
DIAS=(LUN, MAR, MIER, JUE, VIE, SAB, DOM);
COLOR=(ROJO,AZUL,VERDE,BLANCO);
DIASLABORABLES = LUM..VIE;
Siempre que
Las variables pueden ser tipo enumerado:
VAR
CLASE: VEHICULOS;
POSTRE: FRUTAS;
TRABAJO: DIASLABORABLES;
TONOS: COLOR;

NOTA:
El dato de tipo enumerado es un ordinal cuyo orden viene dado segn la disposicin de
valores en su definicin.
Ejemplo: TYPE
COLOR=(ROJO, AZUL, VERDE, BLANCO);

Elemento n: 0 1 2 3

Los datos tipo enumerado slo pueden ser acompaados por operadores de relacin y de
asignacin, pero dentro del mismo tipo de enumerado.
Ejemplo: AZUL < VERDE da como resultado: verdadero
MOTO > AZUL no pueden compararse

Las variables de tipo enumerado slo pueden tomar los valores definidos en TYPE

Ejemplo: VAR
TONOS:COLOR; Se define el valor de la variable cuyo tipo es enumerado
Un valor no puede figurar en 2 listas diferentes. Es decir, dos o ms valores no pueden
pertenecer a diferentes variables de tipo enumerado, cuando esto sea necesario deben
usarse combinadamente datos de tipo enumerado con datos de tipo subrango. Por ejemplo:

TYPE
MES = (enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre);
PRIMAVERA = marzo..mayo;


VERANO = junio..agosto;
VAR
MESES: MES;
TEMPLADO: PRIMAVERA;
Sera un error colocar:
PRIMAVERA = (marzo, abril, mayo);
Dado que los valores marzo, abril y mayo no
pueden pertenecer simultneamente a MES y a
PRIMAVERA. Mientras que declarndolos tipo
subrango constituyen un intervalo del tipo
enumerado definido previamente.
CALIDO: VERANO;

Los procedimientos de ENTRADA/SALIDA no pueden leer o escribir datos de tipo
enumerado.
Ejemplo: write (ROJO); produce error

Si se desea imprimir un tipo enumerado se debe usar la sentencia CASE. Ejemplo:

TYPE
DIASEMANA=(LUNES,MARTES,MIERCOLES,JUEVES,VIERNES,SABADO,DOMINGO);
LABORABLES=LUNES..VIERNES;
FINSEMANA=SABADO..DOMINGO;
VAR
DIA: DIASEMANA;
BEGIN


CASE DIA OF
LUNES: WRITE(LUNES);
MARTES: WRITE(MARTES);
MIERCOLES: WRITE(MIERCOLES);
JUEVES: WRITE(JUEVES);
VIERNES: WRITE(VIERNES)
ELSE
WRITE (FIN DE SEMANA)
END;

FUNCIONES ORDINALES: ORD, PRED, SUCC.

FUNCION ORD: determina el nmero ordinal o posicin relativa de un valor ordinal en su
secuencia de valores en el tipo ordinal. En Turbo Pascal tiene la siguiente forma:

ORD (x) donde x es un elemento de un tipo ordinal.

Ejemplos: Ord (false) 0 Ord (true) 1 Ord (-7) -7 Ord (8) 8
Ord (A) 65 en cdigo ASCII

TYPE
UTILES = (lapiz, borrador, escuadra, cuaderno)


ORD (borrador) 1
ORD (cuaderno) 3
ORD (lapiz) 0

FUNCIONES PRED Y SUCC: devuelven, respectivamente, el predecesor o sucesor de su
argumento. Tienen la siguiente forma:

PRED (x)
SUCC (x)
Donde x es un elemento de tipo ordinal

Ejemplos: Pred (false) indefinido Succ (false) true Pred (borrador) lapiz
Succ (borrador) escuadra Pred (15) 14 Succ (15) 16



NOTA: Los conceptos anteriores son tomados bsicamente de:
Programacin en Turbo/ Borland. Pascal 7. Luis Joyanes Aguilar
Programacin con Lenguaje Turbo Pascal. F.J. Sanchis Llorca.-

Das könnte Ihnen auch gefallen