Estructuras de Control
Introducción
Las estructuras de control, son instrucciones que permiten romper la
secuencialidad de la ejecución de un programa; esto significa que una
estructura de control permite que se realicen unas instrucciones y omitir otras,
de acuerdo a la evaluación de una condición.
Ejemplo de estructura simple
Ejemplo de estructura compuesta
Como se observa en la primera figura , los programas son secuenciales, se
ejecutan todas las instrucciones una a continuación de otra; mientras que al
utilizar estructuras de control, segunda figura, ya no necesariamente se
ejecutan todas las instrucciones, sino únicamente las instrucciones de la ruta
seleccionada de acuerdo a una condición evaluada.
Existen 2 tipos de estructuras de control:
1. Selectivas
2. Repetitivas
Las primeras permiten seleccionar un camino a ejecutarse entre dos o más
opciones "por una sola vez"; y las segundas, permiten ejecutar un conjunto
de instrucciones "varias veces" mientras se cumpla una condición.
Al escribir una estructura de control, se deberá tener presente que una correcta
tabulación, permitirá que el programa sea más legible y fácil de comprender.
Los lenguajes de programación, realizan esta tabulación de forma automática,
siempre y cuando se escriban correctamente el inicio y final de cada
estructura.
Sentencias Selectivas
Las estructuras de control Selectivas, permiten "seleccionar" una ruta alterna a
la solución del problema, según el resultado de evaluar una expresión
relacional y/o lógica.
Si se considera un ejemplo de la vida diaria, podría ser semejante a las
decisiones que se toman para realizar acciones específicas:
Si llueve (expresión lógica), llevar paraguas;
Si tengo suficiente dinero (condición relacional), comprar recuerdos; sino No
comprar.
Estas decisiones que se toman diariamente, están reflejadas en programación
como estructuras selectivas.
Existen específicamente dos instrucciones selectivas: If y Switch
Para la representación gráfica de las estructuras selectivas se utiliza la figura
geométrica "rombo" para ingresar la condición que determinará el camino a
seguir.
Para el diseño en Pseudocódigo se utiliza la palabra "Si" y "fin Si". La sintaxis
está detallada en la explicación de cada instrucción.
Para identificar qué instrucciones van en cada sección de la instrucción
selectiva debe preguntarse lo siguiente:
Si la condición es verdadera ¿qué debe hacer el programa?
Todas las respuestas a esta pregunta deben escribirse como instrucciones en
la sección verdadera de la sentencia selectiva.
Ejemplo: Realice un programa que verifique si un número es positivo, en
caso afirmativo imprima el mensaje indicando qué es positivo, y réstele 1, y
obtenga el residuo del número dividido para 2.
Respuesta
En este caso, la condición es: num>0; por lo tanto si es la evaluación es
verdadera, entonces: ¿qué debe hacer el programa?:
Imprimir "positivo"
num = num - 1
residuo = num % 2
Las tres instrucciones deben ir en la sección afirmativa de la sentencia.
De igual manera, para identificar las instrucciones de la sección falsa, debe
preguntarse:
Si la condición es falsa ¿qué debe hacer el programa?
Todas las respuestas a esta pregunta deben escribirse como instrucciones en
la sección falsa de la sentencia selectiva; sin embargo es posible que no deba
realizarse ninguna acción, en cuyo caso la instrucción únicamente tiene parte
verdadera.
RECUERDE: Una instrucción selectiva, puede no tener parte falsa, pero
siempre debe tener una parte verdadera;
If
La Instrucción If, "Si" en pseudocódigo, permite alterar la secuencia
seleccionando entre dos opciones posibles. Esta instrucción puede escribirse
de las siguientes formas:
SI SIMPLE
En esta forma, los pasos o instrucciones que se encuentran dentro se ejecutan
únicamente cuando la evaluación de la condición sea verdadera.
Sintaxis:
Pseudocódigo DFD
si (condición)
paso1
paso2
...
pasoN
finSi
SI COMPLETO (VERDADERO - FALSO)
En esta forma, los pasos o instrucciones que se encuentran entre el inicio y fin
de la estructura, tienen dos secciones:
1. Un conjunto de instrucciones que se ejecutan cuando la evaluación de
la condición sea verdadera
2. Un conjunto e instrucciones que se ejecutan cuando la evaluación de la
condición sea falsa.
Sintaxis:
En Pseudocódigo DFD
si (condición)
paso1
paso2
...
pasoN
finSi
caso contrario
paso1
paso2
...
pasoN
finCasoContrario
SI ANIDADO
Es una modificación del uso de la instrucción "Si", que aprovechando la
característica de anidamiento de las estructuras de control, según la cual es
posible que una estructura se contenga a sí misma como parte de su cuerpo de
instrucciones, permitiendo así elegir entre más de dos opciones.
Sintaxis:
Pseudocódigo DFD
Si (condición)
pasos
caso contrario
si (condición)
pasos
caso contrario
si (condición)
pasos
finSi
finSi
finSi
Como puede observarse en la tabla anterior, esta característica de la
instrucción if, permite decidir entre más de dos posibilidades de respuesta,
siendo posible extenderse tantas como sea necesario. Es necesario aclarar que
tanto la parte verdadera como la parte falsa pueden anidar dentro de sí mismas
otra instrucción de tipo if con o sin su correspondiente caso contrario.
Switch
La Instrucción Switch, es una alternativa a la instrucción if, y se caracteriza
por ofrecer la posibilidad de elegir entre más de dos opciones. En
pseudocódigo, se le conoce de diferentes formas:
1. En caso de
2. Según sea
Pero al igual que en la instrucción if, el camino a seguir depender del valor
que se evalúe. En esta instrucción no existe una condición explícita en su
sintaxis, sin embargo de acuerdo al lenguaje es posible evaluar un caracter o
un número, siendo esta una limitación que impide la escritura directa de
condiciones; por lo que es útil en algunos problemas en los que se requiere
elegir opciones directas. Su sintaxis es la siguiente:
En Pseudocódigo:
Según variable_numerica Hacer
opcion_1:
Escribir "acciones1"
opcion_2:
Escribir "acciones2"
opcion_3:
Escribir "acciones3"
De Otro Modo:
Escribir "accionesSiNoCumpleNinguna"
Fin_SegunSea
En DFD se vería así:
Sentencias Repetitivas
Las estructuras de control repetitivas, son aquellas que permiten ejecutar un
conjunto de instrucciones varias veces, de acuerdo al valor que genere la
expresión relacional y/o lógica. Esto significa que una instrucción repetitiva
permite saltar a una instrucción anterior para volver a ejecutarla.
A las estas estructuras se les conoce también como ciclos o bucles, por su
funcionamiento. Existen 3 estructuras repetitivas:
1. While
2. Do-while
3. For
Las tres instrucciones tienen el mismo fin, y difieren únicamente en su
sintaxis, siendo posible sustituir una solución en la que se utiliza "while", por
una en la que se utiliza "do-while" o "for".
En los diagramas de flujo, un ciclo se representa de la siguiente manera:
En la imagen se puede observar que las líneas de flujo, indican el orden a
seguir y según el valor de la condición, continuará ejectuándose el mismo
conjunto de instrucciones o saldrá del ciclo. Entre las tres instrucciones hay
pequeñas variaciones de representación gráfica que serán detalladas en la
explicación de uso de cada una de ellas.
Las estructuras de control repetitivas utilizan dos tipos de variables:
Contadores y Acumuladores.
While
La instrucción "While", es una estructura de control repetitiva que puede
impedir la ejecución de un conjunto de instrucciones, si la evaluación de la
expresión relacional y/o lógica es falsa. Esto significa que se convierte en
repetitiva únicamente cuando la evaluación de la condición es verdadera.
PSEUDOCÓDIGO
Mientras (expresión_lógica)
secuencia_de_acciones
Fin Mientras
Se lee de la siguiente forma: Mientras la evaluación de la expresión lógica sea
verdadera realice la secuencia de acciones. Esto significa que si la primera
vez, que evalúa la expresión lógica, obtiene un valor "false", entonces la
secuencia de acciones no se realizaría nunca, pero si es verdadera "true"
entonces la secuencia de acciones se realizaría varias veces hasta que el valor
de la expresión lógica sea falso. Al llegar a Fin Mientras siempre volverá
automáticamente a la expresión lógica. Gráficamente se vería así:
DIAGRAMA DE FLUJO DE DATOS
Do-while
La instrucción "do-while", es otra estructura de control repetitiva que se
caracteriza porque ejecuta un conjunto de instrucciones sin realizar
previamente la evaluación de la expresión relacional y/o lógica. Esto significa
utilizando "do-while" la secuencia de acciones se realizará por lo menos una
vez, pese a obtener un valor falso.
PSEUDOCÓDIGO
haga
secuencia_de_acciones
mientras (expresión_lógica)
Se lee de la siguiente forma: Haga la secuencia de acciones mientras la
expresión lógica sea verdadera. Esto significa que la primera vez la secuencia
de acciones se realiza sin haber verificado la expresión lógica. Si luego de
realizar UNA VEZ la secuencia de acciones, se obtiene un resultado
verdadero (true) se repite la secuencia de acciones, y si se obtiene un falso,
continúa con las instrucciones fuera de la estructura repetitiva. Gráficamente
se vería así:
DIAGRAMA DE FLUJO DE DATOS
For
La instrucción "for", es una tercera estructura de control repetitiva, su
principal característica radica en el hecho de que dentro de sÍ misma, constan
la inicialización de variables, así como también las variables de
incremento/decremento, necesarias en un ciclo. En este ciclo la secuencia de
acciones se realiza mientras un valor inicial llega a un valor final.
PSEUDOCÓDIGO
Para variable_numerica<-valor_inicial Hasta valor_final Con Paso paso
Hacer
secuencia_de_acciones
Fin Para
Se lee de la siguiente forma: Para la variable_numérica que empieza en
valor_inicial, hasta que llegue al valor_final, incrementándose o
decrementándose en el valor de "paso" haga la secuencia de acciones.
Gráficamente se vería así:
DIAGRAMA DE FLUJO DE DATOS
PseInt Genérica
En esta instrucción, tanto la sección de inicialización como la de
incremento/decremento son opcionales; esto significa que no es obligatorio
escribirlas en este espacio, porque podrían estar en otros espacios dentro del
conjunto de instrucciones. Esta instrucción admite algunas inicializaciones e
incrementos/decrementos, los cuales deben estar separados por una coma (,).