SWITCH CASE
Es una estructura selectiva múltiple que funciona como alternativa para las funciones condicionales
anidadas, en el libro de FUNDAMENTOS DE PROGRAMACION PIENSA EN C, en la pagina # 58, 2.4
LA ESTRUCTURA SELECTIVA MULTIPLE SWITCH CASE, se desarrolla dicho tema donde se explica la
parte teórica y ejemplos de modelo para la comprensión de mismo.
Esta función trabaja con una variable que hace las veces de selector es la que evalúa el switch en
cada uno de los casos.
Dicha variable debe ser siempre para efectos prácticos de tipo entero o tipo carácter, si se trabaja
con tipo carácter se debe tener en cuenta que las letras minúsculas son diferentes a las mayúsculas
por lo tanto se deben de considerar ambos casos para la evaluación de la misma.
En los ejercicios iniciales el código se escribe de forma robusta, mediante vamos avanzando en el
dominio de lenguaje de programación se van empleando herramientas que nos permiten una mejor
estructura.
Cuando usamos SWITCH CASE la variable llamada selector u opción es la que se evaluara en cada
uno de los casos.
Cada caso se define con la palabra case está en minúscula luego el numero a evaluar seguido por
dos puntos ejemplo: si quiero evaluar una variable que admite solo los números del 1 al 4, y le llamo
op a la variable cuando evalué op será: case 1: a continuación no se requiere de llaves como en
los demás casos donde se establecen bloques de procesos como en los if aquí no es necesario si lo
pone no afecta pero solo se deben de escribir las instrucciones finalizando con punto y coma cada
una de ellas hasta llegar a la última instrucción que corresponda a ese caso, después de la última
instrucción se debe colocar la palabra reservada break seguido de un punto y coma y con esto se le
indica al programa que ese caso finaliza ahí
A continuación, debe de enlistarse el caso siguiente que sería: case 2: seguido de las instrucciones
y finalizando con la palabra reservada break,
Si por ejemplo en el caso 3 y 4 la acción a seguir es la misma se colocan ambos casos seguidos y una
sola vez la instrucción ejemplo:
Case 3:
Case 4:
Printf(“la acción de 3 y 4 es la misma”);
Ejemplo # 1 case1.c
Este programa me permite introducir una calificación en letras de A HASTA F en mayúsculas
• Por lo tanto, si digita las letras a hasta f en minúsculas no serán consideradas dentro de los
casos porque las minúsculas no son las mismas que las mayúsculas
• Como la variable selector es de tipo carácter, entonces estamos trabajando con el código
ASCII, por lo tanto el conjunto de valores que puede tomar la variable son 255 valores de
los cuales solo estamos evaluando de la A hasta F las demás deben de excluirse, y para ello
la estructura SWITCH CASE tiene una opción que se llama DEFAULT, esta se escribe después
del ultimo caso en minúsculas y seguida de dos puntos y es hace la función de recibir en ese
caso todos los valores que no son contemplados en las opciones
• Este caso DEFAULT puede ir o no dentro de la estructura eso dependerá de como valide el
valor de la variable antes de los case
• El caso default terminara igual que los case con la palabra reservada break;
#include<stdio.h>
int main()
{
char nota;
printf("introduzca calificacion (A-F) y pulse intro:");
scanf("%c", ¬a);
switch (nota)
{
case 'A': puts("excelente, examen superado");
break;
case 'B': puts("notable, suficiente");
break;
case 'C': puts("aprobado");
break;
case 'D': puts("mala nota");
break;
case 'E': puts("suspendido");
break;
default:
puts("no es posible esta nota");
}
puts("final del programa");
system("pause");
}
Ejemplo # 2 case2.c
/*programa que ingresa una vocal en minúsculas o mayúsculas y nos da como
resultado si es vocal si es diferente de ello da un mensaje de que no es vocal*/
• este programa si contempla seleccionar la vocal minúscula o mayúscula de forma indistinta
es decir cualquiera que ingrese será tomada como un caso
• como se esta trabajando con una variable de tipo carácter cuando se haga referencia al
contenido de ella se debe de colocar siempre entre comillas simples
• como lo que se esta clasificando es si el carácter es vocal eso incluye si es a,e,i,o,u asi como
A,E,I,O,U cualquiera de ellas es vocal por lo tanto los 10 casos llevan a lo mismo, de ello la
estructura del programa con los casos así al terminar de enlistarlos define las instrucciones
de esos casos y finaliza con un break, porque esas instrucciones son las misma para los 10
casos y el programa se detiene hasta que encuentre un break,
• como en conjunto es de 255 caracteres por ser una variable de tipo carácter y solo necesito
saber las que son vocales en mayúsculas o minúsculas, las restantes se direccionan para el
caso DEFAULT
#include <stdio.h>
int main()
{
char car;
printf("ingrese una vocal: ");
scanf("%c", &car);
switch (car)
{
case 'a': case 'A':
case 'e': case 'E':
case 'i': case 'I':
case 'o': case 'O':
case 'u': case 'U':
printf("%c es una vocal\n", car);
break;
default:
printf("%c no es una vocal\n",car);
}
system("pause");
}
Ejemplo # 3 case3.c
• Ejemplo basado en una variable de tipo entero
/*ingrese un numero dentro de un rango de 0 a 2 y nos da como
resultado un mensaje de el nombre del numero, si esta fuera de rango
despliega un mensaje que el numero esta fuera de rango*/
#include<stdio.h>
int main()
{
int opcion;
printf("ingrese un numero entre 0 y dos: ");
scanf("%d", &opcion);
switch (opcion)
{
case 0:
puts("el numero es cero");
break;
case 1:
puts("el numero es uno");
break;
case 2:
puts("el numero es dos");
break;
default:
puts("numero fuera de rango");
}
system("pause");
}
Ejemplo # 4 case4.c
Ejemplo similar al anterior, pero ilustrando que también en los casos de variables enteras se puede
aplicar varios casos para la misma instrucción como se trabaja en case 0,1,2 cualquiera de esos
valores que tome 0,1,2 la variable será la misma acción a ejecutar que es imprimir el mensaje menor
de tres
#include <stdio.h>
int main()
{
int opcion;
printf("ingrese un numero dentro del rango de 0 a 3: ");
scanf("%d", &opcion);
switch (opcion)
{
case 0:
case 1:
case 2:
puts("menor de tres");
break;
case 3:
puts("menor que cuatro");
break;
default:
puts("fuera de rango");
}
system("pause");
}
Ejemplo # 5 dias semana.c
Se utiliza una variable entera para asignar un numero a el dia correspondiente de la semana pero
no se toma en consideración el caso DEFAULT por lo tanto si se digita números fuera de los casos el
programa corre y no hace nada no da fallas pero tiene errores lógicos porque no se valido ese
criterio
/* Uso de la sentencia condicional SWITCH. */
#include <stdio.h>
main() /* Escribe el d¡a de la semana */
{
int dia;
printf("Introduce el d¡a: ");
scanf("%d",&dia);
switch(dia){
case 1: printf("Lunes"); break;
case 2: printf("Martes"); break;
case 3: printf("Mi‚rcoles"); break;
case 4: printf("Jueves"); break;
case 5: printf("Viernes"); break;
case 6: printf("S bado"); break;
case 7: printf("Domingo"); break;
}
getch();
}