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 ?:.

`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 ifyelse: gana la primera condición verdadera.- La condición va siempre entre paréntesis.
switchcompara un valor concasefijos.- Cada
casetermina conbreak;defaultrecoge el resto. c ? a : belige 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.