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.