viernes, 16 de octubre de 2015

Programación Estructurada y Programación Modular




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), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti", que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación.

PROGRAMACIÓN MODULAR:

DEFINICIÓN:

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.

CARACTERISTICA:

•Este paradigma también se conoce como principio de ocultación de procedimientos y datos

•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 ésta puede resolver.

VENTAJAS Y DEVENTAJAS DE LA PROGRAMACIÓN MODULAR:

VENTAJAS:

•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. 

•En caso de que un módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar bien definida.

•Es fácil de mantener y modificar

•Es más fácil de escribir y depurar

•Facilidad de controlar es decir descompone un problema en estructuras jerárquicas, de modo que se puede considerar cada estructura desde dos puntos de vista.

DESVENTAJAS:



•No se dispone de algoritmos formales de modularidad, por lo que aveces los programadores no tienen claras las ideas de los módulos

•La programación modular requiere más memoria y tiempo de ejecución

METODOLOGIA DE DISEÑO:

Es una guía de pasos, procedimientos y técnicas que tendremos en un proceso, con una serie de pasos que seguiremos para llevar a cabo satisfactoriamente lo que se quiere realizar.

 Cuando queramos realizar los procedimientos, técnicas o tareas descritas en nuestra metodología, debemos contar con Herramientas, las cuales sirven para apoyarnos cuando estemos construyendo un software.

Tener una metodología, es algo muy parecido a la hora de querer elaborar una receta. La receta viene siendo la metodología, las herramientas los moldes para cocinar, los procedimientos son cuánto tiempo se hornea, y el producto es el alimento preparado.

 Al contar con metodologías se tienen reglas definidas para seguir, planificación y control, mantenimiento si es necesario, comunicación efectiva y sincera con los demás miembros del proyecto, y lo más importante de todo reutilización de software.

 Hay diferentes tipos de metodologías: - Estructuradas (datos jerárquicos)

- Orientadas a objetos

- Para sistemas de tiempo real



Estructuradas (Datos jerárquicos)

  Se definen primero los datos de entrada y salida y después se ordena lógicamente hasta ajustarlos a dicha estructura. Debe estar separado del diseño físico.

 Orientados a Objetos

 Son los revolucionarios o puros, y los sintetistas o evolutivos. Como sus nombres lo indican son metodologías que van evolucionando, porque no es lo mismo utilizar la misma metodología cuando se programaba perforando tarjetas, a como se programa ahora con el lenguaje ensamblador, o con lenguajes de alto nivel como es el Java, Python, C++, etc. Se tiene que ir cambiando de metodologías según las necesidades que se tengan.

Sistemas de tiempo real

 Como en estos sistemas se trabaja en un tiempo real, debe haber sincronía de tareas, saber qué hacer cuando se presente un problema, tener datos continuos, saber cómo manejar las interrupciones que haya.



 Existen varios pasos para la metodología:

 *Estudio Preliminar: En este paso debe saberse bien qué es lo que se hará, cómo manejarlo, en qué consiste y cuánto tiempo aproximadamente puede llevarse.

 *Estudio Detallado: Aquí ya se ve más a fondo las herramientas que se utilizarán, el presupuesto que se tiene, las ganancias que tendrán al final, un tiempo más exacto del cual disponen, cómo comenzar el proyecto, qué hacer ante distintas situaciones como pueden ser: falta de personal para elaborar el proyecto y tener en cuenta las cosas que puedan llegar a fallar.

 *Implementación: Ir elaborando lo que se tiene pensado, ya no es tanto de pensar qué se hará, sino hacerlo, ver cómo se va desenvolviendo el proyecto y si se está haciendo a como lo esperado.

 *Realización e instalaión: Ya se instala el software elaborado en las máquinas que lo necesitan.

 También debe tenerse en cuenta el mantenimiento del proyecto, por si llega a presentarse alguna falla poder tener contacto con la gente que lo elaboró y que lo puedan solucionar lo más rápido que se pueda.

Programación Procedimental. En este paradigma de programación, la atención se centra en el procesamiento, es decir, en las acciones necesarias para resolver un determinado problema. Los lenguajes soportan este paradigma mediante la definición de subprogramas (procedimientos y funciones) para la realización de dichas acciones, y el suministro de utilidades para el intercambio de información entre subprogramas (paso por valor, paso por referencia). IV.1.1.-

Metodología descendente "arriba-abajo"

La metodología o diseño descendente (top-down), también conocida como arriba-abajo consiste en establecer una serie de niveles de menor o mayor complejidad (arriba-abajo) que den solución al problema. En esencia consiste en efectuar una relación entre las etapas de la estructuración de forma que una etapa jerárquica y su inmediatamente inferior se relacionen mediante entradas y salidas de información. Un programa estructurado tiene una representación en forma de árbol.

PROGRAMACION ESTRUCTURADA:

La marcha analítica de un proceso descendente estaría basada en dos características esenciales: representación en forma de árbol y descomposición funcional. El diseño se basa en la realización de diferentes niveles. El primer nivel resuelve totalmente el problema y el segundo y sucesivos niveles son r('finamientos sucesivos del primero (stepwise) y se sigue siempre la metodología de recursos abstractos. Si el diseño y planteamiento es correcto nunca será preciso volver atrás ya que los niveles anteriores al que se esté situado en un momento dado ya habrán resuelto el problema en su totalidad.

DISEÑO DE PROGRAMAS ESTRUCTURADOS

La realización del diseño estructurado de un programa se basa en la aplicación de los siguientes conceptos:

- Ir de lo general a lo particular, descendiendo en la estructura del programa y en su nivel de detalle. - De la definición inicial del problema se pasa a un esquema de algoritmo descrito en pseudocódigo. - Independencia inicial del lenguaje. - Diseño por niveles, dejando los detalles para niveles posteriores. Verificar en cada nivel el esquema correcto. - Finalizar con un trabajo de recomposición del algoritmo completo.

Es conveniente -no imprescindible- que el lenguaje de programación empleado soporte las estructuras básicas mencionadas; este es el caso de Pascal, FORTRAN 77, True BASIC, ANSI BASIC, etc. Si el lenguaje no soporta las estructuras típicas -no es estructurado- se debe codificar pór traducción adecuada, es decir, simular las estructuras que no posea.

Ejemplo

Si en BASIC no se posee la estructura WHILE (Mientras-hacer) una codificación simulada sería:

  1. Caso de que la condición sea verdadera.
  2. 100 REM ** estructura Mientras ** 110 IF condición THEN:-J30 120 GOTO 210 130 REM ** Hacer ** 1 200 GOTO 100
  3. 210 REM ** Fin de Mientras **
  4. 'f;zt~.",_,., l' 's.'k- #"..$<
  5. 220 METODOLOGIA DE LA PROGRAMACION

Caso de que la condición sea falsa.

100 REM ** estructura Mientras ** 110 IF condición THEN 120 120 GOTO 210 130 REM ** Hacer **

200 GOTO 100 210 REM ** Fin de Mientras ** " I



METODOS DE PROGRAMACION ESTRUCTURADA

Existen diferentes métodos de programación estructurada. Entre los más conocidos se encuentran: Jackson, Bertini y Warnier.

 Método Jackson

Esta metodología creada por el inglés Michael Jackson se basa en que la estructura de un programa está en función de la estructura de los datos que manipula. Jackson emplea módulos según un orden jerárquico dentro de los diferentes niveles donde se encuentra. Cada módulo es un dato o conjunto de datos

- Secuencial: Un número determinado de módulos se ejecutan una sola vez en el orden jerárquico preestablecido.

- Repetitiva: Un módulo se ejecuta desde cero hasta n veces. El proceso repetitivo se indica con un asterisco (*).

- Alternativa: Se selecciona para la ejecución un módulo entre varios posibles. El proceso se indica por medio de una letra O.

Con estas estructuras básicas se puede obtener cualquier otra que intervenga en el diseño del programa. El uso del método de Jackson supone lectura arriba-abajo y de izquierda a derecha. Los pasos a seguir para resolver un determinado problema siguiendo esta metodología son:

l. Establecer o definir los datos de entrada y salida (resultados).

 2 Creación de la estructura del programa a partir de las diferentes estructuras de los datos.

PROGRAMACION ESTRUCTURADA

Estructura secuencial:                          Estructura repetitiva

La metodología Bertini

Consiste en la descomposición de un problema en niveles, teniendo cada uno de ellos un inicio, un conjunto de procesos y un fin. Esta metodología representa la estructura de los programas y no las operaciones del tratamiento. Las diferentes estructuras se representan en la Figura 7.3. Según Bertini las instrucciones se ejecutan de derecha a izquierda pero el programador puede leerlo al revés si le resulta más cómodo.

Método Warnier

Se basa en una metodología matemática que establece un único lenguaje de comunicación entre usuarios, analistas y programadores, lo que permite la comprensión de forma sencilla por cualquier programador. La representación de cualquier proceso se puede hacer mediante llaves. , El método se basa en la descomposición por niveles del problema. En cada nivel se detallan los tratamientos que permiten la resolución del problema planteado. Las estructuras utilizadas son conceptualmente idénticas a las de Jackson si bien su representación varía.

Los pasos a seguir en esta metodología son:

l. Estudio de los datos de salida.

2. Estudio de los datos de entrada teniendo en cuenta la organización de los  datos en el fichero lógico de salida y analizando las posibles fases de tratamiento.  3. Cuadro sinóptico o de descomposición formado a partir de la estructura de los datos de entrada, salida y del tratamiento.

3. Cuadro sinóptico o de descomposición formado a partir de la estructura de los datos de entrada, salida y del tratamiento.

4. Diagrama de flujo y lista de instrucciones. El diagrama se obtiene de forma automática del cuadro sinóptico y su uso puede no ser imprescindible. La lista de instrucciones, su orden de ejecución, produce en casi su totalidad la escritura del programa con independencia del lenguaje







GLOSARIO



1.Programación: La programación es el instrumento que permite la ejecución de las tareas automatizadas de un sistema informático.

Las herramientas que utilizaremos para programar son los lenguajes de programación, a través de las cuales codificaremos los programas.

2.Programa:Conjunto de instrucciones entendibles por el ordenador que permiten realizar un trabajo o resolver un problema.

Un programa debe ser finito, es decir, tiene que tener un inicio y un fin. Tiene que estar bien confeccionado para que, al introducir un dato, salga una solución y si se volviese a introducir el mismo dato, saliese de nuevo la misma solución.

3.Metodología de la programación:se entiende como metodología de la programación al conjunto de normas, métodos y anotaciones que nos indican la forma de programar.

4.Lenguaje de programación: es un conjunto de reglas semánticas así como sintácticas que los programadores usan para la codificación de instrucciones de un programa o algoritmo de programación.

5.Programacion Modular: es muy simple, consiste en dividir un programa en módulos. En realidad es un método de diseño que tiende a dividir el problema, de forma lógica, en partes perfectamente diferenciadas que pueden ser analizadas, programadas y puestas a punto independientemente.

6.Programación estructurada: es una teoría de programación que consiste en construir programas de fácil comprensión. Es especialmente útil, cuando se necesitan realizar correcciones o modificaciones después de haber concluido un programa o aplicación.

7.Subprogramas: son rutinas, procedimientos o conjuntos de instrucciones que realizan una labor específica. Los subprogramas o subrutinas nacieron de la necesidad de no repetir innecesariamente un trabajo ya hecho. Pueden invocarse desde el cuerpo del programa principal cuantas veces se desee.

8.Secuencia: ejecución de una instrucción tras otra.

9.Estructura secuencial: estructura secuencial es aquella que ejecuta las acciones sucesivamente unas a continuación de otras sin posibilidad de omitir ninguna y naturalmente, sin bifurcaciones. Todas estas estructuras tendrán una entrada y una salida

10.Modulo: Un módulo está constituido por una o varias instrucciones físicamente contiguas y lógicamente encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes puntos de un programa.

11.Estructura alternativa: es aquella estructura en la que únicamente se realiza una alternativa -una determinada secuencia de instrucciones- dependiendo del valor de una determinada condición o predicado.

12.Estructura alternativa simple: Son aquellas en que la existencia o cumplimiento de la condición implica la ruptura de la secuencia y la ejecución de una determinada acción.

13.Diagrama de flujo: es la representación gráfica del algoritmo o proceso. Se utiliza en disciplinas como programación, economía, procesos industriales y psicología cognitiva
video: https://www.youtube.com/watch?v=P5Z2YeSO-ig

3 comentarios:

  1. La programación modular es una subdivisión de programas es un tema bastante interesante es uno de los métodos mas conocido para resolver un problema mas pequeño llamado sub-programa

    ResponderEliminar
  2. Al tratar este tema de la programación modular es evidente que esta metodología nos llevas a tratar con subproblemas entonces también tengamos la necesidad de poder crear y trabajar con subprogramas para resolverlos, a esto es lo que he entendido lo que es programación modular.

    ResponderEliminar
  3. Según lo investigado la programación modular es una de métodos de programación mas usada ya que permite subdividir los problemas en partes mas pequeñas para facilitar la solución de un problema de programación.

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.