Instruccion SI... THEN... ELSE

Objetivo:

Tomar una decisión en cuanto a flujo de programa basado en el resultado devuelto por una expresión.

Sintaxis:

IF expression[,] THEN statement(s)[,][ELSE statement(s)]
 IF expression[,] GOTO line number[[,] ELSE statement(s)]

Comentarios:

Si el resultado expression es no nulo (lógico verdadero), THEN or GOTO linea numero es ejecutado.

Si el resultado expression es el cero (falso),la linea   THEN o GOTO son ignoradas  y el número de línea ELSE , si esta presente,es ejecutado. De otra manera, la ejecución sigue con la siguiente instruccion ejecutable.Una coma es permitida antes de THEN  o  ELSE.

THEN Y ELSE pueden ser seguido por un número de línea para la bifurcación, o por una o varias declaraciones para ser ejecutadas.

GOTO siempre es seguido de un número de línea.

Si la instruccion no contiene el mismo número del número de línea ELSE o el mismo numero de linea de THEN, cada  ELSE es emparejado con el más cercano incomparable THEN. Por ejemplo:

IF A=B THEN IF B=C THEN PRINT "A=C" ELSE PRINT "A < > C

no imprimirá "A < > C" cuando A <> la B.

Si una instruccion IF...THEN  es seguida de un número de línea en el modo directo, resulta un error "Undefined line number" , a no ser que una declaración con el número de línea especificado antes fuera entrada en el modo indirecto.

Como IF ..THEN...ELSE es toda una instruccion, ELSE no puede estar sobre una línea separada. Debe ser todo sobre una línea.

Anidar de SI Declaraciones

Las instrucciones IF...THEN...ELSE  pueden ser anidadas. Anidar es limitado sólo por la longitud de la línea. Por ejemplo, lo siguiente es una declaración legal:

100 IF X > Y THEN PRINT "GREATER" ELSE IF Y > X THEN& 
110 PRINT "LESS THAN"
200 ELSE PRINT "EQUAL"

Pruebas de Igualdad

Usando IF para probar la igualdad para un valor que es el resultado de un cómputo de punto flotante, recuerda que la representación interna del valor no puede ser exacta. Por lo tanto, la prueba contra la gama sobre la cual la exactitud del valor puede variar.

Por ejemplo, para probar una variable calculada un contra el valor 1.0, use la declaración siguiente:

IF ABS (A-1.0)<1.0E-6 THEN ...

Esta prueba devuelve el verdadero si el valor de A es 1.0 con un error relativo inferior que 1.0E-6.

Ejemplos:

La instruccion siguiente consigue el número de registro N, si N no es el cero.

200 IF N THEN GET#1, N

En el ejemplo siguiente, una prueba determina si N es mayor que 10 y menos de 20. Si N es dentro de esta gama, DB es calculado y derivado a la línea 300 y ejecutado. Si N no es dentro de esta gama, la ejecución sigue con la línea 110.

100 IF(N<20) and (N>10) THEN DB=1979-1: GOTO 300
110 PRINT "OUT OF RANGE"

La siguiente instruccion hace que la salida impresa vaya al terminal o la impresora de línea, dependiendo(según) el valor de una variable (IOFLAG). Si IOFLAG es el cero, la salida va a la impresora de línea; de otra manera, la salida va al terminal.

210 IF IOFLAG THEN PRINT A$ ELSE LPRINT A$
1