programacion estructurada

12

Upload: kcarbache

Post on 04-Jul-2015

267 views

Category:

Documents


1 download

DESCRIPTION

Programacion estructurada

TRANSCRIPT

Es un paradigma de programación orientado a mejorar la claridad,calidad y tiempo de desarrollo de un programa de computadora,utilizando únicamentesubrutinas y tres estructuras: secuencia,selección (if y switch) e iteración (bucles for y while), considerandoinnecesario y contraproducente el uso de la instrucciónde transferencia incondicional (GOTO), que podría conducir a "códigoespagueti", que es mucho más difícil de seguir y de mantener, y era lacausa de muchos errores de programación.Surgió en la década de 1960, particularmente del trabajo Böhm yJacopini, y una famosa carta, la sentencia goto consideradaperjudicial, de Edsger Dijkstra en 19682 — y fue reforzado teóricamentepor el teorema del programa estructurado, y prácticamente por laaparición de lenguajes como ALGOL con adecuadas y ricas estructuras decontrol.

FUNDAMENTACIÓN TEÓRICAEl teorema del programa estructurado proporciona la base teórica de laprogramación estructurada. Señala que tres maneras de combinarprogramas son suficientes para expresar cualquierfunción computable:secuencia, selección e iteración. Esta observación no se originó conel movimiento de la programación estructurada. Estas estructuras sonsuficientes para describir el ciclo de instrucción de una unidadcentral de procesamiento, así como el funcionamiento de una máquina deTuring. Por lo tanto un procesador siempre está ejecutando un"programa estructurado" en este sentido, incluso si las instruccionesque lee de la memoria no son parte de un programa estructurado. Sinembargo, los autores usualmente acreditan el resultado a un documentoescrito en 1966 por Böhm y Jacopini, posiblementeporque Dijkstra había citado este escrito. El teorema del programaestructurado no responde a cómo escribir y analizar un programaestructurado de manera útil. Estos temas fueron abordados durante ladécada de 1960 y principio de los años 1970, con importantescontribuciones de Dijkstra, Robert W. Floyd, Tony Hoarey y DavidGries.

Los programas son más fáciles de entender, pueden ser leídos de

forma secuencial y no hay necesidad de hacer engorrosos

seguimientos en saltos de líneas (GOTO) dentro de los bloques de

código para intentar entender la lógica.

La estructura de los programas es clara, puesto que las instrucciones

están más ligadas o relacionadas entre sí.

Reducción del esfuerzo en las pruebas y depuración. El seguimiento

de los fallos o errores del programa ("debugging") se facilita debido a

su estructura más sencilla y comprensible, por lo que los errores se

pueden detectar y corregir más fácilmente.

Reducción de los costos de mantenimiento. Análogamente a la

depuración, durante la fase de mantenimiento, modificar o extender

los programas resulta más fácil.

Los programas son más sencillos y más rápidos de confeccionar.

Se incrementa el rendimiento de los programadores, comparado con

la forma anterior que utiliza GOTO.

El principal inconveniente de este paradigma de programación es que

se obtiene un único bloque de programa, que cuando se hace

demasiado grande puede resultar problemático su manejo; esto se

resuelve empleando la programación modular, definiendo módulos

interdependientes programados y compilados por separado.

Un método un poco más sofisticado es la programación por capas, en

la que los módulos tienen una estructura jerárquica en la que se

pueden definir funciones dentro de funciones o de procedimientos

En un bajo nivel, los programas estructurados con frecuencia estáncompuestos de simples estructuras de flujo de programa jerárquicas.Estas son secuencia, selección y repetición:"Secuencia" se refiere a una ejecución ordenada de instrucciones.En "selección", una de una serie de sentencias es ejecutada dependiendodel estado del programa. Esto es usualmente expresado con palabras clavecomo if..then..else..endif, switch, o case. En algunos lenguajes laspalabras clave no se puede escribir textualmente, pero debe serdelimitada (stropped).En la "repetición" se ejecuta una sentencia hasta que el programaalcance un estado determinado, o las operaciones han sido aplicadas acada elemento de una colección. Esto es usualmente expresado conpalabras clave como while, repeat, for o do..until. A menudo serecomienda que cada bucle sólo debe tener un punto de entrada (y en laprogramación estructural original, también sólo un punto de salida, ypocos lenguajes refuerzan esto).

Es posible hacer la programación estructurada en cualquier lenguaje deprogramación, aunque es preferible usar algo como un lenguaje deprogramación procedimental. Algunos de los lenguajes utilizadosinicialmente para programación estructurada incluyen:

ALGOLPascalPL/IAda

Pero la mayoría de los nuevos lenguajes programación procedimentalesdesde entonces han incluido características para fomentar laprogramación estructurada y a veces deliberadamente omitencaracterísticas en un esfuerzo para hacer más difícil la programación noestructurada.

TEOREMA DE LA ESTRUCTURAEl teorema de la estructura establece que un programa propiopuede ser escrito utilizando solamente las siguientesestructuras lógicas de control: secuencia, selección eiteración.Un programa de define como propio si cumple con los dosrequerimientos siguientes:Tiene exactamente una entrada y una salida para control delprograma.Existen caminos seguibles desde la entrada hasta la salida queconducen por cada parte del programa, es decir, no existen lazosinfinitos ni instrucciones que no se ejecutan.

Se definen de la siguiente forma:

SECUENCIA: es simplemente la formalización de la idea de que lasinstrucciones de un programa son ejecutadas en el mismo orden en que ellasaparecen en el programa. En términos de diagrama de flujo la secuencia esrepresentada por una función después de la otra, como se muestra acontinuación.A y B pueden ser instrucciones sencillas hasta módulos completos, loimportante es que sean programas propios, independientemente de su tamañoo complejidad interna. Ay B deben ser programas propios en el sentido enque estos fueron definidos, es decir, que posean solamente una entrada yuna salida; la combinación de A seguida por B es también un programapropio, ya que esta unión tiene una entrada y una salida exclusivamente,esto se muestra gráficamente en la figura siguiente:Donde la caja externa sugiere que la combinación de A seguida de puede sertratada como una unidad para propósitos de control.

SELECCIÓN: Es la escogencia entre dos acciones tomando la decisión enbase al resultado de evaluar un predicado. Esta estructura de control esdenominada usualmente IFTHENELSE. La representación en formade diagrama de flujo de esta estructura lógica de control se muestra acontinuación:FDonde P es predicado y A y B son las dos funciones.

ITERACIÓN: Esta estructura lógica es utilizada para que se repita laejecución de un conjunto de instrucciones mientras se cumpla unacondición o predicado. Generalmente a esta estructura se le conoce comoDOWHILE (hacer mientras) y su representación se muestra a continuación:VFdonde P es predicado y A es el modulo controlado.Se debe comprender claramente que un rectángulo, que representa un moduloen un diagrama, siempre puede ser sustituido por cualquiera de las tresestructuras de control descritas anteriormente

La segmentación reflejara la división del programa en partes que serelacionen entre sí en forma jerárquica, formando una estructura deárbol. Esta organización puede ser representada gráficamente por undiagrama de procesos, lo que hace más sencillo comprender la relaciónexistente entre un segmento y el resto del programa. Adicionalmente,podemos indicar que, el segmento en la cumbre de la estructurajerárquica contendrá las funciones de control de mas alto nivel,mientras que los segmentos inferiores en esta organización contendránfunciones detalladas.Una segmentación bien diseñada deberá mostrar, claramente, lasrelaciones existentes entre las distintas funciones de manera que seafácil comprender lo que debe hacer el programa y asegurar queefectivamente lo realice. Este hecho, garantizara que los cambios que seefectúen a una parte del programa, durante la programación original o sumantenimiento, no afecten al resto del programa que no ha sufridocambios.En una segmentación bien realizada la comunicación entre segmentos selleva a cabo de una manera cuidadosamente controlada. Algunos autoresrecomiendan que los segmentos consistan en procedimientos y la únicacomunicación existente entre ellos sea a través de una lista deparámetros, esto reduce la oportunidad de que interactuen entre ellos deuna manera indeseada e inentendible.