Tema 6

Anuncio
Tema 6
Control de Flujo
Contenidos
1. Secuencia de Instrucciones.
2. Sentencias Condicionales.
if
switch
3. Estructuras de Repetición.
while
for
do while
( break / continue )
2
1. Secuencia de Instrucciones
Secuencia o Bloque de instrucciones
Conjunto de instrucciones encerrado entre llaves.
{
instrucción1;
instrucción2;
...
instrucciónN;
}
Las instrucciones se ejecutan en orden secuencial.
3
2. Sentencias Condicionales
Instrucciones de control, selección o alternativas
Instrucciones que evalúan una expresión y en función del
resultado de la misma se ejecuta un bloque de instrucciones
u otro.
if
Para ejecutar unas instrucciones sólo si se da una determinada
condición.
Opcionalmente se pueden ejecutar otras instrucciones en caso de que
la condición no se cumpla.
switch
Para ejecutar grupos de instrucciones diferentes en función del
resultado de una expresión.
4
if
if (condición) instrucción;
En su versión más simple, la sentencia if ejecutará la
instrucción sólo cuando condición sea verdadera.
if (condición) instrucción;
else instrucción2;
También se puede incluir (con el else) una instrucción2
que se ejecutará cuando condición sea falsa.
if (condición1) instrucción1;
else if (condición2) instrucción2;
else if (condición3) instrucción3;
else instrucción4;
Pueden encadenarse tantos if como hagan falta.
5
if (II)
if (condición1) {
instrucciones1;
} else if (condición2) {
instrucciones2;
} else if (condición3) {
instrucciones3;
} else {
instrucciones4;
}
Donde se indica una instrucción, puede ponerse un bloque de instrucciones
(entre llaves).
Es conveniente usar las llaves para evitar ambigüedades:
if (c1) if (c2) i1; else i2;
es diferente de
if (c1) {if (c2) i1;} else i2;
Sin llaves, cada else pertenece al if anterior más cercano.
6
if (III)
if (condición1) {
if (condición2) {
instrucciones_1_2;
} else {
instrucciones_1_no2;
}
} else {
if (condición2) {
instrucciones_no1_2;
} else {
instrucciones_no1_no2;
}
}
Se pueden anidar (poner if dentro de if).
Ejercicio: Código en C para guardar en la variable m el máximo de a y b.
7
switch
switch (expresión) {
case constante1:
instrucciones1;
break;
case constante2:
instrucciones2;
break;
default:
instrucciones3;
}
En función del valor de expresión (que debe ser entero o carácter) se
ejecutará el case correspondiente y seguirá hasta encontrar un break.
Las constantes también deben ser de tipo entero (o carácter).
Si el valor de expresión no coincide con la constante de ningún case, se
entrará en la opción default (si aparece, ya que no es obligatoria).
8
switch (II)
Ejercicio: Mostrar la salida del siguiente código en función de si la variable a
vale 1, 2, 3 ó 4. Nótese la importancia del break comentado.
switch (a) {
case 1:
printf("a vale uno\n");
/* break; */
case 2:
case 3:
printf("a vale dos o tres\n");
break;
default:
printf("Ninguna de las anteriores\n");
}
Ejercicio: Desarrollar código en C que muestre por pantalla el mensaje
HOMBRE o MUJER en función del valor de la variable c (h, H, m o M).
9
3. Estructuras de Repetición
Instrucciones de repetición (bucles)
Repiten un conjunto de instrucciones múltiples veces.
En C se repetirán las instrucciones mientras se cumpla una
determinada condición.
Se distinguen dos tipos:
Las que comprueban la condición antes de ejecutar el cuerpo del bucle:
while y for
Si la condición no se cumple la primera vez, las instrucciones del bucle no se
ejecutan ni siquiera una vez.
Las que comprueban la condición después de ejecutar el cuerpo del bucle:
do while
Las instrucciones dentro del bucle se ejecutan siempre por lo menos una
vez, ya que la condición se comprueba después.
10
while
while (condición) instrucción;
o
while (condición) {
instrucciones;
}
“Mientras se cumpla la condición, ejecutar la instrucción
o instrucciones”. Luego, se continúa con el programa.
Si la condición es falsa la primera vez, las instrucciones del
bucle no llegan a ejecutarse.
Es importante que dentro del bucle se haga falsa la condición
en algún momento (tras unas cuantas iteraciones). Si no, se
producirá un “bucle infinito”. (Ídem para for y do while)
En un bucle infinito el ordenador se queda “colgado” ya que nunca sale del bucle.
Ejercicio: Código en C para escribir los números del 1 al 10.
11
for
for (expresión1;condición;expresión2) {
instrucciones; /* No hacen falta llaves si
sólo hay una instrucción */
}
“Ejecutar expresión1 y luego: Mientras se cumpla la
condición, ejecutar las instrucciones seguidas de
expresión2”.
Si la condición es falsa la primera vez, las instrucciones del
bucle no llegan a ejecutarse.
Normalmente:
expresión1: Inicialización de la “variable de control del bucle”.
condición: Expresión que utiliza la “variable de control del bucle”.
expresión2: Modificación de la “variable de control del bucle” (típicamente
incremento o decremento).
Ejercicio: Código en C para escribir los números del 1 al 10.
12
do while
do {
instrucciones; /* No hacen falta llaves si
sólo hay una instrucción */
} while (condición);
“Ejecutar instrucciones y volver a ejecutarlas una y otra
vez mientras se cumpla la condición”.
La primera vez las instrucciones del bucle siempre se ejecutan,
independientemente del valor de la condición.
Ejercicio: Código en C para leer de teclado un número entero
del 1 al 10 verificando que la entrada es correcta.
13
while / for / do while
while(cond)
inst;
for(e1;cond;e2)
inst;
do inst;
while(cond);
e1
cond
V
inst
F
cond
V
inst
inst
F
V
cond
F
e2
14
break / continue
break;
En la sentencia switch, el break cortaba la ejecución de los
siguientes case.
Dentro de un bucle, la sentencia break hace que se salga
inmediatamente del bucle, sin ejecutar más instrucciones del
bucle.
continue;
Esta sentencia hace que se pase directamente a evaluar la
condición del bucle, saltándose las instrucciones intermedias.
Luego se seguirá o no dentro del bucle en función de si se
sigue cumpliendo la condición o no.
15
Descargar