Switch en C – La mejor explicación para usarlo ya

Definición y sintaxis

La instrucción switch en C recibe un valor como parámetro, analiza qué valor es y ejecuta las instrucciones que le especifiquemos para ese valor.

esquema del funcionamiento de la instrucción switch case

Su sintaxis es la descrita en este bloque:

switch (valor)
{
    case posible_valor_1:
        instrucciones_para_valor_1
        break;

    case posible_valor_2:
        instrucciones_para_valor_2
        break;

    case posible_valor_3:
        instrucciones_para_valor_3
        break;
}

Si el valor que le pasamos como parámetro és el posible_valor_1, se ejecutarán sólo las instrucciones para este. Lo mismo para el segundo y el tercer valor.

Veamos unos cuantos ejemplo para acabar de comprender esta instrucción del lenguaje C.

EJEMPLOS de switch case en ansi C

Ejemplo 1 – configuración de un menú

Imagina que estamos desarrollando un menú para la web de un restaurante. Debemos pedir al usuario que inserte un número: si el número es 0 mostraremos el mensaje «Usted desea hacer una reserva», si es 1, le diremos «Usted quiere ver la carta» y si es 2, le indicaremos que quiere salir. Lo implementaríamos así:

#include <stdio.h>

int main()
{
    int opcion;
	
    printf("Bienvenido al restaurante\n");
    printf("¿Que desea hacer?\n");
    printf("Si desea reservar pulse 0\n");
    printf("Si desea ver la carta pulse 1\n");
    printf("Si desea salir pulse 2\n");
    scanf("%i", &opcion);
	
    switch (opcion)
    {
	case 0:
        printf("Usted desea hacer una reserva\n");
	    break;
			
	case 1:
        printf("Usted quiere ver la carta\n");
        break;
			
	case 2:
	    printf("Saliendo . . .\n");
	    break;
    }	
}

Ejemplo 2 – tratamiento de excepciones con case default

Ahora vamos a mejorar el menú anterior. ¿Qué pasaría si el usuario introduce un valor que no es ni 0, ni 1 ni 2? Para cubrir este problema podemos usar el caso default. Siempre que no se introduzca un valor que hayamos contemplado, mostraremos un mensaje de error.

#include <stdio.h>

int main()
{
    int opcion;
	
    printf("Bienvenido al restaurante\n");
    printf("¿Que desea hacer?\n");
    printf("Si desea reservar pulse 0\n");
    printf("Si desea ver la carta pulse 1\n");
    printf("Si desea salir pulse 2\n");
    scanf("%i", &opcion);
	
    switch (opcion)
    {
	case 0:
        printf("Usted desea hacer una reserva\n");
        break;
			
	case 1:
        printf("Usted quiere ver la carta\n");
        break;
			
	case 2:
        printf("Saliendo . . .\n");
        break;
        
    default:
        printf("ERROR\n");
        break;
    }	
}

Ejercicios propuestos switch en C

Ejercicio 1 – switch case con carácteres

Pronto te presentarás a un concurso de geografía. En este hay una prueba en la que te dicen una letra y debes decir tantas ciudades cómo puedas que empiecen por esa misma letra. Como eres muy espabilado, desarrollarás un programa para tu reloj inteligente al que le pasarás un letra y él te sugerirá las respuestas. Tu sólo tendrás que leerlas disimuladamente en el concurso. Deberás tratar el caso en que introduzcas un valor erróneo.

*implementa el programa para tres letras, no hace falta que lo hagas para todas*

Solución

#include <stdio.h>

int main()
{
    char letra;
	
    printf("Introduce la letra:\n");
    scanf("%c", &letra);
	
    switch (letra)
    {
	case 'a':
    	printf("Ávila, Albacete, Alicante");
	    break;
			
	case 'b':
        printf("Barcelona, Burgos, Badajoz");
        break;
			
	case 'c':
	    printf("Cartagena, Ceuta, Córdoba");
	    break;
        
    default:
        printf("ERROR\n");
	    break;
    }	
}

Ejercicio 2 – switch anidados en C

Estás desarrollando una aplicación web para un restaurante. En ella los clientes podrán hacer sus comandas. Debes crear el siguiente menú. Primero se preguntará al usuario si quiere menú adulto (pulsar 0), menú infantil (pulsar 1) o salir (pulsar 2). Si elige menú adulto deberá elegir entre los siguientes platos: arroz mar y montaña (pulsar 0), carrilleras en su salsa (pulsar 1), bacalao al horno (pulsar 2). Si elige menú infantil deberá elegir entre macarrones con tomate (pulsar 0) o espaguetis a la carbonara (pulsar 1). Deberás mostrar el pedido realizado.

*no hace falta que trates el caso en que el usuario introduce un valor no permitido*

Solución

#include <stdio.h>

int main()
{ 
    int opcion;

    printf("Elige una opcion:\n0: menu adulto\n1: menu infantil\n2: salir\n");
    scanf("%i", &opcion);
    
    switch (opcion) {
        case 0:
            printf("Has elegido menu adulto, seleccione un plato\n");
            printf("0: arroz mar y montaña\n1: carrilleras en su salsa\n2: bacalao al horno\n");
            scanf("%i", &opcion);
            
            switch (opcion) {
                case 0:
                    printf("Has elegido arroz mar y montaña\n");
                    break;

                case 1:
                    printf("Has elegido carrilleras en su salsa\n");
                    break;

                case 2:
                    printf("Has elegido bacalao al horno\n");
                    break;
            }
            break;

        case 1:
            printf("Has elegido menu infantil, seleccione un plato\n");
            printf("0: macarrones con tomate\n1: espaguetis a la carbonara\n");
            scanf("%i", &opcion);

            switch (opcion) {
                case 0:
                    printf("Has elegido macarrones con tomate\n");
                    break;

                case 1:
                    printf("Has elegido espaguetis a la carbonara\n");
                    break;
            } 
            break;

        case 2:
            printf("Saliendo . . .\n");
            break;
    }
}

Ejercicio 3 – switch en C dentro de funciones

Tienes una memoria muy mala para según que cosas y, a veces, te cuesta asociar el número de un mes con su nombre. Por ejemplo, mes 6 = junio. Para solucionar este problema vas a crear un programa con una función llamada nombreMes. A esta le pasarás un entero del 1 al 12 y mostrará por pantalla el nombre del mes. Si el número no es válido, mostrará un mensaje de error.

Solución

#include <stdio.h>

void nombreMes(int numMes);

int main()
{
    int numMes;
    
    printf("Inserte el numero del mes: ");
    scanf("%i", &numMes);

    nombreMes(numMes);
}

void nombreMes(int numMes)
{
    switch (numMes)
    {
        case 1:
            printf("Enero\n");
            break;
        case 2:
            printf("Febrero\n");
            break;
        case 3:
            printf("Marzo\n");
            break;
        case 4:
            printf("Abril\n");
            break;
        case 5:
            printf("Mayo\n");
            break;
        case 6:
            printf("Junio\n");
            break;
        case 7:
            printf("Julio\n");
            break;
        case 8:
            printf("Agosto\n");
            break;
        case 9:
            printf("Septiembre\n");
            break;
        case 10:
            printf("Octubre\n");
            break;
        case 11:
            printf("Noviembre\n");
            break;
        case 12:
            printf("Diciembre\n");
            break;
        default:
            printf("ERROR: Numero no valido\n");
            break;
    }
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Estoy de acuerdo con que el responsable de la web Aprendiz de Programación use los datos proporcionados en este comentario para poder comunicarse de forma efectiva.

Scroll al inicio