Está en la página 1de 9

TIPOS DE DATOS: MATERIAL DE APOYO

1.- TIPOS DE DATOS


Definicin: Un Tipo de dato es un conjunto de valores junto a una serie de operaciones que
pueden ser aplicadas sobre dichos valores.
Por ejemplo, objetos de tipo Entero puede tomar valores del conjunto de los enteros, y las
operaciones sobre dichos valores son la adicin, la sustraccin, la multiplicacin y la divisin.
Caractersticas y ventajas de los tipos de datos:
Caractersticas:
Un tipo determina la clase de valores que puede asumir una variable o una expresin. En
ocaciones una variable determina el tipo de una expresin: por ejemplo en JAVA,
entero=entero*real, real=entero*real.
Cada variable pertenece a un solo tipo.
Cada operador acta sobre operandos de algn tipo (o algunos tipos cuando se tiene
polimorfismo paramtrico: como +, *, /, etc.), y da como resultado un valor de algn tipo
(segn los operandos y las reglas especficas del lenguaje).
Ventajas:
La verificacin de tipos es realizada por el traductor.
Tiene asociado la abstraccin de datos y procedural: Permite agrupar un conjunto de
valores relevantes de un fenmeno que guardan una estrecha relacin, y permite ver las
operaciones sobre los valores de manera indivisibles.
Ocultamiento de la representacin interna: se ve slo la especificacin y no la
implementacin.
Aumento en la portabilidad en los programas.
Aumento en la semntica de un programa, y en legibilidad.
Verificacin de tipos:
Verificar tipos significa detectar que cada operacin reciba el nmero adecuado de
argumentos, y que dichos argumentos sean del tipo adecuado. (un argumento de un
operador es como un operando). Dependiendo del momento en que se realiza la operacin,
podemos tener una verificacin esttica (en tiempo de traduccin) o una verificacin dinmica
(en tiempo de ejecucin).
Para realizar la verificacin de tipos se requiere la siguiente informacin:

Para cada operacin: Cantidad, orden y tipo de argumento; y tipo de resultado


Para cada variable, el conjunto de valores que puede tomar (segn su tipo)
Para cada constante, se asocia un tipo.

Compatibilidad de tipos:
Dos tipos son compatibles, segn la equivalencia entre argumento y variable para el lenguaje
usado:
Equivalencia por nombre: Dos variables tiene tipos compatibles si tienen el mismo nombre de
tipo. Ejemplo: Si A y B son enteros -> son compatibles.
Equivalencia estructural: Dos variables tienen tipos compatibles si tienen la misma estructura
interna. Ejemplo: Sean A y B como sigue:

A=Arreglo[1..n] de entero; B=Arreglo[1..n] de entero A y B son compatibles


Si los tipos son compatibles (entre argumento y parmetro por ejemplo), se acepta el
argumento y se contina la operacin. Si son distintos y segn el lenguaje puede suceder:
a.- Error fatal: Inconsistencia de tipos.
b.- Conversin de tipos (por ejemplo en C, en la asignacin entero = real, el real es
convertido a entero automticamente).
Mecanismo a utilizar para el estudio de los tipos de datos:
Los tipos de datos pueden ser estudiados en dos niveles diferentes:
a.- Especificacin: define la organizacin lgica del tipo, la cual se compone de atributos y
operaciones.
b.- Implementacin: Define la forma en la cual los atributos y operaciones son representados
internamente. Se divide en representacin (estructuras de datos para almacenar la
informacin) e implementacin o cuerpo de las operaciones.
2.- CLASIFICACIN DE LOS TIPOS DE DATOS
El criterio para clasificar los tipos de datos est dado por el nmero de componentes
(determina si es estructurado o no) y segn el tipo de sus componentes ( si es no
estructurado equivale al tipo, y si es estructurado determina si es homogneo o
heterogneo).
Entero, Caracter, lgico, real
Nmero de
Componentes

Enumerado
Elemental
SubRango

1
Tipo
n
Estructurado

Homogneos: archivos
arreglos

=
tipo
de componentes

!=
Heterogneos: registros

