BotonMenu
BotonIndice

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL


2. TIPOS DE DATOS SIMPLES.
2.9. TIPOS DE DATOS SUBRANGO.
2. TIPOS DE DATOS SIMPLES.
2.9. TIPOS DE DATOS SUBRANGO.
2. TIPOS DE DATOS SIMPLES.
2.9. TIPOS DE DATOS SUBRANGO.

SIGUIENTE

SIGUIENTE

SIGUIENTE


‒ Tipos de datos subrango.

Los tipos de datos subrango, son rangos de valores, que se deben definir a partir de un tipo de dato enumerado, números Enteros o el tipo de dato char. Los subrangos se declaran, separando con dos puntos seguidos los datos que determinan el inicio y final del intervalo. Los valores que se asignen a un tipo de dato subrango, deben estar comprendidos en el intervalo durante la ejecución del programa. A continuación un ejemplo:


Descargar
{$codepage UTF8}

TYPE
  DiaSemana  =  (Lunes,Martes,Miercoles,Jueves,Viernes,Sabado, Domingo);
  DiasTrabajo  = Lunes..Viernes;
  Mayusculas  = 'A'..'Z';
  Minusculas  = 'a'..'z';

VAR
  m:Mayusculas; 
  x:DiasTrabajo;

BEGIN
  Write('Ingrese  una mayuscula');
  readln(m);
  Writeln(m);
  Readln()
END.
Código fuente 18: Uso del tipo de dato subrango.
Descargar

Las rutinas read y readln no trabajan con variables que usen subrangos de tipos de datos enumerados, como el tipo de dato DiaSemana. En el ejemplo anterior se puede hacer lectura de la variable m, ya que sus datos son subrango del tipo de dato char Mayusculas. Sólo se pueden crear subrangos de números enteros, desde -9223372036854775808 hasta 9223372036854775807, que es el rango usado para el tipo de dato int64. Los tipos de datos longint, integer, shortint, byte y word son definidos como subrangos del tipo de dato int64. Las rutinas read y write se pueden usar con subrangos de números enteros y del tipo de dato char . Los subrangos de números enteros también se pueden definir usando valores hexadecimales. Ejemplo:


Descargar
{$codepage UTF8}

TYPE
  TNum  = -9223372036854775808..9223372036854775807;
  HNum  = $00 .. $FF; 

VAR
  n01:TNum; 
  n02:HNum;

BEGIN
  n01:=9223372036854775807;
  Writeln(n01);
  n01:=-9223372036854775808;
  Writeln(n01);
  n01:=548;
  Writeln(n01);
  n02:=200;
  Writeln(n02)
END.
Código fuente 19: Subrango de números enteros.
Descargar

Los subrangos de tipo char están limitados a usar sólo caracteres ASCII, cuando los códigos fuente se escriben en UTF8, pero se pueden crear subrangos mayores al rango permitido por las caracteres ASCII usando el símbolo #, que nos permite usar rangos mayores a #127, tanto en decimal como hexadecimal.

Pero a las variables que usen este subrango, sólo se les puede asignar caracteres entre comillas simples a los subrangos comprendidos entre #0 y #255, o un rango menor al indicado. Ejemplo:


Descargar
{$codepage UTF8}

TYPE
 ALetras=#0..#127;
 AELetras=#0..#255;
 ULetras=#0..#65535;

VAR
 a:ALetras;
 b:AELetras;
 c:ULetras;

BEGIN
 a:='~'; 
 Writeln(a);
 b:='ó';       
 Writeln(b); 
 b:='€';
 Writeln(b);
// c:='€';     //no es posible el rango es mayor a 255
// Writeln(c)
// c:='~';     //no es posible el rango es mayor a 255
// Writeln(c) 
 c:=125;
 Writeln(c);
END.
Código fuente 20: Subrangos de caracteres.
Descargar

Se debe tener en cuenta, que las variables que usen subrangos comprendidos entre #0 y #255, se comportará como un tipo de dato char, pero cuando las variables usen subrangos mayores a #255, el comportamiento será como el de un subrango de número enteros, es por eso que no se puede asignar € y ~, a la variable c que usa el subrango ULetras, y sólo se pueden asignar números enteros.

Cuando se definen subrangos que usen caracteres en UTF8 mayores a #127, como por ejemplo:

NCirculos='➀'..'➉';
AELetras='!'..'ÿ';

Se considerarán estos subrangos, como subrangos de números enteros de dos bytes. Es decir el rango de NCirculos en UTF8 sería desde $E29E80 hasta $E29E89, el compilador lo convertirá a su equivalente UTF16, es decir el rango sería desde $2780 hasta $2789, que son números de 2 bytes y se considerarán como un subrango de números enteros, lo mismo sucede con AELetras en donde el rango sería desde $21 hasta $C3BF en UTF8, y su equivalente en UTF16 sería desde $0021 hasta $00FF, pero como $FF=#255, es mayor a #127 entonces, el compilador lo considerará como un subrango de números enteros de 2 bytes y no de 1 byte. Ejemplo:


Descargar
{$codepage UTF8}

TYPE
 AELetras='!'..'ÿ';     //En UTF8  sería desde #$21 hasta #$C3BF
                        //En UTF16 sería desde #$0021 hasta #$00FF 
 NCirculos='➀'..'➉';    //En UTF8  sería desde #$E29E80 hasta #$E29E89
                        //En UTF16 sería desde #$2780 hasta #$2789
VAR
 b:AELetras;
 c:NCirculos;

BEGIN
  b:=164;
  Writeln(b);          //se comporta como un subrango de numeros enteros
  
  c:=10115;
  Writeln(c);          //se comporta como un subrango de numeros enteros
END.
Código fuente 21: Subrango de caracteres en UTF8.
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.