You are on page 1of 12

PROGRAMACIN MODULAR

Uno de los mtodos ms conocidos para resolver un problema es dividirlo en problemas ms pequeos, llamados sub-problemas. De esta manera, en lugar de resolver una tarea compleja y tediosa, resolvemos otras ms sencillas y a partir de ellas llegamos a la solucin. Esta tcnica se usa mucho en programacin ya que programar no es ms que resolver problemas, y se le suele llamar diseo descendente, metodologa del divide y vencers o programacin top-down. Es evidente que si esta metodologa nos lleva a tratar con sub-problemas, entonces tambin tengamos la necesidad de poder crear y trabajar suele

con subprogramas para llamar mdulos, de

resolverlos. ah de viene dos

A estos subprogramas se el nombre de de programacin

les

modular.

En Pascal disponemos las funciones.

tipos

mdulos:

los procedimientos y

Caractersticas:

Todos los programa tiene un modulo principal.

Dichos modulo primario se divide en sud-mdulos que a su vez ejecutan una tarea nica y podrn codificarse de manera independiente de cualquier otra actividad. Sin embargo, al finalizar su funcin devolvern el control al modulo principal.

Esta independiente alude a que ningn otro modulo podr accesarlo directamente, a excepcin de sus propios subsubmdulos y modulo principal.

Historia:

La programacin modular es uno de los mtodos de diseo ms flexibles y potentes para mejorar la productividad de un programa. En programacin modular el programa se divide en mdulos (partes independientes), cada una de las cuales ejecuta una nica funcin o actividad y se codifican independientemente de otros mdulos. Cada uno de estos mdulos se analiza, codifica y pone a punto por separado. Cada programa contiene un mdulo denominado programa principal que controla todo lo que sucede; se transfiere el control a los submdulos o subprogramas. Estos ejecutan su funcin y una vez completada su tarea, devuelven el control al mdulo principal. El inicio de modularidad se dio el 1 de enero de 1972 y se utilizaba como herramienta de enseanza de la programacin. Sus desarrolladores se concentraron en desarrollar buenas herramientas que contribuyeran a la enseanza, tal como un buen debugger, y un buen editor. Adems tuvieron como meta el tener soporte para la mayora de los microprocesadores populares en esa poca en las instituciones de enseanza. El diseo que surgi el 1 de enero de 1977 Diseado bajo la direccin de Nicklaus Wirth, creador tambin el lenguaje PASCAL, con la intencin de incluir las necesidades de la programacin de sistemas y dar respuestas a las criticas recibidas respecto de las carencias del lenguaje Pascal El 2 de enero de 1979 se realiza una versin que pasa a denominarse MODULA2 y que perdura en la actualidad. Adems de incluir las caractersticas de su predecesor, este nuevo lenguaje incorpora las principales carencias de aquel, como la posibilidad de compilacin separada, creacin de libreras, programacin concurrente, mejora el manejo de cadenas de caracteres, los

procedimientos de entrada/salida y la gestin de la memoria, etc. adems, posee grandes facilidades para la programacin de sistemas.

Ventajas:

Como los mdulos son independientes, el desarrollo de un programa se puede efectuar con mayor facilidad, ya que cada mdulo se puede crear aisladamente y varios programadores podrn trabajar simultneamente en la confeccin de un algoritmo, repartindose las distintas partes del mismo. Se podr modificar un mdulo sin afectar a los dems Las tareas, subalgoritmos, slo se escribirn una vez, aunque se necesiten en distintas ocasiones a lo largo del algoritmo. El uso de mdulos facilita la proyeccin y la comprensin de la lgica subyacente para el programador y el usuario. Aumenta la facilidad de depuracin y bsqueda de errores en un programa ya que stos se pueden aislar fcilmente. El mantenimiento y la modificacin de la programacin se facilitan. Los mdulos reciben diferentes nombres: - Funciones en C, C++ - Subrutinas en Basic - Procedimientos y funciones en Pascal - Subrutinas en Fortran y - Secciones en Cobol.

PROGRAMACIN ESTRUCTURAL

El creciente empleo de los computadores ha conducido a buscar un abaratamiento del desarrollo des software, paralelo a la reduccin del costo del hardware obtenido gracias a los avances tecnolgicos. Los programas computarizados pueden ser escritos con un alto grado de estructuracin, lo cual les permite ser mas fcilmente comprensibles en actividades tales como pruebas, mantenimiento y modificacin de los mismos. Mediante la programacin Estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leer la codificacin del mismo desde su inicio hasta su terminacin en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lgica establecida por el programador, como es la situacin habitual con codificaciones desarrolladas bajo otras tcnicas. En programacin Estructurada los programadores deben profundizar mas que lo usual al proceder realizar el diseo original del programa, pero el resultado final es ms fcil de leer y comprender, el objetivo de u programador profesional al escribir programas de una manera estructurada, es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados. El resultado de aplicar la sistemtica y disciplinada manera de elaboracin de programas establecida por la Programacin Estructurada es una programacin de alta precisin como nunca antes haba sido lograda. Las pruebas de los programas, desarrollados utilizando este mtodo, se acoplan mas rpidamente y el resultado final con programas que pueden ser ledos, mantenidos y modificados por otros programadores con mucho mayor facilidad.

