3. Estructuras de control
3.1. Estructuras alternativas
3.1.1. if
Vamos a ver cómo podemos comprobar si se cumplen condiciones. La primera construcción que usaremos será "si ... entonces ...". El formato es
if (condición) sentencia;
Vamos a verlo con un ejemplo:
/*---------------------------*/ /* Ejemplo en C# nº 10: */ /* ejemplo10.cs */ /* */ /* Condiciones con if */ /* */ /* Introduccion a C#, */ /* Nacho Cabanes */ /*---------------------------*/ using System; public class Ejemplo10 { public static void Main() { int numero; Console.WriteLine("Introduce un número"); numero = Convert.ToInt32(Console.ReadLine()); if (numero>0) Console.WriteLine("El número es positivo."); } }
Este programa pide un número al usuario. Si es positivo (mayor que 0), escribe en pantalla "El número es positivo."; si es negativo o cero, no hace nada.
Como se ve en el ejemplo, para comprobar si un valor numérico es mayor que otro, usamos el símbolo ">". Para ver si dos valores son iguales, usaremos dos símbolos de "igual": if (numero==0). Las demás posibilidades las veremos algo más adelante. En todos los casos, la condición que queremos comprobar deberá indicarse entre paréntesis.
Este programa comienza por un comentario que nos recuerda de qué se trata. Como nuestros fuentes irán siendo cada vez más complejos, a partir de ahora incluiremos comentarios que nos permitan recordar de un vistazo qué pretendíamos hacer.
Ejercicios propuestos:
- Crear un programa que pida al usuario un número entero y diga si es par (pista: habrá que comprobar si el resto que se obtiene al dividir entre dos es cero: if (x % 2 == 0) …).
- Crear un programa que pida al usuario dos números enteros y diga cual es el mayor de ellos.
- Crear un programa que pida al usuario dos números enteros y diga si el primero es múltiplo del segundo (pista: igual que antes, habrá que ver si el resto de la división es cero: a % b == 0).
3.1.2. if y sentencias compuestas
Habíamos dicho que el formato básico de "if" es if (condición) sentencia; Esa "sentencia" que se ejecuta si se cumple la condición puede ser una sentencia simple o una compuesta. Las sentencias compuestas se forman agrupando varias sentencias simples entre llaves ( { y } ), como en este ejemplo:
/*---------------------------*/ /* Ejemplo en C# nº 11: */ /* ejemplo11.cs */ /* */ /* Condiciones con if (2) */ /* Sentencias compuestas */ /* */ /* Introduccion a C#, */ /* Nacho Cabanes */ /*---------------------------*/ using System; public class Ejemplo11 { public static void Main() { int numero; Console.WriteLine("Introduce un número"); numero = Convert.ToInt32(Console.ReadLine()); if (numero>0) { Console.WriteLine("El número es positivo."); Console.WriteLine("Recuerde que también puede usar negativos."); } /* Aqui acaba el "if" */ } /* Aqui acaba "Main" */ } /* Aqui acaba "Ejemplo11" */
En este caso, si el número es negativo, se hacen dos cosas: escribir un texto y luego... ¡escribir otro! (Claramente, en este ejemplo, esos dos "WriteLine" podrían ser uno solo, en el que los dos textos estuvieran separados por un "\n"; más adelante iremos encontrando casos en lo que necesitemos hacer cosas "más serias" dentro de una sentencia compuesta).
Como se ve en este ejemplo, cada nuevo "bloque" se suele escribir un poco más a la derecha que los anteriores, para que sea fácil ver dónde comienza y termina cada sección de un programa. Por ejemplo, el contenido de "Ejemplo11" está un poco más a la derecha que la cabecera "public class Ejemplo11", y el contenido de "Main" algo más a la derecha, y la sentencia compuesta que se debe realizar si se cumple la condición del "if" está algo más a la derecha que la orden "if". Este "sangrado" del texto se suele llamar "escritura indentada". Un tamaño habitual para el sangrado es de 4 espacios, aunque en este texto habitualmente usaremos sólo dos espacios, para no llegar al margen derecho del papel con mucha facilidad.
3.1.3. Operadores relacionales: <, <=, >, >=, ==, !=
Hemos visto que el símbolo ">" es el que se usa para comprobar si un número es mayor que otro. El símbolo de "menor que" también es sencillo, pero los demás son un poco menos evidentes, así que vamos a verlos:
Operador | Operación |
< | Menor que |
> | Mayor que |
<= | Menor o igual que |
>= | Mayor o igual que |
== | Igual a |
!= | No igual a (distinto de) |
Y un ejemplo, que diga si un número NO ES cero:
/*---------------------------*/ /* Ejemplo en C# nº 12: */ /* ejemplo12.cs */ /* */ /* Condiciones con if (3) */ /* */ /* Introduccion a C#, */ /* Nacho Cabanes */ /*---------------------------*/ using System; public class Ejemplo12 { public static void Main() { int numero; Console.WriteLine("Introduce un número"); numero = Convert.ToInt32(Console.ReadLine()); if (numero != 0) Console.WriteLine("El número no es cero."); } }
Ejercicios propuestos:
- Crear un programa que multiplique dos números enteros de la siguiente forma: pedirá al usuario un primer número entero. Si el número que se que teclee es 0, escribirá en pantalla "El producto de 0 por cualquier número es 0". Si se ha tecleado un número distinto de cero, se pedirá al usuario un segundo número y se mostrará el producto de ambos.
- Crear un programa que pida al usuario dos números reales. Si el segundo no es cero, mostrará el resultado de dividir entre el primero y el segundo. Por elcontrario, si el segundo número es cero, escribirá "Error: No se puede dividir entre cero".