datos de tipo subrango

Anuncio
PROGRAMACIÓN DIGITAL 10. Prof. Dolores Cuiñas H.
APUNTES Nº 3
Recuerde que estos son apuntes
muy simplificados que deberá
completar
con
la
bibliografía
recomendada
DATOS DE TIPO SUBRANGO Y TIPO ENUMERADO: Estos tipos de datos pertenecen al
grupo de los datos estáticos, 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
actúan como límite inferior y superior del conjunto de datos de ese tipo.
Ejemlo: 1..5
‘F’..’I’
consta de los elementos 1,2,3,4,5
consta de los elementos ‘F’,’G’,’H’,’I’
Las declaraciones de los datos tipo subrango se sitúan entre las declaraciones de
CONSTANTES y VARIABLES de la siguiente forma:
TYPE nombre = límite inferior .. límite superior;
Ejemplo:
PROGRAM RESULTADOS;
CONST
A=386;
TYPE
B=-5..8;
ALFABETO=’a’..’z’;
VAR
C: INTEGER;
Es posible definir los subrangos
directamente en las declaraciones de
VAR, pero no es recomendable.
Ejemplo:
VAR
ALFA: ‘a’..’z’;
LIMITE: 5..8;
ALFA: ALFABETO;
LIMITE: B;
X,Y: REAL;
NOTA: Los datos de tipo subrango se usan para mejorar la legibilidad y la comprensión , 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 sólo enteros positivos, se debe declarar
así:
TYPE
MAXINT indica el máximo valor entero
Si se introduce un valor 0 o negativo da error. De
ENTEROPOS = 1..MAXINT;
no producirse el mensaje de error coloque
VAR
después del program {$R+} y pruebe
X: ENTEROPOS;
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 según la disposición de
valores en su definición.
Ejemplo: TYPE
COLOR=(ROJO, AZUL, VERDE, BLANCO);
Elemento nº:
0
1
2
3
Los datos tipo enumerado sólo pueden ser acompañados por operadores de relación y de
asignación, pero dentro del mismo tipo de enumerado.
Ejemplo: AZUL < VERDE
da como resultado: verdadero
MOTO > AZUL
no pueden compararse
Las variables de tipo enumerado sólo 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 más 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;
Sería un error colocar:
PRIMAVERA = (marzo, abril, mayo);
Dado que los valores marzo, abril y mayo no
pueden pertenecer simultáneamente a MES y a
PRIMAVERA. Mientras que declarándolos 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 número ordinal o posición 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 (‘A’)
65 en código ASCII
Ord (-7)
-7
Ord (8)
8
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)
Ejemplos:
Donde x es un elemento de tipo ordinal
Pred (false)
indefinido Succ (false)
true Pred (borrador)
lapiz
Succ (borrador)
escuadra
Pred (15)
14
Succ (15)
16
NOTA: Los conceptos anteriores son tomados básicamente de:
Programación en Turbo/ Borland. Pascal 7. Luis Joyanes Aguilar
Programación con Lenguaje Turbo Pascal. F.J. Sanchis Llorca.-
Descargar