Especificación del Tipo de Dato Abstracto Racional
VALORES
Concepto matemático de números racionales, es decir, un par de números enteros tal que el primero es el numerador y el segundo el denominador.
OPERACIONES (Sintaxis y Semántica)
• Generadoras
◦ Crear Racional (n,d:entero)→ Racional
{Objetivo: Crear un número racional
Entrada:
n: numerador del nuevo racional
d: denominador del nuevo racional
Salida: El número racional creado}
◦ Suma (r1,r2:Racional) → Racional
{Objetivo: Calcula la suma de dos números racionales
Entrada: r1, r2: números racionales a sumar
Salida:
Un nuevo racional que contiene la suma de los números a la entrada}
• Observadoras
◦ Numerador (Racional)→ Entero
{Objetivo: Obtener el numerador de un número racional
Entrada:
Numero racional del que obtener el numerador
Salida: numerador del número a la entrada}
◦ Denominador (Racional)→ Entero
{Objetivo: Obtener el denominador de un número racional
Entrada:
Numero racional del que obtener el denominador
Salida: denominador del número a la entrada}
TIPOS DE DATOS ABSTRACTOS
• Una abstracción es la simplificación de un objeto o de un proceso de la realidad en la que sólo se consideran los aspectos más relevantes.
• La abstracción se utiliza por los programadores para dar sencillez de expresión al algoritmo.
• La abstracción tiene dos puntos de vista en programación:
1. Funcional
2. De datos
PILAS
Una pila es un método de estructuración de datos usando la forma LIFO(ultimo en entras, primero en salir), que permite almacenar y recuperar datos.
Operaciones de las Pilas
Las operaciones que se pueden realizar con una pila son:
- PUSH(pila,elemento): introduce un elemento en la pila. También se le conoce como poner o meter
- POP(pila): Wlimina un elemento de la pila. También se le conoce como sacar o quitar- VACIA(pila): Funcion booleana que indica si a pila esta vacia o no
COLAS
Una cola es una estructura de datos, caracterizasa por ser 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.
Tambien se le llama estructura FIFO(del ingles First in First Out), debido a que el primer elemento en entrar será también el primero en salir.
- Cola Simple: estructura lineal donde los elementos salen en el mismo orden en que llegan
- Cola circular: representación lógica de una cola simple en un arreglo- Cola de prioridades: Estructura en la cual los elementos se insertan en cualquier
posición de la cola y se remueven solamente por el frente.- Cola Doble(Bicola): Estructura lineal en la que los elementos se pueden añadir o quitar
por cualquier extremo de la cola(Cola bidireccional).
Operaciones básicas en colas simples
- Insertar: Almacena al final de la cola el elemento que se recibe como parámetro.- Eliminar: Saca de la cola el elemento que se encuentra al frente- Vacia: regresa un valor booleano indicado si la cola tiene o no elementos(true-si la cola
esta vacia,false- si la cola tiene al menos un elemento).- Llena: regresa un valor booleano indicando si la cola tiene espacio disponible para
isnertar nuevos elementos(true-si esta llena y false si existen espacios disponibles).- Crear: se crea la cola vacia.- Encolar(añadir,entrar,insertar): se añade un elemento a la cola. Se añade al final de
esta.- Desencolar(sacar,salir,eliminar): se elimina el elemento frontal de la cola, es decir, el
primer elemento que entro.- Frente(consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer
elemento que entro.
LISTAS
Una lista enlazada es un tipo de dato auto-referenciado porque contienen un puntero o link a otro dato del mismo tipo. Las listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto de la lista en tiempo constante( suponiendo que dicho punto este previamente identificado o localizado), pero no permiten un acceso aleatorio. Existen diferentes tipos de listas enlazadas: Lista Enlazada Simple, Listas Doblemente Enlazadas,Listas Enlazadas Circulares y Listas Enlazadas Doblemente Circulares
Operaciones básicas de una lista
- Recorrer los elementos hacia adelante- Recorrer los elementos hacia atrás- Insertar un nuevo elemento al principio- Insertar un nuevo elemento al final- Insertar un nuevo elementos antes de otro- Insertar un nuevo elemento después de otro- Remover un elemento del principio- Remover un elemento que esta antes que otro- Remover un elemento que esta después de otro- Remover un elemento del principio
- Remover un elemento del final
Complejidad Computacional:
- Buscar k-esimo : tiempo constante- Visualizar y buscar: tiempo lineal- Insertar y eliminar: son costosas
Insertar o eliminar un elemento exige, en promedio, desplazar la mitad de los valores, O(n).La construcción de una lista o la eliminación de todos sus elementos podría exigir un tiempo cuadrático.