为什么我们要使用"End If"语句?

6
为什么在这个程序中要写END IF语句?不写它,我们可以很容易地得到结果。你能通过示例来解释一下END IF语句的用法吗?
INPUT X
IF X>10 THEN PRINT "X IS GREATER THAN 10" ELSE PRINT "X IS NOT GREATER THAN 10"
END

那我也得到了预期的结果。
真正的代码是:
INPUT X
IF X>10 THEN 
    PRINT "X IS GREATER THAN 10"
ELSE
    PRINT "X IS NOT GREATER THAN 10"
END IF
END

预期和期望的结果
例如:
X=5 时,输出将会是 "X不大于10"。


这就像问为什么FOR需要匹配的NEXT一样 :) - eoredson
只是为了结束 if 块 :) - Gourav
4个回答

7
END IF用于标识跨多行编写的IF, ELSE IF, ELSE结构的结尾。如果没有END IF(缺少会导致错误),则IF, ELSE IF, ELSE结构下的语句将被视为IF, ELSE IF, ELSE结构的一部分,直到出现END IF。如果没有END IF,则IF, ELSE IF, ELSE结构的使用将仅限于在程序末尾使用。
假设您想要在条件为真时运行100个特定行,并在条件为假时运行另外100个行,在IF-ELSE结构之后必须始终执行100个行。显然,您无法在单行中编写这200个IF ELSE相关的行。如果没有END IF,那么就没有办法运行接下来的100行。
END IF对于在单行中编写的IF, ELSE IF, ELSE语句无效。下一行中的任何语句都将被视为IF, ELSE IF, ELSE结构之外的语句。并不总是可能在一行代码中编写所有所需的功能。因此,它只能在基于某些条件触发小型功能的情况下使用。这就是这种单行代码方法的缺点。

2
调试一行 IF 语句也可能很困难。使用多行 IF 语句,每个部分都有单独的一行,可以使这个过程更容易,因为错误报告会出现在只包含有问题代码的那一行上,而不是与一行 IFELSE IFELSE 和操作混在一起的同一行上,这种情况通常发生在一行 IF 语句中。 - user539810

3

多个缩进的if/then/else语句可以组合成一个结构,比单行语句更容易,例如:

最初的回答:

Several nested if-else statements can be consolidated into a more readable structure:

INPUT X
IF X > 10 THEN
    PRINT "X is greater than 10."
ELSE
    IF X < 10 THEN
        PRINT "X is less than 10."
    ELSE
        PRINT "X is equal to 10."
    END IF
END IF

这与“最初的回答”相同:

INPUT X
IF X > 10 THEN PRINT "X is greater than 10." ELSE IF X < 10 THEN PRINT "X is less than 10." ELSE PRINT "X is equal to 10."

在一个if/then语句中测试3个数字的值将会非常困难,例如:

Original Answer翻译成"最初的回答"

INPUT X, Y, Z
IF X = 0 AND Y = 0 AND Z = 0 THEN PRINT "All zero." ELSE IF X = 0 AND Y <> 0 AND Z = 0 THEN PRINT "X and Z zero." ELSE IF X <> 0 AND Y = 0 AND Z = 0 THEN PRINT "Y and Z zero." ELSE IF X = 0 AND Y = 0 AND Z <> 0 THEN PRINT "X and Y zero." ELSE IF X <> 0 AND Y <> 0 AND Z = 0 THEN PRINT "X and Y non-zero." ELSE IF X <> 0 AND Y = 0 AND Z <> 0 THEN PRINT "X and Z non-zero." ELSE IF X = 0 AND Y <> 0 AND Z <> 0 THEN PRINT "Y and Z non-zero." ELSE PRINT "All non-zero."

1
确定3个输入值的另一个示例:
COLOR 15
DO
    PRINT "Enter values(y/n)";: INPUT x$
    IF LCASE$(x$) = "n" THEN END
    PRINT "Enter X,Y,Z";: INPUT X, Y, Z
    GOSUB Calculate
LOOP
END
Calculate:
SELECT CASE X
    CASE IS > 0
        SELECT CASE Y
            CASE IS > 0
                SELECT CASE Z
                    CASE IS > 0
                        PRINT "X is positive, Y is positive, Z is positive."
                    CASE IS < 0
                        PRINT "X is positive, Y is positive, Z is negative."
                    CASE ELSE
                        PRINT "X is positive, Y is positive, Z is zero."
                END SELECT
            CASE IS < 0
                SELECT CASE Z
                    CASE IS > 0
                        PRINT "X is positive, Y is negative, Z is positive."
                    CASE IS < 0
                        PRINT "X is positive, Y is negative, Z is negative."
                    CASE ELSE
                        PRINT "X is positive, Y is negative, Z is zero."
                END SELECT
            CASE ELSE
                SELECT CASE Z
                    CASE IS > 0
                        PRINT "X is positive, Y is zero, Z is positive."
                    CASE IS < 0
                        PRINT "X is positive, Y is zero, Z is negative."
                    CASE ELSE
                        PRINT "X is positive, Y is zero, Z is zero."
                END SELECT
        END SELECT
    CASE IS < 0
        SELECT CASE Y
            CASE IS > 0
                SELECT CASE Z
                    CASE IS > 0
                        PRINT "X is negative, Y is positive, Z is positive."
                    CASE IS < 0
                        PRINT "X is negative, Y is positive, Z is negative."
                    CASE ELSE
                        PRINT "X is negative, Y is positive, Z is zero."
                END SELECT
            CASE IS < 0
                SELECT CASE Z
                    CASE IS > 0
                        PRINT "X is negative, Y is negative, Z is positive."
                    CASE IS < 0
                        PRINT "X is negative, Y is negative, Z is negative."
                    CASE ELSE
                        PRINT "X is negative, Y is negative, Z is zero."
                END SELECT
            CASE ELSE
                SELECT CASE Z
                    CASE IS > 0
                        PRINT "X is negative, Y is zero, Z is positive."
                    CASE IS < 0
                        PRINT "X is negative, Y is zero, Z is negative."
                    CASE ELSE
                        PRINT "X is negative, Y is zero, Z is zero."
                END SELECT
        END SELECT
    CASE ELSE
        SELECT CASE Y
            CASE IS > 0
                SELECT CASE Z
                    CASE IS > 0
                        PRINT "X is zero, Y is positive, Z is positive."
                    CASE IS < 0
                        PRINT "X is zero, Y is positive, Z is negative."
                     CASE ELSE
                        PRINT "X is zero, Y is positive, Z is zero."
                END SELECT
            CASE IS < 0
                SELECT CASE Z
                    CASE IS > 0
                        PRINT "X is zero, Y is negative, Z is positive."
                    CASE IS < 0
                        PRINT "X is zero, Y is negative, Z is negative."
                    CASE ELSE
                        PRINT "X is zero, Y is negative, Z is zero."
                 END SELECT
            CASE ELSE
                SELECT CASE Z
                     CASE IS > 0
                        PRINT "X is zero, Y is zero, Z is positive."
                    CASE IS < 0
                        PRINT "X is zero, Y is zero, Z is negative."
                    CASE ELSE
                         PRINT "X is zero, Y is zero, Z is zero."
                END SELECT
         END SELECT
END SELECT
RETURN

0

另一种选择是使用选择语句:

INPUT X
SELECT CASE X
    CASE IS > 10
        PRINT "X is greater than 10."
    CASE IS < 10
        PRINT "X is less than 10."
    CASE ELSE
        PRINT "X is equal to 10."
END SELECT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接