Está en la página 1de 9

Universidad Nacional de Ingeniería.

Facultad de Tecnología de la Construcción.

Ingeniería Civil.

“Programación Modular”

Aula: IC-12D

Asignatura: Introducción a la programación.

Autora: Br. Loan-ny Massiel Aguirre Mendoza. 2017-0150U

Tutor: Yader Arnulfo Molina Lagos.

Septiembre, 2017
Programación Modular

La programación modular es un paradigma de programación que consiste en


dividir un programa en módulos o subprogramas con el fin de hacerlo más legible
y manejable. Se presenta históricamente como una evolución de la programación
estructurada para solucionar problemas de programación más grandes y
complejos de lo que esta puede resolver.[ CITATION Pro15 \l 19466 ]

El propósito de la programación modular es facilitar la comprensión del diseño


modular para lograr el desarrollo de programas complejos de manera sencilla
permitiendo la reutilización de fragmentos de un programa.

La programación modular es uno de los métodos de diseño más flexibles y


potentes para mejorar la productividad de un programa. En programación modular
el programa se divide en módulos (partes independientes), cada una de las cuales
ejecuta una única función o actividad y se codifican independientemente de otros
módulos. Cada uno de estos módulos se analiza, codifica y pone a punto por
separado.

Al aplicar la programación modular, un problema complejo debe ser dividido en


varios subproblemas más simples, y estos a su vez en otros subproblemas más
simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente
simples como para poder ser resueltos fácilmente con algún lenguaje de
programación. Esta técnica se llama refinamiento sucesivo, divide y vencerás ó
análisis descendente (Top-Down).

Un módulo es cada una de las partes de un programa que resuelve uno de los
subproblemas en que se divide el problema complejo original. Cada uno de estos
tiene una tarea bien definida y algunos necesitan de otros para poder operar. En
caso de que uno de ellos necesite de otro, puede comunicarse con éste mediante
una interfaz de comunicación que también debe estar bien definida.

Si bien un módulo puede entenderse como una parte de un programa en


cualquiera de sus formas y variados contextos, en la práctica se los suele tomar
como sinónimos de procedimientos y funciones. Pero no necesaria ni
estrictamente un módulo es una función o un procedimiento, ya que el mismo
puede contener muchos de ellos. No debe confundirse el término modulo (en el
sentido de programación modular) con términos como función o procedimientos,
propios del lenguaje que lo soporte.

Características de un módulo

Tamaño relativamente pequeño: Esto facilita aislar el impacto que pueda


tener la realización de un cambio en el programa, bien para corregir un
error, o bien por rediseño del algoritmo correspondiente.
Independencia modular: Cuanto más independientes son los módulos
entre sí más fácil y flexiblemente se trabajará con ellos, esto implica que
para desarrollar un módulo no es necesario conocer detalles internos de
otros módulos. Como consecuencia de la independencia modular un
módulo cumplirá:
Características de caja negra, es decir abstracción.
Aislamiento de los detalles mediante encapsulamiento.

La independencia modular mejora el rendimiento humano, pudiendo realizarse


programación en equipo y desarrollar módulos paralelamente. También contribuye
a la reutilización de software.

Cada programa contiene un módulo denominado programa principal que controla


todo lo que sucede; se transfiere el control a los submódulos o subprogramas.
Estos ejecutan su función y una vez completada su tarea, devuelven el control al
módulo principal.

Cada submódulo se puede descomponer en otros submódulos, dependiendo de la


complejidad de la tarea a realizar y la subdivisión continúa hasta que cada módulo
tenga una sola tarea para ejecutar.

Un submódulo puede realizar tareas de distinta naturaleza como: entrada, salida,


manipulación de datos, control de otros módulos o una combinación de éstos. Un
módulo puede transferir temporalmente (bifurcar) el control a otro módulo; sin
embargo, cada uno de estos debe eventualmente devolver el control al módulo del
cual recibió originalmente el control.

Decimos que algo es modular si está construido de manera tal que se facilite su
ensamblaje, acomodamiento flexible y reparación de sus componentes. La
modularidad da una mejor compresión del problema y reduce el tamaño del
código. Generalmente se hace la asociación de un módulo como una caja negra.
Se sabe que entra y que sale pero no como se procesa.

Un problema complejo no puede solucionarse de una sola vez y con un único


algoritmo; además, existen operaciones que se repiten una y otra vez a lo largo
del programa, de tal manera que es necesario el mismo bloque de código pero con
diferentes datos. Con el fin de dar solución a los puntos anteriores se introdujo la
programación estructurada. Su objetivo primordial es resolver un problema, más o
menos complejo, dividiéndolo en otros más sencillos, que ligados
convenientemente, nos den la solución del problema original.

Los programas que están constituidos por un único bloque, más o menos grande,
de código, dependiendo de la complejidad y tamaño de la aplicación, por ejemplo
5000 ó 6000 líneas de código sin comentar, sin documentar y sin estructurar, esto
es, sin hacer uso de un sólo submódulo, son programas pocos legibles, difíciles de
depurar y modificar y poco reutilizables.

Cada subproblema se representará mediante uno o varios módulos según su


complejidad. La idea es que estos módulos sean independientes, es decir, que se
puedan modificar o reemplazar sin afectar al resto del programa o que puedan ser
reutilizados en otros programas.

En Pascal disponemos de dos tipos de módulos: los procedimientos y las


funciones.

Un procedimiento es un subprograma que realiza una tarea específica. Para


invocarlo, es decir, para hacer que se ejecute, basta con escribir su nombre en el
cuerpo de otro procedimiento o en el programa principal. Pero, hay que tener muy
en cuenta que su declaración debe hacerse antes de que sea llamado por otro
módulo.

Una vez que has construido varios programillas en Pascal, crear un procedimiento
no es nada complicado, pues tiene prácticamente la misma estructura que un
programa. Veamos las secciones que comparten y no comparten un
procedimiento y un programa principal:

 Mientras que en el programa la cabecera consta de la palabra reservada


program seguida del nombre del programa, en un procedimiento se
compone de la palabra procedure seguida del nombre del procedimiento y
una lista de parámetros que es opcional.
 Las secciones de declaración de constantes (const), de tipos (type) y de
variables (var) también pueden aparecer en la estructura de cualquier
procedimiento.
 Respecto al cuerpo del procedimiento, decir que al igual que el de un
programa se delimita por las palabras reservadas begin y end, y en su
interior puede contener sentencias simples o estructuradas.

Por último, comentar que ambos difieren en el signo de puntuación que marca su
final, ya que en un programa es el punto y en un procedimiento es el punto y
coma.

Existen dos clases de argumentos en pascal:

o Los parámetros por valor tienen dicho nombre porque lo que recibe el
subprograma no son más que copias de los valores de los datos que el
programa invocador le pasa. Por tanto si en el procedimiento modificamos
alguno de estos valores, los datos originales permanecerán inalterados. En
el ejemplo, son a y b.
o En cambio, en los parámetros por referencia lo que se pasa al
procedimiento son los datos en sí. Y si éste los modifica, los cambios
permanecerán una vez que la ejecución vuelva al módulo que invocó al
procedimiento. Se utilizan para obtener valores de los cálculos que haga un
subprograma.

Funciones

La división a más alto nivel que se suele hacer con las funciones, es la que las
divide según quien sea el autor de las mismas. Así tenemos funciones
predefinidas o estándar, y funciones de usuario. Las funciones predefinidas,
también llamadas estándar, son las que el propio lenguaje Pascal pone a
disposición del programador. Por ejemplo, si necesitas calcular el valor absoluto
de un número, no es necesario que construyas la función, pues ya se dispone de
una que lo hace.

Dependiendo del tipo de compilador de Pascal que uses, dispondrás de más o


menos funciones estándar, pero siempre tendrás un grupo básico que comparten
todos.

Las funciones de usuario son, como su nombre indica, las que el propio usuario
declara, de igual manera que declara procedimientos. Las funciones nacen con el
propósito de ser subprogramas que siempre tienen que devolver algún valor.

Las diferencias entre procedimientos y funciones son:

o Las funciones siempre devuelven un valor al programa que las invocó.


o Para llamar a un procedimiento se escribe su nombre en el cuerpo del
programa, y si los necesita, se incluyen los parámetros entre paréntesis.
Para invocar una función es necesario hacerlo en una expresión.

Las variables globales y locales


Una variable local es una variable que está declarada dentro de un
subprograma, y se dice que es local al subprograma. Y lo que la caracteriza
es que su valor sólo está disponible mientras se ejecuta el subprograma.
Dicho de otra manera, el programa principal no tiene conocimiento alguno
de las variables locales de sus procedimientos y funciones.

Las variables declaradas en la sección correspondiente a esta labor en el


programa principal se denominan variables globales. Y a diferencia de las
locales, su valor está disponible tanto en el cuerpo del programa principal
como en el de cualquiera de los subprogramas declarados.

Ventajas de la Programación Modular:

o Simplifica el diseño.
o Disminuye la complejidad de los algoritmos.
o Disminuye el tamaño total del programa.
o Ahorra en tiempo de programación porque promueve la reusabilidad del
código.
o Favorece el trabajo en equipo.
o Facilita la depuración y prueba.
o Facilita el mantenimiento.
o Permite la estructuración de librerías específicas.

Desventajas de la Programación Modular

o No se dispone de algoritmos formales de modularidad, por lo que a veces


los programadores no tienen claras las ideas de los módulos.
o La programación modular requiere más memoria y tiempo de ejecución.

Diseño Descendente
En su proceso de refinamiento por pasos, etapas o capas. Se comienza desde
lo más general hasta lo más específico. En la solución de problemas grandes
es conveniente dividirlo en problemas más pequeños, los cuales a su vez
pueden dividirse en sub-problemas más pequeños.

o Se inicia desde lo más general, luego dividir y vencer.


o Asegurarse de las capacidades y especificaciones del lenguaje. Esto
permite cambiar el lenguaje en medio del diseño sin ningún trauma.
o Postergar lo más posible el trabajo en los detalles.
o Verificar cuidadosamente cada nivel.

Diseño de rutina

o Chequeo de prerrequisitos.
o Verificar si en trabajo de la rutina está bien definida
o Definir el problema de la rutina en términos de los datos de entrada,

salida y gestión de errores.

o Nombre de la rutina. Debe ser conciso y representativo de lo que hace la


rutina.
o Establecer mecanismos de prueba para la rutina. Revisar cualquier caso
que genere un error.
o Pruebe con diferentes formas para codificar la rutina. La construcción de
programas es iterativa, es decir, se prueba, se falla y se realiza un nuevo
esfuerzo hasta conseguir la versión definitiva.
Conclusiones

La programación modular fue creada con el fin de facilitar el


desarrollo de algoritmos de gran volumen, extensos y complejos.
Lo que se busca principalmente es fraccionar un proceso en
subprocesos simples llamados módulos.
Facilita la programación en grupo (varios desarrolladores pueden
trabajar en el mismo programa de manera independiente.

También podría gustarte