跳轉到內容

程式設計 HP 計算器/命令/分支命令

來自華夏公益教科書,開放的書籍,開放的世界
使用 IF...THEN。

語法

IF <test> THEN <clauses>:
ELSE <clauses>:END:

或用於“巢狀” IF 語句

IF <test> THEN <clauses>:
ELSE IF <test> THEN <clauses>:
ELSE <clauses>:END:
ELSE <clauses>:END:

或用於執行 IF,以便在測試為假時不執行任何操作

IF <test> THEN <clauses>:
ELSE END:

詳細資訊

  • IF 語句是一組用於測試某些方程式或不等式的命令。如果結果為“真”,則執行一組操作。如果不是,則不執行任何操作,或者根據 ELSE 執行不同的操作集。
  • 測試可以與 AND 或 OR 組合。

示例

PROMPT A:
IF A==0 THEN
MSGBOX "You entered zero.":
ELSE MSGBOX "You didn't enter zero.":END:

這是一個基本示例,僅檢查一個結果。以下是一個更復雜的示例,儘管通常最好用 CASE 替換多個 IF...THEN 語句。

PROMPT A:
IF A==0 THEN
MSGBOX "You entered zero.":
ELSE IF A>0 THEN
MSGBOX "You entered a positive number.":
ELSE END:ELSE IF A<0 THEN
MSGBOX "You entered a negative number."
ELSE END:ELSE END:

請注意,顯示的附加“ELSE IF”命令實際上並非命令。實際上發生的是,先前測試的結果在評估為“假”時會繼續到 ELSE 結果,在那裡它會遇到 IF,告訴它開始另一個 IF 語句。這就是“ELSE END”命令的作用——它們關閉巢狀在原始語句中的二級語句。

使用 CASE...END。
使用 IF...THEN。

語法

CASE IF <test> THEN <clauses>: END ... END:

詳細資訊
CASE 是用於代替多個語句的命令。

最好的描述方法是用流程圖,如右圖所示。與下面的 IF 流程圖進行比較,您可以看到 CASE 命令在有多個選項時效率更高。

示例
CASE 在接受 CHOOSE 列表中的輸入時尤其有用。例如

1?A:CHOOSE A;
"FAVOURITE APPLE?";
"Granny Smith";
"Golden Delicious";
"Pink Lady":
CASE

IF A==1 THEN
MSGBOX "Granny Smiths are my favourite, too!":
END

IF A==2 THEN
MSGBOX "Golden Delicious apples are OK, too.":
END 

IF A==3 THEN
MSGBOX "Bleh, I can't stand Pink Ladies!":
END

END:
MSGBOX "Program finished.":

前五行初始化 CHOOSE 選單。特別要注意的是開頭的 1?A,它將選單的預設值設定為 1(即第一個選項),從而確保選單正常執行(如果 A 的值最初超出選單的允許值,突出顯示將無法正常執行)。

CASE 初始化 CASE 語句。然後,您可以看到此語句的三個分支;每個分支對應於 CHOOSE 中指定的三個選單選項中的一個。基本語法是

CASE IF <clause 1> THEN <action set 1> END IF <clause 2> THEN <action set 2> END ... END:

重要的是(而且違反直覺的是),CASE 中 IF/THEN/END 語句末尾的 END 包含冒號!但是,完成 CASE 的最終 END 確實需要冒號。

您應該熟悉每個操作集中使用的 MSGBOX,它們是簡單地在對話方塊中顯示文字並同時 FREEZE 的方法。包含最後的 MSGBOX 是為了演示命令完成後會發生什麼;它會跳到最終的 END:,因此,如果您以某種方式欺騙程式給出了無效答案(例如,更改 A 的輸入),程式只會顯示最後的 MSGBOX。同樣的情況發生在 A==? 的相應子句執行之後。

語法

RUN "<program-name>":

詳細資訊

  • 停止運行當前程式,並改為執行 <program-name>。
  • 您可以使用此命令進行自引用,建立無限迴圈。

危險

  • 您引用的程式名稱區分大小寫;也就是說,“ProGramNaME”與“programname”不同。

示例
此程式稱為“INFINITE”。

MSGBOX "You can't escape!":
RUN "INFINITE":

需要注意的是,您可以“退出”,只需按 ON 即可 - 這通常會取消當前命令的執行,此功能專為允許使用者取消由於程式設計錯誤或軟體作者的惡意意圖而陷入無限迴圈的程式而設計。

語法

STOP:

詳細資訊

  • 立即退出程式。將其與 BREAK 進行比較。

示例
此程式稱為“EXAMPLE”。

MSGBOX "Want to exit? 1 = yes, 0 = no.":
PROMPT A:
IF A==1 THEN STOP:
ELSE RUN "EXAMPLE":

此命令幾乎不言自明。

華夏公益教科書