viernes, 6 de marzo de 2009

Estructuras de Datos y Algoritmos Básicos:Algo de Programacion

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:

Diagrama de Flujos:
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
. 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

1 comentario:

Jenny Wasiuk dijo...

Hola, dejaste un comentario en el blog de Misioletras donde decís que querés contactarte con el grupo.
Te paso mi mail: jenny_wasiuk arroba yahoo.com.ar
Espero tu correo!!
Jenny

PD: y gracias por visitarnos!