跳到内容

HP 计算器编程/命令/提示命令

25% developed
来自维基教科书,开放世界中的开放书籍

语法

 BEEP <freq>;<time>:

细节

  • 使用计算器的压电蜂鸣器以 <freq> Hz 的频率发出蜂鸣声 <time> 秒。

示例

INT(RANDOM*9+1)?R:
MSGBOX "Guess the number between 1 and 10."
WHILE A?R REPEAT
PROMPT A:
IF A==R THEN
BEEP 400;.2:
BEEP 600;.5:
MSGBOX "You win!":
STOP:
ELSE BEEP 600;.2:
BEEP 400;.5:
IF A>R THEN MSGBOX "Lower..":
ELSE MSGBOX "Higher..":
ELSE END:
ELSE END:END:

此程序从 1 到 10 生成一个随机数,并提示用户猜测。如果用户猜对了,计算器会以升高的音调发出两次蜂鸣声(典型的“正确”声音)。否则,它会以降低的音调发出两次蜂鸣声(典型的“错误”声音),并告诉用户答案是高于还是低于他们指定的答案。

语法

CHOOSE <variable>;
"<title-name>";
"<option-1>";
"<option-2>";
...
"<last-option>":

细节

  • 允许用户从屏幕上给出的选项集中进行选择。
  • 在两个 ; 后,CHOOSE 开始在屏幕菜单上分配空间并将值分配给这些空间。因此,在语法示例中,<option-1> 的值为 1 - 如果选择它,<variable> 将设置为 1。
  • 此选项最适合与 CASE 结合使用以定义每个选项的效果。

危险

  • CHOOSE 从 <variable> 的当前值作为所选项目开始。**因此,如果变量的值不是正整数,或者大于选项数量,则将无法使用菜单。**
  • 以下问题的简单解决方法是在 CHOOSE 命令的开头始终插入 1?<variable>,以确保默认选择第一个选项。

语法

DISP <line>;"<text>":

细节

  • 在第 <line> 行(1 到 7)上显示 <text>。
  • 尽管在 ERASE 之后有 8 行的空间,但将 <line> 设置为小于 1、非整数或大于 7 将导致文本根本不打印(没有错误消息)。
  • DISPXY 能够处理在“第 8 行”上的打印,如果您需要更多空间。

危险

  • DISP 会擦除它即将打印的整行的内容,无论该区域中是否已经绘制了像素。因此,如果您打算在上面绘制,您应该始终先使用 DISP。DISPXY 在一定程度上解决了这个问题,尽管使用它仍然会导致在您的绘图上强制显示一些空格。
  • 如果您希望清空某一行文本,则可以使用它,只需使用 DISP <line>;" ":. 这可能有利,因为它会混淆您的代码(如果您想限制人们对您的代码的修改),而且因为它比任何其他方法都要快得多(尽管它允许最少的控制)。

示例

ERASE:DISP 1;"Hello World!":
FREEZE:

在擦除屏幕后,在屏幕的第一行显示普遍存在的“Hello World”,并在最后冻结程序,以便用户有时间阅读消息。

1?A:1?B:ERASE:
FOR X=1 TO 500;
A+B?C:B?A:C?B:
B/A?P:
DISP 1;B":"A:
DISP 2;P:

**高级:**使用递增的斐波那契数之间的比率来近似phi。DISP 能够在显示其有效负载之前擦除该行,这会产生一个看起来很有趣的“迭代”效果。

语法

DISPTIME:

细节

  • 在消息框中显示日期和时间。
  • 时间存储在 TIME 和 DATE 实数变量中。
    • **TIME** 语法:hh.mmss(hh 为 24 小时制)。例如,下午 2:30 为 14.3000。由于变量是整数,末尾的 0 实际上会持续 13 个字符;这是因为 TIME 变量实际上也存储了秒的分数。(因此,您可以将下午 1 点设置为 13,或将 12:05:30.136 设置为 12.0530136。)
    • **DATE** 语法:mm.ddyyyy。例如,2005 年 9 月 21 日为 9.212005。

示例
此程序称为“TimeUtils”。

1?M:CHOOSE M;
"Display time";
"Set time":
CASE
IF M==1 THEN
DISPTIME:STOP:END
IF M==2 THEN
MSGBOX "Hour? (24h time)":
PROMPT H:
MSGBOX "Minute?":
PROMPT M:
H+M/100?TIME:
MSGBOX "Set. Date?":
PROMPT D:
MSGBOX "Month?":
PROMPT M:
MSGBOX "Year?":
PROMPT Y:
D+M/100+Y/1000?DATE:
MSGBOX "Set.":RUN "TimeUtils":END
END:

此程序是一个多功能应用程序,允许您同时显示和编辑(更正)当前时间。考虑到“详细信息”中关于 DATE 和 TIME 变量的信息,大多数内容应该是显而易见的。

有关此命令的信息,请参阅EDITMAT,位于矩阵命令部分。

语法

FREEZE:

细节

  • 暂停程序运行,等待来自键的输入。
  • 最好在使用绘图命令后使用,否则绘图会立即从屏幕上消失。
  • 对于那些了解更高级编程语言的读者来说,它与 GETKEY 相同,但它不返回值给计算器(即无法检测到按下了哪个键)。

语法

MSGBOX "<message>":

细节

  • 在屏幕上显示消息的最简单方法,只需要显示文本即可;然而,这也是它的弱点 - 它几乎没有提供控制。
  • 自动包含 FREEZE,也就是说,您需要按一个键才能退出 MSGBOX。

示例

PROMPT A:
MSGBOX "You entered "A".":
华夏公益教科书