Podemos referirnos a objetos de tipo no estructurado, cuando el conjunto de valores que


pueden tomar son no estructurados, y objetos de tipo estructurado, cuando el conjunto de
valores que pueden tomar son estructurados.
Tipos de datos no estructurados o elementales
Los tipos de datos no estructurados que estn disponibles en la mayora de los lenguajes de
programacin son el tipo entero, caracter, real y lgico. Muchos lenguajes permiten la
definicin de tipos subrango o subintervalos, y enumerados. A continuacin explicaremos
brevemente cada uno de estos tipos.
2.1.1 Tipo entero:
Conjunto de valores: Subconjunto de los enteros

Conjunto de operaciones: adicin, sustraccin, multiplicacin, divisin entera (DIV), y residuo


de la divisin (MOD). Las operaciones que se realizan sobre enteros son exactas (salvo
desbordamiento u operaciones invlidas como dividir por cero).
Implementacin de la representacin: Si un computador utiliza n bits para representar un
entero en notacin complemento a2, entonces el conjunto de enteros representables
comprende 2n valores desde -2n-1 hasta 2n-1-1. En complemento A2, los nmeros positivos
se almacenan tal cual, y el bit de signo vale 0. Pero los negativos estn complementados y
sumado 1, y el bit de signo en 1. Por ejemplo, el nmero -1 en 16 bits es 1111111111111110.
Para decodificarlo, se complementan los bits de mantisa y se suma 1, osea,
1000000000000001.
1
E

n-1 bits
Magnitud
Signo
Tipo de dato = Entero

Cardinalidad: La cardinalidad se define como el conjunto de valores que puede tomar una
variable de un tipo de dato dado. Se puede decir que la cardinalidad est determinada por el
conjunto de valores asociados a un tipo. La cardinalidad de un entero de n bits es 2 n en
complemento A2.
2.1.2 Tipo real:
Conjunto de valores: El tipo real tiene asociado un subconjunto de los reales.
Conjunto de operaciones: Las operaciones ms comunes sobre reales son la adicin, resta,
multiplicacin y divisin. Muchos lenguajes y arquitecturas proveen operaciones como la
potencia, seno, coseno, y otras.
Implementaciin de la representacin: Se representan en el computador como un par de
enteros, generalmente de rangos distintos, de la forma:
R

Mantisa

Exponente

Tipo de dato=Real

en donde la mantisa y el exponente estn representados anlogamente a un entero


(complemento A1, A2 u otro). En ocasiones se puede tener los signos seguidos de las
magnitudes de cada entero. R (descriptor) indica que el dato es un real, y se usa slo en
tiempo de traduccin.
Esta representacin del real proviene del hecho de que cada nmero real puede ser
expresado en notacin cientfica. Por ejemplo, el nmero -45.32 puede expresarse como
-0.4532x102. La mantisa sera 4532 y el exponente 2. Generalmente el nmero de bits que se
reservan para la mantisa es mayor que para el exponente. Para un ejemplo real, en binario el
nmero 1.01 puede escribirse como 0.101 x21, siendo la mantisa 101, y el exponente 1.

Cardinalidad: La cardinalidad de un real con n bits para la mantisa y m bits para el exponente
es CARD(real) = 2n.2m = 2n+m, si la mantisa y el exponente estn representados en
complemento A2.
2.1.3 Tipo caracter:
Conjunto de valores: Corresponde a un conjunto de caracteres y operaciones sobre ellos.
Depende del sistema de codificacin. Ejemplo: Tabla ASCII tiene 128 caracteres, y la ASCII
extendida 256 caracteres.
Conjunto de operaciones: Como veremos posteriormente, el conjunto de caracteres es un
conjunto ordenado, por lo que las operaciones ms comunes entre ellos son: Relacionales (>,
<, >=, <=, <>, =), Primero, Ultimo, Sucesor, Predecesor, Ordinal y Caract.
Implementacin de la representacin: Desafortunadamente no existe un conjunto de
caracteres que se use en todos los sistemas de computacin. Sin embargo, la Organizacin
Internacional de Normas (ISO) define el cdigo Estadounidense ASCII (Cdigo Estndar
Estadounidense para el Intercambio de Informacin), el cual constituye el cdigo ms
aceptado. Este cdigo consta de 128 caracteres, de los cuales, 99 son imprimibles y los
restantes 33 son de control. En muchas mquinas se usan 8 bits para representar los
caracteres, y suele usarse la tabla ASCII extendida, que consta de 256 caracteres (los
mismos 128 del Cdigo ASCII, y otros 128 caracteres).
Su representacin es de la siguiente forma:
C

