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