Programación modular
Introducción
¡Hola amable estudiante!
¡Es un placer encontrarte! Deseo que goces de muy buena salud y ánimo, pues te ayudarán en tu aprendizaje para construir mayor conocimiento. Es por ello que te doy la bienvenida a la clase 3 del curso, espero que sea de tu agrado.
Hasta el momento nos hemos concentrado en ir desarrollando habilidades de pensamiento lógicas, algorítmicas, analíticas, críticas, reflexivas, creativas, entre otras. Sin duda no ha sido un camino fácil, seguramente te han dado dolores de cabeza, pero vamos bien, poco a poco adentrándonos en el mundo de la programación de computadoras, empleando herramientas fundamentales, como lo son: Algoritmos, diagramas de flujo y pseudocódigos, cada uno de ellos representó un reto para ti, el poder plantear soluciones a cada problema, las cuales te dejaron cada una un proceso de aprendizaje necesario para poder abordar nuestro siguiente tema: La programación.
En esta clase digital 3, abordaremos los siguientes temas:
- Programación modular
- Programación estructurada
- Datos globales y locales
Sin más preámbulos vamos a comenzar con nuestra clase digital.
Desarrollo del tema
Antes que nada vamos a definir algunos conceptos básicos que necesitaremos para comprender con mayor facilidad el tema que nos compete.
Conceptos
Programación
La programación informática o programación algorítmica, acortada como programación, es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente se escribe en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones. Del proceso de programación surge lo que comúnmente se conoce como software (conjunto de programas), aunque estrictamente este último abarca mucho más que solo la programación.
Lenguaje de programación
Conjunto de reglas formales, diseñadas para realizar el proceso que seguirá una solución informática; es el medio de comunicación entre un programador y la computadora.
Cada lenguaje de programación tiene sus propias reglas sintácticas, las cuales aplican a las estructuras de control (secuencial, condicionales, repetitivas y compuesta), así como para establecer variables, constantes y tipos de datos.
Programación estructurada
La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while).
El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes:
- Secuencia
- Instrucción condicional.
- Iteración (bucle de instrucciones) con condición al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, estas pueden ser construidas mediante las tres básicas citadas seguir leyendo.
Programación modular
La programación modular corresponde a la descomposición de un programa en pedazos más pequeños denominados módulos o subprogramas, en el que cada uno de ellos se encargará de llevar a cabo una tarea concreta y bien definida, y se agrupará según su funcionalidad. Cada uno de estos módulos se analizará y codificará por separado para presentar la solución total al problema planteado.
La estructura de un programa modular consta de un módulo principal desde el que se llamará al resto de los módulos. El módulo principal recibe el control al inicio de la ejecución del programa. Cuando se invoca un módulo concreto (a través de su nombre y parámetros), el control del programa se pasará al módulo. Este módulo mantendrá el control hasta que no se finalice su ejecución en cuyo momento devolverá el control a la instrucción siguiente a la que realizó la llamada.
Cada uno de estos módulos puede hacer a su vez llamadas a otros módulos que siempre devolverán el control al módulo desde el que fueron llamados, pone freno a la redundancia del código, ya que aíslan las secuencias de instrucciones más usadas y que se repiten, se les da un nombre y cuando se quieran usar, simplemente se invocará dicho nombre en el lugar donde sea necesario.
Para realizar una programación modular podemos emplear algunas técnicas, entre ellas las más utilizadas: Programación Descendente y Programación Ascendente.
Programación Descendente
En la programación descendente primero se define el módulo principal y después las restantes llamadas a módulos específicos. Cuando se lleva a cabo un diseño descendente es lógico pensar en algún tipo de jerarquía. Cuando esto ocurre es frecuente que la planeación resultante culmine con un diagrama de diseño estructurado. Este último es diferente del diagrama de flujo convencional ya que el diagrama de diseño estructurado es más general y señala el sentido de orden, responsabilidad y control que existe en el código de un programa. En este diagrama cada módulo está representado por un rectángulo que contiene un número, el cual indica la posición del módulo dentro del esquema jerárquico del programa. El único módulo que puede existir con un nivel de jerarquía cero es el módulo principal del programa. Después puede tenerse hasta tres módulos de nivel-1. Estos módulos reflejan las tareas de entrada, salida y procesamiento de información llevadas a cabo por el programa.
Programación Ascendente
La técnica BOTTOM UP es conocida también como ascendente, la diferencia entre el bottom up y el top down es que los módulos son enumerados de forma diferente. En el bottom up se enumeran primero los módulos inferiores hasta llegar al módulo superior.
La diferencia del tipo de diseño ascendente y descendente solo se puede dar a la hora de la programación. Porque en el momento de dibujar la estructura del problema, en las dos formas el diseño queda igual, solamente que los módulos son enumerados en forma diferente, pero esto se hace pensando ya en cómo se va a comenzar a programar. En el diseño ascendente primero se programan los módulos que se encuentran más abajo de la estructura, hasta llegar al primer módulo dibujado.
Datos locales y globales
Datos locales que son ocultos en el interior de un módulo y son utilizados, exclusivamente, por el módulo. Estos datos locales están estrechamente relacionados con sus módulos y están protegidos de modificaciones por otras funciones.
Otro tipo de datos son los datos globales a los cuales se puede acceder desde cualquier módulo del programa. Es decir, dos o más módulos pueden acceder a los mismos datos siempre que estos datos sean globales. En la Figura 1 se muestra la disposición de variables locales y globales en un programa procedimental.
Diagrama 1. Datos Locales y Globales.
Conclusión
Comenzar a reconocer qué es la programación y algunos tipos o formas de programar es importante, ya que nos adentramos al mundo de la programación. Programar nos lleva a ver el mundo que nos rodea de forma diferente, en una empresa por ejemplo permite acrecentar el avance tecnológico dentro y fuera de ella impactando directamente las funciones que ahí se realizan.
Así mismo reconocer qué tanto los algoritmos, diagramas de flujo y pseudocódigos te permitirán acercarte a la solución al problema planteado, por lo que después de pasar por distintas herramientas la solución estará cada vez más refinada y funcional.
Por su parte los tipos de programación también te permitirán identificar cuál emplear dependiendo del problema al que te estés enfrentando, si es un problema pequeño seguramente podrás trabajar con una programación estructurada, pero si se trata de un problema el cual puede dividirse en varios para poder integrar una solución seguramente deberás emplear la programación modular. Estos dos tipos no son únicos, existen otros que irás conociendo una vez que te adentres más al mundo de la programación.
Has llegado al final de la clase, ¿cómo te sentiste? Espero que muy bien, puedes apoyarte en cualquier momento del material propuesto en la clase para mejorar tu aprendizaje. Recuerda seguir adelante con entusiasmo y dedicación para el cumplimiento de los requerimientos siguientes.
Fuentes de información
- Albert, R., y Breedlove, T. (2009). C++: An active learning approach. Jones and Bartlett Publishers
- Cairo Battistutti, O. (2005). Metodología de la Programación, Algoritmos Diagrama, de Flujo y Programas. Alfaomega.
- Deitel, P., y Deitel, H. (2008). Cómo Programar en C++. Pearson Prentice Hall.