8 bits para el caracter


Tipo de dato=Caracter

Cardinalidad: La cardinalidad de un caracter es 128 en caso de usar el sistema de


codificacin ASCII, o 256 en caso de usar ASCII extendido.
2.1.4 Tipo lgico:
Conjunto de valores: Se asocia con el conjunto de valores verdadero y falso.
Conjunto de operaciones: Las ms comunes entre lgicos son O (Or), Y (And) y No (Not). En
muchos lenguajes se provee otras operaciones que se pueden obtener como composicin de
las anteriores; por ejemplo, (Xor). .Los operadores relacionales pueden aplicarse entre los
lgicos, ya que en la representacin se le asigna un valor entero a verdadero, y otro valor a
falso.
Implementacin de la representacin: Computacionalmente estos dos valores se representan
en general como 1 y 0 respectivamente. Para almacenar estos valores bastara con la unidad
mnima de informacin en un computador: el bit; sin embargo, la unidad mnima de
direccionamiento en la mayora de los computadores es el byte, por lo que el tipo lgico
puede representarse como un byte cuyos valores posibles son 1 y 0. Si este es el caso,
existe un orden en este conjunto: falso < verdadero.

Valor del Lgico


Tipo de dato=Lgico

Cardinalidad: La cardinalidad de este conjunto es CARD(Lgico) = 2.


2.1.5 Tipo subrango:
Conjunto de valores: Con frecuencia sucede que una variable caracter o entera toma valores
slo dentro de un intervalo. En estos casos, se puede definir un tipo de dato, cuyo conjunto
de valores asociado es dicho subintervalo (tipo subrango). Este tipo de dato es definido por
el usuario, pero tambin es no estructurado, porque los valores vlidos que puede tomar una
variables de este tipo, es un subconjunto de los enteros o caracteres, segn el caso. A
continuacin veremos unos ejemplos de la definicin de subrangos.
Tipo ao
Tipo letra

= [1900 .. 2000]
= ['A' .. 'Z']

Conjunto de operaciones: Las operaciones son heredadas de las operaciones del tipo de
dato original del cual se define un subrango (Tipo caracter o entero).
Implementacin de la representacin: Usaremos la siguiente definicin de tipo subrango
general para detallar la representacin.
Tipo <Nombre-Subrango> = [<Li> .. <Ls>]
En muchos lenguajes se maneja un descriptor que contiene el tipo de dato (subrango), el tipo
base del subrango (caracter o entero) y los lmites del subrango para determinar cuando una
variable sobrepasa su rango (desbordamiento).
Tipo subrango
De enteros o caracteres
S

E/C Li

Ls Valor

Cardinalidad: La cardinalidad del subrango es CARD(SubRango-Type) = Ls-Li+1.


2.1.6 Tipo Enumerado: Es usado para definir un conjunto de constantes.
Conjunto de valores: A cada constante del conjunto se le asigna un valor entero, comenzando
por defecto desde el cero, y sucesivamente en incrementos de una unidad.
Conjunto de operaciones: Como entre estos elementos existe un orden (segn el orden de la
declaracin), y como se oculta la representacin, las operaciones aritmticas no pueden
operar directamente sobre estos, por lo que tenemos Sucesor, Predecesor, Ordinal, etc.
Implementacin de la representacin: A cada constante del enumerado se le asigna un valor
entero comenzando desde el cero, y de manera consecutiva. De aqu que el descriptor de
variables enumerado debe tener, el tipo de variable (enumerado), y el valor de la ltima
constante del enumerado. Si el valor de la primera constante es no necesariamente cero,
entonces se agrega Li al descriptor, similar al tipo subrango.

