17. Condiciones mejoradas: CASE
BASIC
17. Condiciones mejoradas: CASE
Hemos visto cómo comprobar condiciones con IF. Es algo que todos los BASIC permiten, aunque algunos llegan más allá que otros, permitiendo indicar qué hacer si no se cumple la condición (ELSE).
En cualquier caso, cuando hay que comprobar muchos posibles valores, resulta incómodo encadenar muchos IF seguidos. Por eso, los BASIC más modernos (como QBasic) incluyen la construcción "SELECT CASE". Ésta se usa así:
SELECT CASE variable
CASE valor1
lista de órdenes
CASE valor2
lista de órdenes
CASE ELSE
lista de órdenes
END SELECT
También se puede comparar con varios valores, de un determinado rango (4 TO 12) o que cumplan una determinada condición (IS >=30). Veamos un ejemplo:
INPUT "Escriba la nota obtenida (0-10): ", nota
SELECT CASE nota
CASE 10
PRINT "Matricula de honor"
PRINT "Un examen Impecable"
CASE 9
PRINT "Sobresaliente"
PRINT "Un examen casi perfecto"
CASE 7 TO 8
PRINT "Notable"
PRINT "Los fundamentos están bastante consolidados"
CASE 5 TO 6
PRINT "Aprobado"
PRINT "Conocimientos básicos"
CASE IS <= 4
PRINT "Suspenso"
PRINT "No ha adquirido los suficientes conocimientos"
END SELECT
(Fuente "1701.bas". Probado en QBasic 1.1)
(Como se ve en este ejemplo, podemos tabular un poco más a la derecha los pasos que se debe dar en cada caso, para que el programa sea más legible.
Ejercicio propuesto 17.1: Crea un programa que pida una letra al usuario y le diga si es una vocal o alguna otra letra.
Ejercicio propuesto 17.2: Busca información sobre el sistema de notas norteamericano (en el que "A" representa la máxima nota, "B" es una nota inferior a ella y así sucesivamente) y crea un programa que convierta de ese sistema de notas a una valoración numérica del 1 al 100.
Ejercicio propuesto 17.3: Crea un programa que muestre un menú al usuario con las opciones "1.- Añadir datos", "2.- Buscar datos", "3.- Modificar datos", "4.- Borrar datos". Según la opción que escoja el usuario, se le responderá con un mensaje adecuado, como por ejemplo "Ha escogido Buscar".