Si queremos analizar varios posibles valores de una misma variable, puede resultar muy pesado tener que hacerlo con muchos "if" seguidos o encadenados:
/* ej021001.c */
/* Acercamiento a "switch" */
/* Ejemplo del apartado 2.10 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int n;
printf("Introduce un número del 1 al 5: ");
scanf("%d", &n);
if (n==1)
printf("Uno");
else if (n==2)
printf("Dos");
else if (n==3)
printf("Tres");
else if (n==4)
printf("Cuatro");
else if (n==5)
printf("Cinco");
else
printf("No es del uno al cinco");
return 0;
}
La alternativa es la orden "switch", cuya sintaxis es
switch (expresión)
{
case valor1:
sentencia1;
break;
case valor2:
sentencia2;
sentencia2b;
break;
...
case valorN:
sentenciaN;
break;
default:
otraSentencia;
}
Es decir:
Así, una versión alternativa del programa anterior podría ser:
/* ej021002.c */
/* Contacto con "switch" */
/* Ejemplo del apartado 2.10 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int n;
printf("Introduce un número del 1 al 5: ");
scanf("%d", &n);
switch(n)
{
case 1: printf("Uno"); break;
case 2: printf("Dos"); break;
case 3: printf("Tres"); break;
case 4: printf("Cuatro"); break;
case 5: printf("Cinco"); break;
default: printf("No es del uno al cinco");
}
return 0;
}
Un ejemplo más detallado, que demuestre más detalles de la sintaxis de "switch", puede ser:
/* ej021003.c */
/* Uso de "switch" */
/* Ejemplo del apartado 2.10 */
/* Curso de C, Nacho Cabanes */
#include
int main()
{
int n;
printf("Introduce un número del 1 al 10: ");
scanf("%d", &n);
switch(n)
{
case 1:
printf("Uno.");
break;
case 2:
case 3:
case 4:
printf("Dos, tres o cuatro.");
break;
case 10:
printf("Diez, múltiplo de... ");
case 5:
printf("Cinco.");
break;
case 6:
case 7:
case 8:
printf("Seis, siete u ocho.");
break;
default:
printf("No está entre uno y diez.");
}
return 0;
}
En este programa:
Las órdenes "switch" se utilizan también con frecuencia para analizar letras introducidas por el usuario, como veremos pronto.
Ejercicio propuesto 2.10.1: Crea un programa que pida al usuario que introduzca un número -1, 0 ó 1, y dirá si es negativo, positivo o cero. Esta primera versión debe usar "if".
Ejercicio propuesto 2.10.2: Crea un programa que pida al usuario que introduzca un número -1, 0 ó 1, y dirá si es negativo, positivo o cero. Esta segunda versión debe usar "switch".
Ejercicio propuesto 2.10.3: Crea un programa un poco más exhaustivo, que pida al usuario que introduzca un número entre -3 y +3, ambos incluidos, y diga si es negativo, positivo o cero. Esta versión debe usar "if".
Ejercicio propuesto 2.10.4: Crea una versión del programa que pide al usuario que introduzca un número entre -3 y +3, ambos incluidos, y dice si es negativo, positivo o cero. Esta nueva versión debe usar "sitch".