BotonMenu
BotonIndice

Visita : http://www.conoce3000.com
Paypal : https://www.paypal.me/conoce3000/1

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL


2. TIPOS DE DATOS SIMPLES.
2.13. SOLAPAMIENTO DE TIPOS DATOS SIMPLES.
2. TIPOS DE DATOS SIMPLES.
2.13. SOLAPAMIENTO DE TIPOS DATOS SIMPLES.
2. TIPOS DE DATOS SIMPLES.
2.13. SOLAPAMIENTO DE TIPOS DATOS SIMPLES.

SIGUIENTE

SIGUIENTE

SIGUIENTE


‒ Solapamiento de tipos de datos simples.

Ya sabemos que Pascal es un lenguaje de programación “fuertemente tipado”. Pero existe una técnica que nos permite superar el estricto control de los tipos de datos que tiene pascal, que se conoce como solapamiento de tipos de datos o moldeo de tipos de datos.

El solapamiento consiste en colocar la representación binaria del valor de una variable de un tipo de dato determinado, en otra variable perteneciente a otro tipo de dato diferente.

Es decir podemos asignar una variable de tipo char a una variable de tipo byte o integer haciendo uso del siguiente solapamiento:

i:=integer(c);

En donde i es una variable de tipo de dato integer y c es una variable de tipo de dato char. A continuación el ejemplo:


Descargar
{$codepage UTF8}

VAR  i:integer;
     c:char; 

BEGIN 
  c:='A';
  i:=integer(c); 
  writeln('c : ',c);
  readln() 
END.
Código fuente 27: Solapamiento de char a integer.
Descargar

El solapamiento o moldeo se puede aplicar a cualquier tipo de dato simple. Pero se debe tener conocimientos muy profundos sobre la representación interna en dígitos binarios de los tipos de datos que se van a moldear, para poder entender los resultados que se obtienen. Por ejemplo el siguiente programa usa el moldeo para convertir un número entero en un tipo de dato enumerado:


Descargar
{$codepage UTF8}

TYPE TUnidades=(centimetro,pulgada,pie,yarda);

VAR aux : TUnidades;    

BEGIN 
  aux:=TUnidades(2); //asigna pie a aux.
  Writeln(aux)
END.
Código fuente 28: Solapamiento de un tipo de dato enumerado.
Descargar

También se tiene que tener en cuenta que cuando se moldea un tipo de dato que tiene un tamaño mayor en bytes con otro tipo de dato de menor tamaño, este se trunca para asignar a la variable los bytes que puede almacenar. Ejemplo:


Descargar
{$codepage UTF8}

VAR a : LongWord; // 4 bytes  
    d : widechar;  // 2 bytes  
    e : char;      // 1 byte

BEGIN 
  a:=$15A898AF;   

  Writeln(a)

  d:=widechar(a);  //asigna #$98AF
  Writeln(d);

  e:=char(a);      //asigna #$AF
  Writeln(e)
END.
Código fuente 29: Solapamiento de un tipo de dato entero mayor en bytes con otro menor.
Descargar

El solapamiento o moldeo con variables de tipo widechar a char tiene un comportamiento particular por el administrador de caracteres, que se explica con el siguiente ejemplo:


Descargar
{$codepage UTF8}

VAR a:char;
    b:widechar;

BEGIN

  //primera parte
   b:='ñ';   //En BMP es #$00F1
   a:=char(b);
   Writeln(a);


  //segunda parte

   a:=char(byte(b));
   Writeln(a)
END.
Código fuente 30: Solapamiento de un tipo de dato widechar con char.
Descargar

La primera parte del programa anterior, lo que hace es intentar solapar o moldear la variable b que es de tipo widechar a una variable a de tipo char, al ser widechar de 2 bytes debería asignar el segundo byte, pero para el administrador de caracteres hacer este solapamiento es como si estuviéramos asignando una variable de tipo widechar a una variable de tipo char, y es por eso que se coloca el signo de interrogación. En la segunda parte del programa lo que se hace es primero solapar o moldear el tipo de dato widechar a un tipo de dato byte, para finalmente moldearlo con el tipo de dato char, y de esta manera asignar a la variable de tipo char el segundo byte de #$F1. En Linux si no se usa el administrador de caracteres entonces se asignará el segundo byte siempre y cuando este sea menor a $00FF.




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.