You are on page 1of 7

Las sentencias de control dividen el flujo del programa en varios, dependiendo de

una condición y se ejecuta el que corresponda. Hay tres tipos de sentencia


condicional: if, else y switch.

Condicional if:

f en inglés significa si (condicional, no sí de afirmación) y la estructura es la


siguiente:

1 if (condición)
2 {
3
4 lo que se ejecuta si se cumple la condición
5 }
Entre paréntesis va la condición que se expresa con operadores y comparadores
que vimos en la entrega anterior. Por ejemplo, vamos a hacer un programa que crea
dos variables de tipo “int”, deja que el usuario meta un número en cada una y luego
dice cuál es mayor.

1
2 #include <sdtio.h>
3 #include <stdlib.h>
4
5 int main(){
6
7 int numero1;
int numero2;
8
printf("Introduce un número: ");
9
scanf("%i", &numero1);
10
printf("\nIntroduce otro número: ");
11 scanf("%i", &numero2); printf("\n");
12
13 if (numero1 > numero2)
14 {
15 printf("El primer número es mayor que el segundo\n");
16 }
17 return 0;
18 }
Hasta el if deberías entender todo perfectamente, si no, repasa las entregas
anteriores sobre variables e introducción (input) de datos. El if también es muy
simple, si se cumple la condición se ejecuta lo que haya entre “{” y “}”. Si el primer
número introducido es mayor que el segundo mostrará el mensaje del printf, si no el
programa se acabrá sin mostrar nada.

¿Cómo podríamos hacer para que en el caso de que no se cumpla también nos
muestre un mensaje? Esto lo hacemos con else y else if, else en inglés es “si no”, de
modo que la utilidad de else queda bastante evidente.

Condicional Else

Un else después de un if significa: si la condición del if no se ha cumplido, entonces


ejecuta esto:

1
if (condición)
2 {
3 lo que se ejecuta si se cumple la condición
4 }
5 else
6 {
7 lo que se ejecuta si no se cumple la condición
8 }
Vamos a coger el programa anterior y haremos que si no se cumple muestre el
mensaje contrario.

1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main()
5 {
6 int numero1;
7 int numero2;
8 printf("Introduce un número: ");
9 scanf("%i", &numero1);
10 printf("\nIntroduce otro número: ");
11 scanf("%i", &numero2); printf("\n");
12
13 if (numero1 > numero2)
14 {
15 printf("El primer número es mayor que el segundo\n");
16 }
17 else
18 {
19 printf("El segundo número es mayor que el primero\n");
20 }
21 return 0;
22 }
Vemos que, si no se cumple la condición, entonces se mostrará el mensaje que está
dentro del “else”.

Pero este programa tiene un fallo. ¿Qué pasa si el usuario mete los dos números
iguales? No se mostrará ningún mensaje ya que los símbolos < y > miran si son
menores o mayores, pero si son iguales no se cumplirá ninguna de las sentencias.

Arreglaremos esto con el último tipo de modificación de la sentencia if, el else-if, o si


no, si. En C se puede poner un if después de un else para ponerle una condición al
else. En el programa vemos entonces tres casos, que los números sean iguales,
que el primero sea menor que el segundo y que el primero sea mayor que el
segundo. Modificamos el código:

1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main()
5 {
6 int numero1;
7 int numero2;
8 printf("Introduce un número: ");
9 scanf("%i", &numero1);
10 printf("\nIntroduce otro número: ");
11 scanf("%i", &numero2); printf("\n");
12
13 if (numero1 > numero2)
14 {
15 printf("El primer número es mayor que el segundo\n");
}
16
else if (numero1 < numero2)
17
{
18
printf("El segundo número es mayor que el primero\n");
19 }
20 else
21 {
22 printf("Los dos números son iguales\n");
23 }
24 return 0;
25 }
Así ya hemos conseguido que se muestre un texto en los tres casos. Fíjate que
podríamos haber puesto:

1
if (numero1 > numero2)
2
{
3 printf("El primer número es mayor que el segundo\n");
4 }
5 else if (numero1 < numero2)
6 {
7 printf("El segundo número es mayor que el primero\n");
8 }
9 else if (numero1 == numero2)
10 {
11 printf("Los dos números son iguales\n");
12 }
Y el programa hará exactamente lo mismo, pero el else solo se ejecuta si no se ha
cumplido el if anterior, de modo que si llega al final la única posibilidad es que los
números sean iguales.gyt

Condicional Switch

Este último tipo se utiliza cuando se quiere hacer algo para cada valor de una
variable, pero hay demasiados valores por lo que hacer un if else if sería muy
incómodo.

El uso de switch es el siguiente:

1
2 switch (variable)
3 {
4 case valor1:
5 Lo que se ejecuta si la variable tiene el valor1
break; //sale del switch
6
case valor2:
7
Lo que se ejecuta si la variable tiene el valor2
8
break;
9 case valorN;
10 Lo que se ejecuta si la variable tiene el valorN
11 break;
12 default:
13 Lo que ejecuta si la variable no tiene ninguno de los valores especi
14 break;
15 }
Vamos a ver cómo funciona haciendo un programa que nos pida la nota de nuestro
último examen y nos de un mensaje según la nota que le metamos.

1 #include <stdio.h>
#include <stdlib.h>
2
3
int main()
4
{
5
int nota;
6 printf("¿Qué nota has sacado: ");
7 scanf("%i", &nota);
8
9 switch (nota)
10 {
11 case 0:
12 printf("¿Te han mandado la nota rodando?\n");
13 break;
14 case 1:
15 printf("Dale las gracias al profesor por el punto que te ha regalado\
16 break;
17 case 2:
18 printf("Ya tienes un patito\n");
19 break;
case 3:
20
printf("Pusiste bien el nombre y la fecha\n");
21
break;
22 case 4:
23 printf("Casi...\n");
24 break;
25 case 5:
26 printf("Te conformas con lo mínimo, muy mal\n");
27 break;
28 case 6:
29 printf("¿En tu colegio aprueban con un 6?\n");
30 break;
31 case 7:
32 printf("No está mal, pero si quieres ser médico tendrás que
33 currar más\n");
34 break;
case 8:
35
printf("Esta nota ya no es tan fea\n");
36
break;
37
case 9:
38 printf("Tiendes a la perfección\n");
39 break;
40 case 10:
41 printf("Llegaste a la perfección\n");
42 break;
43 default:
44 printf("Esa nota no existe cazurro, ¿o es que te han puesto un -1
45 de lo mal que lo hiciste?\n");
46 break;
47 }
48 return 0;
49 }
50

Vemos que el programa nos muestra una serie de mensajes según la nota que
hayamos sacado. Es muy importante poner el default al final con lo que se ejecutará
si la variable no tiene ninguno de los valores que le pongamos. También es
importante poner el break; al final de cada caso para que salga del bloque del
switch, si no lo ponemos se ejecutará también el default, ya que este se ejecuta si
se llega a él, y al poner el break; lo que hacemos es salir del bloque y que no se
ejecute.

You might also like