Diseño de programas


Una vez establecidos los requerimientos de un programa, iniciamos la fase de diseño. Esta etapa debe buscar la solución informática al problema planteado. Dicha solución determinará cómo se va a resolver el problema.

La fase de resolución del problema incluirá:

  • Análisis del problema
  • Diseño del algoritmo
  • Verificación del algoritmo

Hasta hace algún tiempo la verificación del algoritmo se hacía manualmente, paso a paso, popularmente se le llamaba correr el programa a pie. Actualmente existen herramientas informáticas para verificar el algoritmo escrito en pseudocódigo o en diagrama, por ejemplo, la aplicación PSeInt.

 

No suele ser fácil encontrar una solución óptima, la programación es una tarea difícil y también es un proceso creativo. Para encontrar dicha solución, el desarrollador puede hacer uso del diseño modular.

 

Análisis del problema

Si vamos a diseñar un algoritmo para resolver un determinado problema, es fundamental tener completamente estudiado y analizado dicho problema. Ello implica:

  • Definición del problema
  • Identificar los datos de entrada (Inputs).
  • Identificar los datos de salida o resultados (Outputs).

El análisis anterior es fundamental para poder establecer una estrategia de solución que sirva como base para el desarrollo del algoritmo.

Ejemplo

Escribir el algoritmo que permita calcular el área de un triángulo.

El problema como tal no está bien definido ya que no están definidas las entradas y salidas del mismo.

 

Especificaciones de entrada

  • ¿Qué datos se requieren como entrada?
  • ¿Cuántos datos de entrada son?

Especificaciones de salida

  • ¿Cuáles son los datos de salida?
  • ¿Cuántos datos de salida se mostrarán?
  • ¿Qué precisión matemática se requiere?
  • ¿Imprimiremos alguna cabecera?

Diseño del algoritmo

Dado un problema a resolver, debemos buscar la forma de dividirlo en otros subproblemas más pequeños (este método es conocido como "divide y vencerás"). Cada uno de ellos puede trabajarse de manera aislada; por lo tanto, la complejidad global del problema disminuirá considerablemente. Del mismo modo, si los subproblemas obtenidos siguen siendo demasiado complicados, también puede ser conveniente fragmentarlos. Y así sucesivamente, hasta llegar a subproblemas realmente sencillos.

 

En el caso del problema anterior requerimos definir tres subproblemas:

1. Entrada de datos

2. Cálculo del área

3. Salida de resultados

Solución:

Problema principal: Calcular el área de un triángulo rectángulo

 

Subproblemas

Entrada de datos: Para calcular el área de un triángulo rectángulo requerimos las longitudes de sus dos catetos a los que llamaremos base y altura.

Procesamiento: Cálculo aritmético Área = (base x altura)/2

Salida de datos: Se imprime cadena y valores de base, altura y área.

 

Se llama algoritmo a un grupo finito de pasos organizados de manera lógica y ordenada que permite solucionar un determinado problema. 

 

Para que un algoritmo sea eficaz debe cumplir las siguientes características:

  1. El algoritmo debe ser preciso e indicar el orden de realización de cada paso.
  2. Todo algoritmo debe estar bien definido: Si se sigue un algoritmo n veces con los mismos datos de entrada, éste nos deberá mostrar igual resultado en los valores de salida.
  3. Los algoritmos deben ser finitos.

Teorema de la programación estructurada

Cualquier algoritmo puede resolverse mediante el uso de tres estructuras básicas llamadas estructuras de control:

  • La estructura secuencial o acción simple.
  • La estructura de decisión o acción condicional.
  • La estructura iterativa o acción de repetición.

Volviendo al ejemplo inicial: Calcular el área de un triángulo rectángulo, tenemos que los pasos del algoritmo son:

1. Inicio

2. Leer la base y altura

3. Calcular el área = (base x altura)/2

4. Mostrar el resultado: área

5. Fin

 

Una vez escrito un algoritmo es necesario verificar que el mismo cumple y produce el resultado esperado.

 

Para ello podemos recurrir a la ejecución paso a paso del mismo para comprobar que se cumple con el objetivo inicial.