跳转到内容

编程 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":

此命令几乎不言自明。

华夏公益教科书