Este elemento de la programación estructurada para selección especifica de un caso ante opciones múltiples en lenguaje C se denomina switch; su funcionamiento puede considerarse similar al de las preguntas encadenadas. En efecto considere el diagrama de flujo siguiente:
Como se observa, en este elemento hay una expresión única cuyo valor se comparará en forma ordenada (de izquierda a derecha) con varias opciones para seleccionar alguna de ellas y optar por algún proceso en particular (esto se conoce como posibilidad de ramificación múltiple); en lenguaje C la expresión solo se puede comparar con un valor predeterminado (valor de tipo alfanumérico o de tipo entero).
Considere como ejemplo la codificación del proceso que resuelve la ecuación de segundo grado utilizando el elemento switch, según se muestra a continuación.
| #include<stdio.h>
#include<conio.h> #include<math.h> main() { float a,b,c,dis; int sig; clrscr(); printf("dame los coeficientes de a,b,c donde a no sea cero"); scanf("%f,%f,%f",&a,&b,&c); dis=pow(b,2)-4.0*a*c;
if(dis<0) sig=-1; if(dis==0) sig=0; if(dis>0) sig=1;
switch(sig) { case -1:
printf("\n raíces complejas "); printf(" x1r=%f x1i=%f",-b/(2.0*a),-sqrt(-dis)/(2*a)); printf(" x2r=%f x2i=%f",-b/(2.0*a),sqrt(-dis)/(2*a)); break;
case 0: printf("\n raices repetidas "); printf("x1=%f",-b/(2*a)); printf("x2=%f",-b/(2*a)); break;
case 1: printf(\n raíces reales "); printf("x1=%f",(-b+sqrt(dis))/(2*a); printf("x2=%f",(-b-sqrt(dis))/(2*a); break; } }
/* observe que no se requiere el default */ /* se agrega break para detener el proceso de selección al final de cada caso específico */ |
