DMarlon Studio

Lección 6 · 6 de 20

if, else y switch · C++

Tome decisiones en C++ con if, else if y else, elija entre casos fijos con switch y break, y use el operador ternario ?:.

C++ · if, else y switch en DMarlon Studio: el código del ejemplo y su salida en la terminal

`if` ejecuta un bloque solo si la condición entre paréntesis es verdadera. `else if` prueba otra condición y `else` recoge todos los demás casos. Una cesta de 42.5 no llega a 50 pero sí a 30, así que paga 2.99 de envío.

Las condiciones se comprueban en orden y gana la primera verdadera: con 78 puntos, score >= 90 falla y score >= 75 se cumple, de modo que grade vale 'B' y el resto ni se mira. Si el bloque tiene una sola instrucción, las llaves se pueden omitir, como aquí.

grade empieza valiendo 'F': es el valor que queda si no se cumple ninguna condición, y además evita usar una variable sin valor.

`switch` compara un entero o un char con varios `case` fijos. `break` termina cada caso; sin él, la ejecución seguiría por el caso siguiente. `default` se ejecuta cuando no coincide ninguno.

El operador ternario condición ? si_verdadero : si_falso elige entre dos valores en una sola expresión: con stock a 0, escribe Sold out.

Código · main.cpp

#include <iostream>int main() {    // Shipping cost in an online shop.    double basket = 42.5;    if (basket >= 50) {        std::cout << "Free shipping\n";    } else if (basket >= 30) {        std::cout << "Basket " << basket << ": shipping 2.99\n";    } else {        std::cout << "Basket " << basket << ": shipping 5.99\n";    }    // The first true condition wins; the rest are skipped.    int score = 78;    char grade = 'F';    if (score >= 90) grade = 'A';    else if (score >= 75) grade = 'B';    else if (score >= 50) grade = 'C';    std::cout << "Score " << score << " -> grade " << grade << '\n';    // switch compares one value with fixed cases; break ends each case.    switch (grade) {        case 'A': std::cout << "Excellent!\n"; break;        case 'B': std::cout << "Very good\n"; break;        case 'C': std::cout << "Passed\n"; break;        default:  std::cout << "Try again\n";    }    // The ternary operator: condition ? if_true : if_false.    int stock = 0;    std::cout << (stock > 0 ? "In stock" : "Sold out") << '\n';    return 0;}

Salida · c++ -std=c++17 main.cpp -o main && ./main

Basket 42.5: shipping 2.99
Score 78 -> grade B
Very good
Sold out

Para recordar

  • if, else if y else: gana la primera condición verdadera.
  • La condición va siempre entre paréntesis.
  • switch compara un valor con case fijos.
  • Cada case termina con break; default recoge el resto.
  • c ? a : b elige entre dos valores.

Ejercicio

Añada un switch sobre int day = 6; que escriba «weekend» para el 6 y el 7 (dos case seguidos, sin break entre ellos) y «working day» para los demás días.