2011-12-20 50 views
1

我正在將GW-BASIC代碼轉換爲C#,並且在BASIC語言中的體驗非常有限。我想了解IF ... THEN ... GOTO語句的行爲。例如,我有以下聲明:QBASIC:如果條件不符合,執行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行執行代碼呢,還是跳過?

任何方向將不勝感激...

+0

這是原始的代碼比QBASIC舊的基礎。它在QBASIC中運行得很好。 – Joshua 2011-12-20 02:36:33

+0

如果您的QBasic環境正常,您爲什麼不使用上述邏輯和一些打印語句來設置一個小測試? – BenSwayne 2011-12-20 02:43:30

+0

@Joshua是的,我意識到,深入挖掘後...我更新了問題,以反映... – 2011-12-22 15:19:58

回答

4

是,無論布爾條件中的線85的評價,95行會被執行,但如果85的計算結果爲真,則線90將躍升,從而將不會執行。

1

顯然代碼段具有僞IF/ELSE結構,邏輯好像:

如果線85的條件不那麼QBasic中繼續滿足90,然後95. 如果第85行的條件滿足,那麼QBasic繼續95並轉發。

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]) 
0

THEN 95是短期的THEN GOTO 95,可跳轉執行指針到線95

REMLINE.BAS是一個程序,從Microsoft基本 程序刪除行號。它僅刪除那些不是以下語句之一的對象 的行號:GOSUB,RETURN,GOTO,THEN,ELSE, RESUME,RESTORE或RUN。

BaConBCX可以把你的基本爲C.

+0

感謝您的信息!這是我最終需要做的,以使我接近我想要獲得的位置。 – 2012-04-10 12:51:01