Introducción a la Programación en C
–Control de Flujo–
Christopher Expósito-Izquierdo
cexposit@[Link]
Airam Expósito-Márquez
aexposim@[Link]
Israel López-Plata
ilopezpl@[Link]
Belén Melián-Batista
mbmelian@[Link]
José Marcos Moreno-Vega
jmmoreno@[Link]
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Contenidos
1 Introducción a las Sentencias de Control de Flujo
2 Sentencia If
3 Sentencia switch
4 Introducción a los Bucles
for
while
do-while
5 Sentencias break y continue
6 Errores Habituales
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Introducción a las Sentencias de Control de Flujo:
Flujo de Ejecución
Indica el orden en que se ejecutan las sentencias en un programa
Hasta ahora las sentencias se ejecutaban en el orden en que venı́an definidas
en el código fuente. Esto plantea ciertos problemas:
Existen contextos en que queremos que se ejecute un conjunto de
sentencias únicamente si se cumple una determinada condición
Es tedioso ejecutar sentencias que se repiten una y otra vez
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Introducción a las Sentencias de Control de Flujo:
Sentencia 1
int a = 4; Sentencia 2
double b = 7.87;
char c = ’x’; Sentencia 3
...
a = a * 9; ...
Sentencia N
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencia If:
Una sentencia condicional se define tal como sigue:
if (expresión) {
secuencia de sentencias 1
} else {
secuencia de sentencias 2
}
La sentencia condicional tiene el siguiente comportamiento:
Si expresión es un valor distinto de 0 se ejecuta secuencia de
sentencias 1
Si expresión es 0 se ejecuta secuencia de sentencias 2
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencia If:
int a = ...;
int b = ...; expresión
no
if (a > b) { sı́
printf("a es mayor que b");
Sentencias 1 Sentencias 2
} else {
printf("a no es mayor que b");
}
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencia switch:
La sentencia switch permite decidir qué secuencia de código se va a
ejecutar a continuación. Ésta se define tal como sigue:
switch (expresión) {
case expresión 1:
secuencia de sentencias 1
break;
...
case expresión N:
secuencia de sentencias N
break;
default:
secuencia de sentencias por defecto
}
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencia switch:
La sentencia switch tiene el siguiente comportamiento:
Primeramente se evalúa la expresión del switch. Ésta debe dar como
resultado un valor entero o un carácter
Después el programa empezará a ejecutar a partir de la sentencia case
cuya expresión coincida con el resultado obtenido de la expresión del
switch. Se ejecutarán todas las sentencias que haya a continuación
hasta encontrar una sentencia break o se llegue al final de la sentencia
switch completa. Si en el camino se encuentran más sentencias case,
éstas serán ignoradas
Si no se encuentra ninguna sentencia case cuya expresión coincida con
el resultado del switch, pueden ocurrir dos cosas:
Que no exista una sentencia default, en cuyo caso finalizará la sentencia
switch
Que exista una sentencia default, en cuyo caso se ejecutarán todas las
sentencias que haya a continuación hasta encontrar una sentencia break,
o se llegue al final de la sentencia switch completa
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencia switch:
expresión
expresión 1 expresión 2 ... expresión N
Sentencias 1 Sentencias 2 ... Sentencias N
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencia switch:
#include <stdio.h>
void main(void) {
int input = ...;
switch (input) {
case 0:
printf(”El valor introducido es 0”);
break;
case 1:
case 20:
printf(”El valor introducido es 1 o 20”);
break;
case 3:
printf(”El valor introducido es 3”);
break;
default:
printf(”El valor introducido no es 0, 1, 3 o 20”);
}
}
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencia switch:
enum TipoMes {enero, febrero,...}
typedef enum TipoMes Mes;
void main(void) {
Mes mes = ...;
int dias;
switch (mes) {
case abril:
case junio:
case septiembre:
case noviembre:
dias = 30;
break;
case febrero:
dias = 28;
break;
default:
dias = 31;
}
}
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
for
Sentencia switch
while
Introducción a los Bucles
do-while
Sentencias break y continue
Errores Habituales
Introducción a los Bucles:
Un bucle permite la repetición controlada de un conjunto de sentencias
A cada repetición se le conoce con el nombre de iteración
Los bucles son ampliamente empleados en todos los lenguajes de
programación
Utilidades:
Repetir algo un número determinado de veces
Recorrer estructuras de datos (e.g., arrays)
Repetir una secuencia de sentencias mientras se cumpla una condición
...
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
for
Sentencia switch
while
Introducción a los Bucles
do-while
Sentencias break y continue
Errores Habituales
Introducción a los Bucles: for
Un bucle for se define tal como sigue:
for (expresión1; expresión2; expresión3) {
secuencia de sentencias
}
El funcionamiento del bucle for es como sigue:
La primera vez que se ejecuta la sentencia for:
Se ejecuta expresión1
Se evalúa expresión2 y se compara el resultado:
Si el resultado es verdadero se ejecuta la secuencia de sentencias y se
vuelve a empezar la sentencia completa
Si el resultado es falso, finaliza la ejecución de la sentencia
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
for
Sentencia switch
while
Introducción a los Bucles
do-while
Sentencias break y continue
Errores Habituales
Introducción a los Bucles: for
Un bucle for se define tal como sigue:
for (expresión1; expresión2; expresión3) {
secuencia de sentencias
}
El funcionamiento del bucle for es como sigue:
La segunda y sucesivas veces que se ejecuta la sentencia for:
Se ejecuta expresión3
Se evalúa expresión2 y se compara el resultado:
Si el resultado es verdadero se ejecuta la secuencia de sentencias y se
vuelve a empezar la sentencia completa
Si el resultado es falso, finaliza la ejecución de la sentencia
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
for
Sentencia switch
while
Introducción a los Bucles
do-while
Sentencias break y continue
Errores Habituales
Introducción a los Bucles: for
expresión 1
expresión 2
int i;
sı́
for (i = 0; i < 10; i++) { Sentencias
printf("Iteracion %d", i); no
}
expresión 3
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
for
Sentencia switch
while
Introducción a los Bucles
do-while
Sentencias break y continue
Errores Habituales
Introducción a los Bucles: for
#define ROWS 5
#define COLUMNS 10
expresión 1
...
int matrix[ROWS][COLUMNS] = ...; expresión 2
int i; sı́
int j; Sentencias
no
for (i = 0; i < ROWS; i++) {
printf(”Row %d:”, i); expresión 3
for (j = 0; j < COLUMNS; j++) {
printf(”\t %d”, matrix[i][j]);
}
printf(”\n”);
}
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
for
Sentencia switch
while
Introducción a los Bucles
do-while
Sentencias break y continue
Errores Habituales
Introducción a los Bucles: while
Un bucle while se define tal como sigue:
while (expresión) {
secuencia de sentencias
}
El funcionamiento del bucle while es como sigue:
Mientras expresión sea un valor verdadero (valor distinto de 0), se
ejecuta secuencia de sentencias
En cada iteración se evalua expresión
Si expresión devuelve un valor falso (valor igual a 0), se finaliza la
ejecución del bucle
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
for
Sentencia switch
while
Introducción a los Bucles
do-while
Sentencias break y continue
Errores Habituales
Introducción a los Bucles: while
expresión
int contador = 10;
int i = 0;
sı́
while (i < contador) { Sentencias no
printf("Iteracion %d", i);
i = i + 1;
}
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
for
Sentencia switch
while
Introducción a los Bucles
do-while
Sentencias break y continue
Errores Habituales
Introducción a los Bucles: do-while
Un bucle do-while se define tal como sigue:
do {
secuencia de sentencias
} while (expresion);
El funcionamiento del bucle do-while es como sigue:
Se ejecuta la secuencia de sentencias
Se ejecuta expresión y se comprueba el resultado. Si es verdadero se
repite la ejecución de la secuencia de sentencias. Si es falso, finaliza
dicha ejecución
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
for
Sentencia switch
while
Introducción a los Bucles
do-while
Sentencias break y continue
Errores Habituales
Introducción a los Bucles: do-while
int suma = 0;
int i = 0;
Sentencias
do {
suma = suma + i; sı́
i = i + 1;
expresión
} while (i < 10);
no
printf("Suma %d: ", suma);
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencias break y continue:
La sentencia break afecta a las sentencias switch, while, for y do-while
de la forma siguiente:
Si aparece una sentencia break dentro de la secuencia de sentencias de
cualquiera de las anteriores, dicha sentencia termina inmediatamente
Si aparece en el interior de un bucle anidado sólo finaliza la sentencia
de iteración más interna, el resto se ejecuta de forma normal
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencias break y continue:
La sentencia continue afecta a las sentencias while, for y do-while de la
forma siguiente:
Si aparece una sentencia continue dentro de una secuencia de
sentencias de las anteriores, dicha sentencia da por terminada la
iteración actual y se ejecuta una nueva iteración, evaluando de nuevo la
expresión condicional del bucle
Si aparece en el interior de un bucle anidado sólo afecta a la sentencia
de iteración más interna, el resto se ejecuta de forma normal
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Sentencias break y continue:
int contador = 10;
int i = 0;
expresión
while (i < contador) {
sı́
if (i == 5) {
i = i + 1; Sentencias
continue
continue; break no
}
printf("Iteracion %d", i);
if (i == 7) {
break;
}
i = i + 1;
}
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Errores Habituales:
No utilizar secuencias delimitadas entre llaves
Incluir un ; junto a la sentencia de control
Confusiones entre asignación y comparación de igualdad. Si se
escribe if (contador = 0), se está asignando 0 a contador, no se está
haciendo una comparación sino una asignación
Bucles infinitos. A veces no se controla bien la condición de control y
se ejecuta un bucle infinito. Por ejemplo si se escribe:
int contador = 0;
int valor = 2;
while (contador < 20) {
contador = contador * 2;
valor = valor * 2;
}
Introducción a la Programación en C
Introducción a las Sentencias de Control de Flujo
Sentencia If
Sentencia switch
Introducción a los Bucles
Sentencias break y continue
Errores Habituales
Introducción a la Programación en C
–Control de Flujo–
Christopher Expósito-Izquierdo
cexposit@[Link]
Airam Expósito-Márquez
aexposim@[Link]
Israel López-Plata
ilopezpl@[Link]
Belén Melián-Batista
mbmelian@[Link]
José Marcos Moreno-Vega
jmmoreno@[Link]
Introducción a la Programación en C