DISEÑO DE PROGRAMAS. PSEUDOCÓDIGO Y DIAGRAMAS.

Cuando diseñamos programas de ordenador, independientemente de su tamaño y complejidad, debemos seguir un proceso que involucra diversas herramientas que nos ayudan automatizando y apoyando la creación de dichos programas.
CONCEPTOS BÁSICOS:
Un algoritmo es un conjunto de instrucciones o reglas bien definidas, organizadas y finitas que nos permite realizar una determinada actividad siguiendo una serie de pasos sucesivos y no ambiguos.
Todo algoritmo debe cumplir las siguientes restricciones:

  • Debe ser bien definido.
  • Debe ser preciso.
  • Debe ser finito.

Para que un ordenador sea capaz de ejecutar un algoritmo, deberemos proporcionárselo en forma de programa, de tal manera que sea comprensible para la máquina:

  • Cada paso del algoritmo se corresponderá con una instrucción en el programa.
  • El programa deberá especificar la secuencia de las operaciones a realizar, así como el orden de ejecución de las mismas.

Para especificar el orden en que las instrucciones de un algoritmo van a ser ejecutadas utilizaremos las estructuras de control, que pueden ser de tres tipos:

  •  Secuencial.
  • Selección (o estructuras alternativas).
  • Repetición (o bucles).

 

 
FASES PARA LA CREACIÓN DE UN PROGRAMA:

  1. Análisis del problema: en esta fase debemos especificar cuáles son los requisitos a los que se debe dar solución desde el programa a realizar.
  2. Diseño y verificación del algoritmo: nos conduce a un diseño escrito y detallado del algoritmo (o algoritmos) que solucionarán el problema al que nos enfrentamos.
  3. Codificación: donde implementaremos el diseño en el lenguaje de programación elegido.
  4. Compilación y enlazado (linkedición): donde se traduce el código fuente escrito a código máquina mediante el empleo de compiladores y generándose el programa ejecutable por el ordenador.
  5. Verificación y depuración: donde se buscan errores producidos en las fases anteriores y se eliminan.
  6. Documentación: donde se creará la documentación del programa realizado, tanto técnica como a nivel de usuario (manuales).

 
Fase 2: Diseño y verificación del algoritmo.
Uno de los métodos más utilizados para el diseño de algoritmos es el denominado “divide y vencerás” y consiste en dividir un problema complejo en subproblemas y a su vez éstos en otros de nivel más bajo hasta obtener subproblemas fáciles de solucionar e implementar (refinamiento sucesivo). Este método se conoce como diseño descendente o modular.

 
HERRAMIENTAS PARA LA REPRESENTACIÓN DE ALGORITMOS:
1.- Pseudocódigo:
Es un pseudolenguaje intermedio entre el natural del programador y el lenguaje de programación seleccionado, considerándose por tanto un lenguaje de pseudoprogramación.
No existe una sintaxis estándar para el pseudocódigo, utilizando una mezcla de lenguaje natural (utilizando como base la lengua nativa del programador) y una serie de símbolos, términos y otras características propias de los lenguajes de programación de alto nivel como Pascal o APL.
Sus principales características son:

  • Es fácil de aprender y utilizar.
  • Es conciso.
  • Es independiente del lenguaje de programación que se vaya a utilizar.
  • Facilita el paso del programa al lenguaje de programación.
  • Es fácil de mantener.

Sus principales ventajas sobre las técnicas diagramáticas que veremos a continuación son su facilidad de creación, evolución y mantenimiento, y la facilidad para expresar el pseudocódigo en cualquier lenguaje de programación.
Sus mayores inconvenientes son su falta de estandarización y la dificultad para su lectura cuando su tamaño crece.
Las palabras, símbolos y operadores más utilizados en pseudocódigo son los siguientes:

 
 
2.- Diagramas de flujo:
Son herramientas gráficas para la representación visual y gráfica de algoritmos, compuestos por una serie de símbolos icónicos unidos por flechas.
Características:

  • Los símbolos representan acciones o funciones en el programa.
  • Las flechas representan el orden de realización de las acciones o funciones, marcando el sentido o flujo lógico del algoritmo.
  • Cada símbolo tendrá al menos una flecha que conduzca a él y una flecha que parta de él, a excepción de los terminadores y conectores.
  • Se leen de arriba a abajo y de izquierda a derecha.

Sus principales ventajas son que al ser visuales son muy sencillos de entender y que utilizan símbolos estándar.
Su mayor desventaja es la dificultad de mantenimiento y actualización, puesto que deben utilizarse editores gráficos.
Los símbolos están normalizados por las organizaciones de estandarización internacionales ANSI (American National Standar Institute) e ISO (International Standard Organization) y los más utilizados son los siguientes:

 
También hay una serie de símbolos secundarios que son:

 
 
3.- Diagramas de Nassi-Schneiderman:

 Estos diagramas (también conocidos como diagramas de Chapin o diagramas N-S) aparecen contenidos en un rectángulo, donde un conjunto de símbolos adyacentes representan las estructuras de control básicas de la programación estructurada.

Sus principales ventajas son:

  • Adecuación a la programación estructurada.
  • Favorecen las técnicas de diseño descendente.
  • Favorecen la partición de los programas en módulos pequeños; resaltando más las partes generales sobre los detalles concretos, que quedan más pequeños cuanto más específicos son.

Su principal desventaja es su dificultad de modificación.
En las siguientes figuras se muestran las principales construcciones de los diagramas de Nassi-Schneiderman:

 
EJEMPLO DE DISEÑO DE ALGORITMOS:
Vamos a realizar el diseño del algoritmo para determinar si un número natural mayor que uno es primo, expresándolo en lenguaje natural, pseudocódigo, diagrama de flujo, diagrama N-S y por último codificado en lenguaje C.