6-Condicional Si (If)
La forma básica de comprobar condiciones es con:
Si--> (se da: ) "Tal condición", (entronces) --> ejecutar: "Tal orden"
If (condición) Then --> Orden
Ejemplo:
# /evaluar una igualdad
Print "Introduzca el numero 5"; Input var_x
If var_x = 5 Then Print "Es igual a 5"
Alguna versión de BASIC antigua puede ser un poco más restrictiva y permitir sólo la sintaxis "IF (tal condición) THEN GOTO (+ número de linea)".
BASIC permite indicar qué hacer si no se cumple la condición, con la orden ELSE:
PRINT "Introduzca un numero"
INPUT x
IF x > 10 THEN PRINT "Mayor que 10" ELSE PRINT "Menor o igual que 10"
Normalmente podremos enlazar varias condiciones (aunque debemos recordar que en muchas versiones de BASIC antiguas no podremos superar los 255 caracteres por línea).
Podemos comprobar si un número es mayor que 10, menor que 10 o exactamente igual a 10 con:
PRINT "Introduzca un numero"
INPUT x
IF x > 10 THEN PRINT "Mayor que 10" ELSE IF x < 10 THEN PRINT "Menor que 10" ELSE PRINT "Exactamente 10"
Los BASIC modernos, que trabajan sin números de línea, suelen permitir otra forma de escribir la orden IF, que permite dar varios pasos si se cumple la condición o si no se cumple, y que termina con ENDIF:
IF (condición) THEN
<...código...>
ELSE
<...código...>
ENDIF
De modo que en Basic256, el programa anterior se podría escribir también:
PRINT "Introduzca un numero"
INPUT x
IF x > 10 THEN
PRINT "Mayor de 10"
ELSE
PRINT "Menor o igual que 10"
ENDIF
Hemos empleado el signo ">" para ver si una variable es mayor que un cierto valor y el signo "<&" para ver si es menor. Veamos cómo se indican las otras comparaciones posibles:
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
= Igual a
<> Distinto de
```basic
Las condiciones se pueden enlazar con:
AND ( y )
OR ( ó )
NOT ( no )
Pero entonces puede ser interesante emplear paréntesis, para que el resultado sea más legible (y para evitar problemas de precedencia de operadores, que no trataremos todavía), por ejemplo:
IF ((a>2) AND (b<>3)) OR (NOT (c>3)) THEN PRINT "Es valido"
Un programa que comprobase si el usuario teclea 3 o 5 podría ser
REM Comprobar dos posibles valores
PRINT "Introduzca 3 o 5"
INPUT x
IF x = 3 OR x = 5 THEN PRINT "Correcto!" ELSE PRINT "No!"
Nota: un error frecuente es "abreviar demasiado", sin indicar el nombre de la variable en todas las comparaciones, como veremos en el siguiente ejemplo.
Algunas versiones de BASIC marcarán esa línea como incorrecta, mientras que otras pueden creer que es correcta, pero dar un resultado incorrecto, porque "OR" puede tener otros significados, que veremos más adelante:
REM Comprobacion incorrecta dos posibles valores
PRINT "Introduzca 3 o 5"
INPUT x
IF x = 3 OR 5 THEN PRINT "Correcto!" ELSE PRINT "No!": REM Incorrecto!
(Este programa, cuya línea 40 está mal escrita, responderá "Correcto!" con otros valores que no son el 3 ni el 5. Más adelante veremos los motivos.
Obviamente, se pueden "mezclar" los "if" y los "for" en un mismo programa. Por ejemplo, podríamos saludar varias veces a un usuario si su respuesta es correcta:
PRINT "Dime tu nombre"
INPUT nombre$
IF nombre$="Nacho" THEN FOR i = 1 TO 5:PRINT"HOLA":NEXT i
En Basic256 sería casi idéntico:
PRINT "Dime tu nombre"
INPUT nombre$
IF nombre$="Nacho" THEN FOR i = 1 TO 5:PRINT"HOLA":NEXT i
O bien, desglosando en líneas separadas
PRINT "Dime tu nombre"
INPUT nombre$
IF nombre$="Nacho" THEN
FOR i = 1 TO 5
PRINT"HOLA"
NEXT i
END IF
Y también podemos comprobar condiciones dentro de un "for". Por ejemplo, podemos tratar de encontrar los múltiplos de 7 que hay entre 1 y 100, si recorremos los números del 1 al 100, mirando para cada uno de ellos si la división entre 7 es exacta:
REM Multiplos de 7
FOR i = 1 TO 100
IF i/7 = INT(i/7) THEN PRINT i
NEXT i