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.
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(); } |