lunes, 6 de septiembre de 2010

ALGORITMOS Y DIAGRAMAS DE FLUJO

El desarrollo de algoritmos es fundamental en el diseño de programas o soluciones. Por lo cual, se deben tener buenas bases que sirvan para poder crear de manera fácil y rápida los programas. Antes de entrar de lleno en el tema de los algoritmos, repasemos unos conceptos básicos:

Dato: es la representación simbólica de un hecho, atributo o característica de una entidad. Ejemplo: nota de un alumno, nombre de un docente, color de un carro, etc.
Información: es un dato útil,  ésta se obtiene mediante el procesamiento de los datos. Ejemplo: promedio final de un alumno para un curso, numero de aprobados, etc.

Los datos pueden ser expresados como constantes, variables, funciones, etc.
1)    Constante: es un dato (de cualquier tipo) cuyo valor no cambia durante la ejecución del algoritmo o programa.
2)    Variable: es un objeto (porción de memoria) que almacena un dato. Para definirlas es necesario darles un nombre e indicar el tipo de dato que va a almacenar. El valor de una variable puede cambiar durante la ejecución del algoritmo.
3)    Expresiones: es una combinación de operandos y operadores. Las expresiones pueden ser:
·         Aritméticas: en este tipo de expresiones se utilizan operandos como: constantes, variables y expresiones numéricas, los operadores son de tipo aritmético (+, -, *, /) y el resultado es un valor numérico.
·         Lógicas: estas expresiones también utilizan las constantes, variables y expresiones numéricas como operandos, pero los operadores son de tipo lógicos y relacionales (<, >, <>, =, etc.), y el resultado es un valor lógico.
4)    Funciones: son programas predefinidos que tienen un nombre por el cual se les invoca y aceptan datos y devuelven resultados. Generalmente los lenguajes de programación poseen funciones matemáticas, de cadenas y otros. Por ejemplo: en C++, Abs(x) devuelve el valor absoluto del número entero x; Sqrt(x) devuelve la raíz cuadrada del número x (x>=0).
5)    Identificadores: son los nombres que se le dan a las constantes simbólicas, variables, funciones y otros, constan de una cadena de caracteres que deben empezar con una letra y deben ser significativos, sugiriendo lo que representan.


ALGORITMOS
Definición: es un conjunto de pasos, instrucciones o acciones que se deben seguir ordenadamente para llegar a un fin determinado, (solución de un problema, obtención de una respuesta intermedia o realización de una tarea). Un algoritmo describe la transformación de una entrada en la salida.
Tipos: Existen dos tipos y son llamados así por su naturaleza:
1)       Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
2)       Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.
Características: Las principales características de los algoritmos son:
             1)     El algoritmo debe ser sencillo e indicar el orden de realización de cada paso
             2)     Un algoritmo debe estar definido.
             3)     El algoritmo de ser finito.
Ejemplo de algoritmo
Algoritmo que permita leer dos valores distintos, determinar cual de los dos valores es el mayor y escribirlo.

1. Inicio
     2. Inicializar variables: A = 0, B = 0
     3. Solicitar la introducción de dos valores distintos
     4. Leer los dos valores
     5. Asignarlos a las variables A y B
     6. Si A = B Entonces vuelve a 3 porque los valores deben ser distintos
     7. Si A>B Entonces Escribir A, “Es el mayor”
     8. De lo contrario: Escribir B, “Es el mayor”
     9. Fin_Si
10. Fin

 
DIAGRAMAS DE FLUJO

Definición: Un diagrama de flujo es una representación gráfica de un algoritmo o de una parte del mismo. Estos diagramas utilizan símbolos con significados bien definidos que representan los pasos del algoritmo y el flujo de ejecución mediante flechas que conectan los puntos de inicio y de término. Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término. Además, todo camino de ejecución debe permitir llegar desde el inicio hasta el término.
     Los diagramas de flujo favorecen la comprensión del proceso a través de mostrarlo como un dibujo. Un buen diagrama de flujo reemplaza varias páginas de texto a la vez que permiten identificar los problemas y las oportunidades de mejora del proceso.  
    Los diagramas de flujo se dibujan generalmente antes de comenzar a programar el código frente a la computadora, desempeñan un papel vital en la programación de un problema y facilitan la comprensión de problemas complicados y sobre todo muy largos. Una vez que se dibuja el diagrama de flujo, llega a ser fácil escribir el programa en cualquier lenguaje de programación. Vemos a menudo cómo los diagramas de flujo nos dan ventaja al momento de explicar el programa a otros. Por lo tanto, está correcto decir que un diagrama de flujo es una  necesidad para la documentación de un programa complejo. 

     Dichos diagramas se construyen utilizando ciertos símbolos de uso especial como son rectángulos, diamantes, óvalos, y pequeños círculos, estos símbolos están conectados entre sí por flechas, conocidas como líneas de flujo. A continuación se detallarán los símbolos más utilizados:

Reglas de los diagramas de flujo

  • Debe de indicar claramente dónde inicia y dónde termina el diagrama.
  • Cualquier camino del diagrama debe de llevarte siempre a la terminal de fin.
  • Organizar los símbolos de tal forma que siga visualmente el flujo de arriba hacia abajo y de izquierda a derecha.
  • No usar lenguaje de programación dentro de los símbolos.
  • Las líneas deben ser verticales u horizontales, nunca diagonales.
  • No cruzar las líneas de flujo empleando los conectores adecuados sin hacer uso excesivo de ellos.
  •  No fraccionar el diagrama con el uso excesivo de conectores. 
  • Solo debe llegar una sola línea de flujo a un símbolo. Pero pueden llegar muchas líneas de flujo a otras líneas.
  • Las líneas de flujo deben de entrar a un símbolo por la parte superior y/o izquierda y salir de él por la parte inferior y/o derecha. 
  • Evitar que el diagrama sobrepase una página; de no ser posible, enumerar y emplear los conectores correspondientes.
  •  Usar lógica positiva, es decir, realizar procesos cuando es verdadera la condición y expresar las condiciones de manera clara (por ej., "no es a =/= de b" ==> "a=b").
  •   Comentar al margen únicamente cuando sea necesario
  • No deben quedar líneas de flujo sin conectar
  • Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras.
  • Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida. 

Ejemplo de Diagrama de Flujo     

El siguiente diagrama nos muestra el proceso para calcular el producto, la suma y el promedio de cuatro números.


Actualmente existen herramientas que son de gran ayuda a la hora de crear un algoritmo o un diagrama de flujo, entre ellas tenemos:
PSEINT, la cual es una herramienta para aprender la lógica de programación, orientada a estudiantes sin experiencia en dicha área. Mediante la utilización de un simple y limitado pseudo-lenguaje intuitivo y en español, permite comenzar a comprender conceptos básicos y fundamentales de un algoritmo computacional.

DFD,  es un editor e intérprete de diagramas de flujo. Su interfaz gráfica facilita en gran medida la creación de diagramas de flujo (DFD) para la representación de algoritmos que solucionan problemas por computadora. Dichos diagramas pueden ser guardados en disco, recuperados de disco y pueden ser impresos en diferentes tamaños sin importar el tipo de impresora.