【问题标题】:Why do we use "End If" statement?为什么我们使用“End If”语句?
【发布时间】:2019-06-18 13:58:29
【问题描述】:

为什么我们在这个程序中写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 IS NOT GREATER THAN 10”。

【问题讨论】:

  • 这就像问为什么 FOR 需要匹配的 NEXT :)
  • 只是为了结束 if 块:)

标签: if-statement basic qbasic


【解决方案1】:

需要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 结构。并非总是可以在一行中编写所有必需的功能。所以,它只能在基于某些条件触发一个可以写在一行中的小功能时使用。所以这就是这种单线方法的缺点。

【讨论】:

  • 调试一行IF 语句也很困难。一个多行的IF 语句,所有的东西都用单独的行使这更容易,因为错误是在只包含有问题的代码的行上报告的,而不是在与IFELSE IFELSE 相同的行上,和单行 IF 会发生的操作。
【解决方案2】:

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

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."

如果/那么在一行中测试 3 个数字的值是非常困难的,例如:

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."

【讨论】:

    【解决方案3】:

    确定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
    

    【讨论】:

      【解决方案4】:

      另一种方法是使用选择案例:

      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
      

      【讨论】:

        猜你喜欢
        • 2012-09-10
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 2017-10-25
        • 1970-01-01
        • 2012-07-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多