Podemos indicar lo que queremos que ocurra en caso de que no se cumpla la condición, usando la orden "else" (en caso contrario), así:
/* ej020401.c */
/* Uso de "else" */
/* Ejemplo del apartado 2.4 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int numero;
printf("Escribe un número: ");
scanf("%d", &numero);
if (numero > 0)
printf("El número es positivo.");
else
printf("El número es cero o negativo.");
return 0;
}
Podríamos intentar evitar el uso de "else" si utilizamos un "if" a continuación de otro, así:
/* ej020402.c */
/* Alternativa a "else" */
/* Ejemplo del apartado 2.4 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int numero;
printf("Escribe un número: ");
scanf("%d", &numero);
if (numero > 0)
printf("El número es positivo.");
if (numero <= 0)
printf("El número es cero o negativo.");
return 0;
}
Pero el comportamiento no es el mismo: en el primer caso (ej020401.c) se mira si el valor es positivo; si no lo es, se pasa a la segunda orden, pero si lo es, el programa ya ha terminado. En el segundo caso (ej020402.c), aunque el número sea positivo, se vuelve a realizar la segunda comprobación para ver si es negativo o cero, por lo que el programa es algo más lento.
(Nota: presta atención al ejemplo anterior. Es importante recordar que lo contrario de que un número sea mayor que cero no es que sea menor que cero, sino que sea menor o igual).
Podemos enlazar varios "if" usando "else", para decir "si no se cumple esta condición, mira a ver si se cumple esta otra":
/* ej020403.c */
/* Condiciones anidadas */
/* Ejemplo del apartado 2.4 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int numero;
printf("Escriba un número: ");
scanf("%d", &numero);
if (numero < 0)
printf("El número es negativo.");
else
if (numero == 0)
printf("El número es cero.");
else
printf("El número es positivo.");
return 0;
}
Y recuerda también que, aunque no sea obligatorio, puede ser recomendable incluir siempre las llaves en la secuencia de órdenes que sigue a un "if", buscando mayor legibilidad y menor probabilidad de problemas si posteriormente se amplía el problema.
/* ej020404.c */
/* Condiciones anidadas (2) */
/* Ejemplo del apartado 2.4 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int numero;
printf("Escriba un número: ");
scanf("%d", &numero);
if (numero < 0)
{
printf("El número es negativo.");
}
else
{
if (numero == 0)
{
printf("El número es cero.");
}
else
{
printf("El número es positivo.");
}
}
return 0;
}
Ejercicio propuesto 2.4.1: Crea una versión del ejercicio 2.3.1, que use "else": 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.
Ejercicio propuesto 2.4.2: Crea una versión del ejercicio 2.3.2, que use "else": un programa que pida al usuario dos números enteros. Si el segundo no es cero, mostrará el resultado de dividir el primero entre el segundo. Por el contrario, si el segundo número es cero, escribirá "Error: No se puede dividir entre cero".