Tipo subrango
valor tope que puede tomar
En Ls

Valor

En Pseudoformal la notacin a adoptar es la siguiente:


Tipo Dia = (Lunes,Martes,Mircoles,Jueves,Viernes,Sbado,Domingo)

Cardinalidad: La cardinalidad de un tipo enumerado es igual al nmero de elementos


definidos dentro del enumerado.
3.- TIPOS DE DATOS ESTRUCTURADOS
En muchos problemas es necesario almacenar y manipular datos formados por colecciones
de valores que presentan ciertas relaciones entre s. Para sto, existen herramientas que
permiten organizar eficientemente dichos datos en la memoria del computador; estas son las
estructuras de datos, que permiten manipular datos complejos en cuanto a su organizacin,
en forma relativamente sencilla, dndole claridad y simplicidad a los programas.
A continuacin veremos los tipos de datos estructurados ms comunes como lo son: los
arreglos y registros.
3.1 ARREGLOS
3.1.1.- Arreglos Unidimensionales
Un arreglo unidimensional es una estructura da datos homognea, porque est formada por
elementos del mismo tipo (tipo base), sobre los cuales existe una correspondencia uno a uno
con algn subconjunto finito de los enteros (tipo ndice).
Elementos que intervienen en la definicin: El tipo base, el tipo ndice, y el arreglo como tal.
Arreglo <Nombre> de <Tipo_de_dato> [Li...Ls];

