2. Objetivos:
1. Desarrollar habilidades de programación básicas bajo el paradigma de programación modular y
recursiva.
2. Modularizar programas a través de la implementación de procedimientos y funciones.
3. Antecedentes Históricos
Fue a finales de los años sesenta y comienzos de la década de los setenta que nace
la programación estructurada. Con ella se incorporaron estructuras de control de
flujo, que permitieron que un programa fuera más fácil de trazar.
A partir de allí surgió un nuevo inconveniente.
Los desarrolladores vieron que en el funcionamiento de programas grandes y
complejos, era imperioso dividir el programa en unidades más pequeñas.
Es allí precisamente donde surge el concepto de la programación modular.
4. ¿Programación Modular?
Es el proceso de subdividir un programa de computadora en subprogramas
separados a los que llamamos Módulos.
Un módulo: es un componente de software separado. A menudo se puede usar en
una variedad de aplicaciones y funciones con otros componentes del sistema.
6. Tecno-explicación sobre la programación modular
1.-Se incorporan a través de interfaces.
2.-Están diseñados de tal manera que minimizan las dependencias entre los
diferentes módulos.
3.-Los equipos pueden desarrollar módulos por separado y no requieren el
conocimiento de todos los módulos del sistema.
4.-Cada aplicación modular, tiene asociado un número de versión.
7. Estructura sobre programación modular
a) El módulo principal se compila como un ejecutable (EXE).
b) Los módulos auxiliares existen como archivos ejecutables separados.
c) Cada módulo tiene un nombre único asignado en la instrucción PROGRAM.
d) Los nombres de funciones en los módulos deben ser únicos.
9. 1. Técnicas de programación modular.
1.1 Top-Down o análisis descendente
De arriba hacia abajo. Conocida también como programación descendente.
En la mayoría de los casos esta técnica Top-Down se utiliza en conjunto con pseudocódigo,
para de esta manera poder generar una herramienta de diseño de algoritmos adecuada.
Fue promovido por: Harlan Mills y Niklaus Wirth en los años setenta.
10. 1. Técnicas de programación modular.
1.2 Bottom-Up
De abajo hacia arriba. Toma primero la programación de los módulos del nivel más
bajo, y luego van surgiendo los módulos de niveles superiores.
11. Dato Importante
La programación orientada a objetos (OOP) es compatible con el concepto de
programación modular en gran medida como un reemplazo más acorde a las
necesidades actuales.
1. Técnicas de programación modular.
1.3 Programación orientada a Objetos
13. 1. Modularidad
El programa incluye subprogramas que han sido desarrollados con códigos independientes.
Cada módulo es un conjunto de sentencias que permiten realizar una acción u operación.
Gracias a su modularidad, la programación modular permite disponer de pequeños módulos o
sentencias simples que se acoplan a la función principal del software, en reemplazo de una
única función principal larga.
Cada uno de los módulos es más fácil de comprender, con lo cual es posible al final tener una
gran solución para un problema complejo.
La comunicación entre estos subprogramas se realiza por medio de parámetro=variable.
14. 2. Funcionalidad
En la programación modular es necesario utilizar funciones que incluyen definición, comandos y
sentencias.
Todas las funciones incluyen una sentencia de retorno.
Las funciones utilizan las sentencias de las variables adicionales.
15. 3. Variable
La programación modular incluye variables que se encuentran dentro de la función principal del
programa.
Con cada función que se ejecuta, las variables tienen un valor específico, aunque como su nombre
lo indica, este valor puede cambiar cada vez que se lleva a cabo dicha función.
Existen dos tipos de variables: Las variables locales y las variables globales. Estas últimas son
definidas de forma externa al programa principal, pero están relacionadas a las funciones que se
encuentran dentro del programa.
16. 4. Procedimental
Está orientada por completo a la escritura de código para la creación de funciones.
No toma en cuenta los datos.
17. 2. Procedimientos y funciones.
Los procedimientos y funciones, son definidos como un conjunto de sentencias o
instrucciones que se encargan de desarrollar un proceso específico o particular.
Utiliza el concepto de programación modular, porque inicia de lo general y avanza a
lo particular, conservando la popular frase de “divide y vencerás”
18. Diferencias entre funciones y procedimientos
Parámetros de entrada Parámetros de salida Proceso
Funciones uno o varios uno sólo más específico
Procedimientos cero o varios uno o varios específico
Las funciones y procedimientos tienen el mismo concepto con las siguientes diferencias:
20. 3. Paso de parámetros por valor.
Si recordamos un poco al respecto, al realizar la definición de la función
colocamos los parámetros que ésta recibe especificando el tipo de dato de los
mismos.
Luego, cuando hacemos el llamado y especificamos los argumentos, estos se
evalúan y se le pasa a la función una copia de los mismos. A esto es lo que
llamamos paso por valor ya que la función trabajará con los valores de esas
copias. Si pasáramos variables como argumento, éstas no se modificarían por
este sistema de copias.
Ver documento sobre 3. Paso de parámetros por valor y referencia.pdf en plataforma Moodle
21. 3. Paso de parámetros por referencia.
Si recordamos un poco al respecto, al realizar la definición de la función
colocamos los parámetros que ésta recibe especificando el tipo de dato de los
mismos.
Luego, cuando hacemos el llamado y especificamos los argumentos, estos se
evalúan y se le pasa a la función una copia de los mismos. A esto es lo que
llamamos paso por valor ya que la función trabajará con los valores de esas
copias. Si pasáramos variables como argumento, éstas no se modificarían por
este sistema de copias.
Ver documento sobre 3. Paso de parámetros por valor y referencia.pdf en plataforma Moodle
22. Diagramación sobre paso de parámetros
Ver documento sobre 3. Paso de parámetros por valor y referencia.pdf en plataforma Moodle
23. 5. Funciones recursivas.
Un objeto es recursivo si su definición requiere la definición previa del objeto en un caso más sencillo.
Una función es recursiva si su resolución requiere la solución previa de la función para casos más sencillos.
Un algoritmo A que resuelve un problema P es recursivo si está basado directa o indirectamente en sí mismo.
Un diseño recursivo constará de las siguientes etapas:
1. Definición del problema.
2. Análisis de casos. Identificación de la función limitadora.
3. Trascripción algorítmica y verificación de cada caso.
4. Validación de la inducción: la función limitadora decrece estrictamente en las llamadas.
La recursividad y la iteración son los dos mecanismos suministrados por los
lenguajes de programación para describir cálculos que han de repetirse un
cierto número de veces.
24. Tipos de recursiones
Recursión lineal
Si cada llamada recursiva genera, como mucho otra llamada recursiva.
FINAL: si la llamada recursiva es la última operación que se efectúa, devolviéndose como resultado lo que se
haya obtenido de la llamada recursiva sin modificación alguna.
NO FINAL: El resultado obtenido de la llamada recursiva se combina para dar lugar al resultado de la función
que realiza la llamada.
26. Tipos de recursiones
Recursión anidada
Hay recursión anidada cuando uno de los argumentos de la función recursiva es el resultado de la llamada recursiva.
27. ¿Qué lenguaje de programación se utiliza?
En la actualidad uno de los lenguajes de programación más usados que
soportan el concepto de programación modular es Java.
Sin embargo, existen otros lenguajes de programación que Java. Estos son algunos ejemplos:
C
Ada
PL/I
Erlang
Pascal
Algol
COBOL
RPG
Haskell
Python
Ruby
SmallTalk
Morpho
Perl
HyperTalk
IBM/360
Assembler
MATLAB
IBM RPG
28. Concluyentemente:
Podemos decir que cada módulo es un segmento, una rutina, una subrutina, un subalgoritmo o
un procedimiento que permite ejecutar una tarea específica, y que opera dentro del módulo
principal.
Sin embargo, cabe aclarar que un módulo no es simplemente una función o un procedimiento,
porque en realidad puede contener en sí muchos de ellos.
Por ende, ten en cuenta que cada módulo es un bloque de sentencias que resuelve un problema
particular.
29. Concluyentemente:
A la hora de diseñar funciones se deben tener en cuenta factores como la cohesión, el
acoplamiento, la estructura del programa y la jerarquía de control.
La recursividad es una de las estrategias más potentes y elegantes en el diseño de soluciones,
entre los inconvenientes que tiene destacan el consumo de memoria y la complejidad en su
diseño.
Para facilitar todo el trabajo con módulos y funciones se crean las librerías (un conjunto
documentado, probado y, en su caso, previamente compilado, de procedimientos y funciones que
es posible invocar desde otro programa). Las librerías son un claro ejemplo de reutilización del
software.
30. Importancia de la
Programación Modular
Permite resolver un problema dividiéndolo en
problemas más pequeños, más conocidos como
subproblemas. Esto es de mucha importancia
para el desarrollo de aplicaciones modernas.
Para que la programación modular sea exitosa
es que los nombres de las funciones en los
diferentes módulos deben ser únicos (Se hace
más sencillo el acceso para cuando desees
exportar las funciones utilizadas por el módulo
principal)
31. Actividad de la Semana
Estudiar esta presentación para el cuestionario de la semana.
32. Referencias
Chávez Soto, Tania L. (octubre de 2017). “Programación Modular” . Recuperado
de https://ri.uaemex.mx/bitstream/handle/20.500.11799/69946/secme-19449_1.pdf?sequence=1
http://informatica.uv.es/iiguia/2000/AED/oldwww/2004_05/AED.Tema.05.pdf
http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro32/glosario.html
33. ¡Inmensas Bendiciones!
Ante consultas pueden incluirlas en “Foro de Consultas sobre la Asignatura”
o a través del e-mail: silvia.moran@católica.edu.sv