1. República Bolivariana de Venezuela
Ministerio Del Poder Popular Para La Defensa
Universidad Nacional Experimental Politécnica De La Fuerza Armada
UNEFA – Yaracuy
Nirgua
Programación
Estructurada.
Alumno:
José A. Silva Clisanchez
CI. 22317008
Ing. De Sistemas
8vo Semestre
Abril 2014
2. Programación Estructurada.
La programación estructurada es la técnica de desarrollo de programas
de la forma más clara posible haciendo uso de tres estructuras de control: la
secuencia, la selección y la interacción. Estas estructuras pueden combinarse
para crear programas que manejen cualquier necesidad de procesamiento de
datos.
La 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. Al utilizar la programación estructurada, es
mucho más sencillo entender la codificación del programa, que se habrá hecho
en diferentes secciones.
Se basa en una metodología de desarrollo de programas llamada
refinamiento sucesivo, es decir, Se plantea una operación como un todo y se
divide en segmentos más sencillos o de menor complejidad, una vez terminado
todos los segmentos del programa, se procede a unificar las aplicaciones
realizadas por el grupo de programadores. Si se ha utilizado adecuadamente la
programación estructurada, esta integración debe ser sencilla y no presentar
problemas al integrar la misma, y de presentar algún problema, será
rápidamente detectable para su corrección.
La representación grafica de la programación estructurada se realiza a
través de diagramas de flujo, el cual representa el programa con sus entradas,
procesos y salidas. La programación estructurada propone segregar los
procesos en estructuras lo más simple posibles, las cuales se conocen como
secuencia, selección e interacción, que están disponibles en todos los
lenguajes modernos de programación imperativa en forma de sentencias,
combinando esquemas sencillos se pueden llegar a construir sistemas amplios
y complejos pero de fácil entendimiento.
La programación estructurada es un método disciplinado de escribir
programas que sean claros, que se demuestre que sean correctos y fáciles de
modificar. Esta consiste en dividir los programas en módulos y se basa en el
desarrollo de programas que van de lo general a lo particular, es decir, del
conjunto al elemento, es decir de un todo a lo específico.
Para la solución de un problema en particular, se inicia considerando las
funciones que tiene que cumplir el programa en general y después se va
desmembrando estas funciones en sub-funciones más pequeñas hasta llegar al
caso último o más particular y que ya no se pueda subdividir en casos más
pequeños. Una vez que ya se tiene el programa desmembrado en de lo general
a lo particular, se empieza a programar estas funciones pequeñas, particulares
o módulos, de esta manera, siempre podremos construir nuevos módulos o
unidades insertando el nombre del módulo donde corresponda y
desarrollándolo a parte.
3. La modificación de los módulos es más fácil y se pueden referenciar
cuantas veces se requiera, con lo que se ahorra tiempo en la programación, un
programa tiene un diseño estructurado si cumple las dos siguientes
condiciones:
*El teorema de Estructura.
*Está debidamente documentado
El teorema de Estructura dice que “un programa cumple el teorema de
estructura si y sólo (ó) si es propio y contiene únicamente las tres estructuras
básicas de control” que son la secuencial, la alternativa y la repetitiva, un
programa es propio si y sólo si cumple: que tenga un solo punto de entrada y
un solo punto de salida y que entre dos puntos de control del programa exista
al menos un camino.
La programación estructurada es un estilo con el cual él se busca que el
programador elabore programas sencillos y fáciles de entender, la
programación estructurada hace uso de tres estructuras básicas de control que
son: Estructura Secuencial, Estructura Selectiva y la Estructura Repetitiva (ó
Iterativa).
La programación estructurada se basa un teorema fundamental, el cual
afirma que cualquier programa, no importa el tipo de trabajo que ejecute, puede
ser elaborado utilizando únicamente las tres estructuras básicas.
Se pueden definir algunos conceptos que son muy relativos a la
programación estructurada como por ejemplo la composición y también
podemos definir algunas características como lo son: las estructuras de control,
la segmentación e identación.
*La Composición: La programación estructurada está compuesta por
segmentos de código que pueden incluir desde una instrucción hasta varias
páginas de estas.
Cada uno de los segmentos de un programa, debe cumplir con dos
procesos básicos: la entrada y la salida de datos.
4. A diferencia de otros estilos de programación, los programas
estructurados pueden ser leídos secuencialmente, desde el inicio hasta el final,
sin perder la continuidad.
Definición De Las 3 Estructuras Básicas.
1-Estructura Secuencial: Indica que las instrucciones de un programa se
ejecutan una después de la otra, en el mismo orden en el cual aparecen en el
programa. Se representa gráficamente como una caja después de otra, ambas
con una sola entrada y una única salida.
Las cajas A y B pueden ser definidas para ejecutar desde una simple
instrucción hasta un módulo o programa completo, siempre y cuando éstos
también sean programas apropiados.
2-Estructura Selectiva: También conocida como la estructura si
verdadero - falso, plantea la selección entre dos alternativas con base en el
resultado de la evaluación de una condición; equivale a la instrucción IF de
todos los lenguajes de programación y se representa gráficamente de la
siguiente manera:
En el diagrama de flujo anterior, C es una condición que se evalúa; A es
la acción que se ejecuta cuando la evaluación de esta condición resulta
verdadera y B es la acción ejecutada cuando el resultado de la evaluación
indica falso. La estructura también tiene una sola entrada y una sola salida; y
las funciones A y B también pueden ser cualquier estructura básica o conjunto
de estructuras.
5. 3-Estructura Repetitiva (Iterativa): También llamada la estructura hacer –
mientras - que, corresponde a la ejecución repetida de una instrucción mientras
que se cumple una determinada condición. El diagrama de flujo para esta
estructura es el siguiente:
Aquí el bloque A se ejecuta repetidamente mientras que la condición C
se cumpla o sea cierta. También tiene una sola entrada y una sola salida;
igualmente A puede ser cualquier estructura básica o conjunto de estructuras
Características De La Programación Estructurada.
Los programas escritos con estos principios tienen no solo una
estructura fácil de leer, sino que además tienen una excelente presentación,
que permite comprender el código con mayor facilidad. La estructuración del
contenido facilita la revisión de la codificación y reduce el tiempo de prueba y
depuración de programas.
*Estructuras de control: Son estructuras que permiten controlar el orden
de ejecución de las instrucciones contenidas dentro de de ellas dependiendo
de condiciones previamente establecidas.
Todos los programas pueden desarrollarse utilizando únicamente con las
tres estructuras de control características de la programación estructurada.
*Secuencia: Se refiere al orden en la que las instrucciones de un
programa son ejecutadas, tal y como se tienen en el programa.
6. Los elementos 1, 2 y 3 pueden ser instrucciones o bloques que indican
que independientemente de su complejidad o tamaño, su ejecución es
realizada en el orden indicado.
*Selección: Es la posibilidad de elegir entre dos instrucciones, donde la
decisión se toma en base a la evaluación de una expresión a la que llamamos
condición.
La imagen indica que si se cumple la condición 1, se avanza al punto 2 y
se llega al punto 4, en caso de no cumplirse la condición 1 entonces se avanza
al punto 3 y así se llega al punto 4.
*Iteración: Es una estructura que se utiliza para repetir alguna instrucción
o grupo de instrucciones siempre que se cumpla una condición.
Si se cumple la condición 1, se avanza al punto 2 y se llega al punto 3
donde se encuentra una nueva condición 3 que si se cumple se regresa a la
condición 1 y si no se cumple, se continúa al punto 4.
*Segmentación: Para favorecer la comprensión del código de los
programas desarrollados, es conveniente establecer segmentos del programa
para que estos no excedan una página de codificación (50 líneas en promedio).
No se trata únicamente de dividir un programa en trozos donde la
longitud sea de 50 líneas; la segmentación debe cumplir con las siguientes
características básicas:
- Las partes se deben relacionar entre sí de forma jerárquica, formando
una estructura de árbol.
- Debe mostrar claramente las relaciones existentes entre las funciones
para permitir comprender lo que debe hacer el programa de forma fácil.
- La comunicación entre los segmentos se debe realizar cuidadosamente
y de forma controlada.
7. La comunicación entre los segmentos se debe realizar a través de una
lista de parámetros, lo cual reduce la oportunidad de se relacionen entre ellos
de forma indeseada o inentendible.
*Identación: Es el espacio o sangría que se asigna a una línea de código
y dependiendo de su longitud, esta indica si una instrucción o grupo de
instrucciones pertenecen a determinado bloque.
Este espacio es importante ya que facilita la lectura del programa
respecto a las relaciones existentes entre las instrucciones y los segmentos.
Orígenes De La Programación Estructurada.
A finales de los años 1970 surgió una nueva forma de programar que no
solamente daba lugar a programas fiables y eficientes, sino que además
estaban escritos de manera que facilitaba su mejor comprensión, no sólo
proveyendo ventajas durante la fase de desarrollo, sino también posibilitando
una más sencilla modificación posterior. 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, éstas pueden ser
construidas mediante las tres básicas citadas.
Historia De La Programación Estructurada.
El teorema del programa estructurado proporciona la base teórica de la
programación estructurada. Señala que tres maneras de combinar programas
son suficientes para expresar cualquier función computable: secuencia,
selección e iteración. Esta observación no se originó con el movimiento de la
programación estructurada.
Estas estructuras son suficientes para describir el ciclo de instrucción de
una unidad central de procesamiento, así como el funcionamiento de una
máquina 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
8. autores usualmente acreditan el resultado a un documento escrito en 1966 por
Böhm y Jacopini, posiblemente porque Dijkstra había citado este escrito. El
teorema del programa estructurado no responde a cómo escribir y analizar un
programa estructurado de manera útil. Estos temas fueron abordados durante
la década de 1960 y principio de los años 1970, con importantes contribuciones
de Dijkstra, Robert W. Floyd, Tony Hoarey y David Gries.
Lenguajes De Programación Estructurada.
Es posible hacer la programación estructurada en cualquier lenguaje de
programación, aunque es preferible usar algo como un lenguaje de
programación procedimental. Algunos de los lenguajes utilizados inicialmente
para programación estructurada incluyen: ALGOL, Pascal, PL/I y Ada – pero la
mayoría de los nuevos lenguajes de programación procedimentales desde
entonces han incluido características para fomentar la programación
estructurada y a veces deliberadamente omiten características en un esfuerzo
para hacer más difícil la programación no estructurada.
Ventajas De La Programación Estructurada.
Con la programación estructurada elaborar programas de computador sigue
siendo un albor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin
embargo, con este nuevo estilo podemos obtener las siguientes ventajas:
1-Los programas son más fáciles de entender. Un programa
estructurado puede ser leído en secuencia, de arriba hacia abajo, sin
necesidad de estar saltando de un sitio a otro en la lógica, lo cual es típico de
otros estilos de programación. La estructura del programa es más clara puesto
que las instrucciones están más ligadas o relacionadas entre sí, por lo que es
más fácil comprender lo que hace cada función.
2-Reducción del esfuerzo en las pruebas. El programa se puede tener
listo para producción normal en un tiempo menor del tradicional; por otro lado,
el seguimiento de las fallas ("debugging") se facilita debido a la lógica más
visible, de tal forma que los errores se pueden detectar y corregir más
fácilmente.
3-Reducción de los costos de mantenimiento.
4-Programas más sencillos y más rápidos
5-Aumento de la productividad del programador
6-Se facilita la utilización de las otras técnicas para el mejoramiento de
la productividad en programación
7-Los programas quedan mejor documentados internamente.
9. Ventajas Potenciales.
Un programa escrito de acuerdo a estos principios no solamente tendrá
una estructura, sino también una excelente presentación.
Un programa escrito de esta forma tiende a ser mucho más fácil de
comprender que programas escritos en otros estilos.
La facilidad de comprensión del contenido de un programa puede
facilitar el chequeo de la codificación y reducir el tiempo de prueba y
depuración de programas. Esto último es cierto parcialmente, debido a que la
programación estructurada concentra los errores en uno de los factores más
generador de fallas en programación: la lógica.
Un programa que es fácil para leer y el cual está compuesto de
segmentos bien definidos tiende a ser simple, rápido y menos expuesto a
mantenimiento. Estos beneficios derivan en parte del hecho que, aunque el
programa tenga una extensión significativa, en documentación tiende siempre a
estar al día, esto no suele suceder con los métodos convencionales de
programación.
La programación estructurada ofrece estos beneficios, pero no se la
debe considerar como una panacea ya que el desarrollo de programas es,
principalmente, una tarea de dedicación, esfuerzo y creatividad.
Programación Estructurada De Bajo Nivel.
En un bajo nivel, los programas estructurados con frecuencia están
compuestos 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 dependiendo
del estado del programa. Esto es usualmente expresado con palabras clave
como if..then..else..endif, switch, o case. En algunos lenguajes las palabras
clave no se pueden escribir textualmente, pero debe ser delimitada (stropped).
*En la "repetición" se ejecuta una sentencia hasta que el programa alcance
un estado determinado, o las operaciones han sido aplicadas a cada elemento
de una colección. Esto es usualmente expresado con palabras clave como
while, repeat, for o do. until. A menudo se recomienda que cada bucle sólo
debe tener un punto de entrada (y en la programación estructural original,
también sólo un punto de salida, y pocos lenguajes refuerzan esto).
10. Diferencias Con La Programación Estructurada Con Otro Tipo De
Programación.
Aunque la programación estructurada condujo a mejoras de la técnica de
programación secuencial, los métodos modernos de diseño de software
orientado a objetos incluyen mejoras entre las que están el uso de los patrones
de diseño, diseño por contrato, y lenguajes de modelado, Las principales
diferencias entre la programación estructurada y la orientada a objetos son:
*La programación orientada a objetos es más moderna, es una evolución
de la programación estructurada que plasma en el diseño de una familia de
lenguajes conceptos que existían previamente con algunos nuevos.
*La programación orientada a objetos se basa en lenguajes que
soportan sintáctica y semánticamente la unión entre los tipos abstractos de
datos y sus operaciones
*La programación orientada a objetos incorpora en su entorno de
ejecución mecanismos tales como el polimorfismo y el envío de mensajes entre
objetos. Erróneamente se le adjudica a la programación estructurada clásica
ciertos problemas como si fueran inherentes a la misma, esos problemas
fueron haciéndose cada vez más graves y antes de la programación orientada
a objetos diversos autores encontraron soluciones basadas en aplicar estrictas
metodologías de trabajo. De esa época son los conceptos de cohesión y
acoplamiento, de esos problemas se destacan los siguientes:
Modelo mental anómalo. Nuestra imagen del mundo se apoya en los
seres, a los que asignamos nombres sustantivos, mientras la programación
clásica se basa en el comportamiento, representado usualmente por verbos.
*Es difícil modificar y extender los programas, pues suele haber datos
compartidos por varios subprogramas, que introducen interacciones ocultas
entre ellos.
*Es difícil mantener los programas. Casi todos los sistemas informáticos
grandes tienen errores ocultos, que no surgen a la luz hasta después de
muchas horas de funcionamiento.
*Es difícil reutilizar los programas. Es prácticamente imposible
aprovechar en una aplicación nueva las subrutinas que se diseñaron para otra.
*Es compleja la coordinación y organización entre programadores para
la creación de aplicaciones de media y gran envergadura.
En la programación orientada a objetos pura no deben utilizarse
llamadas de subrutinas, únicamente mensajes, por ello, a veces recibe el
nombre de programación sin call, igual que la programación estructurada se
llama también programación sin goto, sin embargo, no todos los lenguajes
orientados a objetos prohíben la instrucción call, permitiendo realizar
programación híbrida, imperativa y orientada a objetos a la vez.
11. Teorema De La Estructura.
El teorema de la estructura establece que un programa propio puede ser
escrito utilizando solamente las siguientes estructuras lógicas de control:
secuencia, selección e iteración.
Un programa de define como propio si cumple con los dos
requerimientos siguientes:
a. Tiene exactamente una entrada y una salida para control del programa.
b. Existen caminos que se pueden seguir desde la entrada hasta la salida
que conducen por cada parte del programa, es decir, no existen lazos
infinitos ni instrucciones que no se ejecutan.
Las tres estructuras lógicas de control básicas, se definen de la siguiente
forma:
Secuencia: es simplemente la formalización de la idea de que las
instrucciones de un programa son ejecutadas en el mismo orden en que ellas
aparecen en el programa. En términos de diagrama de flujo la secuencia es
representada por una función después de la otra, como se muestra a
continuación.
A y B pueden ser instrucciones sencillas hasta módulos completos, lo
importante es que sean programas propios, independientemente de su tamaño
o complejidad interna. Ay B deben ser programas propios en el sentido en que
estos fueron definidos, es decir, que posean solamente una entrada y una
salida; la combinación de A seguida por B es también un programa propio, 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 ser tratada como una unidad para propósitos de control.
Selección: Es la escogencia entre dos acciones tomando la decisión en
base al resultado de evaluar un predicado. Esta estructura de control es
denominada usualmente IFTHENELSE. La representación en forma de
diagrama de flujo de esta estructura lógica de control se muestra a
continuación:
F
Donde P es predicado y A y B son las dos funciones.
Iteración: Esta estructura lógica es utilizada para que se repita la
ejecución de un conjunto de instrucciones mientras se cumpla una condición o
predicado. Generalmente a esta estructura se le conoce como DOWHILE
(hacer mientras) y su representación se muestra a continuación:
V
12. F
Donde P es predicado y A es el modulo controlado.
Se debe comprender claramente que un rectángulo, que representa un
modulo en un diagrama, siempre puede ser sustituido por cualquiera de las tres
estructuras de control descritas anteriormente; por ejemplo, veamos el
diagrama siguiente:
En él, la línea punteada limita un rectángulo que contiene una estructura,
que a su vez controla dos módulos X y Y. La estructura limitada por la línea
punteada es sustituida por una función quedando de la siguiente forma:
V
F
Es decir, una función sustituye a una estructura lógica de control o
viceversa.
Otras Estructuras Lógicas De Control.
Aunque todos los programas pueden ser escritos utilizando solamente
las tres estructuras de control descritas anteriormente, es algunas veces,
conveniente utilizar algunas estructuras adicionales; a continuación se hará una
descripción de esas formas lógicas de control diferentes a las ya definidas:
El Dountil: La estructuras de iteración básica es el DOWHILE, pero
existe una estructura que es muy parecida a ella y que a veces es usada,
dependiendo del proceso que se esté tratando de representar y de las
características apropiadas en el lenguaje con el cual se está trabajando, esta
forma de control es la que se llama DOUNTIL, cuya representación gráfica en
forma de diagrama de flujo se muestra a continuación:
V
Donde A es el modulo controlado y P el predicado.
La diferencia entre el DOWHILE y el DOUNTIL es que en el primero el
predicado es probado antes de ejecutar la función, si el predicado es falso la
función no es ejecutada; mientras que en el segundo, el predicado es probado
después de ejecutar la función, o sea, que la función siempre será ejecutada al
menos una vez, independientemente si el predicado es cierto o falso.
La estructura CASE: Algunas veces resulta de gran ayuda, desde el
punto de vista de eficiencias y facilidad de lectura de un programa, tener alguna
forma de expresar una desviación del flujo de control hacia múltiples procesos
en función del resultado de la evaluación de un predicado; usualmente, a la
estructura de control que satisface el requerimiento anterior, se le denomina la
estructura CASE. Por ejemplo, si es necesario ejecutar una de cien rutinas
13. diferentes en función del valor de un código de 2 dígitos, podemos representar
este proceso mediante 100 estructuras IF, sin embargo el sentido común nos
induce a pensar que no hay razón para adherirnos rígidamente a las tres
estructuras básicas de control y en lugar de 100 IF usaríamos la estructura
CASE.
Esta estructura utiliza el valor de una variable para determinar cual, de
varias rutinas, será ejecutada. La representación gráfica de esta estructura de
control se muestra a continuación:
En cada lenguaje será necesario establecer cuáles son las instrucciones
que, en forma conveniente y eficiente, realizan funciones establecidas por las
diferentes estructuras lógicas de control.
Etiquetas E Instrucciones GOTO.
Ocasionalmente se habla de la programación estructurada como una
técnica de programación que no utiliza GOTO (instrucción de desvío del flujo
de control en forma incondicional); si bien es cierto que un programa bien
estructurado tiene, o bien ninguna o muy pocas instrucciones GOTO,
asumiendo que estamos empleando un lenguaje de programación adecuado, la
ausencia de instrucciones GOTO puede ser mal interpretada. Es conveniente
que aclaremos este aspecto en este momento.
Un programa bien estructurado gana una parte importante de su fácil
comprensión del hecho que puede ser leído en forma secuencial sin desvíos en
el flujo de control desde una parte del programa a otra. Esta característica es
consecuencia de usar exclusivamente las estructuras lógicas de control
estándar (el GOTO no es una de ellas), esta secuencialidad o lectura
TOPDOWN es beneficiosa debido a que hay un límite definido para muchos
detalles que la mente humana puede abarcar de una vez. Se hace
relativamente fácil y rápida la comprensión de la tarea que realiza una
instrucción si su función puede ser entendida en términos de unas pocas
instrucciones mas, físicamente contiguas y delimitadas.
El problema con la instrucción GOTO es que generalmente aleja al
programa realizado de los propósitos descritos y en casos extremos puede
hacer que un programa sea esencialmente incomprensible.
No se requieren esfuerzos especiales para eliminar de un programa los
GOTO, los cuales han sido, algunas veces, malentendidos como enemigos de
la programación estructurada, existen buenas y fundadas razones para no
querer usarlos pero no se necesita que se realice un trabajo arduo para
eliminarlo; ellos no aparecerán, en general, cuando se utilicen las estructuras
lógicas de control, descritas anteriormente. Naturalmente, si escogemos para
programar un lenguaje de computación que no posea las estructuras lógicas de
control fundamentales, entonces, tendremos que simularlas y seguramente ello
implicara el uso de la instrucción GOTO; pero este uso puede hacerse en forma
cuidadosamente controlada.
14. Existen situaciones poco comunes en las cuales el uso de GOTO puede
tener ventajas comparado con otras maneras de expresar un proceso; estos
casos son excepcionales y usualmente no ocurren en la programación
realizada diariamente.
Se deben analizar cuidadosamente las consecuencias de emplear el
GOTO, antes de su uso.