Las condiciones se puede encadenar con "y", "o", "no". Por ejemplo, una partida de un juego puede acabar si nos quedamos sin vidas o si superamos el último nivel. Y podemos avanzar al nivel siguiente si hemos llegado hasta la puerta y hemos encontrado la llave. O deberemos volver a pedir una contraseña si no es correcta y no hemos agotado los intentos.
Esos operadores se indican de la siguiente forma
Operador | Significado |
&& | Y |
|| | O |
! | No |
De modo que, ya con la sintaxis de C#, podremos escribir cosas como
if ((opcion==1) && (usuario==2)) ...
if ((opcion==1) || (opcion==3)) ...
if ((!(opcion==opcCorrecta)) || (tecla==ESC)) ...
Así, un programa que dijera si dos números introducidos por el usuario son cero, podría ser:
// Ejemplo_02_01_05a.cs
// Condiciones con if enlazadas con &&
// Introducción a C#, por Nacho Cabanes
using System;
public class Ejemplo_02_01_05a
{
public static void Main()
{
int n1, n2;
Console.Write("Introduce un número: ");
n1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Introduce otro número: ");
n2 = Convert.ToInt32(Console.ReadLine());
if ((n1 > 0) && (n2 > 0))
Console.WriteLine("Ambos números son positivos.");
else
Console.WriteLine("Al menos uno no es positivo.");
}
}
Una curiosidad: en C# (y en algún otro lenguaje de programación), la evaluación de dos condiciones que estén enlazadas con "Y" se hace "en cortocircuito": si la primera de las condiciones no se cumple, ni siquiera se llega a comprobar la segunda, porque se sabe de antemano que la condición formada por ambas no podrá ser cierta. Eso supone que en el primer ejemplo anterior, if ((opcion==1) && (usuario==2)), si "opcion" no vale 1, el compilador no se molesta en ver cuál es el valor de "usuario", porque, sea el que sea, no podrá hacer que sea "verdadera" toda la expresión. Lo mismo ocurriría si hay dos condiciones enlazadas con "o", y la primera de ellas es "verdadera": no será necesario comprobar la segunda, porque ya se sabe que la expresión global será "verdadera".
Como la mejor forma de entender este tipo de expresiones es practicándolas, vamos a ver unos cuantos ejercicios propuestos...
Ejercicios propuestos:
Ejercicio propuesto 2.1.5.1: Crea un programa que pida al usuario un número entero y responda si es múltiplo de 2 o de 3.
Ejercicio propuesto 2.1.5.2: Crea un programa que pida al usuario un número entero y responda si es múltiplo de 2 y de 3 simultáneamente.
Ejercicio propuesto 2.1.5.3: Crea un programa que pida al usuario un número entero y responda si es múltiplo de 2 pero no de 3.
Ejercicio propuesto 2.1.5.4: Crea un programa que pida al usuario un número entero y responda si no es múltiplo de 2 ni de 3.
Ejercicio propuesto 2.1.5.5: Crea un programa que pida al usuario dos números enteros y diga si ambos son pares.
Ejercicio propuesto 2.1.5.6: Crea un programa que pida al usuario dos números enteros y diga si (al menos) uno es par.
Ejercicio propuesto 2.1.5.7: Crea un programa que pida al usuario dos números enteros y diga si uno y sólo uno es par.
Ejercicio propuesto 2.1.5.8: Crea un programa que pida al usuario dos números enteros y diga "Uno de los números es positivo", "Los dos números son positivos" o bien "Ninguno de los números es positivo", según corresponda.
Ejercicio propuesto 2.1.5.9: Crea un programa que pida al usuario tres números y muestre cuál es el mayor de los tres.
Ejercicio propuesto 2.1.5.10: Crea un programa que pida al usuario dos números enteros y diga si son iguales o, en caso contrario, cuál es el mayor de ellos.