INTRODUCCION
La computadora automática debe su derecho a
existir, su utilidad, precisamente a su capacidad de
efectuar vastos cálculos que no pueden realizar los seres humanos. Deseamos que
la computadora efectúe lo que nunca podríamos
hacer nosotros, y la potencia de las maquinas actuales es tal, que inclusive los
cálculos pequeños, por su tamaño, escapan al poder de nuestra imaginación limitada.
Sin
embargo debemos organizar el calculo de manera tal que nuestros limitados
poderes sean suficientes para asegurar que se establecerá el efecto deseado.
Esta organización incluye la composición de los programas.
Los
avances en la tecnología siempre van parejos con progresos
en los lenguajes de programación y con nuevas ayudas
para simplificar el uso del computador, con lo cual un numero mayor de
usuarios se beneficia del. Pero la necesidad de hacer programas para resolver problemas específicos quizás nunca
desaparecerá.
CONCEPTO DE PROGRAMACION ESTRUCTURADA
EL
creciente empleo de los computadores ha conducido a
buscar un abaratamiento del desarrollo des software, paralelo a la reducción del costo del hardware obtenido gracias a los avances tecnológicos. Los
altos costos del mantenimiento de las aplicaciones en producción normal también han urgido la
necesidad de mejorar la productividad del personal de programación.
En la
década del sesenta salieron a la luz publica los principios de lo que más tarde se llamo Programación Estructurada, posteriormente se
libero el conjunto de las llamadas "Técnicas para mejoramiento de la productividad en programación" (en ingles Improved Programming
Technologies, abreviado IPTs), siendo la Programación Estructurada una de ellas.
Los programas computarizados pueden ser escritos
con un alto grado de estructuración, lo cual les permite ser mas
fácilmente comprensibles en actividades tales como pruebas, mantenimiento y modificación de los mismos.
Mediante la programación Estructurada todas las
bifurcaciones de control de un programa se encuentran estandarizadas, de
forma tal que es posible leer la codificación del mismo desde su inicio hasta
su terminación en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lógica establecida por el programador, como es
la situación habitual con codificaciones desarrolladas bajo otras técnicas.
EN
programación Estructurada los programadores deben profundizar mas que lo usual
al procederá realizar el diseño original del programa, pero el resultado final es más fácil
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 sistemática y disciplinada manera de elaboración de programas establecida por la Programación
Estructurada es una programación de alta precisión como nunca antes había sido
lograda. Las pruebas de los programas, desarrollados
utilizando este método, se acoplan mas rápidamente y el
resultado final con programas que pueden ser leídos, mantenidos y modificados
por otros programadores con mucho mayor facilidad.
DEFINICIONES
Programación
Estructurada es una técnica en la cual la estructura de un programa, esto es, la interpelación de sus
partes realiza tan claramente como es posible mediante el uso de tres estructuras lógicas de control:
a.
Secuencia: Sucesión simple de dos o mas operaciones.
b.
Selección: bifurcación condicional de una o mas operaciones.
c.
Interacción: Repetición de una operación mientras se
cumple una condición.
Estos tres
tipos de estructuras lógicas de control pueden ser combinados para producir
programas que manejen cualquier tarea de procesamiento de información.
Un programa estructurado esta compuesto de
segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o
por una pagina o más de codificación. Cada segmento
tiene solamente una entrada y una salida, estos segmentos, asumiendo que no
poseen lazos infinitos y no tienen instrucciones que jamas
se ejecuten, se denominan programas propios. Cuando varios programas propios se
combinan utilizando las tres estructuras básicas de control mencionadas anteriormente, el
resultado es también un programa propio.
La
programación Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier
programa propio (un programa con una entrada y una salida exclusivamente) es
equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente.
Una característica importante en un programa
estructurado es que puede ser leído en secuencia, desde el comienzo hasta el
final sin perder la continuidad de la tarea que cumple el programa, lo
contrario de lo que ocurre con otros estilos de programación. Esto es
importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función
determinada, si todas las instrucciones que influyen en su acción están
físicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una
consecuencia de utilizar solamente tres estructuras de control y de eliminar la
instrucción de desvío de flujo de control, excepto en circunstancias muy
especiales tales como la simulación de una estructura lógica de control en un lenguaje de programación que no la posea.
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 ultimo 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 esta 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.
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 seguibles 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
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 LOGICAS 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 aveces es usada, dependiendo del proceso que se este tratando de representar y
de las características apropiadas en el lenguaje con el cual se esta 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 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 cuales son
las instrucciones que, en forma conveniente y eficiente, realizan funciones establecidas por las diferentes
estructuras lógicas de control.
ETIQUETAS
E INSTRUCCIÓN 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 limite 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.
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.
SEGMENTACION
Para la
comprensión de un programa se haga en forma fácil y rápida es necesario que, al
revisarlo, uno no tenga que hojear una gran cantidad de paginas para entender
cuales el trabajo que realiza. Una regla practica
para lograr estos fines es establecer que cada segmento del programa no exceda,
en longitud, a una pagina de codificación, o sea, alrededor de 50 líneas (el
significado que se asigna al termino segmento, en este trabajo, no tiene
ninguna relación con su significado en relación a las funciones de sistemas operativos o sistemas maneadores de Bases de Datos).
La
segmentación no es solamente particionar un programa
en trozos cuya longitud sea de unas 50 líneas; esta técnica debe cumplir con
ciertas características fundamentales:
a.
La segmentación reflejara la división del programa en
partes que se relacionen entre sí en forma jerárquica, formando una estructura
de árbol. Esta organización puede ser representada
gráficamente por un diagrama de procesos, lo que hace más sencillo comprender
la relación existente entre un segmento y el resto del programa.
Adicionalmente, podemos indicar que, el segmento en la cumbre de la estructura
jerárquica contendrá las funciones de control de mas
alto nivel, mientras que los segmentos inferiores en esta organización contendrán funciones detalladas.
b.
Una segmentación bien diseñada deberá mostrar, claramente,
las relaciones existentes entre las distintas funciones de manera que sea fácil
comprender lo que debe hacer el programa y asegurar que efectivamente lo
realice. Este hecho, garantizara que los cambios que se efectúen a una parte
del programa, durante la programación original o su mantenimiento, no afecten al resto del programa
que no ha sufrido cambios.
c.
En una segmentación bien realizada la comunicación entre segmentos se lleva a
cabo de una manera cuidadosamente controlada. Algunos autores recomiendan que
los segmentos consistan en procedimientos y la única comunicación existente entre ellos sea a través
de una lista de parámetros, esto reduce la oportunidad de que interactuen entre ellos de una manera indeseada e inentendible.
IDENTACION
El uso de
la identacion es importante debido a que, cuando se
es consistente en su utilización, facilita la lectura del programa al mostrar en una
forma gráfica las relaciones existentes entre las distintas instrucciones.
La identacion puede ser de gran beneficio, tal como se muestra
continuación, donde ambos programas realizan la misma función, pero el de la
derecha es más fácil de comprender, verificar y corregir.
DIRECTRICES
PAR IDENTAR
Debe
comprenderse claramente que las líneas siguientes solo pretenden presentar unas
directrices de identacion, sin pretender que estas
sean las únicas reglas a seguir en este proceso, cada centro de procesamiento deberá
establecer sus propias convenciones, sin que sea motivo de preocupación la
diferencia respecto a las sugerencias dadas aquí, lo importante es que se
establezcan unas normas y se cumplan de manera consistente.
Las
siguientes son sugerencias para el desarrollo de una política
de identacion en un centro de procesamiento, la idea
fundamental es ayudar a que el lector de un programa le sea fácil comprender
las relaciones y las funciones existentes en él:
a.
En los lenguajes donde se permite el uso de etiquetas,
estas deben colocarse lo más externas posibles, por ejemplo comenzando en la
columna 2, y deben estar separadas por una línea (siempre que lo permita el lenguaje en uso).
b.
Se obtiene consistencia si todas las instrucciones se
comienzan en una misma columna, por ejemplo en la columna 4 o cualquier otra
ubicada a su derecha.
c.
En los lenguajes en que se hagan declaraciones sobre las variables a utilizar, la información quedara mas claramente
representada si los atributos declarados se alinean en forma vertical.
d.
El uso de lineas en blanco ayuda
a mostrar con mas claridad las relaciones existentes entre distintos ítems
agrupados en las declaraciones
e.
Las instrucciones son mucho mas fáciles de localizar y de
cambiar si no se escribe mas de una instrucción por
línea.
f.
La vision de control de las estructuras
lógicas o de los bloques se clarifica si las instrucciones controladas son
idénticas por alguna cantidad constante. Se sugiere una identacion
de tres espacios.
VENTAJAS
DE LA PROGRAMACION 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 mas
clara puesto que las instrucciones están mas 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 mas 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.
CONCLUSIÓN
El
presente glosario fue desarrollado con el propósito de
que sirviera de apoyo a los estudiantes del área de la computación y de otras áreas que utilicen la computación e informática como herramienta.
BIBLIOGRAFIA
SANDERS, Donal H.,¨ Informática presente y futuro ¨
Editorial McGraw Hill, México.
LOZANO, Letvin R., ¨ Diagramación y programación ¨
Editorial McGraw Hill, México.
NORTON, Peter., ¨ Introducción a la computación ¨
Editorial McGraw Hill, México.
FREEDMAN,
Alan., ¨ Diccionario de computación ¨
Editorial McGraw Hill, Quinta edición,
México.
Trabajo
enviado por: