28/9/22, 18:42 07.
Estructura de control alternativa - XWiki
(/wiki/mat75555es/view/Main/) / FP (/wiki/mat75555es/view/FP/)
/ 07. Estructura de control alternativa (/wiki/mat75555es/view/FP/Alternativa/)
07. Estructura de control alternativa
Última modificación por editor1 (/bin/view/XWiki/Editor1) el 2018/09/17 10:15
Objetivos TABLA DE CONTENIDOS
Objetivos
Aprender a controlar el flujo Introducción
de ejecución de un programa 1. Estructura alternativa
con estructuras alternativas. 1.1. Ejemplo 07_01
Aprender a construir una 1.2. Ejemplo 07_02
estructura alternativa. 1.3. Ejemplo 07_03
Aprender a utilizar una 2. Codificación de una estructura de control alternativa
estructura alternativa. 2.1. Ejemplo 07_04
Conocer diferentes tipos de 2.2. Ejemplo 07_05
estructuras alternativas. 2.3. Ejemplo 07_06
2.4. Ejemplo 07_07
Introducción Resumen
En esta unidad se presentan las
estructuras de control de flujo alternativas para controlar dinámicamente la ejecución de un programa.
Asimismo se explica que, para conseguirlo, un programa ha de decidir qué bloque de instrucciones
ejecutar dependiendo del resultado de evaluar una expresión lógica.
1. Estructura alternativa
En el diagrama de flujo de abajo se presentan las partes de una estructura alternativa. Las flechas
indican el sentido del flujo de ejecución.
Primero se realiza la consulta sobre el estado actual o condición (rombo verde) y dependiendo del
resultado de la evaluación de la condición (verdadero o falso) hay dos caminos: si la evaluación da
verdadero, se ejecuta el bloque de instrucciones de la izquierda (rectángulo amarillo). De lo contrario, si
da falso, se ejecuta el bloque de instrucciones de la derecha (rectángulo gris).
Cuando acaba la ejecución del bloque de instrucciones de la derecha o de la izquierda, el flujo de
ejecución continúa teniendo un solo camino (rombo azul de fin).
https://xwiki.recursos.uoc.edu/wiki/mat75555es/view/FP/Alternativa/ 1/8
28/9/22, 18:42 07. Estructura de control alternativa - XWiki
A continuación se muestran ejemplos de uso de estructuras alternativas. Para mostrar cómo funcionan se
presenta para cada ejemplo el diagrama de su flujo de ejecución.
1.1. Ejemplo 07_01
Dado un número entero n, indicad si es par. En caso contrario no es necesario hacer nada.
Identificando las partes de la estructura alternativa tenemos el siguiente diagrama de flujo de ejecución:
https://xwiki.recursos.uoc.edu/wiki/mat75555es/view/FP/Alternativa/ 2/8
28/9/22, 18:42 07. Estructura de control alternativa - XWiki
Ya que no está definido qué hacer cuando la condición es falsa, no hace falta colocar bloque de
instrucciones en este caso y se pasa directamente al final de la estructura alternativa.
1.2. Ejemplo 07_02
Dado un sensor de temperatura, si la temperatura t es inferior a 21 grados, se debe encender la
calefacción, en caso contrario, la calefacción debe apagarse.
Identificando las partes de la estructura alternativa tenemos el siguiente diagrama de flujo:
En este ejemplo están definidos ambos caminos, por lo que se colocan bloques de instrucciones en
ambos caminos.
1.3. Ejemplo 07_03
https://xwiki.recursos.uoc.edu/wiki/mat75555es/view/FP/Alternativa/ 3/8
28/9/22, 18:42 07. Estructura de control alternativa - XWiki
Dado el sensor de temperatura del ejemplo anterior, si la temperatura t es inferior a 18 grados, se tiene
que encender la calefacción. Si la temperatura t es superior a 26 grados, se tiene que encender el aire
acondicionado. Si no, se tienen que apagar la calefacción y el aire acondicionado.
Identificando las partes de la estructura alternativa, tenemos el siguiente diagrama de flujo:
En este ejemplo, cuando la condición es falsa, se abren dos alternativas posibles. Por este motivo se
coloca otra vez el rombo indicando una condición. Este tipo de estructura alternativa se
denomina anidada.
2. Codificación de una estructura de control
alternativa
En este apartado se presenta la codificación de una estructura de control alternativa cuando solo hay
instrucciones a ejecutar en un camino, cuando hay bloques de instrucciones en ambos caminos y cuando
se trata de una estructura de control alternativa anidada.
Partes Codificación en lenguaje algorítmico
Consulta sobre el estado actual o condición if estructura condicional then
Qué hacer cuando la condición es Verdadera bloque de instrucciones
Qué hacer cuando la condición es Falsa else
bloque de instrucciones
Marca de fin de estructura alternativa end if
https://xwiki.recursos.uoc.edu/wiki/mat75555es/view/FP/Alternativa/ 4/8
28/9/22, 18:42 07. Estructura de control alternativa - XWiki
2.1. Ejemplo 07_04
A continuación vemos un algoritmo codificado tanto en lenguaje algorítmico como en lenguaje C. Se trata
de un algoritmo para detectar números pares.
algorithm ex4
var
n: integer;
end var
n := readInteger();
if n mod 2 = 0 then
writeString("Es par");
end if
end algorithm
Analizamos la ejecución de la estructura alternativa:
# Línea Código
1 if n mod 2 = 0 then
2 writeString ("Es par");
3 end if
Caso 1: el número n es par.
La línea 1 evalúa a Verdadero, por lo tanto se ejecutan las líneas 2 y 3.
Caso 2: el número no es par.
La línea 1 evalúa a Falso, por lo tanto la línea 2 no se ejecuta (se salta) y continúa la ejecución a partir de
la línea 3.
2.2. Ejemplo 07_05
Suponemos implementadas las acciones switchOnHeating() y switchOffHeating() que se encargan de
hacer todas las operaciones necesarias para encender o apagar la calefacción respectivamente.
algorithm ex5
var
t: real;
end var
t := readReal();
if t < 21 then
switchOnHeating():
else
https://xwiki.recursos.uoc.edu/wiki/mat75555es/view/FP/Alternativa/ 5/8
28/9/22, 18:42 07. Estructura de control alternativa - XWiki
switchOffHeating();
end if
end algorithm
Analizamos la ejecución de la estructura alternativa:
# Línea Código
1 if t < 21 then
2 switchOnHeating();
3 else
4 switchOnHeating();
5 end if
Caso 1: la temperatura es inferior a 21 grados.
La línea 1 evalúa a verdadero, por lo tanto se ejecuta la línea 2. Las líneas 3 y 4 no se ejecutan.
Caso 2: la temperatura es superior o igual a 21 grados.
La línea 1 evalúa a falso, por lo tanto la línea 2 se salta y se ejecuta a partir de la línea 3.
2.3. Ejemplo 07_06
Suponemos implementadas las acciones switchOnHeating(), switchOffHeating() que se encargan de
hacer todas las operaciones necesarias para encender o apagar la calefacción respectivamente y
suponemos implementadas las acciones switchOnAirConditioning(), switchOffAirConditioning() que se
encargan de hacer todas les operaciones necesarias para encender o apagar el aire acondicionado
respectivamente.
algorithm ex6
var
t: real;
end var
t := readReal();
if t < 18 then
switchOnHeating():
else
if t > 26 then
switchOnAirConditioning();
else
switchOffHeating();
switchOffAirConditioning();
end if
end if
end algorithm
https://xwiki.recursos.uoc.edu/wiki/mat75555es/view/FP/Alternativa/ 6/8
28/9/22, 18:42 07. Estructura de control alternativa - XWiki
Analizamos la ejecución de la estructura alternativa:
# Línea Código
1 if t < 18 then
2 switchOnHeating();
3 else
4 if t > 26 then
5 switchOnAirConditioning();
6 else
7 switchOffHeating();
8 switchOffAirConditioning();
9 end if
10 end if
Caso 1: la temperatura es inferior a 18 grados.
La línea 1 evalúa a verdadero, por lo tanto se ejecuta la línea 2. Las líneas 3-9 no se ejecutan.
Caso 2: la temperatura es superior a 26 grados.
La línea 1 evalúa a falso, por lo tanto la línea 2 se salta y se ejecuta a partir de la línea 3. La línea 4
evalúa a verdadero , por lo tanto se ejecutan las líneas 5, 9 y 10.
Caso 3: la temperatura es superior o igual a 18 grados pero inferior o igual 26 grados
La línea 1 evalúa a falso, por lo tanto la línea 2 se salta y la ejecución continúa a partir de la línea 3. La
línea 4 evalúa a falso, por lo tanto la línea 5 se salta y la ejecución continúa a partir de la línea 6.
2.4. Ejemplo 07_07
Finalmente, veamos un ejemplo para compartir un coche. El algoritmo debe decir que si una persona
tiene menos de 18 no puede conducir y, por lo tanto, no se puede compartir el coche. Si es mayor de 18 y
tiene carnet entonces sí que puede conducir. La solución sería la siguiente:
algorithm carShare
var
a: integer;
l: boolean;
end var
writeString("How old are you?");
a := readInteger();
if a < 18 then
writeString("You still can not drive");
else
https://xwiki.recursos.uoc.edu/wiki/mat75555es/view/FP/Alternativa/ 7/8
28/9/22, 18:42 07. Estructura de control alternativa - XWiki
writeString("Do you have driving license?");
l := readBoolean();
if l then
writeString("Nice, we can share the car");
else
writeString("I do. If you want we can go with my car");
end if
end if
end algorithm
Resumen
En esta unidad se ha definido la estructura alternativa. Este tipo de instrucciones son básicas para
controlar el flujo de ejecución de un programa. Se han utilizado diagramas de flujo para mostrar el
funcionamiento de esta estructura de control.
Se han presentado tres ejemplos de estructura alternativa junto con su traducción al lenguaje algorítmico
considerando todos los caminos posibles, tal como sería el flujo de ejecución en cada caso.
Etiquetas: Creado por editor1 (/bin/view/XWiki/Editor1) el 2018/09/17
10:14
No hay comentarios en este documento
https://xwiki.recursos.uoc.edu/wiki/mat75555es/view/FP/Alternativa/ 8/8