Caractersticas:

La estructura secuencial: Est definida por el flujo de control automtico de un programa. De manera natural, a menos que otra cosa se indique, la computadora ejecuta las lneas de cdigo en el orden en que fueron escritas. El control del programa fluye de la lnea anterior a la lnea siguiente.

Enunciado

Enunciado

Las estructuras de seleccin: Se basan en una declaracin condicional. Si es verdadera, ciertas lneas de cdigo son ejecutadas. Si tal declaracin es falsa, esas lneas no sern ejecutadas. Las dos estructuras de seleccin ms comunes son: Si-Entonces (If-Then) y Si-Entonces-de lo contrario (IfThen-Else).

Las estructuras de repeticin (o de ciclos): Su construccin tambin hace uso de declaraciones condicionales. Si la condicin evaluada es verdadera, un bloque de una o ms instrucciones se repetir, hasta que la condicin sea falsa. La computadora prueba la condicin una primera vez, si es verdadera, ejecuta el bloque de comandos. Entonces, finalizada la primera

repeticin, comprueba de nuevo la condicin y si es verdadera se repite el bloque nuevamente, y as sucesivamente hasta que la condicin sea falsa. Ya que este funcionamiento es cclico, cada una de estas repeticiones es llamada tambin ciclo. Tres estructuras de este tipo son: Repita para (ForNext), Repita Mientras (While) y Repita Hasta (Do-While).

Historia:

El teorema del programa estructurado proporciona la base terica de la programacin estructurada. Seala que tres maneras de combinar programas son suficientes para expresar cualquier funcin computable: secuencia, seleccin e iteracin. Esta observacin no se origin con el movimiento de la programacin estructurada. Estas estructuras son suficientes para describir el ciclo de instruccin de una unidad central de procesamiento, as como el funcionamiento de una mquina de Turing. Por lo tanto un procesador siempre est ejecutando un "programa estructurado" en este sentido, incluso si las instrucciones que lee de la memoria no son parte de un programa estructurado. Sin embargo, los autores usualmente acreditan el resultado a un documento escrito en 1966 por Bhm y Jacopini, posiblemente porque Dijkstra haba citado este escrito. El teorema del

programa estructurado no responde a cmo escribir y analizar un programa estructurado de manera til. Estos temas fueron abordados durante la dcada de 1960 y principio de los aos 1970, con importantes contribuciones

de Dijkstra, Robert W. Floyd, Tony Hoarey y David Gries. P. J. Plauger, uno de los primeros en adoptar la programacin estructurada, describi su reaccin con el teorema del programa estructurado: Nosotros los conversos ondeamos esta interesante pizca de noticias bajo las narices de los recalcitrantes programadores de lenguaje ensamblador que mantuvieron trotando adelante retorcidos bits de lgica y diciendo, 'Te apuesto que no puedes estructurar esto'. Ni la prueba por Bhm y Jacopini, ni nuestros repetidos xitos en escribir cdigo estructurado, los llevaron un da antes de lo que estaban listos para convencerse. Donald Knuth acept el principio de que los programas deben escribirse con demostratividad en mente, pero no estaba de acuerdo (y an est en desacuerdo) con la supresin de la sentencia GOTO. En su escrito de 1974 Programacin estructurada con sentencias Goto, dio ejemplos donde crea que un salto directo conduce a cdigo ms claro y ms eficiente sin sacrificar demostratividad. Knuth propuso una restriccin estructural ms flexible: debe ser posible establecer un diagrama de flujo del programa con todas las bifurcaciones hacia adelante a la izquierda, todas las bifurcaciones hacia atrs a la derecha, y sin bifurcaciones que se crucen entre s. Muchos de los expertos en teora de grafos y compiladores han abogado por permitir slo grafos de flujo reducible Los tericos de la programacin estructurada ganaron a un aliado importante en la dcada de 1970 despus de que el investigador de IBM Harlan Mills aplicara su interpretacin de la teora de la programacin estructurada para el desarrollo de un sistema de indexacin para el archivo de investigacin del New York Times. El proyecto fue un gran xito de la ingeniera, y los directivos de otras empresas lo citaron en apoyo de la adopcin de la programacin estructurada,

aunque Dijkstra critic las maneras en que la interpretacin de Mills difera de la obra publicada. Tan tarde como 1987 fue todava posible elevar la cuestin de la programacin estructurada en una revista de ciencia de la computacin. Frank Rubin lo hizo en ese ao, con una carta, La sentencia GOTO considerada daina considerado daino. Numerosas objeciones siguieron, incluyendo una respuesta de Dijkstra, que criticaba duramente a Rubin y las concesiones que otros escritores hicieron cuando le respondieron. A finales del siglo XX casi todos los cientficos estn convencidos de que es til aprender y aplicar los conceptos de programacin estructurada. Los lenguajes de programacin de alto nivel que originalmente carecan de estructuras de programacin, como FORTRAN, COBOL y BASIC, ahora las tienen.

