Lección 3
Tomar decisiones
Respuesta corta: if (condición) ejecuta el bloque siguiente solo si la condición es verdadera; else ejecuta la alternativa. Una condición es una expresión que vale true o false.
Las comparaciones producen bool
| Operador | Significa | Ejemplo |
|---|---|---|
== | igual | a == 5 |
!= | distinto | a != 5 |
< > <= >= | orden | a <= 10 |
Puedes imprimir una comparación para ver su 1/0 — una forma rápida de comprobar qué piensa C++:
#include <iostream>
using namespace std;
int main() {
int x = 7;
cout << (x > 5) << endl; // 1 (verdadero)
cout << (x == 5) << endl; // 0 (falso)
cout << (x != 5) << endl; // 1
return 0;
}
Elección de tres vías
else if encadena pruebas en orden y se detiene en la primera verdadera:
#include <iostream>
using namespace std;
int main() {
int nota;
cin >> nota;
if (nota >= 90) cout << "A" << endl;
else if (nota >= 80) cout << "B" << endl;
else if (nota >= 70) cout << "C" << endl;
else cout << "F" << endl;
return 0;
}
Prueba 95, 85, 75, 60 en la caja de entrada. El orden importa: si nota >= 90 es cierto, las pruebas siguientes no corren.
Combinar condiciones
&& es y (ambas), || es o (al menos una), ! es no. La regla del año bisiesto es la combinación clásica:
#include <iostream>
using namespace std;
int main() {
int anio;
cin >> anio;
bool bisiesto = (anio % 4 == 0 && anio % 100 != 0) || (anio % 400 == 0);
if (bisiesto) cout << "año bisiesto" << endl;
else cout << "no es bisiesto" << endl;
return 0;
}
Prueba 1900 (no), 2000 (sí), 2024 (sí). El porqué de la regla del siglo está en este problema.
Las trampas
=frente a==.if (x = 5)asigna 5 y siempre es verdadero — bug silencioso. Escribeif (5 == x)para que el compilador te ayude.- Faltan llaves.
if (a) if (b) x(); else y();— elelsese pega alifmás cercano. Usa llaves siempre. - Comparaciones encadenadas.
0 < x < 10compila y está mal (equivale a(0 < x) < 10). Escribe0 < x && x < 10.
Practica esta lección
Estos problemas ejercitan exactamente lo que acabas de leer: