Estructuras condicionales: if
Al igual que en otros lenguajes de programación,
tendremos varias posibilidades para comprobar una condición:
comprobar una condición y en función de ésta realizar
una acción
comprobar una condición y en función de ésta realizar
una acción u otra (excluyentes)
comprobar varias condiciones para realizar varias
acciones diferentes (excluyentes)
Esta estructura es muy parecida a la utilizada en C.
La sintaxis de la instrucción if es la siguiente:
if (expresión) {
instrucción o bloque de intrucciones 1;
}
[else {
instrucción o bloque de intrucciones 2;
} ]
El programa evalúa la expresión. Cuando esta expresión
resulta verdadera, se ejecuta la instrucción o el bloque de instrucciones 1.
Por contra, cuando es falsa de ejecuta la instrucción o bloque de instrucciones
2. Esta última parte es opcional. Para representar una estructura de varios
casos se utilizará la sintaxis siguiente:
if (expresión 1) {
instrucción o bloque de instrucciones 1;
}
else if (expresión 2) {
instrucción o bloque de instrucciones 2;
}
else if (expresión 3) {
instrucción o bloque de instrucciones 3;
}
else {
intrucción o bloque de instrucciones 4;
}
Veamos un ejemplo del uso del if/else
using System;
class condicionalIF {
public static void Main() {
string myInput;
int myInt;
Console.Write("Please enter a number: ");
myInput = Console.ReadLine();
myInt = Int32.Parse(myInput);
// comparación para una toma de decisión SIMPLE
if (myInt > 0) {
Console.WriteLine("el número {0} es mayor que cero", myInt);
}
// comparación para una toma de decisión SIMPLE
if (myInt < 0)
Console.WriteLine("el número {0} es menor que cero", myInt);
// comparación para tomar UNA DE DOS decisiones
if (myInt != 0) {
Console.WriteLine("el número {0} es distinto de cero", myInt);
} else {
Console.WriteLine("el número {0} es igual a cero", myInt);
}
// decisión MÚLTIPLE
if (myInt < 0 || myInt == 0) {
Console.WriteLine("el número {0} es menor o igual a cero", myInt);
} else if (myInt > 0 && myInt <= 10) {
Console.WriteLine("el número {0} está entre 1 y 10", myInt);
} else if (myInt > 10 && myInt <= 20) {
Console.WriteLine("el número {0} está entre 11 y 20", myInt);
} else if (myInt > 20 && myInt <= 30) {
Console.WriteLine("el número {0} está entre 21 y 30", myInt);
} else {
Console.WriteLine("el número {0} es mayor que 30", myInt);
}
}
}
En este ejemplo, leemos un valor desde teclado, que
nos es devuelto como una cadena de caracteres que debemos transformar en número
antes de asignarla a una variable entera.
Para ello utilizaremos el método de Console que ya conocemos ReadLine().
La transformación la haremos mediante el método Parse de la clase Int32 del espacio de
nombres System:
myInput = Console.ReadLine();
myInt = Int32.Parse(myInput);
Como vemos, en función de la condición, podemos tomar
una o varias acciones mútuamente exclusivas (sólo una de ellas se ejecutará).
También hay que hacer notar que si dicha acción es una sola instrucción, se
pueden omitir la definición de bloque ( { } ).
Estructuras condicionales: switch
De forma similar a la estructura if/else/if/else, podemos utilizar la estructura switch.
En este caso, seguido de la palabra reservada debemos
poner una expresión que se evaluará a uno de los siguientes tipos: sbyte, byte, short, ushort, int, uint, long, ulong, char,
string, or enum. A continación viene el bloque del switch, en el que cada posible caso está etiquetado con la
palabra case <expresion>:
Si la expresión de un caso concreto coincide con la
evaluación de la primera expresión, se ejecutan las instrucciones que hay a
continación; sino, se pasa a comprobar el siguiente caso.
Cada caso debe terminar con la instrucción break; o goto etiq para terminar el switch y evitar que se ejecuten las instrucciones correspondientes
al siguiente caso.
Como veremos en el siguiente ejemplo, podemos poner un
caso por defecto que se ejecutará si ninguno de los casos comprobados
conincidía:
using System;
class condicionalSWITCH {
public static void Main() {
string myInput;
int myInt;
Console.Write("Please enter a number: ");
myInput = Console.ReadLine();
myInt = Int32.Parse(myInput);
switch( myInt ) {
case 1:
Console.WriteLine("primera opción");
break;
case 2:
Console.WriteLine("segunda opción");
break;
case 3:
Console.WriteLine("tercera opción");
break;
case 4:
Console.WriteLine("cuarta opción");
break;
default:
Console.WriteLine("opción por defecto");
break;
}
}
}
Para hacer que cierto grupo de instrucciones se
ejecuten cuando se cumplan varios casos, podemos utilizar una estructura como
la que sigue:
switch( myInt ) {
case 1:
case 2:
case 3:
Console.WriteLine("está entre 1 y 3");
break;
default:
Console.WriteLine("no está entre 1 y 3");
break;
}
Una vez vistas las estructuras condicionales, veamos
los tipos de bucle disponibles en C#.
DEMOSTRACIÓN
Procederemos a escribir el ejemplo de las sentencias de
Decisión en la consola:
Desplegamos la pantalla: