Aprende a programar desde cero: Condicionales

Esta es una serie de artículos donde discutimos conceptos básicos de programación de una forma intuitiva, por medio de ejemplos.

En esta ocasión aprenderemos sobre los condicionales, para que sirven y como usarlos.

Que son los condicionales

Los condicionales nos permiten escoger entre diferentes acciones según la respuesta a un interrogante.

Por ejemplo:

  • Si cuesta menos de $10.000 me lo compro.
  • Si no llueve me pongo el vestido rojo.

En estos ejemplos la acción a seguir depende de la respuesta a un interrogante, por lo que la acción cambia si la respuesta es si (Verdadera/True) o no (Falsa/False).

Las partes de una condición son:

  • La incógnita: si pasas el curso
  • La acción que tomamos si la respuesta es verdadera: comprar bicicleta
  • Opcional: una consecuencia si no se cumple: te quedas sin TV 1 mes.

enter image description here

Podemos hacer preguntas mas complicadas uniendo varias preguntas mas pequeñas con los conectores Y y O, como por ejemplo:

Si me pagan y no llueve vamos a piscina

Si no paga no se va a piscina
Si llueve tampoco se va a piscina
Solo si las dos se cumplen

Condiciones en programación

Las condiciones nos permiten inspeccionar las variables de nuestro programa con el fin de responder preguntas necesarias para resolver un problema.

Por ejemplo, si estamos haciendo una calculadora; casi todas las operaciones matemáticas básicas se pueden realizar entre cualquier numero, menos la división, la cual no se puede hacer entre cero.

Ya que las entradas a nuestra calculadora son hechas por el usuario, no hay nada que podamos hacer para impedir que este ingrese el numero que quiera.

Lo que si podemos hacer es inspeccionar dichos números para verificar que las condiciones necesarias para la correcta ejecución de nuestro programa se cumplan:

int dividendo = 10;
int divisor = 0; // imagina que lo ingreso el usuario

if (divisor === 0) {
	// mostrar mensaje de error
} else {
	// el divisor no es cero por lo que se puede proceder
	float resultado = dividendo / divisor;
	// mostrar resultado
}

Sintaxis de un condicional

La forma de escribir el condicional varia dependiendo del lenguaje, pero por lo general tienen la siguiente forma:

Lenguajes con sintaxis similar a c (java, c#, c++, php, javascript…)

if (condición dentro de paréntesis) {
  // lo que se ejecuta si es cierta la condición
  // va dentro de corchetes/llaves
} else { // <-- opcional
  // lo que se desea ejecutar si es falsa
  // también va dentro de corchetes/llaves
}

En caso de que existan múltiples condiciones podemos usar un else if (sino si). En este caso se ejecutara el primer bloque cuya condición sea cierta y se descartaran los demás.

if (<primera-condición>) {
	// acciones
} else if (<segunda-condición>) {
	// acciones
} else { // ninguna de las condiciones se cumple
   // acciones
}

Como hacemos “preguntas” en un condicional

Existen diferentes operadores que nos permiten hacer preguntas acerca de las variables con el fin de tomar una decisión.

símbolo significado
== Compara si dos valores son iguales
!= Compara si dos valores son diferentes
> Compara si el valor de la izquierda es mayor que el de la derecha
< ¿Es el valor de la izquierda menor que el de la derecha?
>= ¿Es el valor de la izquierda mayor o igual al de la derecha?
<= ¿Es el valor de la izquierda menor o igual al de la derecha?

Si queremos crear una pregunta mas compleja podemos conectar varias preguntas mas pequeñas usando conectores lógicos como:

Símbolo significado
&& Tanto la parte izquierda como derecha son verdaderas
|| Alguna o ambas partes de la condición son verdaderas

Nota: en algunos lenguajes como python se usa or y and en lugar de || y &&

Como podemos ver, en programación el significado de O (||) es muy diferente al que usamos al hablar.

Cuando usamos el conector O al hablar, se debe elegir una sola opción entre varias, por ejemplo: “Puedes comer pollo o carne”, Quieren decir que solo podemos comer una de ellas, pero no las dos.

En programación cuando usamos O (||), la condición se cumple si una o varias de las “incógnitas” individuales se cumplen:

int a = 3
// dos de las tres "incógnitas" se cumplen
// por lo que la condición se cumple
if (a < 3 || a < 5 || a > 10) {
	// acciones
}

Ejemplo practico

Imagina que estas creando un juego de pocker y deseas calcular los puntos que obtiene un jugador.

Para simplificar las cosas descartemos los tipos y solo verifiquemos los valores, existen varios tipos de mano:

  • Pares
  • Full
  • Escalera

¿Como sabes el puntaje de un jugador? usando condicionales

// las cartas están guardas en variables c1, c2... hasta la cinco
// para facilitar las cosas se encuentran ordenadas de mayor a menor
if (c1 == c2 && c2 == c3 && c3 == c4) {
   // poker
} else if (c1-c2 == 1 && c2-c3 == 1 && c3-c4 == 1 && c4-c5 == 1) {
   // escalera
} else if (<?>) {
   // doble pares
}

¿Que condición debe ir en el ultimo else if para saber si es un doble par?

Conclusión

Con esto concluimos la parte dedicada a los condicionales, si tienes alguna pregunta no dudes en dejarla en los comentarios.