DMarlon Studio

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.

C · Decisiones con if y switch en DMarlon Studio: el código del ejemplo y su salida en la terminal

`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 if y else eligen un único camino.
  • switch compara un entero con valores fijos.
  • Cada case necesita su break.
  • default atiende 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».