Conjunto de valores: Valores estructurados (e <Li>, e<Li>+1, ..., e<Ls>) en donde ei es del tipo base
del arreglo, y el nmero de elementos del arreglo es <Ls>-<Li>+1.
Operacin selectora: Permite referenciar una componente individual del arreglo. La sintaxis
es
<nombre de la variables> [<indice>]
El ndice puede ser una constante, variable o expresin. En cualquier caso, este se evala y
se accede el elemento que este indique.
Operacin constructora: Consiste en asociar un valor estructurado a un arreglo, que se
corresponda con sus caractersticas (#elementos y tipo de elementos).
Implementacin de la representacin:
El descriptor del arreglo est determinado por los elementos que intervienen en su definicin.
Estos pueden enumerarse en: el nombre del tipo, los lmites del intervalo de definicin, el
nombre del tipo base, y el tamao del tipo base.

AU
<Li>

Tipo arreglo unidimensional


<Ls>

Lmites del arreglo

Tbase

Nombre del tipo base

Tam

Tamao del tipo base

E(li) E(li+1) ... E(Ls)

Elementos del arreglo

Implementacin de la operacin selectora:


Suponiendo que D es la direccin de inicio de los elementos del arreglo, entonces E[i] est
en la posicin D+(i-Li)*Tam
Implementacin de la operacin constructora: Esta operacin no la proveen muchos
lenguajes. La implementacin puede reducirse a la utilizacin de la operacin selectora para
realizar la copia elemento por elemento, o bien un movimiento de bloques de memoria.
Cardinalidad: La cardinalidad de un arreglo es
Ls

Cardinalidad( Tbase) Cardinalidad( Tbase)(LsLi1) Cardinalidad( Tbase) Cardinalidsad(Tindice)


iLi

3.1.2.- Arreglos Multidimensionales


El concepto de arreglo multidimensional es una extensin del concepto de arreglo
unidimensional, al considerar que el tipo base est formado por componentes estructuradas
del tipo arreglo (unidimensional o multidimensional). De esta forma una arreglo bidimensional
(comnmente llamado matriz) es una arreglo cuyas componentes son arreglo
unidimensionales.
3.1.2.1.- Arreglos bidimensionales
Elementos que intervienen en la definicin: El tipo base, los tipos ndice, y el arreglo
bidimensional como tal.
Tipo <Indice1> = [<Li1> .. <Ls1>]
Tipo <Indice2> = [<Li2> .. <Ls2>]
Tipo <Nombre-Tarreglo> = Arreglo [<Indice1>..<Indice2>] de <Tbase>
Conjunto de valores: Valores estructurados (e <Li1>,<Li2>, ... , e<Ls1>,<Ls2>) en donde ei es del tipo
base del arreglo, y el nmero de elementos es:
(<Ls1>-<Li1>+1)*(<Ls2>-<Li2>+1).
Operacin selectora: Permite referenciar una componente individual del arreglo.
Sintaxis: <Nombre-Arreglo>[<ndice1>,<indice2>] ----> Tbase
Sea i,j valores vlidos para ndice1 e Indice2 resp. Entonces:
<Nombre-Arreglo>[i,j] Referencia el elemento de posicin i,j del arreglo
Operacin constructora:
<Nombre-Arreglo> = ((e11,e12,...,e1m), ..., (en1, en2, ..., enm))

Implementacin de la representacin:
El descriptor del arreglo est determinado por los elementos que intervienen en su definicin.
Estos pueden enumerarse en: el nombre del tipo, los lmites del intervalo de definicin tanto
por filas como columnas, el nombre del tipo base, y el tamao del tipo base.
AB

Tipo arreglo bidimensional

<Li1>

<Ls1>

<Li2>

<Ls2>

Lmites for filas del arreglo

Tbase

Nombre del tipo base

Tam

Tamao del tipo base

F(li1) F(li1+1) ... F(ls1)

Elementos del arreglo, almacenados por filas

Implementacin de la operacin selectora:


Suponiendo que D es la direccin de inicio de los elementos del arreglo, tenemos que la fila i
comienza en la posicin Fi=D+(i-Li1)*(Ls2-Li2+1)*Tam, entonces E[i,j] est en la posicin:
Fi+(j-Ls2)*Tam = D+[(i-Li1)*(Ls2-Li2+1)+(j-Ls2)]*Tam
Implementacin de la operacin constructora: Puede reducirse a la aplicacin repetitiva de la
operacin selectora, u operaciones ms eficientes como el de movimientos de bloques de
memoria.
Cardinalidad: La cardinalidad de un arreglo bidimensional viene dada por:
Ls1 Ls1

Cardinalidad( Tbase) Cardinalidad( Tbase)(Ls1Li11).(Ls2Li21)

iLi1 jLi1

// De tarea, plantear para una matriz n-dimensional


3.2.- REGISTROS
El registro es una estructura de datos formada por una coleccin finita de elementos no
necesariamente homogneos, llamados campos. Es muy usado cuando se tiene un conjunto
de datos que guardan cierta relacin entre s, y es considerado la manera ms general para
definir tipos estructurados
Definicin de un registro
En general un registro se define como sigue:

Tipo <N-reg> =

Registro
<C1>: <T1>
<C2>: <T2>
...
<Cn>: <Tn>

FinRegistro
donde <Ci> es el nombre del campo i-simo del registro, y <Ti> su tipo asociado.
Conjunto de valores: Valores estructurados (e 1, ... , en) en donde ei es de tipo <Ti>.
n

Cardinalidad: La cardinalidad de un registro es:

Cardinalidad( Campo _ i )
i1

Operacin selectora:
Sintaxis: <N-reg>.<Ci> ---> Tbase
Semntica: <N-reg>.<Ci> retorna el valor del campo i-simo del registro
Operacin constructora: Permite asignar un valor estructurado a un registro, acorde con su
definicin.
<N-reg> = (e1, e2, ..., en) donde ei es de tipo Ti
Implementacin de la representacin:
R

Tipo registro

Valor_1

Valor del campo 1

Valor_2

Valor del campo 1

...
Valor_n

Valor del campo n

Implementacin de la operacin selectora:


Para lenguajes compilados, en tiempo de compilacin generalmente se conoce el tamao de
cada campo del registro. As, puede determinarse en compilacin el desplazamiento
necesario para acceder un campo determinado, por lo que el descriptor del registro no es
algo usual.
i1

<N-reg>.<Ci> est en la posicin D+ Tam ( C k )


k 1

Implementacin de la operacin constructora: Movimiento de bloques de memoria.

También podría gustarte