Dominando las Sentencias Condicionales en C++: if, if...else y if...else Anidado Explicados
Sentencias if, if...else y if...else Anidado en C++
En este tutorial, aprenderemos sobre la sentencia if...else para crear programas de toma de decisiones con la ayuda de ejemplos.
En programación informática, usamos la sentencia if...else para ejecutar un bloque de código bajo ciertas condiciones y otro bloque bajo diferentes condiciones.
Por ejemplo, asignar calificaciones (A, B, C) basadas en las notas obtenidas por un estudiante.
- si el porcentaje es superior a 90, asignar calificación A
- si el porcentaje es superior a 75, asignar calificación B
- si el porcentaje es superior a 65, asignar calificación C
Hay tres formas de sentencias if...else en C++.
- Sentencia
if - Sentencia
if...else - Sentencia
if...else if...else
Sentencia if en C++
La sintaxis de la sentencia if es:
if (condición) { // cuerpo de la sentencia if }
La sentencia if evalúa la condición dentro de los paréntesis ( ).
- Si la
condiciónevalúa atrue, el código dentro del cuerpo deifse ejecuta. - Si la
condiciónevalúa afalse, el código dentro del cuerpo deifse omite.
Nota: El código dentro de { } es el cuerpo de la sentencia if.

Ejemplo 1: Sentencia if en C++
// Programa para imprimir número positivo ingresado por el usuario // Si el usuario ingresa un número negativo, se omite #include <iostream> using namespace std; int main() { int número; cout << "Ingresa un entero: "; cin >> número; // comprueba si el número es positivo if (número > 0) { cout << "Ingresaste un entero positivo: " << número << endl; } cout << "Esta sentencia siempre se ejecuta."; return 0; }
Salida 1
Ingresa un entero: 5 Ingresaste un número positivo: 5 Esta sentencia siempre se ejecuta.
Cuando el usuario ingresa 5, la condición número > 0 se evalúa a true y la sentencia dentro del cuerpo de if se ejecuta.
Salida 2
Ingresa un número: -5 Esta sentencia siempre se ejecuta.
Cuando el usuario ingresa -5, la condición número > 0 se evalúa a false y la sentencia dentro del cuerpo de if no se ejecuta.
Sentencia if...else en C++
La sentencia if puede tener una cláusula else opcional. Su sintaxis es:
if (condición) { // bloque de código si la condición es true } else { // bloque de código si la condición es false }
La sentencia if..else evalúa la condición dentro del paréntesis.

Si la condición evalúa true,
- el código dentro del cuerpo de
ifse ejecuta - el código dentro del cuerpo de
elsese omite de la ejecución
Si la condición evalúa false,
- el código dentro del cuerpo de
elsese ejecuta - el código dentro del cuerpo de
ifse omite de la ejecución
Ejemplo 2: Sentencia if...else en C++
// Programa para comprobar si un entero es positivo o negativo // Este programa considera 0 como número positivo #include <iostream> using namespace std; int main() { int número; cout << "Ingresa un entero: "; cin >> número; if (número >= 0) { cout << "Ingresaste un entero positivo: " << número << endl; } else { cout << "Ingresaste un entero negativo: " << número << endl; } cout << "Esta línea siempre se imprime."; return 0; }
Salida 1
Ingresa un entero: 4 Ingresaste un entero positivo: 4. Esta línea siempre se imprime.
En el programa anterior, tenemos la condición número >= 0. Si ingresamos un número mayor o igual a 0, la condición evalúa true.
Aquí, ingresamos 4. Así que la condición es true. Por lo tanto, la sentencia dentro del cuerpo de if se ejecuta.
Salida 2
Ingresa un entero: -4 Ingresaste un entero negativo: -4. Esta línea siempre se imprime.
Aquí, ingresamos -4. Así que la condición es false. Por lo tanto, la sentencia dentro del cuerpo de else se ejecuta.
Sentencia if...else...else if en C++
La sentencia if...else se usa para ejecutar un bloque de código entre dos alternativas. Sin embargo, si necesitamos elegir entre más de dos alternativas, usamos la sentencia if...else if...else.
La sintaxis de la sentencia if...else if...else es:
if (condición1) { // bloque de código 1 } else if (condición2){ // bloque de código 2 } else { // bloque de código 3 }
Aquí,
- Si
condición1evalúa atrue, se ejecuta elbloque de código 1. - Si
condición1evalúa afalse, entonces se evalúacondición2. - Si
condición2estrue, se ejecuta elbloque de código 2. - Si
condición2esfalse, se ejecuta elbloque de código 3.

Nota: Puede haber más de una sentencia else if pero solo una sentencia if y else.
Ejemplo 3: C++ if...else...else if
// Programa para comprobar si un entero es positivo, negativo o cero #include <iostream> using namespace std; int main() { int número; cout << "Ingresa un entero: "; cin >> número; if (número > 0) { cout << "Ingresaste un entero positivo: " << número << endl; } else if (número < 0) { cout << "Ingresaste un entero negativo: " << número << endl; } else { cout << "Ingresaste 0." << endl; } cout << "Esta línea siempre se imprime."; return 0; }
Salida 1
Ingresa un entero: 1 Ingresaste un entero positivo: 1. Esta línea siempre se imprime.
Salida 2
Ingresa un entero: -2 Ingresaste un entero negativo: -2. Esta línea siempre se imprime.
Salida 3
Ingresa un entero: 0 Ingresaste 0. Esta línea siempre se imprime.
En este programa, tomamos un número del usuario. Luego usamos la escalera if...else if...else para comprobar si el número es positivo, negativo o cero.
Si el número es mayor que 0, se ejecuta el código dentro del bloque if. Si el número es menor que 0, se ejecuta el código dentro del bloque else if. De lo contrario, se ejecuta el código dentro del bloque else.
Sentencia if...else Anidada en C++
A veces, necesitamos usar una sentencia if dentro de otra sentencia if. Esto se conoce como sentencia if anidada.
Piensa en ello como múltiples capas de sentencias if. Hay una primera sentencia if externa, y dentro de ella hay otra sentencia if interna. Su sintaxis es:
// sentencia if externa if (condición1) { // sentencias // sentencia if interna if (condición2) { // sentencias } }
Notas:
- Podemos agregar sentencias
elseyelse ifa la sentenciaifinterna según sea necesario. - La sentencia
ifinterna también puede insertarse dentro de la sentenciaelseoelse ifexternas (si existen). - Podemos anidar múltiples capas de sentencias
if.
Ejemplo 4: C++ if Anidado
// Programa en C++ para encontrar si un entero es positivo, negativo o cero // usando sentencias if anidadas #include <iostream> using namespace std; int main() { int num; cout << "Ingresa un entero: "; cin >> num; // condición if externa if (num != 0) { // condición if interna if (num > 0) { cout << "El número es positivo." << endl; } // condición else interna else { cout << "El número es negativo." << endl; } } // condición else externa else { cout << "El número es 0 y no es ni positivo ni negativo." << endl; } cout << "Esta línea siempre se imprime." << endl; return 0; }
Salida 1
Ingresa un entero: 35 El número es positivo. Esta línea siempre se imprime.
Salida 2
Ingresa un entero: -35 El número es negativo. Esta línea siempre se imprime.
Salida 3
Ingresa un entero: 0 El número es 0 y no es ni positivo ni negativo. Esta línea siempre se imprime.
En el ejemplo anterior,
- Tomamos un entero como entrada del usuario y lo almacenamos en la variable num.
- Luego usamos una sentencia
if...elsepara comprobar si num no es igual a0.- Si
true, entonces se ejecuta la interna sentenciaif...else. - Si
false, se ejecuta el código dentro de la condición externaelse, que imprime"El número es 0 y no es ni positivo ni negativo."
- Si
- La interna sentencia
if...elsecomprueba si el número de entrada es positivo, es decir, si num es mayor que 0.- Si
true, entonces imprimimos una sentencia diciendo que el número es positivo. - Si
false, imprimimos que el número es negativo.
- Si
Nota: Como puedes ver, los if...else anidados complican tu lógica. Si es posible, siempre deberías intentar evitar los if...else anidados.
Cuerpo de if...else Con Una Sola Sentencia
Si el cuerpo de if...else tiene solo una sentencia, puedes omitir { } en el programa. Por ejemplo, puedes reemplazar
int número = 5; if (número > 0) { cout << "El número es positivo." << endl; } else { cout << "El número es negativo." << endl; }
con
int número = 5; if (número > 0) cout << "El número es positivo." << endl; else cout << "El número es negativo." << endl;
La salida de ambos programas será la misma.
Nota: Aunque no es necesario usar { } si el cuerpo de if...else tiene solo una sentencia, usar { } hace tu código más legible.
Más sobre Toma de Decisiones
En ciertas situaciones, un operador ternario puede reemplazar una sentencia if...else. Para aprender más, visita Operador Ternario en C++.
Si necesitamos elegir entre más de una alternativa basada en una condición de prueba dada, se puede usar la sentencia switch. Para aprender más, visita Sentencia switch en C++.
Consulta estos ejemplos para aprender más:
Programa en C++ para Comprobar si un Número es Par o Impar
Programa en C++ para Comprobar si un Carácter es Vocal o Consonante.
Programa en C++ para Encontrar el Número Más Grande Entre Tres Números
Lenguaje C
- Dominando la lógica condicional en C#: If, If-Else, If-ElseIf y sentencias If anidadas
- Bucles While y Do-While en C++: Dominando la Repetición en Tu Código
- Clases y Objetos en C++: Guía Práctica de Programación Orientada a Objetos
- Dominando la gestión de memoria en C++: uso experto de new y delete
- Herencia en C++: public, protected y private explicados
- Funciones y clases amigas en C++: dominando el control de acceso
- Guía Completa de Fecha y Hora en C++
- Dominando la Sobrecarga en C++: Funciones y Operadores Explicados
- Dominando Entrada/Salida de Archivos en C++: Lectura y Escritura con fstream
- Sentencias, indentación y comentarios en Python: Guía clara
- Dominando clases anidadas e internas en Java: Tipos, ejemplos y mejores prácticas