CONDICIONALES
Vamos a empezar ahora con otra de las bases: los bloques condicionales.
Estos bloques los vamos a usar para dividir el flujo de ejecución del programa por un camino u otro, dependiendo de una condición. Esto es útil para hacer que el programa tome caminos diferentes, según se vaya dando el desarrollo del mismo. Por ejemplo: Si el usuario ganó mostrarle el puntaje final, sino hacer que juegue el siguiente player.
Un ejemplo acorde a lo que estábamos viendo podría ser:
Pedirle al usuario que ingrese dos números, y luego dividirlos entre sí y mostrar el resultado.
Pedirle al usuario que ingrese dos números, y luego dividirlos entre sí y mostrar el resultado.
Si desarrollan este programa van a encontrar un problema al momento de ingresar el valor 0 en segunda instancia, puesto que… NO PODEMOS DIVIDIR POR CERO.
Este es un problema a tener en cuenta, puesto que muchas aplicaciones podrían cerrarse al intentar dividir por cero. Así que, antes de realizar la división, deberíamos realizar un chequeo para asegurarnos de que el valor sea correcto. Para esto, vamos a usar un bloque de código llamado “if“. Este bloque nos permite realizar una comprobación, y si esta se cumple, ejecutar un bloque de código determinado. Para decirlo en español, lo que deberíamos plantear es:
- Pedir el primer número.
- Pedir el segundo número.
- Si el segundo número es distinto de cero, hacer la división.
Vamos a ver un ejemplo:
using System; public class Program { public static void Main() { int num1; int num2; int result; Console.WriteLine("Ingrese un número: "); num1 = int.Parse(Console.ReadLine()); Console.WriteLine("Ingrese otro número: "); num2 = int.Parse(Console.ReadLine()); if(num2 != 0) { result = num1 / num2; Console.WriteLine("El resultado es: " + result); } } }
Noten que este bloque nuevo que acaban de ver es similar a los otros bloques que están más arriba:
- El bloque “public class…”
- El bloque “public static void Main()”
¿Qué es lo similar? Que es un bloque de código que contiene llaves. Las llaves representan un bloque de código que contiene más cosas (una definición muuuuuuy sencilla). El bloque de código “if” contiene otro bloque de código entre “SUS” llaves. Esto significa, en este caso, que el bloque de código se va a ejecutar sólo si se cumple determinada condición, especificada en el comienzo del bloque.
Y… ¿Qué significa “que se cumple” la condición?
¿Recuerdan que hay un tipo de dato “bool“? Este tipo de dato sólo podía almacenar un valor true o false. Bien… En esta instancia vamos a empezar a usarlo bastante. ¿Recuerdan también que este tipo de dato también se usaba para responder a preguntas como si el usuario ganó, perdió, o si pasó algo? Podemos usar ese tipo de dato para que el programa decida qué camino tomar o si ejecutar o no un bloque de código.
Así como teníamos operadores matemáticos, también tenemos algo llamado “operadores lógicos“. Estos operadores también utilizan un valor a la izquierda y uno a la derecha, pero en lugar de darnos un resultado numérico, nos dan un resultado “bool“. Este es el tipo de dato del cual estábamos hablando, y que nos va a servir para trabajar con condicionales, es decir, para hacer una cosa u otra, según se cumpla o no una determinada condición.
Vamos a ver una tabla comparativa respecto de ambos tipos de operadores. Noten que algunos operadores pueden usarse de manera unaria (o sea, sólo requieren el operador y un valor), y otros pueden usarse de manera binaria (o sea, requieren un valor a la izquierda, el operador y otro valor a la derecha):
OPERADORES BOOLEANOS:
El tipo de dato que se obtiene como resultado SIEMPRE es bool, sin importar el tipo de dato a la izquierda y a la derecha.
OPERADORES MATEMÁTICOS:
El tipo de dato resultante de estas operaciones puede variar dependiendo de cuáles sean sus tipos de datos a la izquierda y a la derecha. Pero siempre va a elegir uno de los dos tipos y siempre el más abarcativo.
Los operadores <= y >= funcionan casi de manera idéntica a < y > con la diferencia de que también comprueban igualdad.
Este tipo de operadores los van a utilizar siempre a lo largo de cada proyecto que emprendan, así que sería ideal que se aprendan su funcionamiento e incluso empiecen a pensar de la misma manera que el compilador interpreta esto. Siempre es como cuando aprenden un idioma nuevo: No es sólo saber hablarlo sino aprender a pensar en ese idioma. Acá pasa lo mismo. Sería ideal que aprendan a pensar de la manera en la que el lenguaje o “un” lenguaje interpreta las órdenes, para ya ir escribiendo y traduciendo las ideas que se les van ocurriendo casi de manera instantánea. No se queden sólo con las cosas que muestro acá, siempre investiguen y pidan otras opiniones. La mayoría de las cosas que escribo son a la manera que las fuí aprendiendo y las voy usando, pero la realidad es que siempre voy cambiando la forma de programar. Traten de no programar igual que otra persona! Busquen la suya propia, y tomense sus tiempos para ir moldeándose. Es sólo un consejo. ;).