ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO
Facultad de Ciencias
Carrera de Bioquímica y Farmacia
Investigación Formativa
TEMA:
“PROGRAMACIÓN MODULAR”
Integrantes: Códigos:
Aushay Guevara Jessica Nayerly 4911
Castro Tamayo Joshua Eliel 4917
Mesa Palma Erika Estefanía 4930
Moyón Samaniego María Milena 4932
Naranjo Peralvo Karol Nicole 4870
Ruiz Paredes Areli Paulina 4938
Primer Nivel Paralelo “B”
Fundamentos De Programación
Ing. Osvaldo Villacres C., Mgs.
Fecha de entrega: 09/06/2025
1. Introducción
En la actualidad, la informática y el desarrollo de software requieren que la programación sea
eficiente y clara para abordar problemas complejos. En este sentido, la programación modular se
presenta como una metodología organizada que consiste en separar un programa en módulos
independientes que colaboran entre sí. El objetivo de este trabajo es examinar los fundamentos
de la programación modular, analizando su estructura, propiedades y uso en la elaboración de
algoritmos, para así entender su relevancia en la solución sistemática de problemas informáticos
y en la generación de código que sea eficiente y fácil de reutilizar. A través de un enfoque tanto
teórico como práctico, se pretende resaltar los beneficios de este modelo y su valor tanto en el
proceso de aprendizaje como en el ámbito profesional del desarrollo tecnológico.
2. Objetivos
2.1. Objetivo General
Analizar los principios de la programación modular, a través del estudio de su estructura,
características y aplicación en la construcción de programas, para comprender su importancia en
la resolución estructurada de problemas y en la creación de algoritmos eficientes y reutilizables.
2.2. Objetivos Específicos
Comprender el concepto de programación modular, mediante su análisis teórico y ejemplos
prácticos en entornos informáticos, para reconocer su utilidad en la organización y desarrollo de
programas más estructurados.
Identificar las características y ventajas del enfoque modular, a través del estudio comparativo
con otros métodos de programación, para valorar su importancia en la optimización del código y
en la reutilización de componentes
Aplicar estructuras de repetición junto a la programación modular, elaborando algoritmos que
trabajen con vectores y condiciones específicas, para resolver problemas de manera ordenada y
eficiente.
Desarrollar algoritmos que utilicen módulos y subprogramas, implementando funciones o
procedimientos que ejecuten tareas determinadas, para facilitar la comprensión, mantenimiento y
escalabilidad del código.
3. Marco teórico
3.1. Programación Modular
La programación modular es una técnica de programación que consiste en descomponer
nuestro programa en partes llamadas módulos y escribir cada módulo por separado. El concepto
de módulo hay que entenderlo en sentido amplio: cualquier parte de un programa se podría
considerar «módulo» (Pérez, 2024).
Equivale a la técnica clásica de resolución de problemas basada en:
1) Descomponer un problema en subproblemas.
2) Resolver cada subproblema por separado.
3) Combinar las soluciones para así obtener la solución al problema original.
La modularidad es una característica propia de los programas desarrollados bajo los
principios de la programación modular. Esta forma de descomponer y organizar problemas no
solo se aplica en informática, sino también en diversas áreas científicas e industriales. Por
ejemplo, diseñar y construir un automóvil sería una tarea muy compleja si se considerara como
un conjunto único de componentes mezclados (Pérez, 2024).
Figura 1. Ejemplo de programación modular
Además, reparar una falla sería complicado, ya que cambiar una pieza podría afectar otras de
manera inesperada. Estas partes, conocidas como módulos, son componentes relativamente
independientes que se relacionan con otros mediante conexiones bien definidas. Algunos
ejemplos en un automóvil serían:
Frenos
Luces
Sistema de climatización
Dirección
Motor
Carrocería
El propósito de la modularidad en programación es transformar el desarrollo de software en un
proceso basado en la creación y ensamblaje de bloques funcionales. Cada uno de estos bloques
debe tener un propósito claro y ser útil por sí mismo. Al integrarlos correctamente, se construye
el programa deseado.
Para lograr esto, el enfoque modular se puede analizar tanto desde una perspectiva
metodológica como desde una aplicación práctica. Sin embargo, si se divide el automóvil en
partes, se analiza cada una por separado y se establece claramente cómo se relacionan entre sí,
resulta mucho más sencillo comprender su funcionamiento y realizar ajustes.
3.2. Características de programación modular
La programación modular es una técnica de desarrollo que permite dividir un problema
complejo en partes más pequeñas llamadas módulos. Esta metodología mejora la comprensión
del programa, facilita su mantenimiento y promueve la reutilización del código (Joyanes Aguilar,
2012).
A continuación, se describen las principales características de la programación modular:
División en módulos independientes
El programa se estructura en diferentes módulos, cada uno encargado de una función
específica. Esto permite una solución ordenada y estructurada de problemas complejos (Joyanes
Aguilar, 2012).
Reutilización del código
Los módulos pueden ser utilizados en distintos programas sin necesidad de ser reescritos, lo
cual ahorra tiempo y reduce errores al trabajar con componentes previamente probados.
Facilidad de mantenimiento
Al estar dividido en módulos, cualquier modificación o mejora puede realizarse en una parte
específica del código sin afectar el resto del programa, lo que permite un mantenimiento más ágil
y efectivo (Joyanes Aguilar, 2012).
Independencia funcional
Cada módulo se desarrolla como una unidad independiente, recibiendo entradas y generando
salidas sin depender del funcionamiento interno de otros módulos. Esto mejora la organización
del sistema (Gutiérrez & Rodríguez, 2015).
Mejor legibilidad del código
La estructura modular permite escribir programas más organizados, con nombres descriptivos
y bloques de código fácilmente comprensibles para otros desarrolladores.
Facilidad en la depuración y prueba:
La posibilidad de probar cada módulo por separado facilita la detección de errores y la
validación del funcionamiento de cada parte del programa (Joyanes Aguilar, 2012).
Trabajo colaborativo
La programación modular permite que distintos programadores trabajen simultáneamente en
diferentes módulos, lo cual acelera el desarrollo y mejora la gestión del proyecto.
Uso de interfaces claras
Los módulos se comunican mediante interfaces bien definidas, lo que reduce los errores y
garantiza una integración fluida entre componentes (Gutiérrez & Rodríguez, 2015).
3.3. Ventajas de utilizar programación modular
Las ventajas de utilizar programación modular son múltiples y fundamentales para el
desarrollo eficiente y mantenible de software. A continuación, se presentan cuatro ventajas clave:
1. Mantenimiento más sencillo
La programación modular permite actualizar, corregir o mejorar partes del programa sin
afectar todo el sistema, lo que facilita el mantenimiento.
Según Pressman (2010), la modularidad permite que el software sea más fácil de modificar y
mantener, ya que los cambios pueden hacerse en módulos individuales sin interferir con otros.
2. Desarrollo más rápido y eficiente
Los módulos pequeños e independientes son más fáciles de entender, diseñar y probar, lo que
acelera el desarrollo del software.
"Los programas se pueden desarrollar más rápidamente, ya que los módulos pequeños e
independientes son más fáciles de entender, diseñar y probar que los programas grandes"
(Lifeder, 2020).
3. Facilidad de depuración y mantenimiento
Al estar divididos en partes más pequeñas, los errores son más fáciles de localizar y corregir, y
los módulos probados pueden reutilizarse sin necesidad de volver a probarlos.
"Un módulo es más pequeño que un programa completo, por lo que resulta más fácil probarlo.
Después de que se haya probado un módulo, podrá usarse en un nuevo programa sin tener que
probarlo de nuevo" (Lifeder, 2020).
Además, "una pieza más pequeña de código tiende a representar una sola función, y es mucho
más fácil de entender su funcionamiento interno" (IBM, 2025).
4. Mejor organización y división del trabajo
La modularidad permite dividir el trabajo entre programadores y facilita la comprensión del
código, haciendo que el flujo lógico sea más claro y evitando efectos secundarios no deseados.
"La modularidad se presta a una mayor división del trabajo... una pieza más pequeña de
código tiende a representar una sola función, y es mucho más fácil de entender su
funcionamiento interno" (IBM, 2025).
5. Facilita el trabajo independiente y en equipo
La programación modular permite que varios programadores trabajen en diferentes módulos
de forma independiente, lo cual es fundamental para proyectos grandes y complejos.
"Varios programadores pueden trabajar en el mismo proyecto si está dividido en módulos.
Diferentes programadores pueden diseñar de forma independiente distintos módulos del
programa" (Lifeder, 2020).
3.4. Desventajas de utilizar programación modular
1. Complejidad en el diseño inicial
El desarrollo modular requiere una planificación detallada desde el inicio del proyecto. La
división lógica en módulos exige definir interfaces precisas y dependencias claras, lo que puede
resultar complejo en sistemas grandes. (Gaddis, 2021, p. 132).
2. Mayor tiempo de desarrollo
Aunque facilita el mantenimiento posterior, la programación modular puede extender el
tiempo de codificación en la fase de implementación debido a la necesidad de coordinar
múltiples módulos. (Pressman & Maxim, 2020, p. 310).
3. Sobrecarga en el rendimiento
El uso de múltiples módulos puede implicar mayor uso de memoria y más llamadas a
funciones, lo que conlleva una ligera penalización en el rendimiento. (Sommerville, 2011, p.
279).
4. Dificultades en la integración
Integrar los diferentes módulos puede ser problemático si no se respetan adecuadamente las
interfaces definidas o si hay dependencia circular. (Gaddis, 2021, p. 133).
3.5. Subprograma o función
Un subprograma es una porción de código reutilizable que realiza una tarea específica y puede
ser llamado desde múltiples partes de un programa principal o de otros subprogramas. En el
contexto de la tecnología y la informática actual, los subprogramas siguen siendo un elemento
fundamental en la estructuración y modularidad del software.
Figura 2. Subprogramas
Estos subprogramas encapsulan funcionalidades específicas, lo que permite a los
desarrolladores crear programas más organizados, eficientes y fáciles de mantener.
Algunas de las aplicaciones más relevantes de los subprogramas en la actualidad incluyen:
Procesamiento de datos y cálculos matemáticos complejos
Implementación de algoritmos de seguridad y cifrado
Generación de informes y visualización de datos
Una función es un subprograma que retorna un valor simple. Las funciones se invocan dentro
de una expresión.
Funciones estándar: ord, succ, pred, sqrt, chr, trunc, etc.
3.6. Parámetro
Un parámetro es un mecanismo utilizado para transferir información, es decir, valores
asignados a variables desde el programa principal hacia un procedimiento. Esta transferencia
permite establecer una conexión funcional entre distintas partes del programa. Cuando un
procedimiento no posee parámetros, no existe comunicación entre el programa principal y el
procedimiento, ni entre procedimientos entre sí; por tanto, actúan de forma independiente. En
contraste, los procedimientos con parámetros permiten la interacción y el intercambio de datos
entre el programa principal y los procedimientos, o entre distintos procedimientos.
Cuando el algoritmo principal llama a una función o procedimiento, se establece una
correspondencia entre los parámetros actuales (valores enviados) y los parámetros formales (las
variables que los reciben en la función o procedimiento), manteniendo el mismo orden en que
fueron enviados. Además, tanto en pseudocódigo como en los lenguajes de programación,
existen dos tipos de paso de parámetros: por valor, que transfiere una copia del dato, y por
referencia, que transfiere la dirección de memoria, permitiendo modificar el valor original
(Sorribas, s.f.).
Figura 3. Parámetros
Tipos de parámetros
1. Parámetros por valor (Entrada)
Los parámetros por valor permiten enviar información a una función o procedimiento
copiando los valores desde el programa principal. En este caso, los parámetros formales reciben
una copia de los valores enviados, lo que implica que cualquier modificación realizada dentro de
la función no afecta a los valores originales utilizados en el algoritmo principal. Es decir, el
procedimiento trabaja con una réplica local del dato, y no con el dato original.
En el lenguaje PSeInt, para declarar parámetros por valor se puede utilizar la siguiente
sintaxis:
Funcion Nombre_Funcion(argumento1 Por Valor, argumento2 Por Valor, ..., argumento
N Por Valor)
No obstante, también es válido omitir la expresión "Por Valor", ya que, si no se especifica el
modo de paso de parámetro, se asume por defecto que es por valor:
Funcion Nombre_Funcion(argumento1, argumento2, ..., argumento N)
Este tipo de paso de parámetros es útil cuando se requiere proteger los datos originales de
modificaciones involuntarias durante la ejecución del procedimiento o función (Arteaga
Martínez, 2023).
2. Parámetros por referencia (Entrada/Salida O Salida)
En el paso de parámetros por referencia, lo que se transfiere no es una copia del valor, sino la
dirección de memoria del parámetro actual. Esto significa que cualquier modificación que se
realice dentro del procedimiento o función afectará directamente al valor original en el programa
principal, ya que ambos (el parámetro formal y el actual) apuntan al mismo espacio de memoria.
En este tipo de paso de parámetros, los cambios que se aplican a los parámetros formales
durante la ejecución del subprograma se reflejan automáticamente en los parámetros actuales,
permitiendo así una comunicación bidireccional entre el subprograma y el algoritmo principal.
Es ideal cuando se desea que el procedimiento devuelva valores modificados al llamador.
En PSeInt, este tipo de parámetros se declara utilizando la expresión "Por Referencia" junto a
cada argumento, lo que indica explícitamente que el parámetro será pasado por referencia. La
sintaxis es la siguiente:
Funcion Nombre_Funcion (argumento1 Por Referencia, argumento2 Por Referencia, ...,
argumento N Por Referencia)
A diferencia del paso por valor, aquí es obligatorio especificar "Por Referencia", ya que de
lo contrario el sistema lo interpretará como un paso por valor (Arteaga Martínez, 2023).
Ejecución del algoritmo según el tipo de paso de parámetros
Cuando se ejecuta un algoritmo, el resultado varía según el modo en que se pasen los
parámetros al procedimiento:
Paso por valor: El resultado final será C = 17. Esto se debe a que, al pasarse la
variable por valor, el procedimiento trabaja con una copia del dato original, por lo que
cualquier modificación interna no afecta la variable real del programa principal. Es
decir, el procedimiento no transmite de vuelta los cambios realizados, ya que no tiene
acceso directo a la dirección de memoria de C.
Paso por referencia: El resultado mostrado en pantalla será C = 12. En este caso, el
procedimiento recibe la dirección de memoria de las variables, por lo que cualquier
cambio interno sí afecta directamente a las variables originales del programa principal.
Al iniciar el procedimiento, las variables x, y, z y v toman los valores 3, 3, 8 y 17
respectivamente. Es importante señalar que, al haberse pasado las variables x e y por
referencia y recibir ambas el mismo valor desde la variable A, comparten la misma
posición de memoria. Este detalle es crucial: cuando se ejecuta la instrucción x ← x +
1, el valor de x se actualiza a 4, y como y apunta al mismo lugar, también toma ese
nuevo valor. Por ello, la siguiente operación v ← y + z se convierte en v ← 4 + 8, lo
que da como resultado C = 12 (Sorribas, s.f.).
4. Conclusiones
Se analizó la estructura, características y aplicación de la programación modular, lo
cual permitió comprender su relevancia en la resolución estructurada de problemas y
en la eficiencia del diseño de algoritmos reutilizables.
Se comprendió el concepto de programación modular mediante su estudio teórico y a
través de ejemplos prácticos, lo que permitió reconocer su utilidad para organizar y
desarrollar programas con una estructura clara.
Se identificaron las principales características y ventajas del enfoque modular en
comparación con otros métodos, lo que permitió valorar su papel en la optimización
del código y la reutilización de componentes.
Se aplicaron estructuras de repetición en combinación con la programación modular,
desarrollando algoritmos que operan con vectores y condiciones específicas,
demostrando una forma eficiente y ordenada de resolver problemas.
Se desarrollaron algoritmos utilizando módulos y subprogramas, lo que permitió
implementar funciones específicas, facilitando la comprensión del código, su
mantenimiento y escalabilidad.
5. Recomendaciones
Es recomendable introducir el enfoque de programación modular desde los primeros
niveles de formación en programación, ya que esto contribuye al desarrollo de código
estructurado, comprensible y fácil de mantener.
Se sugiere implementar actividades prácticas que integren el uso de módulos, funciones,
estructuras repetitivas y manejo de vectores, con el objetivo de reforzar la comprensión
de los conceptos teóricos abordados.
Es importante incentivar la aplicación de normas adecuadas para la documentación del
código y la asignación de nombres significativos a las funciones, con el propósito de
mejorar su claridad y facilitar el trabajo colaborativo.
Resulta beneficioso promover el análisis comparativo entre la programación modular y
otros enfoques de desarrollo, lo cual permite a los estudiantes y profesionales adquirir
criterios sólidos al momento de elegir técnicas de programación adecuadas.
Se recomienda incluir el estudio detallado del uso de parámetros por valor y por
referencia al diseñar algoritmos, con el fin de comprender a fondo el flujo de datos dentro
del programa y optimizar su rendimiento.
6. Referencias Bibliográficas
Hanna, K. T., & Rouse, M. (2022, 13 December). applet. WhatIs. Recuperado de:
[Link]
Pressman, R. S. (2010). Ingeniería del Software: un enfoque práctico.
IBM. (2025). Modularidad. IBM Documentation. Recuperado de:
[Link]
Lifeder. (2020, marzo 8). Programación modular: características, ejemplos, ventajas. Lifeder.
Recuperado de: [Link]
Gaddis, T. (2021). Starting Out with Programming Logic and Design (5th ed.). Pearson
Education.
Arteaga Martínez, M. M. (2023). Lógica de programación con Pseint: enfoque práctico (1.ª
ed.). Medellín: Corporación Universitaria Remington. Recuperado de [Link]
[Link]/es/ereader/espoch/250650?page=112
Sorribas, G. (s.f.). Notas de clase 3. Facultad de Ciencias Exactas, Ingeniería y Agrimensura,
Universidad Nacional de Rosario. Recuperado de
[Link]
Pressman, R. S., & Maxim, B. R. (2020). Ingeniería del software: Un enfoque práctico (9.ª
ed.). McGraw-Hill.
Sommerville, I. (2011). Ingeniería del software (9.ª ed.). Pearson Educación.
Pérez, R. (2024). Programación modular (I). IES Doñana. Recuperado de:
[Link]
7. Parte Teorica
7.1. Utilice la estructura de repetición HACER-MIENTRAS para escribir las restricciones
del algoritmo que permita ingresar dos vectores de cualquier dimensión, el primer vector
debe contener números positivos comprendidos entre 10 y 100, el segundo vector debe
contener números comprendidos entre -10 y -100 o entre 200 y 350.
Permitir elegir una de las operaciones, según decida el usuario:
a. Encontrar la sumatoria entre los elementos del primer vector.
b. Calcular el promedio de cada vector.
c. Encontrar el mayor de entre los dos vectores.
d. Crear un nuevo vector que contenga todos los números del primer y segundo
vector, encontrar el promedio de los números del tercer vector.
7.2. Utilice la estructura de repetición MIENTRAS para escribir las restricciones. Algoritmo
que permita ingresar en un vector varios números enteros pares. Determine el mayor, el
menor y el promedio de entre los números guardados en el vector.
7.3. Utilice la estructura de repetición MIENTRAS para escribir las restricciones. Algoritmo
que permita ingresar en un vector varios números enteros impares comprendidos entre 5 y
500. Después, solicitar al usuario un número y buscarlo si el número está en el vector.
Muestra un mensaje indicando “NÚMERO ENCONTRADO” o “NÚMERO NO
ENCONTRADO”, y la posición que ocupa en el vector y cuantos existen en el vector.