Ventajas:

Programas sencillos y rpidos. Reduccin de costos de mantenimiento. Se facilita el seguimiento de las fallas. Mejor documentacin interna. Los programas son ms fciles de entender.

PROGRAMACIN ORIENTADA A OBJETO

El diseo y modelado orientado a objetos constituye una nueva forma de pensar acerca de problemas empleando modelos que se han organizado tomando como base conceptos del mundo real. La construccin fundamental es el objeto que combina las estructuras de datos con los comportamientos en una entidad nica. Los modelos orientados a objetos son tiles para comprender problemas, comunicarse con expertos en esa aplicacin, modelar empresas, preparar documentacin y disear programas y bases de datos. El termino orientado a objetos significa que el software se organiza como una coleccin de objetos discretos que datos como un comportamiento. en la cual las contienen tanto estructuras de

Estos se opone a

la programacin el comportamiento

convencional;

estructuras de datos y

solamente estn relacionados de forma dbil.

Caractersticas:

Abstraccin

La abstraccin consiste en captar las caractersticas esenciales de un objeto, as como su comportamiento. Por ejemplo, volvamos al ejemplo de los automviles, Qu caractersticas podemos abstraer de los automviles? O lo que es lo mismo Qu caractersticas semejantes tienen todos los automviles? Todos tendrn una marca, un modelo, nmero de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automviles podrn acelerar, frenar, retroceder, etc. En los lenguajes de programacin orientada a objetos, el concepto de Clase es la representacin y el mecanismo por el cual se gestionan las abstracciones. Por ejemplo, en Java tenemos:

public class Automovil { // variables // mtodos } Encapsulamiento

El encapsulamiento consiste en unir en la Clase las caractersticas y comportamientos, esto es, las variables y mtodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstraccin y el ocultamiento que veremos a continuacin. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde slo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesar ser conocer qu hace la Clase pero no ser necesario saber cmo lo hace. Ocultamiento

Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer slo los detalles que sean necesarios para el resto del sistema. El ocultamiento permite 2 cosas: restringir y controlar el uso de la Clase. Restringir porque habr cierto comportamiento privado de la Clase que no podr ser accedido por otras Clases. Y controlar porque daremos ciertos mecanismos para modificar el estado de nuestra Clase y es en estos mecanismos dnde se validarn que algunas condiciones se cumplan. En Java el ocultamiento se logra usando las palabras reservadas: public, private y protected delante de las variables y mtodos.

Historia:

Tradicionalmente, la programacin fue hecha en una manera secuencial o lineal, es decir una serie de pasos consecutivos con estructuras consecutivas y bifurcaciones.

Los lenguajes basados en esta forma de programacin ofrecan ventajas al principio, pero el problema ocurre cuando los sistemas se vuelven complejos. Estos programas escritos al estilo espaguetti no ofrecen flexibilidad y el mantener una gran cantidad de lneas de cdigo en slo bloque se vuelve una tarea complicada. Frente a esta dificultad aparecieron los lenguajes basados en la programacin estructurada. La idea principal de esta forma de programacin es separar las partes complejas del programa en mdulos o segmentos que sean ejecutados conforme se requieran. De esta manera tenemos un diseo modular, compuesto por mdulos independientes que puedan comunicarse entre s. Poco a poco este estilo de programacin fue reemplazando al estilo espaguetti impuesto por la programacin lineal.

Entonces, vemos que la evolucin que se fue dando en la programacin se orientaba siempre a ir descomponiendo ms el programa. Este tipo de descomposicin conduce directamente a la programacin orientada a objetos. Pues la creciente tendencia de crear programas cada vez ms grandes y complejos llev a los desarrolladores a crear una nueva forma de programar que les permita crear sistemas de niveles empresariales y con reglas de negocios muy complejas. Para estas necesidades ya no bastaba la programacin estructurada ni mucho menos la programacin lineal. Es as como aparece la programacin orientada a objetos (POO). La POO viene de la evolucin de la programacin estructurada; bsicamente la POO simplifica la programacin con la nueva filosofa y nuevos conceptos que tiene. La POO se basa en la dividir el programa en pequeas unidades lgicas de cdigo. A estas pequeas unidades lgicas de cdigo se les llama objetos. Los objetos son unidades independientes que se comunican entre ellos mediante mensajes. Veamos con mayor detenimiento este tema.

Ventajas:

Fomenta la reutilizacin y extensin del cdigo. Permite crear sistemas ms complejos. Relacionar el sistema al mundo real. Facilita la creacin de programas visuales. Construccin de prototipos Agiliza el desarrollo de software Facilita el trabajo en equipo Facilita el mantenimiento del software