【问题标题】:QBASIC: Execution of a GOTO Line if Condition Is Not MetQBASIC:如果条件不满足则执行 GOTO 行
【发布时间】:2012-01-24 02:23:31
【问题描述】:

我正在将 GW-BASIC 代码转换为 C#,并且通常在 BASIC 语言方面的经验非常有限。我试图了解 IF...THEN...GOTO 语句的行为方式。比如我有如下语句:

85 IF M(3,1)>M(2,1) THEN 95
90 M(3,1)=M(3,1)+P2
95 Z1=R1*(90.567-41.685/M(2,3))

我的问题是:如果第 85 行的条件不满足,它还会继续执行第 95 行的代码,还是跳过它?

任何方向都将不胜感激......

【问题讨论】:

  • 这是比 QBASIC 更古老的基本代码。不过它在 QBASIC 中运行得很好。
  • 如果你有一个正常运行的 QBasic 环境,为什么不使用上述逻辑和一些打印语句设置一个小测试?
  • @Joshua 是的,我意识到在深入研究之后......我更新了问题以反映......

标签: c# qbasic gw-basic


【解决方案1】:

是的,不管第 85 行布尔条件的求值如何,第 95 行都将被执行,但如果 85 求值为真,则第 90 行将被跳转,因此不会被执行。

【讨论】:

    【解决方案2】:

    它将执行第 95 行的代码。then 语句使程序跳转到第 95 行并执行该行。

    相当于这样:

    if ( M[3,1] <= M[2,1] ) {
       M[3,1] = M[3,1] + P2
    }
    Z1=R1*(90.567-41.685/M[2,3])
    

    【讨论】:

      【解决方案3】:

      显然代码sn-p有一个伪IF/ELSE结构,逻辑看起来是这样的:

      如果不满足第 85 行的条件,则 QBasic 继续执行 90,然后是 95。 如果满足第 85 行的条件,则 QBasic 继续执行 95 并向前。

      【讨论】:

        【解决方案4】:

        THEN 95 是THEN GOTO 95 的缩写,它将执行指针跳转到第 95 行。

        REMLINE.BAS 是一个从 Microsoft Basic 中删除行号的程序 程式。它只删除那些不是对象的行号 以下语句之一:GOSUB、RETURN、GOTO、THEN、ELSE、 恢复、恢复或运行。

        BaCon 和 BCX 可以将您的 BASIC 转换为 C。

        【讨论】:

        • 感谢您的信息!这是我最终需要做的,以使我接近我想要到达的地方。
        猜你喜欢
        • 1970-01-01
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        • 2013-08-08
        • 2015-10-13
        • 1970-01-01
        • 2017-01-13
        • 2016-12-17
        相关资源
        最近更新 更多