Sentencias de control - ELAI-UPM

Anuncio
3.1. INTRODUCCIÓN
- Hasta aquí: ejecución secuencial de los programas.
- Aquí vamos a ver:
Lección 3
Sentencias condicionales: if-else y switch-case
Sentencias de control
Sirven para tomar decisiones sobre qué parte del
código se va a ejecutar.
Sentencias
de control
Bucles: while, do-while y for
Sirven para repetir la ejecución de partes del
código.
3-1
3-2
3.2 SENTENCIAS CONDICIONALES
3.2.1 SENTENCIA if else
if (expresión)
sentencia 1;
- Permite tomar una decisión basándose en el resultado booleano de una
expresión.
else
- Sintaxis:
sentencia 2;
if (expresión)
sentencia 1;
Proceso de ejecución:
else
1. Se evalúa la expresión.
sentencia 2;
2. Si es verdadera (distinta de cero) se ejecuta la sentencia 1.
3. Si es falsa (igual a cero), hay dos posibilidades:
ƒ expresión
Expresión numérica, relacional o lógica.
- Si existe la cláusula else:
se ejecuta la sentencia 2.
ƒ sentencias 1 y 2
Sentencias simples o compuestas.
- Si no existe else:
el programa continua después
de la sentencia 1.
- La cláusula else es opcional.
3-3
3-4
ANIDAMIENTO DE SENTENCIAS if else
if (expresión 1)
{
if (expresión 2)
sentencia 1;
else
sentencia 2;
}
else
sentencia 3;
- Sintaxis:
if (expresión 1)
{
if (expresión 2)
sentencia 1;
else
sentencia 2;
}
else
sentencia 3;
ƒ expresiones 1 y 2
Expresiones numéricas, relacionales o lógicas.
ƒ sentencias 1, 2 y 3
Sentencias simples o compuestas.
Proceso de ejecución:
1. Se evalúa la expresión 1.
2. Si es verdadera se ejecuta el bloque if-else anidado como antes.
3. Si es falsa, se ejecuta la sentencia 3.
- Conviene escribir las sentencias anidadas entre llaves para evitar ambigüedad.
- La sentencia anidada también puede ir después de la cláusula else.
3-5
3-6
if (expresión 1)
sentencia 1;
else if (expresión 2)
sentencia 2;
else if (expresión 3)
sentencia 3;
···
else
sentencia n;
CONSTRUCCIÓN else if
- Sintaxis:
if (expresión 1)
sentencia 1;
else if (expresión 2)
sentencia 2;
else if (expresión 3)
sentencia 3;
···
else
sentencia n;
Proceso de ejecución:
1. Se evalúa la expresión 1. Si es verdadera se ejecuta la sentencia 1, si
es falsa se evalúa la expresión 2.
2. Si la expresión 2 es verdadera, se ejecuta la sentencia 2. Si no lo es, se
evalúa la sentencia 3 y así sucesivamente.
3. Si ninguna expresión es verdadera y existe la cláusula else al final, se
ejecuta la sentencia n.
ƒ expresiones 1, 2, .., n-1 Expresiones numéricas, relacionales o lógicas.
ƒ sentencias 1, 2, …, n
4. Cuando una expresión es verdadera se ejecuta la sentencia asociada y
se termina el bloque completo.
Sentencias simples o compuestas.
3-7
3-8
switch (expresión)
{
case expresión-constante 1:
sentencia 1;
case expresión-constante 2:
sentencia 2;
···
default:
sentencia n;
}
3.2.2 SENTENCIA switch case
- Permite tomar una decisión múltiple dependiendo del valor entero de
una expresión.
- Sintaxis:
switch (expresión)
{
case expresión-constante 1:
sentencia 1;
case expresión-constante 2:
sentencia 2;
···
default:
sentencia n;
}
ƒ expresión
Expresión entera.
ƒ expresión-constante 1, 2, .., n-1
Constante o expresión enteras.
ƒ sentencias 1, 2, .., n
Sentencias simples o compuestas.
Proceso de ejecución:
1. Se evalúa la expresión.
2. Se compara su valor con las expresiones-constantes.
3. Cuando una expresión-constante coincide con el valor de expresión,
se ejecutan todas las sentencias desde ese punto hasta el final del
bloque.
4. Si no hay ninguna coincidencia y existe la cláusula default, se ejecuta
la sentencia n.
- La cláusula default es opcional.
3-9
SENTENCIA break
3-10
3.3 BUCLES
- Si durante la ejecución aparece la sentencia break, se termina el bloque
switch-case completo.
3.3.1 BUCLE while
- Aplicación típica:
- Ejecuta una sentencia, simple o compuesta, cero o más veces,
dependiendo del resultado booleano de una expresión.
- Sintaxis:
switch (expresión)
{
case expresión-constante 1:
sentencia 1;
break;
case expresión-constante 2:
sentencia 2;
break;
···
default:
sentencia n;
}
while (expresión)
sentencia;
3-11
ƒ expresión
Expresión numérica, relacional o lógica.
ƒ sentencia
Sentencia simple o compuesta.
3-12
3.3.2 BUCLE do while
- Ejecuta una sentencia, simple o compuesta, una o más veces, dependiendo
del resultado booleano de una expresión.
while (expresión)
sentencia;
- Sintaxis:
do
sentencia;
while (expresión);
Proceso de ejecución:
1. Se evalúa la expresión.
2. Si es verdadera (distinta de cero) se ejecuta la sentencia y se vuelve al
punto 1.
3. Si es falsa (igual a cero), el programa continua su ejecución después
de sentencia.
ƒ sentencia
Sentencia simple o compuesta.
ƒ expresión
Expresión numérica, relacional o lógica.
4. Si la primera vez que se evalúa la expresión es falsa, la sentencia no
se ejecuta ni una sola vez.
3-13
3-14
3.3.3 BUCLE for
do
sentencia;
while (expresión);
- Ejecuta una sentencia, simple o compuesta, un número determinado de
veces (hasta que el resultado booleano de una expresión sea falso).
- Sintaxis:
for ( expresión 1 ; expresión 2 ; expresión 3 )
sentencia;
Proceso de ejecución:
1. Se ejecuta la sentencia y se evalúa la expresión.
2. Si la expresión es verdadera (distinta de cero) se vuelve al punto 1.
3. Si es falsa (igual a cero), el programa continua su ejecución después
de expresión.
4. Si la primera vez que se evalúa la expresión es falsa, la sentencia se
habrá ejecutado una vez.
3-15
ƒ expresión 1
Expresión de inicialización.
Inicia las variables de control del bucle.
ƒ expresión 2
Expresión numérica, relacional o lógica.
Si es falsa se acaba el bucle (si se omite, se considera
siempre verdadera Æ bucle infinito).
ƒ expresión 3
Expresión de progresión del bucle.
Expresiones separadas por comas que evolucionan en
el sentido de que la expresión 2 se convierta en falsa.
ƒ sentencia
Sentencia simple o compuesta.
3-16
3.3.4 BUCLES ANIDADOS
for ( expresión 1 ; expresión 2 ; expresión 3 )
sentencia;
- Se construyen con un bucle dentro de otro.
- Ejemplo:
Proceso de ejecución:
1. Se ejecuta la expresión 1.
#include <stdio.h>
2. Se evalúa la expresión 2.
void main ()
{
int i,j;
3. Si la expresión 2 es verdadera se ejecuta la sentencia, luego la
expresión 3, y se vuelve al punto 2.
4. Si la expresión 2 es falsa se interrumpe el bucle.
for(i=0;i<=1;i++)
for(j=0;j<=1;j++)
printf("%d%d\n", i, j);
expresión 1;
while (expresión 2)
{
sentencia;
expresión3;
}
}
3-17
3.3.5 SENTENCIA break
3-18
- Con for, el control pasa primero a la expresión 3 y luego a la expresión 2
(booleana).
- Cuando se utiliza dentro de un bucle finaliza la ejecución del mismo (si el
bucle está anidado sólo finaliza él, pero no los bucles más externos).
- Sintaxis:
for ( expresión 1 ; expresión 2 ; expresión 3 )
sentencia;
break;
3.3.6 SENTENCIA continue
- Obliga a ejecutar la siguiente iteración del bucle.
- Por tanto, cuando se usa continue, las siguientes construcciones no son
equivalentes :
expresión 1;
while (expresión 2)
for ( expresión 1 ; expresión 2 ; expresión 3 )
{
sentencia;
sentencia;
expresión3;
}
- Sintaxis: continue;
- Con while y do, la expresión (booleana) es ejecutada inmediatamente.
while (expresión)
sentencia;
do
sentencia;
while
(expresión);
3-19
3-20
Descargar