Sunteți pe pagina 1din 4

Estructuras de Decisin y

Control

Estructuras de control
Las estructuras de control permiten modificar el flujo de ejecucin de las instrucciones
de un programa.
Con las estructuras de control se puede:
De acuerdo a una condicin, ejecutar un grupo u otro de sentencias (If-Then-Else y
Select-Case)
Ejecutar un grupo de sentencias mientras exista una condicin (Do-While)
Ejecutar un grupo de sentencias hasta que exista una condicin (Do-Until)
Ejecutar un grupo de sentencias un nmero determinado de veces (For-Next)
Etc
Todas las estructuras de control tienen un nico punto de entrada y un nico punto de
salida. Las estructuras de control se puede clasificar en: secuenciales, iterativas y de
control avanzadas. Esto es una de las cosas que permite que la programacin se rija por
los principios de la programacin estructurada.
Los lenguajes de programacin modernos tienen estructuras de control similares.
Bsicamente lo que vara entre las estructuras de control de los diferentes lenguajes es
su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura.
Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos
guardados.

4.1 Estructura secuencial


La estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo
que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. Una estructura secuencial se
representa de la siguiente forma:
Inicio
Accion1
Accion2
.
.
AccionN
Fin

- Asignacin: La asignacin consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida
con el nombre de la variable que recibe el valor. La asignacin se puede clasificar de la siguiente forma:

Simples: Consiste en pasar un valor constate a una variable (a=15)


Contador: Consiste en usarla como un verificador del nmero de veces que se realiza un proceso (a=a+1)
Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b)
De trabajo: Donde puede recibir el resultado de una operacin matemtica que involucre muchas variables (a=c+b*2/4).
- Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operacin se representa en
un pseudocodigo como sigue:
Leer a, b
Donde a y b son las variables que recibirn los valores

- Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se
representa en un pseudocodigo como sigue:

Escribe El resultado es:, R


Donde El resultado es: es un mensaje que se desea aparezca y R es una variable que contiene un valor.

4.2 Estructuras de transferencia


Incondicionales
TRANFERENCIA INCONDICIONAL
El salto incondicional es una instruccin de programacin por la cual, el contador de programa toma una valor nuevo, que el programador indica. ste mtodo se
emple en las primeras tcnicas de programacin y en lenguaje mquina.
. :Etiqueta . . GOTO :Etiqueta . Cuando la ejecucin del programa llega a la instruccin GOTO, la siguiente sentencia ejecutada ser la que se encuentre en Etiqueta.
El abuso de esta, aparentemente gil sentencia, da lugar a los que se suele denominar como "cdigo espagueti", porque ese es el aspecto del seguimiento del
programa, un plato de "espagueti", esta es una descalificacin de una aplicacin informtica, equivalente a "chapuza indescifrable".
El salto incondicional no es necesario en un lenguaje de programacin de alto nivel, ya en los aos 60 se dieron cuenta de ello, desarrollndose tcnicas de
programacin que no la utilizaban.
Los compiladores e intrpretes de lenguajes de programacin an la tienen, como recurso de programacin, pero las tcnicas de programacin, como la programacin
estructurada , desaconsejan o prohben su uso.
GOTO
GOTO o GO TO es una instruccin muy comn en los lenguajes de programacin con el objetivo de controlar el flujo del programa. El efecto de su versin ms simple
es transferir sin condiciones la ejecucin del programa a la etiqueta o nmero de lnea especificada. Es una de las operaciones ms primitivas para transpasar el
control de una parte del programa a otra; tal es as que muchos compiladores traducen algunas instrucciones de control como GOTO.
La instruccin se puede encontrar en muchos lenguajes; uno de los primeros lenguajes de alto nivel que lo incluyeron fue el FORTRAN, desarrollado en 1954. Tambin
se lo encuentra en: Algol, COBOL, SNOBOL, BASIC, Lisp, C,C#(C Sharp), C++, Pascal y Perl entre otros, especialmente el lenguaje ensamblador. En este ltimo se lo
puede encontrar como BRA (de branch: ramificar en ingls), JMP o JUMP (saltar o salto en ingls) y es, generalmente, el nico modo de organizar el flujo del
programa.
Existe incluso en lenguajes usados para la enseanza de programacin estructurada, como Pascal. Sin embargo, no est en todos los lenguajes de programacin, en
algunos (como Java) es una palabra reservada y en el pardico lenguaje INTERCAL se utiliza COME FROM (venir de en ingls).
Se pueden encontrar tambin variaciones de la instruccin GOTO. En BASIC, la instruccin ON GOTO puede seleccionar de una lista de diferentes puntos del programa
a los que saltar. Podra ser interpretado como un antecesor de la instruccin switch/case. Tambin, en FORTRAN y algunas versiones de BASIC la lnea a la que saltar
poda ser indicada mediante una expresin aritmtica. Esto ltimo era evitado ya que el cdigo se haca an ms ilegible teniendo en cuenta la necesidad de hacer los
clculos de la expresin de control para saber el destino del flujo del programa.
CONTROVERSIA GENERADA
A diferencia de la llamada a una funcin, no se requiere ningn tipo de preparacin o estructura de cdigo para utilizar un GOTO. Como resultado, es ms sencillo
obtener cdigo inconsistente, incompleto o complicado de mantener. Justamente por ello en los aos 60 y 70, cuando surgi la programacin estructurada, la
comunidad informtica se expres a favor de otras instrucciones de control (if bucles for y do/while) en lugar de GOTO.
Tal creencia est tan arraigada que el GOTO es muy criticado por los dedicados a la enseanza de la programacin, que lo suelen desaconsejar. Por el otro lado,
algunos que si bien admiten el uso de un GOTO como una prctica desaconsejable, reconocen que ste es la mejor opcin para algunas pocas tareas puntuales en
algunos lenguajes de programacin (manejo de excepciones por ejemplo). Adems, por lo general se programan macros o equivalentes para evitar la utilizacin de
GOTO.
Una crtica famosa a la instruccin en cuestin es una carta redactada por Edsger Dijkstra llamada "Go To Statement Considered Harmful" (Instruccin Go To
Considerada Daina). En ella Dijkstra argumenta que el uso irrestricto de GOTO debera ser prohibido en lenguajes de alto nivel ya que dificultan el anlisis y la
verificacin de la correccin de los programas (especialmente aquellos que contienen ciclos). Por el otro lado, Donald Knuth en su libro "Structured Programming with
goto Statements" (Programacin estructurada con instrucciones Goto), tiene en cuenta ciertas situaciones en las que se utilizara GOTO. Por lo general, se trata de
situaciones en las que una estructura de programacin en particular no est disponible y GOTO puede simularla eficientemente.