3.1.Técnica Top-Down y fragmentación de problemas

Importante

Top-down

El diseño modular de programas estructurados se basa en la división del programa en subprogramas más sencillos. La estructura principal estará dividida en niveles de mayor a menor complejidad, interrelacionados entre sí mediante una estructura jerárquica.

 

Esta técnica se denomina top-down, diseño descendente o "divide y vencerás".

La programación estructurada se basa en la creación de algoritmos fáciles de leer de principio a fin, sin saltos ni derivaciones en el flujo del programa. El uso de las tres estructuras básicas de control puede hacer que el código de los programas estructurados sea extenso, lo cual, puede dificultar su lectura y seguimiento.
 
 
Para evitarlo se recurre a la fragmentación o segmentación, es decir, a la división del programa en bloques de código. De esta forma, los programas se dividen en procedimientos o módulos que son "llamados" desde el código principal del programa.

Una fragmentación del problema bien realizada, implica una comunicación entre procedimientos muy controlada. Pudiéndose entonces trabajar con cada uno de estos módulos de forma independiente. Este hecho garantizará que los cambios en un módulo no afecten al resto del programa, facilitando su mantenimiento.
Esta forma de programar se considera una mejora de la programación estructurada. Se denomina programación modular, programación por procedimientos o programación funcional y se basa en los módulos o subprogramas denominados procedimientos.
top-down
Funciones
Imagen en pixabay de geralt bajo licencia Creative Common

Ya conocemos la técnica "Divide y vencerás" o "top-down" como técnica apropiada para abordar la resolución de un problema complejo mediante un programa informático.

Cualquier software informático tiene en cuenta esta manera de trabajar para, a partir de unos requerimientos iniciales, realizar una serie de cálculos o procesos intermedios que permitan finalmente mostrar los resultados esperados.

Un ejemplo típico puede ser el abrir una nueva ventana en tu navegador, internamente el sistema debe llamar a un tipo de dato especial, llamémosle TipoVentana e incluir en él la información visualizada.

Esta técnica de descomponer un programa (principal) en subprogramas o módulos (secundarios) más sencillos nos permite separadamente solucionar pequeños problemas que en un solo paso o con un único programa sería una labor casi imposible.

El programa principal tomará el control al principio de la ejecución y desde él se llamará a cada uno de los módulos. Una vez realizada la llamada a un módulo, se transfiere el control a éste, que al terminar devolverá el control a la instrucción siguiente desde la que fue llamado.

La estructura de un módulo o subprograma es la misma que la de un programa:

  • suministrando junto a su nombre (al ser llamado) la información de entrada
  • declarando las variables y/o constantes necesarias en su interior
  • realizando las acciones convenientes
  • y por último devolviendo los resultados al programa que lo llamó

Las principales ventajas de la programación modular son las siguientes:

  • Facilitar la comprensión del problema y su resolución escalonada.
  • Aumentar la claridad y legibilidad de los programas. Simplificación del código.
  • Permitir la resolución del problema por varios programadores a la vez.
  • Reducir el tiempo de desarrollo aprovechando módulos previamente desarrollados.
  • Mejorar la depuración de los programas, pues se pueden depurar los módulos aisladamente de forma más sencilla e independiente.
  • Facilitar un mejor y más rápido mantenimiento de la aplicación al poder realizar modificaciones o implementaciones de una forma más sencilla tomando como base los módulos ya desarrollados.

Estas ventajas adquieren su máxima importancia cuando los módulos para realizar tareas típicas que se repiten en todos los programas ya están implementados y simplemente se nombran en el programa.

Con el término Funciones o Procedimientos, en programación, hacemos referencia a estos módulos o subprogramas anteriormente mencionados. Estos procedimientos se almacenan en una bibliotecas denominadas librerías.

Actividad

Un procedimiento o función es un conjunto de instrucciones que realiza una o varias tareas específicas. Sus componentes son:

  • una entrada o entradas determinadas.
  • un dato de salida.
  • un nombre único e identificable en el algoritmo del programa principal.

El trabajo con funciones es útil en estos casos:

  • cuando una tarea debe ejecutarse varias veces en un programa.
  • cuando la resolución de un problema requiere un código extenso y de lectura complicada.

Sin embargo, no todos los lenguajes de programación admiten el uso de procedimientos. Además, en cada lenguaje se designan los procedimientos de un modo distinto:

Procedimientos y funciones Pascal
Funciones C y C++
Subrutinas Basic y Fortran
Secciones Cobol

AV - Pregunta Verdadero-Falso

Después de tanta información, ¿quieres comprobar todo lo que has aprendido?

Pregunta 1

a) El diseño top-down se refiere a la condición de que los programas estructurados deben leerse de principio a fin.

Pregunta 2

b) Un procedimiento es un conjunto de instrucciones para realizar una tarea específica.

Pregunta 3

c) Los procedimientos reducen el código del programa, aunque lo complican con las palabras que los identifican.

Pregunta 4

d) Las librerías son colecciones de pequeños programas ejecutables.