Bitácora del desarrollo de mi clase de C++, en el que publicaré el material de la clase y recibiré comentarios y sugerencias de mis alumnos.

miércoles, 21 de febrero de 2007

6.6. Enunciado switch



Estructura de selección múltiple switch
En forma ocasional, un algoritmo contendrá una serie de decisiones, en las cuales una variable o expresión se probará por separado contra cada uno de los valores constantes enteros que puede asumir, y se tomarán diferentes acciones. Para esta forma de toma de decisiones se proporciona una estructura de selección múltiple switch.

La sintaxis de switch es:

switch (expresion_entera)
{
   case expresion1:
       enunciado;
       break;
   case expresion2:
       enunciado;
       break;
   .
   .
   default:
       enunciado;
}

La manera de actuar de switch es comparar expresion_entera con las expresiones en cada enunciado case, si expresion_entera es igual a expresion1, ejecuta todos los enunciados que están enseguida, y así lo hará para cada expresión case, si ninguna de las expresiones case resultó igual a expresion_entera, ejecutará los enunciados que se encuentran después de default. En las listas de enunciados en cada expresión case se tiene un enunciado break, lo que hace es obligar al control del programa a salir de la estructura switch para que no ejecute los siguientes enunciados pertenecientes a otros case, de otra manera al resultar igual a una expresion case Turbo C ejecutará todos los enunciados enseguida hasta donde termina la estructura switch.

En el siguiente ejemplo se presenta al usuario varias opciones para ejecutar con un número que el mismo capturó, mediante una estructura switch se evalúa la selección del usuario y se procede a hacer lo que él desea.

#include (stdio.h)
#include (conio.h)
main( )
{
int seleccion, numero, i, total;
seleccion = 0;
while (selección != 4)
  {
    clrscr();
    printf(“Introduzca un número entero: “);
    scanf(“%d”, &numero);
    printf(“1.- Suma de los números de 1 a %d. \n”,numero);
    printf(“2.- Suma de los números pares de 2 a %d.\n”,numero);
    printf(“3.- Suma de los números nones 1 a %d.\n”,numero);
    printf(“4.- Salir.\n”);
    printf(“Selección : “);
    scanf(“%d”,&selección);
    total=0;
    switch (seleccion)
        {
          case 1:
          for (i = 1;i <= numero; i++)
              total += i;
          break;
          case 2:
          for (i = 2; i <= numero; i+=2)
               total += i;
          break;
          case 3:
          for (i = 1; i <= numero;i+=2)
              total += i;
          break;
         }
  printf(“El total es : %d\n”,total);
  printf(“Presione una tecla para continuar.\n”);
  numero = getch( );
  }
return 0;
}

Se está utilizando una función getch( ) que reside en la librería conio.h, que captura un solo caracter de teclado, pero no lo muestra en pantalla, el caracter capturado se asigna a número, aunque no es la función de numero recibir el caracter, otro numero será pedido al usuario y ocupará el lugar del caracter introducido para la continuación del programa.

En el siguiente ejemplo se solicitará una serie de calificaciones con letra al usuario, y el programa determinará cuántos alumnos obtuvieron cada calificación. Como ya se ha visto un caracter tiene un equivalente en entero y puede representarse de ambas maneras.

#include (stdio.h)
#include (conio.h)
main( )
{
int calif;
int aCuenta=0, bCuenta=0, cCuenta=0, dCuenta=0, eCuenta=0;
clrscr();
printf(“Introduzca las calificaciones.\n”);
while (calif=getchar()) != EOF)
 {
   switch (calif)
     {
      case ‘A’: case ‘a’:
        ++aCuenta;
        break,
      case ‘B’: case ‘b’:
        ++bCuenta;
        break,
      case ‘C’: case ‘c’:
        ++cCuenta;
        break,
      case ‘D’: case ‘d’:
        ++dCuenta;
        break,
      case ‘E’: case ‘e’:
        ++eCuenta;
        break,
      default:
        printf(“Se introdujeron calificaciones erroneas”);
        printf(“Intente de nuevo.\n”);
        break;
     }
 }
printf(“Totales por calificación:\n”);
printf(“A : %d\n”, aCuenta);
printf(“B : %d\n”, bCuenta);
printf(“C : %d\n”, cCuenta);
printf(“D : %d\n”, dCuenta);
printf(“E : %d\n”, eCuenta);
printf(“Presione una tecla para continuar.\n”);
calif = getch();
return 0;
}


Se utiliza una función getchar(), que puede capturar desde uno a varios caracteres, devolviendo de uno por uno a la variable asignada. getchar() deja de capturar caracteres hasta encontrar un caracter de fin de archivo, se debe introducir CTRL-Z para que getchar() termine de capturar caracteres y continúen los siguientes enunciados. getchar() se encuentra en la biblioteca stdio.h.

Para cada valor de calif se evalúa en la estructura switch, y dependiendo del caracter que sea, incrementa el respectivo contador de calificaciones. Al final, después del while, muestra los totales para cada calificación.



0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio