Estructuras de Datos y Algoritmos en Java

Antes de explorar las estructuras de datos y sus algoritmos espec�ficos, necesitamos examinar tres cuestiones b�sicas: �Qu� es una estructura de datos? �Qu� es un algoritmo? �C�mo se representa un algoritmo? El conocimiento de estos conceptos ayudar� a entender este tutorial

.��Qu� es una Estructura de Datos?

Las estructuras de datos nos han estado rodeando desde la era de la programaci�n estructurada. Una definici�n de esa era: una estructura de datos es un conjunto de tipos, un tipo dise�ado partiendo de ese conjunto de tipos, un conjunto de funciones, y un conjunto de axiomas. Esta definici�n implica que una estructura de datos es un tipo con implementaci�n. En nuestra era de la programaci�n orientads a objetos, tipo con implementaci�n significa clase.

La definici�n una estructura de datos es una clase es demasiado amplia porque supone que Empleado, Veh�culo, Cuenta, y otras muchas clases espec�ficas de entidades del mundo real son estructuras de datos. Aunque esas clases estructuran varios �tems de datos, describen entidades del munto real (en la forma de objetos) en lugar de describir contenedores de objetos para otras entidades objetos (y posiblemente otro contenedor). Esta idea de contenido da una definici�n m�s apropiada para una estructura de datos: una estructura de datos es una clase contenedora que proporciona almacenamiento para �tems de datos, y capacidades para almacenar y recuperar estos datos. Algunos ejemplos de estructuras de datos son los arrays, las listas enlazadas, las pilas y las colas.

.��Qu� es un Algoritmo?

Normalmante los algoritmos se asocian con estructuras de datos. Un algoritmo es una secuencia de instrucciones que realizan una tarea en un periodo de tiempo finito. El algoritmo recibe cero o m�s entradas, produce al menos una salida, consiste en instrucciones claras y poco ambiguas, termina despu�s de un n�mero finito de pasos, y es lo suficientemente b�sico que una persona puede llevar a cabo el algoritmo utilizando l�piz y papel. Por el contrario, un programa no es necesariamente finito: el programa, como un servidor Web, podr�a no terminar nunca si no hay intervenci�n externa. Algunos ejemplos de algoritmos asociados con estructuras de datos son: b�queda-lineal, ordenaci�n-de-burbuja, b�squeda-binaria, concatenaci�n-de-listas-enlazadas, etc.

.��C�mo se Representa un Algoritmo?

La representaci�n m�s obvia: c�digo fuente Java. Sin embargo escribir c�digo fuente antes de entender completamente un algoritmo normalmente acaba con bugs dif�ciles de encontrar. Una t�cnica para evitar estos bus es utilizar un flowchart (diagrama de flujo).

.�Flowchart

Un flowchart es una representaci�n visual del flujo de control de un algoritmo. Esta representaci�n ilustra las sentencias que se tienen que ejecutar, las decisiones que hay que tomar, el flujo l�gico (para iteracciones y otros prop�sitos), y terminaciones que indican los puntos de entrada y salida. En la siguiente figura puede ver los distintos s�mbolos que puede utilizar en un flowchart:

�Cu�l es el aspecto de un flowchart? Supongamos que usted tiene un sencillo algoritmo que inicializa un contador a 0, lee caracteres hasta que ve un caracter de nueva l�nea (\n), incrementa el contador por cada caracter d�gito le�do, e imprime el valor del contador depsu�s de que haya le�do el caracter de nueva l�nea. En la siguiente figura puede ver el flowchart que ilustra el flujo de control de este algoritmo:

Entre las ventajas de un flowchart se incluye su simplicidad y su habilidad para representar visualmente el flujo de control del algoritmo. Los flowcharts tambi�n tienen desventajas:

  • Los flowcharts altamente detallados pueden generar errores o imprecisiones.
  • Se requiere algo de tiempo extra para posicionar, etiquetar y conectar los s�mbolos del flowchart, aunque algunas herramientas aceleran este proceso, Este retardo podr�a relentizar su entendimiento de un algoritmo.
  • Como los flowcharts son herramientas de la era de la programaci�n estructurada, no son tan �tiles en un contexto orientado a objetos. Unified Modeling Language (UML) es m�s apropiado para proporcionar representaciones visuales orientadas a objetos.

.�Pseudoc�digo

Una alternativa al flowchart es el pseudoc�digo: una representaci�n en modo texto de un algorirmo que se aproxima al c�digo fuente final. El pseudoc�digo es �til para una escritura r�pida de representaciones de algoritmos. Como la s�ntaxis no es lo m�s importante, no hay reglas definidas para escribir pseudoc�digo. Considere el siguiente ejemplo:

DECLARE CHARACTER ch
DECLARE INTEGER count = 0

DO
  READ ch
  IF ch IS '0' THROUGH '9' THEN
     count++
  END IF
UNTIL ch IS '\n'

PRINT count

END

Este ejemplo representa el pseudoc�digo equivalente al flowchart de la figura anterior. Aunque localizar el flujo de control en pseudoc�digo puede costar un poco m�s que en un flowchart, normalmente, escribir pseudoc�digo lleva menos tiempo que dibujar un flowchart.

Nota:
En este tutorial se utiliza pseudoc�digo para representar algoritmos.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP