RAMIFICACION MULTIPLE O SELECCION DE CASOS ESPECIFICOS


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:

DIAGRAMA ESTRUCTURADO

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 */


Selecciona un tema