Lección 6 · 6 de 20
Decisiones con if y switch · C
Tome decisiones en C con if, else if y else, y elija entre varios casos con switch, case, break y default: temperaturas, notas y horarios.

`if` ejecuta una instrucción o un bloque solo si la condición entre paréntesis es verdadera. Con 31 grados, temperature > 30 se cumple y se escribe el aviso. Si solo hay una instrucción, las llaves se pueden omitir, como aquí; con varias, son obligatorias.
Con `else if` y `else` se elige un camino entre varios. C prueba las condiciones de arriba abajo y ejecuta solo el primer bloque que se cumple: con 68, la primera (>= 90) falla, la segunda (>= 60) se cumple y el else ya no se mira.
`switch` compara un valor entero con varios case fijos. Varios case seguidos comparten el mismo código: del 1 al 5 se abre a las 9:00, y el 6 y el 7 son fin de semana. `default` recoge cualquier otro valor.
Cada caso termina con `break`. Sin él, C seguiría ejecutando el código del caso siguiente, un error muy típico. Pruebe a cambiar day a 3 o a 9 y vuelva a ejecutar.
Código · main.c
#include <stdio.h>int main(void) { // if runs its block only when the condition is true. int temperature = 31; if (temperature > 30) // one statement: braces are optional printf("%d degrees: it is hot, drink water.\n", temperature); // else if and else choose one path among several. int score = 68; if (score >= 90) { printf("Score %d: excellent\n", score); } else if (score >= 60) { printf("Score %d: passed\n", score); } else { printf("Score %d: try again\n", score); } // switch compares one whole value with fixed cases. int day = 6; switch (day) { case 1: case 2: case 3: case 4: case 5: printf("Day %d: the shop opens at 9:00\n", day); break; // without break, the next case would run too case 6: case 7: printf("Day %d: weekend, the shop opens at 10:00\n", day); break; default: printf("Day %d does not exist\n", day); } return 0;}Salida · cc main.c -o main && ./main
31 degrees: it is hot, drink water. Score 68: passed Day 6: weekend, the shop opens at 10:00
Para recordar
if (condición)ejecuta el bloque si es verdadera.else ifyelseeligen un único camino.switchcompara un entero con valores fijos.- Cada
casenecesita subreak. defaultatiende los valores no previstos.
Ejercicio
Añada un switch sobre una variable char size que escriba el precio de un café según el tamaño: 'S' 1.20, 'M' 1.60, 'L' 2.00 y, en default, «Unknown size».