Estructuras de Datos y Algoritmos en Java

Antes de explorar las estructuras de datos y sus algoritmos especficos, necesitamos examinar tres cuestiones bsicas: Qu es una estructura de datos? Qu es un algoritmo? Cmo 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 programacin estructurada. Una definicin de esa era: una estructura de datos es un conjunto de tipos, un tipo diseado partiendo de ese conjunto de tipos, un conjunto de funciones, y un conjunto de axiomas. Esta definicin implica que una estructura de datos es un tipo con implementacin. En nuestra era de la programacin orientads a objetos, tipo con implementacin significa clase.

La definicin una estructura de datos es una clase es demasiado amplia porque supone que Empleado, Vehculo, Cuenta, y otras muchas clases especficas 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 definicin ms 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 ms entradas, produce al menos una salida, consiste en instrucciones claras y poco ambiguas, termina despus de un nmero finito de pasos, y es lo suficientemente bsico que una persona puede llevar a cabo el algoritmo utilizando lpiz y papel. Por el contrario, un programa no es necesariamente finito: el programa, como un servidor Web, podra no terminar nunca si no hay intervencin externa. Algunos ejemplos de algoritmos asociados con estructuras de datos son: bqueda-lineal, ordenacin-de-burbuja, bsqueda-binaria, concatenacin-de-listas-enlazadas, etc.

.Cmo se Representa un Algoritmo?

La representacin ms obvia: cdigo fuente Java. Sin embargo escribir cdigo fuente antes de entender completamente un algoritmo normalmente acaba con bugs difciles de encontrar. Una tcnica para evitar estos bus es utilizar un flowchart (diagrama de flujo).

.Flowchart

Un flowchart es una representacin visual del flujo de control de un algoritmo. Esta representacin ilustra las sentencias que se tienen que ejecutar, las decisiones que hay que tomar, el flujo lgico (para iteracciones y otros propsitos), y terminaciones que indican los puntos de entrada y salida. En la siguiente figura puede ver los distintos smbolos que puede utilizar en un flowchart:

Cul 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 lnea (\n), incrementa el contador por cada caracter dgito ledo, e imprime el valor del contador depsus de que haya ledo el caracter de nueva lnea. 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 tambin tienen desventajas:

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

.Pseudocdigo

Una alternativa al flowchart es el pseudocdigo: una representacin en modo texto de un algorirmo que se aproxima al cdigo fuente final. El pseudocdigo es til para una escritura rpida de representaciones de algoritmos. Como la sntaxis no es lo ms importante, no hay reglas definidas para escribir pseudocdigo. 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 pseudocdigo equivalente al flowchart de la figura anterior. Aunque localizar el flujo de control en pseudocdigo puede costar un poco ms que en un flowchart, normalmente, escribir pseudocdigo lleva menos tiempo que dibujar un flowchart.

Nota:
En este tutorial se utiliza pseudocdigo para representar algoritmos.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.