Bienvenidos sean a este post, hoy veremos al condicional universal por excelencia.
Como dijimos este es el condicional por excelencia en todo lenguaje, dado que tiene el mismo nombre aunque puede variar su sintaxis pero tecnicamente es igual en todos, comencemos con la opcion mas basica que es la siguiente:
if (condicion)
{
... instrucciones ...
}
Donde simplemente evaluaremos una condicion y si es verdadera procedera a ejecutar las instrucciones en el bloque, veamos un ejemplo para el cual crearemos un nuevo archivo que llamaremos if.c y la agregaremos el siguiente codigo:
if.c
#include <stdio.h>
int main()
{
char opcion[1];
printf("Deseas continuar? (S/N): ");
scanf("%s", opcion);
if (*opcion == 's')
{
printf("Que bueno!\n");
}
return 0;
}
En este ejemplo veremos un par de cosas interesantes, la primera es como definimos a la variable de tipo char, en este caso le pasamos el tamaño del mismo porque si recuerdan cuando hablamos de los tipos de de datos en este post dijimos que era un tipo de array sobre este tipo de variable hablaremos mas adelante en otro post, pero esto le dice al codigo que esta variable solo almacenara un caracter, despues mostraremos un mensaje y lo siguiente es el metodo scanf que nos permite ingresar un valor para almacenarlo en la variable antes definida, lo siguiente es nuestro tema, veamos esa parte:
if (*opcion == 's')
{
printf("Que bueno!\n");
}
Aqui tenemos otra particularidad, el operador que ven ahi es el de apuntador, sobre este tema hablaremos mucho mas adelante, pero basicamente le estamos diciendo que busque la informacion en la direccion de memoria y no en la variable, este es un tema complejo de lo cual tendra su propio post, despues usamos el operador de igualdad donde verifica si la informacion de nuestra variable apuntada es igual al que pasamos del otro lado, en caso de ser verdadero mostrara ese mensaje y en caso de ser falso ignorara todo lo relativo a este condicional, veamos como funciona nuestro codigo
En el video podemos ver que funciono correctamente cuando mandamos la letra s nos responde y cuando no lo hacemos no hace nada, bueno ahora queremos que el codigo responda cuando presionamos n, para ello modificaremos unicamente el condicional de la siguiente manera:
if (*opcion == 's')
{
printf("Que bueno!\n");
} else {
printf("Que mal!\n");
}
Observen que solamente agregamos una palabra nueva que es else, esta se traduce como ‘de lo contrario’, y la cual tomara la condicion que no es verdadera y ejecutara el bloque que tenga asociado, en este caso lo utilizaremos para cuando no pasamos el valor de s, vamos a compilarlo y ver como trabaja mediante el siguiente video
Como pueden ver en el video funciono correctamente cuando pasamos el valor de s o n para las distintas acciones pero si pasamos otra letra toma la accion del else, esto es debido a lo mencionado anteriormente donde else se ejecutara cuando la condicion anterior no se cumplio pero no es lo que queremos porque necesitamos que solo actue con la letra n, para esto podemos utilizar una opcion mas y para ello tomemos el segmento de if y volvamos a modificarlo de la siguiente manera:
if (*opcion == 's')
{
printf("Que bueno!\n");
}
else if (*opcion == 'n')
{
printf("Que mal!\n");
}
else
{
printf("Debes elegir entre S o N\n");
}
La primera modificacion que hicimos fue agregar un nuevo bloque, en este caso es el else if, que es una mezcla del condicional con else, porque nos da la posibilidad de evaluar otra condicion, en este caso le agregamos la opcion de n para que nos informe el mensaje que antes teniamos en else, ahora en else tenemos otro mensaje para informar que el valor elegido debe ser entre s y n, vamos a compilar y probarlo nuevamente:
Como podemos ver en el video ahora funciona mejor dado que ahora podemos manejar distintos mensajes dependiendo de si usamos la s o la n o cualquier letra pero si utilizamos el valor en mayuscula de una de las opciones validas nos devuelve el mensaje de else y eso sigue estando mal, vamos a tomar el segmento anterior y lo modificaremos de la siguiente manera:
if (*opcion == 's' || *opcion == 'S')
{
printf("Que bueno!\n");
}
else if (*opcion == 'n' || *opcion == 'N')
{
printf("Que mal!\n");
}
else
{
printf("Debes elegir entre S o N\n");
}
Recuerdan cuando hablamos de operadores en este post, mencionamos unos que se llaman operadores logicos y estos devolvian true o false dependiendo del operador y los elementos a comparar, en este caso agregamos el operador OR para que devuelva true si alguna de las condiciones es verdadera, en caso de ser asi ejecutara el bloque correspondiente tal como vimos hasta ahora, y observen que pasamos la condicion de la letra en minuscula y otra en mayuscula,y else sigue como antes porque este es unico, compilemos y veamos como es su salida:
En el video tenemos el problema solucionado dado que pasemos la letra que pasemos en mayusculas o minusculas nos devuelve el mensaje que corresponde, veamos como es el codigo final:
if.c
}#include <stdio.h>
int main()
{
char opcion[1];
printf("Deseas continuar? (S/N): ");
scanf("%s", opcion);
if (*opcion == 's' || *opcion == 'S')
{
printf("Que bueno!\n");
}
else if (*opcion == 'n' || *opcion == 'N')
{
printf("Que mal!\n");
}
else
{
printf("Debes elegir entre S o N\n");
}
return 0;
}
Pasemos a ver como es la sintaxis final del condicional:
if (condicion)
{
... instruccciones ...
}
else if (condicion)
{
... instruccciones ...
}
else
{
... instruccciones ...
}
Siendo el primer if el unico obligatorio, el resto son opcionales tal como vimos en el primer codigo, de los else if podemos utilizar todos los que queramos con todas las condiciones que necesitemos, y else siempre siempre ira al final para actuar en el caso de que todas las condiciones anteriores hayan fallado.
En resumen, hoy hemos visto el condicional if, que es, en que nos ayuda, para que se utiliza, todas sus opciones y unos ejemplos para verlo en accion, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
