switch…case en C (Declaración de cambio en C) con ejemplos

¿Qué es la declaración de cambio en C?

Declaración de cambio en C prueba el valor de una variable y lo compara con varios casos. Una vez que se encuentra la coincidencia del caso, se ejecuta un bloque de instrucciones asociadas con ese caso en particular.

Cada caso en un bloque de un interruptor tiene un nombre/número diferente al que se hace referencia como identificador. El valor proporcionado por el usuario se compara con todos los casos dentro del bloque de interruptor hasta que se encuentra la coincidencia.

Si NO se encuentra una coincidencia de caso, entonces se ejecuta la instrucción predeterminada y el control sale del bloque de conmutación.

Sintaxis de caso de cambio

Una sintaxis general de cómo se implementa switch-case en un programa 'C' es la siguiente:

switch( expression )
{
	case value-1:
			Block-1;
			Break;
	case value-2:
			Block-2;
			Break;
	case value-n:
			Block-n;
			Break;
	default:
			Block-1;
			Break;
}
Statement-x;
  • La expresión puede ser una expresión entera o una expresión de caracteres.
  • Valor-1, 2, n son etiquetas de casos que se utilizan para identificar cada caso individualmente. Recuerde que las etiquetas de los casos no deben ser las mismas, ya que puede crear un problema al ejecutar un programa. Supongamos que tenemos dos casos con la misma etiqueta que "1". Luego, mientras se ejecuta el programa, se ejecutará el caso que aparece primero aunque desee que el programa ejecute un segundo caso. Esto crea problemas en el programa y no proporciona el resultado deseado.
  • Las etiquetas de casos siempre terminan con dos puntos ( : ). Cada uno de estos casos está asociado a un bloque.
  • Un bloque no es más que múltiples declaraciones que se agrupan para un caso particular.
  • Cada vez que se ejecuta el cambio, el valor de la expresión de prueba se compara con todos los casos que hemos definido dentro del cambio. Supongamos que la expresión de prueba contiene el valor 4. Este valor se compara con todos los casos hasta el caso cuya etiqueta cuatro se encuentra en el programa. Tan pronto como se encuentra un caso, el bloque de declaraciones asociadas con ese caso en particular se ejecuta y el control sale del interruptor.
  • La palabra clave break en cada caso indica el final de un caso particular. Si no ponemos la interrupción en cada caso, aunque se ejecute el caso específico, el cambio en C continuará ejecutando todos los casos hasta llegar al final. Esto no debería suceder; por lo tanto, siempre tenemos que poner la palabra clave break en cada caso. Break terminará el caso una vez que se ejecute y el control se caerá del interruptor.
  • El caso predeterminado es opcional. Siempre que el valor de test-expression no coincida con ninguno de los casos dentro del conmutador, se ejecutará el valor predeterminado. De lo contrario, no es necesario escribir el valor predeterminado en el conmutador.
  • Una vez que se ejecuta el cambio, el control irá a la instrucción-x y la ejecución de un programa continuará.

Diagrama de flujo de declaración de cambio

El siguiente diagrama ilustra cómo se selecciona un caso en el caso del interruptor:

Diagrama de flujo de declaración de cambio
Cómo funciona el interruptor

Ejemplo de caso de cambio en C

El siguiente programa ilustra el uso del conmutador:

#include <stdio.h>
    int main() {
        int num = 8;
        switch (num) {
            case 7:
                printf("Value is 7");
                break;
            case 8:
                printf("Value is 8");
                break;
            case 9:
                printf("Value is 9");
                break;
            default:
                printf("Out of range");
                break;
        }
        return 0;
    }

Salida:

Value is 8

Ejemplo de caso de cambio en C

  1. En el programa dado hemos explicado inicializado un variable número con valor 8.
  2. Se utiliza una construcción de cambio para comparar el valor almacenado en la variable num y ejecutar el bloque de declaraciones asociadas con el caso coincidente.
  3. En este programa, dado que el valor almacenado en la variable num es ocho, un interruptor ejecutará el caso cuya etiqueta de caso sea 8. Después de ejecutar el caso, el control se caerá del interruptor y el programa finalizará con el resultado exitoso. imprimiendo el valor en la pantalla de salida.

Intente cambiar el valor de la variable num y observe el cambio en la salida.

Por ejemplo, consideremos el siguiente programa cuyo valor predeterminado es:

#include <stdio.h>
int main() {
int language = 10;
  switch (language) {
  case 1:
    printf("C#\n");
    break;
  case 2:
    printf("C\n");
    break;
  case 3:
    printf("C++\n");
    break;
  default:
    printf("Other programming language\n");}}

Salida:

Other programming language

Cuando trabaja con un caso de cambio en C, agrupa varios casos con etiquetas únicas. Debe introducir una declaración de interrupción en cada caso para bifurcarse al final de una declaración de cambio.

El caso predeterminado opcional se ejecuta cuando no se realizan otras coincidencias.

Consideremos la siguiente declaración switch:

#include <stdio.h>
int main() {
int number=5;
switch (number) {
  case 1:
  case 2:
  case 3:
    printf("One, Two, or Three.\n");
    break;
  case 4:
  case 5:
  case 6:
    printf("Four, Five, or Six.\n");
    break;
  default:
    printf("Greater than Six.\n");}}

Salida:

Four, Five, or Six.

Interruptor anidado en C

In C, podemos tener un interruptor interno integrado en un interruptor externo. Además, las constantes de caso del interruptor interno y externo pueden tener valores comunes y sin ningún conflicto.

Consideremos el siguiente programa en el que el usuario escribe su propia ID, si la ID es válida le pedirá que ingrese su contraseña, si la contraseña es correcta el programa imprimirá el nombre del usuario, de lo contrario, el programa imprimirá Contraseña incorrecta y si la ID no existe, el programa imprimirá ID incorrecta

#include <stdio.h>
int main() {
        int ID = 500;
        int password = 000;
        printf("Plese Enter Your ID:\n ");
        scanf("%d", & ID);
        switch (ID) {
            case 500:
                printf("Enter your password:\n ");
                scanf("%d", & password);
                switch (password) {
                    case 000:
                        printf("Welcome Dear Programmer\n");
                        break;
                    default:
                        printf("incorrect password");
                        break;
                }
                break;
            default:
                printf("incorrect ID");
                break;
        }
}

Salida:

Plese Enter Your ID:
 500
Enter your password:
 000
Welcome Dear Programmer

Interruptor anidado en C

  1. En el programa dado hemos explicado dos variables inicializadas: ID y contraseña.
  2. Se utiliza una construcción de interruptor externo para comparar el valor ingresado en la ID de la variable. Ejecuta el bloque de declaraciones asociadas con el caso coincidente (cuando ID == 500).
  3. Si la declaración de bloque se ejecuta con el caso coincidente, se utiliza un interruptor interno para comparar los valores ingresados ​​en la contraseña variable y ejecutar las declaraciones vinculadas con el caso coincidente (cuando contraseña == 000).
  4. De lo contrario, el caso de conmutación activará el caso predeterminado e imprimirá el texto apropiado respecto del esquema del programa.

¿Por qué necesitamos un estuche Switch?

Hay un problema potencial con el declaración if-else La complejidad del programa aumenta cuando aumenta el número de rutas alternativas. Si se utilizan múltiples construcciones if-else en el programa, este puede volverse difícil de leer y comprender. A veces, incluso puede confundir al desarrollador que escribió el programa.

La solución a este problema es la declaración de cambio.

Reglas para la declaración de cambio

  • Una expresión siempre debe ejecutarse para obtener un resultado.
  • Las etiquetas de casos deben ser constantes y únicas.
  • Las etiquetas de los casos deben terminar con dos puntos ( : ).
  • En cada caso debe estar presente una palabra clave de interrupción.
  • Sólo puede haber una etiqueta predeterminada.
  • Podemos anidar múltiples declaraciones de cambio.

Resum

  • Un cambio es una construcción de toma de decisiones en 'C. "
  • Un interruptor se utiliza en un programa donde están involucradas múltiples decisiones.
  • Un modificador debe contener una expresión de prueba ejecutable.
  • Cada caso debe incluir una palabra clave de interrupción.
  • La etiqueta del caso debe ser constante y única.
  • El valor predeterminado es opcional.
  • Se pueden anidar varias declaraciones de cambio unas dentro de otras.