12.Composicion alternativa documentaicon PDF

Title 12.Composicion alternativa documentaicon
Author Santi Fernandez Iznajar
Course Fundamentos de Programacion
Institution Universitat Oberta de Catalunya
Pages 11
File Size 218.6 KB
File Type PDF
Total Downloads 79
Total Views 152

Summary

12.Composicion alternativa documentaicon preparacion para PS....


Description

07. Estructura de control alternativa

UOC

-2-

07. Estructura de control alternativa

Tabla de contenidos 07. Estructura de control alternativa ...................................................................................................................... 3 Objetivos ................................................................................................................................................................ 3 Introducción ............................................................................................................................................................ 3 1. Estructura alternativa ......................................................................................................................................... 3 1.1. Ejemplo 07_01 ............................................................................................................................................. 4 1.2. Ejemplo 07_02 ............................................................................................................................................. 5 1.3. Ejemplo 07_03 ............................................................................................................................................. 6 2. Codificación de una estructura de control alternativa ........................................................................................ 7 2.1. Ejemplo 07_04 ............................................................................................................................................. 8 2.2. Ejemplo 07_05 ............................................................................................................................................. 8 2.3. Ejemplo 07_06 ............................................................................................................................................. 9 2.4. Ejemplo 07_07 ........................................................................................................................................... 10

UOC

-3-

07. Estructura de control alternativa

07. Estructura de control alternativa TABLA DE CONTENIDOS • Objetivos • Introducción • 1. Estructura alternativa • 1.1. Ejemplo 07_01 • 1.2. Ejemplo 07_02 • 1.3. Ejemplo 07_03 • 2. Codificación de una estructura de control alternativa • 2.1. Ejemplo 07_04 • 2.2. Ejemplo 07_05 • 2.3. Ejemplo 07_06 • 2.4. Ejemplo 07_07 • Resumen

Objetivos • • • •

Aprender a controlar el flujo de ejecución de un programa con estructuras alternativas. Aprender a construir una estructura alternativa. Aprender a utilizar una estructura alternativa. Conocer diferentes tipos de estructuras alternativas.

Introducción 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).

UOC

07. Estructura de control alternativa

-4-

verdadero

falso

Consulta sobre la condición

Bloque de instrucciones a ejecutar cuando la condición es verdadera

Bloque de instrucciones a ejecuta cuando la condición es falsa

Fin

Es aquella instrucción que nos permite consultar sobre el estado actual del entorno para poder Consulta sobre el estado reaccionar en función del valor obtenido. La consulta sobre el estado actual tendrá como respue valor lógico (verdadero o falso), pudiendo de esta forma tomar una decisión entre dos caminos actual o condición distintos. Qué hacer cuando la condición es verdadera

Conjunto cualquiera de instrucciones que se ejecutarán solo en caso que el resultado de la eva de la condición sea verdadero.

Qué hacer cuando la condición es falsa (opcional)

Conjunto cualquiera de instrucciones que se ejecutarán solo en caso que el resultado de la eva de la condición sea falso. Esta parte es opcional: no es obligatorio tener definido qué hacer cua condición es falsa.

Fin

Continua la ejecución del resto del programa.

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:

UOC

07. Estructura de control alternativa

-5-

verdadero

El número n es par?

falso

Escribir el mensaje: “Es par”

Fin

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:

UOC

07. Estructura de control alternativa

-6-

verdadero

falso

¿La temperatura es inferior a 21°C?

Encender la calefacción

Apagar la calefacción

Fin

En este ejemplo están definidos ambos caminos, por lo que se colocan bloques de instrucciones en ambos caminos.

1.3. Ejemplo 07_03 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:

UOC

07. Estructura de control alternativa

-7-

verdadero

falso

¿La temperatura es inferior a 18°C? verdadero

Encender la calefacción

falso

¿La temperatura es superior a 26°C?

Apagar la calefacción y apagar el aire acondicionado

Encender el aire acondicionado

Fin Fin

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

UOC

07. Estructura de control alternativa

-8-

bloque de instrucciones Marca de fin de estructura alternativa

end if

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. • Algoritmo • C algorithm ex4 var n: integer; end var n := readInteger(); ifn mod 2 = 0 then writeString("Es par"); end if end algorithm #include int main(int argc, char** argv) { int n; scanf("%d", &n); if (n%2 == 0) { printf("Es par"); } return 0; } 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. • Algoritmo • C algorithm ex5 var t: real; end var t := readReal(); if t < 21 then

UOC

07. Estructura de control alternativa

-9-

switchOnHeating(): else switchOffHeating(); end if end algorithm #include int main(int argc, char** argv) { float t; scanf("%f", &t); if (t < 21) { switchOnHeating(); } else { switchOffHeating(); } return 0; } Analizamos la ejecución de la estructura alternativa: # Línea

Código

1

if t < 21 then

2

switchOnHeating();

3

else

4

switchOffHeating();

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. • Algoritmo • C 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

UOC

07. Estructura de control alternativa

- 10 -

end algorithm #include int main(int argc, char** argv) { float t; scanf("%f", &t); if (t < 18) {  switchOnHeating(); } else {  if (t > 26) { switchOnAirConditioning(); } else { switchOffHeating(); switchOffAirConditioning(); } } return 0; } 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: • Algoritmo • C algorithm carPooling var age: integer; hasDrivingLicense: boolean;

UOC

- 11 -

07. Estructura de control alternativa

end var writeString("How old are you?"); age := readInteger(); if age < 18 then writeString("You still cannot drive"); else writeString("Do you have a driving licence?"); hasDrivingLicense := readBoolean(); if hasDrivingLicense then writeString("Nice, we can share the car"); else writeString("I do. If you want we can use my car"); end if end if end algorithm #include #include int main(int argc, char **argv) { int age; bool hasDrivingLicense; int aux; printf("How old are you?\n"); scanf("%d", &age); if (age < 18){ printf("You still cannot drive\n"); } else { printf("Do you have driving licence?\n"); scanf("%d", &aux); hasDrivingLicense = aux; if (hasDrivingLicense) { printf("Nice, we can share the car\n"); } else { printf("I do. If you want we can use my car\n"); } } return 0; }

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....


Similar Free PDFs