domingo, 14 de noviembre de 2010

TIPOS DE DATOS

Laboratorio de Lenguajes de Programación - PUNTOS EXTRA

En la programacion, un tipo de dato es un atributo, que le indica al sistema la clase de información a procesar. Los tipos de dato mas comunes son los numéricos, los caractéres y los légicos.

Al principio todos los datos en la máquina ingresan y se representan como bits (1 y 0) en su nivel mas bajo. Los bits se pueden agrupar, por ejemplo, en 8 y formar un Byte.

Como los tipos de datos son una referencia a la clase de información a procesar, la máquina es capaz de considerar un rango de valores específico para cada tipo de dato, acorde a las necesidades de memoria del mismo. Este rango delimita por ejemplo cuantos números es capaz de procesar la maquina antes de que haya algun fallo. Estos son los rangos de cada tipo de dato:



Caractéres: Son digitos individuales con los cuales se pueden representar digitos, letras y el simbolo $.
Enteros: Como su nombre lo dice, este tipo de dato almacena numeros enteros.
Punto Flotante: Este tipo de dato almacena números muy grandes con parte decimal.
Lógicos: Los considerados booleanos, solo tienen 2 posibles estados TRUE y FALSE.

Tambien existen tipos de datos compuestos, por ejemplo las cadenas de caracteres que son grupos de caracteres que pueden formar una oracion o un dato mas complejo.
Las estructuras son definiciones que contienen 2 o mas tipos de datos fusionados en uno solo.

ESTRUCTURAS DE DATOS

Una vez que tenemos los tipos de datos que vamos a necesitar usualmente despues necesitamos organizarlos de cierta manera, y las estructuras de datos nos ayudan muchas veces a realizar esa tarea.

Comenzando desde el incio, existen identificadores de memoria a las cuales de les conoce como variables, una variable es un nombre que se le da a determinada direccion de memoria y a su vez es el lugar donde se almacenaran los datos que el usuario utilizara durante la ejecucion del programa.
En general existen varias reglas para declarar una variable, ya que no cualquier nombre es valido, estas reglas se extienden a la mayoria de los lenguajes de programacion, estas son:

1. Iniciar con una letra del alfabeto ingles, nunca se debe iniciar con caracteres especiales, ni simbolos (excepto el guion bajo).
2. Despues de la primera letra se pueden colcar mas caracteres y numeros, pero siguiendo la regla numero 1.
3. No espacios en blanco.
4. No palabras reservadas del lenguaje.

Las variables quedan definidas por el tipo de dato con el que han sido "marcadas" y despues estas variables son las que a nivel usuario son manejadas por nosotros.

Arreglos

Tambien son llamados vectores, y son espacios de alamacenamiento continuo dentro de la memoria, dichos espacios contiguos almacenan una serie de datos del mismo tipo y llamados todos por igual, si se quiere referir a un solo elemento del arreglo se hace por medio de un indice, por ejemplo:
int a[5] => |0|1|2|3|4|
considerandose el arreglo anterior, cada elemento queda enumerado del 0 al 4 y cada uno de estos numeros se considera el indice de cada elemento; y por lo general se almacenan en fila (una dimension), tambien existen arreglos multidimensionales siendo el limite humano aquel arreglo de tres dimensiones.



Listas

Es otro tipo de estructura de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior o posterior.

El principal beneficio de las listas enlazadas respecto a los array convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.
La desventaja frente a los arreglos es que cada elemento esta referenciado por lo que no es posible accesar a cada uno de manera aleatoria y hay que seguir una secuenciaa para llegar al elemento deseado.

Existen diferentes tipos de listas enlazadas: Lista Enlazadas Simples, Listas Doblemente Enlazadas, Listas Enlazadas Circulares y Listas Enlazadas Doblemente Circulares.

Lista enlazada simple: Cada uno de los nodos de la lista tiene un solo enlace que apunta al nodo siguiente, o a NULL si esta vacia o es el nodo final


Lista enlazada doble: Cada nodo tiene 2 enlaces, uno apunta al elemento anterios o a NULL si es el primer nodo; el otro apunta al siguiente elemento o a NULL si es el ultimo elemento.


Lista circular enlazada simple: Son identicas a las listas enlazadas simples, la diferencia es que en estas, el nodo final esta enlazado al primero.


Lista circular enlazada doble: Son lo mismo que las listas enlazadas dobles, donde el ultimo elemeno apunta al primero y el primero apunta al ultimo.

Pilas

es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en la propia estructura.

Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.

En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en inglés). La operación retirar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.


Existen diferentes operaciones que se pueden realizar a una pila:

Crear: se crea la pila vacía.
Apilar: se añade un elemento a la pila.(push)
Desapilar: se elimina el elemento frontal de la pila.(pop)
Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)
Vacía: devuelve cierto si la pila está vacía o falso en caso contrario.

Colas

Son otro tipo de estructura de datos, que es caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.

La caracteristica las colas de datos es el hecho de sólo poder acceder al primer y al último elemento de la estructura. Así mismo, los elementos sólo se pueden eliminar por el principio y sólo se pueden añadir por el final de la cola.

Ejemplos de colas los vemos todo el tiempo, al ir de compras y hacer "cola" para pagar, o al ir al banco y hacer fila para ser atendido.


Las operaciones basicas para una cola son:

Crear: se crea la cola vacía.
Encolar (añadir, entrar, push): se añade un elemento a la cola. Se añade al final de esta.
Desencolar (sacar, salir, pop): se elimina el elemento frontal de la cola, es decir, el primer elemento que entró.
Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primero elemento que entró.

Arboles

Es una estructura de datos ampliamente usada que imita la forma de un árbol. Los nodos son la unidad sobre la que se genera un árbol y puede tener cero o más nodos conectados a él denominados hijos. Un nodo a es padre de un nodo b si existe una union de a hasta b. Un nodo sin padres se raíz. Un nodo sin hijos se conoce como hoja. Los demás nodos (tienen padre y uno o varios hijos) se les conoce como rama.


Las operaciones comunes en árboles son:
Enumerar todos los elementos.
Buscar un elemento.
Dado un nodo, listar los hijos (si los hay).
Borrar un elemento.
Eliminar un subárbol (algunas veces llamada podar).
Añadir un subárbol (algunas veces llamada injertar).
Encontrar la raíz de cualquier nodo.

Por su parte, la representación puede realizarse de diferentes formas. Las más utilizadas son:
Representar cada nodo como una variable en el heap, con punteros a sus hijos y a su padre.
Representar el árbol con un array donde cada elemento es un nodo y las relaciones padre-hijo vienen dadas por la posición del nodo en el array.

Usos comunes de los árboles son:
Representación de datos jerárquicos.
Como ayuda para realizar búsquedas en conjuntos de datos

En una entrada anterios pueden ver un codigo en c con la implementación de una cola de datos y una pila de datos.

SALUDOS!!! ^_^

Fuentes:
http://es.wikipedia.org/wiki/Vector_(programación)
http://es.wikipedia.org/wiki/Lista_(estructura_de_datos)
http://es.wikipedia.org/wiki/Pila_(estructura_de_datos)
http://es.wikipedia.org/wiki/Cola_(estructura_de_datos)
http://es.wikipedia.org/wiki/Árbol_(estructura_de_datos)

1 comentario: