Caso cambiar tutorial, sintaxis, ejemplos y reglas en lenguaje C

En este artículo, vamos a aprender sobre declaraciones de toma de decisiones como switch – case – default y sus usos en el lenguaje de programación C .

La toma de decisiones utilizando switch – case – default

Muchas veces en nuestra vida cotidiana, nos enfrentamos a condiciones en las que estamos obligados a elegir entre una serie de alternativas en lugar de sólo dos o tres. Por ejemplo, a qué escuela ir, qué alimentos tienen en un restaurante, a qué jugar, etc. Del mismo modo, en los lenguajes de programación, a veces se enfrentan a problemas en los que tenemos que hacer que el programa fácil de usar, dándoles más de dos alternativas para elegir en lugar de sólo uno o dos.

En tales casos, se convierte en un problema complicado si utilizamos una serie de declaraciones else si-. Por lo tanto, C nos proporciona una sentencia de control discreto que es “switch” para manejar estos problemas con eficacia. Aprendamos cómo utilizar un switch, case y palabras clave default ?

La forma general de las tres palabras clave es:

    switch (integral_expression)
{
case constant_1:
code;
[break;]
case constant_2:
code;
[break;]
.
.
.
case constant_n:
code;
[break;]
default:
code;
}

Puntos a tener en cuenta:

  1. La expresión número entero después de la switch palabra clave es cualquier declaración C válido que los rendimientos de un valor entero . Ejemplo, constantes enteras como 1 , 2 , 100 etc.
  2. Los valores de Constante_1 , Constante_2 después de la case palabra clave puede ser un número entero o carácter. Pero todas estas constantes deben ser diferentes unos de otros.
  3. El código mencionado anteriormente es el código que queremos ejecutar. Puede ser cualquier cosa, desde printf a otro switch – escalera case.
  4. Ahora, cuando ejecutamos nuestro programa, lo que suceda primero es la expresión entera se evalúa.
  5. El control pasa entonces dentro de la switch y el valor recibido de la expresión entera se compara con las constantes case.
  6. Si se determina que el partido con cualquier constante case, que case particular, se ejecutará junto con las siguientes afirmaciones case y default.
  7. Si no se encuentra el partido, únicamente los estados después de la default se ejecutan.

Ejemplo:

#include <stdio.h>
int main( )
{
int i = 2 ;
switch ( i )
{
case 1:
printf ( "1 n" ) ;
case 2:
printf ( "2 n" ) ;
case 3:
printf ( "3 n" ) ;
default:
printf ( "No match n" ) ;
}
return 0;
}

salida

    2 
3
No match

En el programa anterior, la mayoría de nosotros espera que la salida sea solamente 2 ya que el valor de constante i es 2 . Pero eso no sucede ya que todas las declaraciones case y la default es ejecutado después de que se encontró el partido, como se mencionó anteriormente.

Para evitar que esto suceda, se utiliza otra declaración llamada la declaración break para obtener la salida solamente de esa case particular. Tenga en cuenta que break no tiene por qué ser escrito después de la declaración default ya que el control salga del bucle switch de todos modos.

Ejemplo:

#include <stdio.h>
int main( )
{
int i = 2 ;
switch ( i )
{
case 1:
printf ( "1 n" ) ;
break;
case 2:
printf ( "2 n" ) ;
break;
case 3:
printf ( "3 n" ) ;
break;
default:
printf ( "No match n" ) ;
}
return 0;
}

salida

    2

Más sobre switch (algunos puntos útiles y algunas desventajas)

1) El programa de necesidad anterior no sea realizado en solamente un orden ascendente. Puede ser hecho en otra orden.

Ejemplo:

#include<stdio.h>
int main( )
{
int i = 2 ;
switch ( i )
{
case 34 :
printf ( "1 n" ) ;
break;
case 2 :
printf ( "2 n" ) ;
break;
case 121 :
printf ( "3 n" ) ;
break;
default :
printf ( "No match n" ) ;
}
return 0;
}

salida

    2

2) También podemos utilizar “valores de caracteres” en “case y switch”.

Ejemplo:

#include<stdio.h>
int main()
{
char ch = 's';
switch (ch)
{
case 'a':
printf("The letter is 'a'");
break;
case 'b':
printf("The letter is 'b'");
break;
case 's':
printf("The letter is 's'");
break;
default:
printf("No match");
}
return 0;
}

salida

    The letter is 's'

Los personajes son, en realidad, sustituidos por sus valores ASCII por el compilador para que se comportan como constantes enteras.

3) Si queremos escribir varias instrucciones dentro de un case en particular, no es necesario incluir dentro del par de llaves.

4) Si hay una declaración dentro de la instrucción switch pero no pertenece a ninguno de los supuestos que a continuación particular la declaración no será ejecutada o en otras palabras son ignorados durante el compilador.

5) No es obligatorio añadir la declaración default al final de la switch. Incluso si no lo escribo, el programa de gestión de la misma.

6) existen interruptores anidadas en la realidad, pero rara vez se utiliza. Las declaraciones switch se utilizan sobre todo para los programas impulsados ​​menú escrito.

7) Muchas veces se desea ejecutar el mismo conjunto de estados en diferentes casos. Esto puede hacerse como se muestra a continuación.

Ejemplo:

#include <stdio.h>
int main()
{
char ch;
printf("Enter alphabets a, b or c:n");
scanf("%c",&ch);
switch(ch)
{
case 'a':
case 'A':
printf("The letter is 'a'");
break;
case 'b':
case 'B':
printf("The letter is 'b'");
break;
case 'c':
case 'C':
printf("The letter is 's'");
break;
default:
printf("No match");
}
return 0;
}

salida

    Enter alphabets a, b or c: b
The letter is 'b'

Aquí, lo que sucede es que los casos mantienen a ejecutarse hasta un break se encuentra comunicado. Por lo tanto, si por ejemplo si se introduce alfabeto un la case ‘a’ está satisfecho y porque no hay declaraciones después de que, el control pasa a la siguiente case es decir case ‘A’ y ejecuta las instrucciones por debajo de eso.

8) La declaración switch es a menudo comparado con el sentencia if . Es mejor utilizar el switch en muchos casos debido a las ventajas enumeradas anteriormente, sino también, la desventaja de la switch es que no podemos tener una case que contiene los condicionales como: case i> 10:


Deja un comentario

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