ELEMENTO ESTRUCTURADO DE RAMIFICACION ENCADENADO O ANIDADO if-else if else if...else if


Cuando se presentan preguntas en cascada sobre una expresión, se pueden establecer categorías, intervalos o clases (de mayor a menor o viceversa), a manera de un filtro que separa las distintas categorías los valores por la posición que ocupan en un rango de comparación de una expresión dada: precios, intervalos, clases, etc. La primera pregunta captura los datos de la primera categoría, la segunda establece el segundo intervalo con valores acotados por la segunda condición establecida y así sucesivamente. Por esta razón se dice que se tiene una estructura de preguntas encadenadas o de selección de clases. Veamos en diagrama tradicional el siguiente ejemplo:

Considere el problema de asignar la calificación del examen de un alumno, en escala de 0 a 10 puntos, bajo el siguiente criterio:

No son validas las calificaciones negativas

No Acredito si la calificación es menor a seis

Suficiente si se obtiene de seis a menos de ocho

Bien si la calificación es menor de nueve y mayor o igual a 8

Muy Bien si se obtiene de 9 a 10

las calificaciones mayores a 10 se consideran como errores.

Obviamente si se desea filtrar las calificaciones, realizando preguntas en cadena, deberá iniciarse por uno de los extremos del rango de calificaciones, es decir de menor a mayor o viceversa. Preguntar en cadena puede ejemplificarse entonces diciendo que si la calificación no fue menor de 6, hay que ver si fue menor de 8 y, si no fue ninguna de esas dos, hay que ver si fue menor de 9, y cuando no fue ninguna de las anteriores, verificar si corresponde a 10, por último, en caso contrario hubicarla como error. Consideremos entonces el filtro a partir de los valores no aceptados.

DIAGRAMA ESTRUCTURADO

La codificación del ejemplo anterior se muestra a continuación.


 
#include<stdio.h>

#include<conio.h>

main()

{

float c;

clrscr();

printf("\n dame calificación");

scanf("%f",&c);

if(c<0) printf("\n No Aceptada");

else if(c<6) printf("\n No Acreditada");

else if(c<8) printf("\n Suficiente 'S'");

else if(c<9) printf("\n Bien 'B');

else if(c<=10) printf("\n Muy Bien 'MB');

else printf("\n <<<<<<<<Error>>>>>>>");

printf("Presiona una tecla...");

getch(); 

}


Selecciona un tema