Está en la página 1de 12

Estructura de datos

Clasificacion general de los tipos de datos

Información y datos
Una definición muy simple:
El tipo de un dato es el conjunto de valores que puede tomar durante
el programa. Si se le intenta dar un valor fuera del conjunto se
producirá un error.
La asignación de tipos a los datos tiene dos objetivos principales:

• Por un lado, detectar errores en las operaciones


• Por el otro, determinar cómo ejecutar estas operaciones

De Pascal se dice que es un lenguaje fuertemente tipiado. Esto


quiere decir que todos los datos deben de tener un tipo declarado
explícitamente, y además que existen ciertas restricciones en las
expresiones en cuanto a los tipos de datos que en ellas intervienen.

Una ventaja de los lenguajes fuertemente tipiados es que se gasta


mucho menos esfuerzo en depurar (corregir) los programas gracias a
la gran cantidad de errores que detecta el compilador.

Los tipos de datos, como casi todos los objetos de Pascal, se pueden
declarar. La declaración de tipos ya se comentó en el tema
correspondiente a la estructura de un programa.
El tratamiento automático
de la información
La informática se ocupa como ciencia de tratar la información
de forma automática mediante máquinas electrónicas. Este
tratamiento recibe el nombre de procesamiento de datos y se
puede dividir en tres etapas diferenciadas:

- Fase de entrada

En la primera fase de entrada, el usuario introduce los datos a


través de unos dispositivos conectados al ordenador. Estos
dispositivos se denominan periféricos de entrada y son, entre
otros, el teclado y el ratón.

- Fase de proceso

Una vez que ha recibido los datos, el ordenador los almacena


en la memoria y realiza las operaciones necesarias para
obtener los resultados.

- Fase de salida

Por último, el ordenador muestra en la fase de salida los


resultados y lo hace a través de dispositivos conectados a él.
Estos dispositivos se llaman periféricos de salida y son, por
ejemplo, el monitor y la impresora.

Clasificaciones de los tipos de datos


En Pascal existen gran variedad y cantidad de tipos de datos. Pero
en este tutorial sólo se trataran los básicos para que puedas ir
construyendo tus primeros programas.
Existen muchas clasificaciones para los tipos de datos, y
dependiendo de la fuente que mires, te mostrarán una u otra. A
continuación tienes una de las posibles clasificaciones:

• Dinámicos
• Estáticos
o El tipo cadena
o Estructurados
o Simples
• Ordinales
• No-ordinales

Tipos estáticos

Casi todos los tipos de datos son estáticos, la excepción son los
punteros y no se tratarán debido a su complejidad.

Que un tipo de datos sea estático quiere decir que el tamaño que
ocupa en memoria no puede variar durante la ejecución del
programa. Es decir, una vez declarada una variable de un tipo
determinado, a ésta se le asigna un trozo de memoria fijo, y este
trozo no se podrá aumentar ni disminuir.

Tipos dinámicos

Dentro de esta categoría entra solamente el tipo puntero. Este tipo te


permite tener un mayor control sobre la gestión de memoria en tus
programas. Con ellos puedes manejar el tamaño de tus variables en
tiempo de ejecución, o sea, cuando el programa se está ejecutando.

Los punteros quizás sean el concepto más complejo a la hora de


aprender un lenguaje de programación, sobre todo si es el primero
que aprendes. Debido a esto, no lo trataremos. Además, lenguajes
que están muy de moda (por ejemplo Java) no permiten al
programador trabajar con punteros.

Tipos simples

Como su nombre indica son los tipos básicos en Pascal. Son los más
sencillos y los más fáciles de aprender. Por todo esto, serán en los
que nos centremos.

Los tipos simples más básicos son: entero, lógico, carácter y real. Y
la mayoría de los lenguajes de programación los soportan, no como
ocurre con los estructurados que pueden variar de un lenguaje a otro.

Tipos estructurados

Mientras que una variable de un tipo simple sólo referencia a un


elemento, los estructurados se refieren a colecciones de elementos.

Las colecciones de elementos que aparecen al hablar de tipos


estructurados son muy variadas: tenemos colecciones ordenadas que
se representan mediante el tipo array, colecciones sin orden
mediante el tipo conjunto, e incluso colecciones que contienen otros
tipos, son los llamados registros.
Tipos ordinales

Dentro de los tipos simples, los ordinales son los más abundantes.
De un tipo se dice que es ordinal porque el conjunto de valores que
representa se puede contar, es decir, podemos establecer una
relación uno a uno entre sus elementos y el conjunto de los números
naturales.

Dentro de los tipos simples ordinales, los más importantes son:

• El tipo entero (integer)


• El tipo lógico (boolean)
• El tipo carácter (char)

Tipos no-ordinales

Simplificando, podríamos reducir los tipos simples no-ordinales al


tipo real. Este tipo nos sirve para declarar variables que pueden
tomar valores dentro del conjunto de los números reales.

A diferencia de los tipos ordinales, los no-ordinal no se pueden


contar. No se puede establecer una relación uno a uno entre ellos y
los número naturales. Dicho de otra forma, para que un conjunto se
considere ordinal se tiene que poder calcular la posición, el anterior
elemento y el siguiente de un elemento cualquiera del conjunto.
¿Cuál es el sucesor de 5.12? Será 5.13, o 5.120, o 5.121, ...

Los tipos básicos que nos interesan

Después de ver una de las posibles clasificaciones para los tipos de


datos, pasemos a ver los que nos interesan: los tipos simples.
Realmente de los tipos simples veremos los más básicos, que son:
integer, boolean, char y real. Además, también hablaremos un poco
de las cadenas de caracteres, los llamados strings.
nota: a continuación sólo se comentará qué es cada tipo, no se
explicará su declaración, esto puedes verlo si vas a la sección
correspondiente.

El tipo integer (entero)


Como ya habrás leído el tipo de datos entero es un tipo simple, y
dentro de estos, es ordinal. Al declarar una variable de tipo entero,
estás creando una variable numérica que puede tomar valores
positivos o negativos, y sin parte decimal.

Este tipo de variables, puedes utilizarlas en asignaciones,


comparaciones, expresiones aritméticas, etc. Algunos de los papeles
más comunes que desarrollan son:

• Controlar un bucle
• Usarlas como contador, incrementando su valor cuando sucede
algo
• Realizar operaciones enteras, es decir, sin parte decimal
• Y muchas más...

A continuación tienes un ejemplo en el que aparecen dos variables


enteras. Como puedes ver, en el ejemplo se muestran las dos
maneras de declarar una variable de tipo entero:

type
tContador = integer;
var
i : tContador;
n : integer;

begin
n := 10; (* asignamos
valor al maximo *)
i := 1; (* asignamos
valor al contador *)

while (i <= n) do begin


writeln('El valor de i
es ',i);
i := i + 1
end
end.

El tipo boolean (lógico)


El tipo de datos lógico es el que te permite usar variables que
disponen sólo de dos posibles valores: cierto o falso. Debido a esto,
su utilidad salta a la vista, y no es otra que variables de chequeo.
Nos sirven para mantener el estado de un objeto mediante dos
valores:

• si/no
• cierto/falso
• funciona/no funciona
• on/off
• etc.

Para aclararlo, veamos un ejemplo:

type
tLogico = boolean;
var
llueve : tLogico; (*
si llueve o no *)
paraguas : boolean; (*
si encuentro o no el paraguas
*)

begin
(* aqui se determinarian
los valores de "llueve" y
"paraguas" *)

if llueve and (not


paraguas) then
writeln('Me quedo en
casita')
else
writeln('Me voy a dar
un paseo')
end.

El tipo real (real)


Como ya has visto, Pascal soporta el conjunto entero de números.
Pero no es el único, también te permite trabajar con números
pertenecientes al conjunto real.

El tipo de datos real es el que se corresponde con los números reales.


Este es un tipo importante para los cálculos. Por ejemplo en los
estadísticos, ya que se caracterizan por tratar fundamentalmente con
valores decimales.

nota: Aunque pueda que estés acostumbrado a escribir con coma los
decimales, te advierto que en Pascal y en todos los lenguajes de
programación se escribe con un punto. Por ejemplo: 3.1416

A continuación tienes un ejemplo en el que se utiliza el tipo real. En


el puedes ver las dos formas de declarar una variable real, y también
el uso de una constante real. Por si tienes curiosidad, el resultado de
ejecutar el programa compilado es:
El área para un radio de 3.14 es 63.6174

const
pi = 3.1416;
type
tArea = real;
var
A : tArea; (* area *)
R : real; (* radio
*)

begin
R := 4.50;
A := pi * R * R; (*
calculamos el area *)

writeln('El area para un


radio de ',R:4:2,' es ',A:8:4)
end.

Los tipos char y string (carácter y cadena)


Con el tipo carácter puedes tener objetos que representen una letra,
un número, etc. Es decir, puedes usar variables o constantes que
representen un valor alfanumérico. Pero ojo, cada variable sólo
podrá almacenar un carácter.

Sin embargo, con las cadenas de caracteres (strings) puedes contener


en una sola variable más de un carácter. Por ejemplo, puedes tener
en una variable tu nombre.
Veamos cómo se usan ambos tipos en el siguiente ejemplo

type
tNombre = string[10]; (*
puede almacenar 10 caracteres
*)
var
nombre : tNombre; (*
variable para almacenar el
nombre *)
letra_NIF : char; (*
caracter para contener la letra
del NIF *)

begin
nombre := 'Beni';
letra_NIF := 'L';

writeln('Mi nombre es
',nombre,' y mi letra es
',letra_NIF)
end.

Veamos un ejemplo sobre tipos de datos

A continuación se presenta un ejemplo con el que puedes interactuar


para que veas de forma más amena alguno de los conceptos sobre
los tipos de datos.

En el ejemplo tienes en la parte izquierda el código del programa, y


en la derecha la parte con la puedes jugar. Esencialmente, lo que
tienes que hacer es:
• Dar valores iníciales a las variables numero, char_A y char_B
• Y en función de estos valores y de las instrucciones que hay en
el código, determinar cuál será el valor de cadena

Suerte!!
program Prueba;
type
tNumero =
integer;
tLogico =
boolean;
tCaracter = char;
tCadena =
string[5];
var
numero : tNumero;
cadena : tCadena;
char_A, char_B
: tCaracter;
logico_A,
logico_B : tLogico;

begin
(* aqui se
iniciarian las vars.
*)
(* ... *)
logico_A :=
numero > 3;
logico_B :=
numero < 6;
if logico_A and
logico_B then
cadena :=
char_B
else
cadena :=
char_A;
end.

También podría gustarte