Curso de C++ desde cero

¿Cómo funcionan los operadores lógicos?

Capítulo 12: El condicional else if y los operadores lógicos

El condicional else if de C++

Con lo que he enseñado en los dos últimos capítulos, ya sabes como añadir condiciones verdaderas y falsas. ¿Qué ocurre si queremos añadir más de una condición verdadera? Para esto, tenemos else if.

Empecemos con un ejemplo que evalúa la edad introducida por el usuario.

// Declaración de variables
int edad;

// Se pide y almacena la edad del usuario
cout << "Introduce tu edad." << endl;
cin >> edad;

// Se evalúa la edad del usuario
if (edad <= 0) {
	cout << edad << " no es una edad válida.";
}
else if (edad >= 1 && edad <=17) {
	cout << "Tienes " << edad << ". Eres menor de edad.";
}
else if (edad >= 18 && edad <=150) {
	cout << "Con tus " << edad << " años, eres mayor de edad.";
}
else {
	cout << "No puedes tener " << edad << " años.";
}

Probemos primero diferentes resultados en la consola y ahora te voy explicando todo.

Si introduzco por ejemplo -10 en la consola, me ejecuta el código del if:

Introduce tu edad.
0
0 no es una edad válida.

Ahora, introduzco una edad de 15 años:

Introduce tu edad.
15
Tienes 15. Eres menor de edad.

Probemos con por ejemplo, 30 años:

Introduce tu edad.
30
Con tus 30 años, eres mayor de edad.

Finalmente, voy a poner que tengo 170 años:

Introduce tu edad.
170
No puedes tener 170 años.

Los operadores de comparación mayor o menor e igual qué de C++

El operador mayor o igual qué >=, evalúa si un valor es mayor o igual que el otro.

El operador menor o igual qué <=, evalúa si un valor es menor o igual que el otro.

El operador lógico && de C++

El operador lógico &&, llamado como "and" (y en español) lo que hace es comparar que se cumplan ambas condiciones comparadas. Es decir, da true si ambas comparaciones son true. En el caso de que una no lo sea, da false.

Analicemos el código para que puedas entender el uso de estos nuevos operadores.

En la condición del if (línea 9) se evalúa que el valor de edad sea menor o igual a 0. Esto quiere decir que 0 o cualquier valor inferior (números negativos) van a cumplir esta condición (true).

En la condición del primer else if (línea 12), tenemos una doble evaluación. Por un lado, le decimos que edad sea mayor o igual a 1 y que además (&&), edad, sea menor o igual a 17.
Por lo tanto, para que el else if devuelva true, edad debe ser mayor o igual a 1 y que además, sea menor o igual a 17.

En el segundo else if especifico que edad sea mayor o igual a 18 y que además, sea menor o igual a 150.
Ya sé que 150 es un poco exagerado, pero hay personas que viven más de 100 años. Cuando sepas más, podrás poner una condición extra, que si el usuario pone que tiene entre 100 y 150 años, que se ponga en duda y se le pregunte el año de nacimiento. Si no coincide con la edad, que le de un error.

Finalmente, en la línea 18 tenemos el else. Este contempla cualquier valor que se salga de los rangos establecidos, es decir, de 151 años para arriba.

Todo esto puede ser un poco complicado al principio. Si te cuesta y quieres una ayuda, puedes dejarme un comentario.

Aclaraciones con los condicionales

  • Podemos tener tantas condiciones else if como queramos.
  • Pondremos un solo if y un else.
  • El uso de else es opcional.
  • if se puede utilizar de manera individual.
  • Los nombres de variables se deben repetir cuando hay condiciones múltiples como la del &&. Es decir, (edad >= 1 && <=17) es incorrecto.

El operador lógico or en C++

El operador lógico or || devuelve true siempre que al menos una de las condiciones sea true. También pueden serlo las dos.

int numero = 10;
				
if (numero == 20 || numero > 5) {
	cout << "Al menos una condición es verdadera.";
}
else {
	cout << "Las dos condiciones son falsas.";
}

Devuelve true porque se cumple la condición de numero > 5.

Al menos una condición es verdadera.

Probemos con dos condiciones falsas.

int numero = 10;
				
if (numero == 20 || numero < 5) {
	cout << "Al menos una condición es verdadera.";
}
else {
	cout << "Las dos condiciones son falsas.";
}

Devuelve false porque se cumple ninguna condición.

Las dos condiciones son falsas.

El operador lógico de negación

El operador lógico de negación ! se utiliza para comparar cosas que sean todo lo contrario. Queda más entendible con un ejemplo:

int numero = 10;
				
if (!(numero == 20)) {
	cout << "La variable numero no es igual a 20.";
}
else {
	cout << "La variable numero es igual a 20.";
}

Con este operador, obtenemos false de las cosas que obtendríamos true y viceversa. En el if se evalúan cualquier número que no sea igual a 20. En el caso de que sea igual a 20, se ejecutará el else.

La variable numero no es igual a 20.

Por cierto, fíjate en que la expresión se tiene que rodear con unos paréntesis extra.


Comentarios

Si te quedan dudas sobre el temario, sobre C++, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.