Control de flujo de un algoritmo¶
Autora: M. Nayeli Luis-Vargas
Objetivo
Entender que todos los algoritmos tienen un control de flujo.
Comprender los tipos de control de flujo que existen y las estructuras de control de cada tipo.
Secuencial¶
Control de flujo se refiere a la forma en la que nuestra computadora va a ir leyendo y ejecutando las instrucciones que le damos. El control de flujo secuencial es el más básico, implica que no se debe tomar alguna decisión. Simplemente las instrucciones se van ejecutando una tras otra hasta que el algoritmo llega a su fin.
Por ejemplo:
Algoritmo hola_nombre
Definir nombre como Caracter
Escribir "Escribe tu nombre:"
Leer nombre
Escribir "Hola " nombre
FinAlgoritmo
En el algoritmo anterior, la computadora no tuvo que que tomar alguna decisión o considerar algo para poder ejecutar el programa. Ejecutó una instrucción tras otra hasta que se terminaron las instrucciones, esto puede verse con claridad en el diagrama de flujo:
Selectivo¶
Sin embargo, existen programas en donde si se tiene que hacer una evaluación antes de ejecutar alguna instrucción, a este tipo de control de flujo se le llama selectivo. Aquí el proceso deja de ser lineal, y se tornoa en un proceso de toma de decisiones, y para que el programa pueda tomar decisiones entonces utilizamos estructuras de control de flujo.
If-Else (Si-Sino)¶
En el algoritmo del capítulo anterior utilizamos ésta estructura de control, en donde el programa tuvo que tomar una decisión. ¿Qué decidió? Si el número que ingresamos era mayor a 1 o no lo era, y en función de eso imprimió cierta instrucción.
Algoritmo numero_mayor_uno
Definir x como Entero
Escribir 'Escribe un número:'
Leer x
Si x>1 Entonces
Escribir 'El número es mayor a 1.'
SiNo
Escribir 'El número es menor a 1.'
FinSi
FinAlgoritmo
En un diagrama de flujo de un algoritmo selectivo podemos ver una bifurcación, en donde el programa tiene que contestar a una pregunta, en éste caso ¿x es mayor a 1?. En función de esa pregunta va a tomar una decisión y a ejecutar una u otra instrucción (ver Diagrama de flujo de un algoritmo selectivo tipo if-else simple.).
De manera que el esqueleto general de la estructura if-else es:
Si (condicion) Entonces
instruccion 1
instruccion 2
SiNo
instruccion 1
FinSi
Algunas veces, es posible que no se requiera que se ejecuten instrucciones cuando la condición sea falsa , así que podemos prescindir de esa zona:
Si (condicion) Entonces
instruccion 1
instruccion 2
FinSi
If-Else anidado¶
La estructura de decisión if-else se puede usar cuantas veces sean necesarias en un algoritmo, incluso dentro de otra estructura de decisión.
Por ejemplo: Escribiremos un algoritmo que va a determinar un mensaje según la calificación obtenida.
Algoritmo calificacion
Definir cali Como Real
Escribir "Ingrese su calificación final:"
Leer cali
Imprimir "Su nota es: " cali
Si cali < 5 Entonces
Imprimir "Su nota es insuficiente."
SiNo
Si cali == 6 Entonces
Imprimir "Su nota es suficiente."
SiNo
Si cali > 7 Entonces
Imprimir "Su nota es sobresaliente."
FinSi
FinSi
FinSi
FinAlgoritmo
En este caso, el algoritmo se tiene que hacer varias preguntas, no solo una. Y de igual manera, en función de esas preguntas va a tomar una decisión. Para el algoritmo anterior, la pregunta uno sería: ¿La calificación es menor a 5?, en caso se ser cierto, el algoritmo tiene la instrucción de imprimir un mensaje, por el contrario, si la calificación es mayor a 5, entonces se hará otra pregunta: ¿La calificación es igual a 6?. Si ésta segunda pregunta es cierta, entonces se imprime otro mensaje pero en caso de que la respuesta sea falsa, entonces se hará una última pregunta: ¿La calificación es mayor a 9?, y si es cierto, el programa imprimirá otro mensaje. El diagrama de flujo del éste algoritmo se verá de la siguiente forma:
Switch¶
Ésta estructura de control de utiliza en caso de tener varias opciones, aquí el algoritmo va a escoger de entre una lista de opciones dadas, como si fuera un menú, de manera que la pregunta del algoritmo es: ¿El dato ingresado está dentro de mi menú?, si es así, entonces se lleva a cabo la instrucción dada para esa opción. Ejemplo:
Algoritmo elige_numero
Definir num Como Entero
Escribir "Elige un número del 1 al 4:"
Leer num
Segun num
Caso 1: Imprimir "Has elegido el 1."
Caso 2: Imprimir "Has elegido el 2."
Caso 3: Imprimir "Has elegido el 3."
Caso 4: Imprimir "Has elegido el 4."
FinSegun
FinAlgoritmo
El diagrama de flujo para el algoritmo anterior se ve de la siguiente forma:
Y por último, la estructura general de la estructura switch sería:
Segun variable
Caso valor1: Instruccion 1
Instruccion 2
...
FinCaso
Caso valor2: Instruccion 1
Instruccion 2
...
FinCaso
FinSegun
Ejercicios (opcional)
Desarrolla un algoritmo en pseudocódigo para un programa que determine si un número es primo.
Pista: ¿Cuál es la característica de los números primos?