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