hp39gs运行C语言,【图片】HP39gs 从入门到精通(完全教程)【hp39gs吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

part 4 提示语句 (prompt)

引言-----

图形计算器的一个重要功能就是编程,可以说,图形计算器几乎一切的主要功能都是通过编程实现的。图形计算器的编程能力来自较大的内存和附带的编译能力。

对于编程界的新手和不熟悉HP-BASIC的玩家来说, 最好的入门方法就是学习prompt。prompt语句可以实现人机之间比较密切的交互,编的好的话会很有趣味性。

对于想要成为编程界的大牛的同学来说,有一条必须遵循的定律:多练习。对于任何语言,这条定律都成立。每个

大牛都是从反复磨练中成长起来的。所以,保持谦逊,遇见不会的知识就多学多练吧。在下也不过是一个略微有心的初学者,离真正的大牛还差很远很远。

好了,接下来是正文。

1.beep语句

HP39gs自带了一个蜂鸣器,可以发出1-15000Hz,时长灵敏度在0.001秒的振动声(不过,到了极限状态下声音会失真,而且有时不能发挥出全部能力)。用来控制这个蜂鸣器的语句就是beep。beep语句的最大用处就是证明计算器不是个哑巴。

beep的用法如下:BEEP x;y: 其中x是指频率,y是指时长。

入门到这就结束了,可以用这个来震惊一下同学。

但是这样只能小小震惊一下,要娱乐自己的话,还需要一点点小技巧。

比如,beep语句也接受变量,可以用诸如A、S、D、F、G、H等等变量(事实上用数组中的变量和矩阵中的变量来控制也是可以的,比如BEEP L1(1);M1(2,3):只要有数据在就可以运行。)(之前没有讲清楚,深感抱歉,表单也可以叫数组,而且数组是我比较习惯的叫法;矩阵和数组中的单元可以分别用Ln(i)和Mn(i,j)来表示,其中n,i和j是大于0的整数,且n,i,j表示的东西要有意义)。

再比如,控制beep语句也可以用循环。好的控制可以在不破坏音韵美的前提下节约大量代码和运行空间。

1000 > i (没有sto键,只好用大于号代替,在计算器上要用sto键。)

while i ≠ 0

BEEP i*10;0.1:

i - 1 > i:

在原理上相当于一段1000行的代码,在用了循环后代码体积小了250倍,如果不用的话是难以想象的。

还有一件事,只写出声的代码会让音乐显得急促,如果不是确实用意的话,要用频率较低的语句隔开来。一般是用频率在50Hz的beep语句,用0Hz不会有效果。)

2.choose语句

choose语句是一个在下尚且不能掌握的语句,在此只能姑且讲讲。

用法比较奇怪: CHOOSE X;“title”;“asdf”;“zxcv”:

x是要读入用户的选择的变量,title是选择窗口的标题, asdf和zxcv则是选项。按照样例,用户选择asdf的话,XX将会为1,选zxcv的话X会为2。

看起来在下好像会一点点,但是这只是表象。实际使用的时候,出现了各种各样的bug。有时候在编译时就报错,原因只是用了一个“暗中不能使用”的变量(语法完全正确,变量也没有问题,但是莫名错误),或者唤出选择框时没有办法选择(跟看MSGBOX一样,浑身难受),要不就是选了之后语句没给变量赋值,如此这般一大堆bug,真正成功的只有两次而已。

3.clrvar 语句

这个比较简单,是用来清空变量的。对于简单的变量可以用直接赋值为0的方法,但是对数组、矩阵就不方便,因为empty是不可以直接赋值进去的。用clrvar可以把单个变量赋值为0,把数组和矩阵赋值为empty,但是不能把数组和矩阵中的变量清空。

4.disp 语句

可以用诸如 DISP n;“asdfzxcv”:的形式在第n行写下“asdfzxcv”。n的范围限制在1-7,小于1的n值会视同于1,大于7的n值会视同于7;。

5.dispxy 语句

可以用 DISPXY x;y;n;“asdfzxc”的形式写在屏幕上,x,y是指坐标,n是放大x,y的倍数。这个语句不太好控制,在下没有在程序中用过。

6.disptime

这是用msgbox的形式显示当前时间。可以用给DATE、TIME变量赋值的方法设置系统时间。

7.editmat

打开编辑矩阵的界面。

8.freeze

暂停计算器的工作,直到有输入为止。

9.getkey

用 GETKEY X:的方法来输入一个键。但是输入的并不是键上写的,而是键位的编号。键位从左上编到右下,越来越大,如左上第一个键为11.1,第二个键为12.1,“7”键为72.1,enter键为15.1 。

10.prompt

这个语句是比较方便的输入语句,用 prompt x:就可以了。但是不能用来输入给数组和矩阵。

系出同源的input也有一样的缺陷。

11.input

input x;“title”;“asdf”;“asdfzxcv”;0;

title是输入界面的标题,asdf是输入框前的提示,asdfzxcv是输入框最下方的提示,0则是默认值(一定要写)。

这是比较个性化的输入方式。

12.msgbox

msgbox “asdfzxcv”:以一个灵活的信息框来显示信息,可以适应不同的文本长度。

13.wait

wait t: t是以秒为单位的时间,计算器将以运行循环的方法来消磨指定的时间,放到频率更高的设备上可能会快到或者慢到令人难以忍受。

提示语句的介绍到这算完了,不过,有几个练习布置给大家,看需要选做吧。

1.娃娃国

这是一段比较长的音频文件,编写尤需耐心。出处是周杰伦的《麦芽糖》(2007世界巡回演唱会)3:01-3:20的一小段。

例程:

FOR B=0 TO 1 STEP 1;

FOR A=0 TO 1 STEP 1;

BEEP 1700;0.1:

BEEP 50;0.1:

BEEP 1700;0.1:

BEEP 50;0.1:

BEEP 1300+1000*A;0.2:

BEEP 50;0.2:

END:

BEEP 2900;0.1:

BEEP 50;0.1:

BEEP 2400;0.1:

BEEP 50;0.1:

BEEP 2000;0.1:

BEEP 50;0.1:

BEEP 2000;0.1:

BEEP 50;0.1:

BEEP 2400;0.4:

BEEP 50;0.3:

BEEP 2300;0.1:

BEEP 50;0.1:

BEEP 2300;0.1:

BEEP 50;.1:

BEEP 2000;.1:

BEEP 50;.1:

BEEP 2000;.1:

BEEP 50;.1:

BEEP 1600;.1:

BEEP 50;.1:

BEEP 1600;.1:

BEEP 50;.1:

BEEP 1400;.2:

BEEP 50;.2:

BEEP 1500;.1:

BEEP 50;.1:

BEEP 1200;.1:

BEEP 50;.1:

BEEP 1700;.1:

BEEP 50;.1:

BEEP 1500;.1: BEEP 50;.1:

BEEP 1600;.4:

BEEP 50;.3:

END:

2.lock

一个锁。要求输入正确的密码。(例程用到了循环,用于防止乱按中意外解锁,但是目前的标准不要求这么严密)

例程:

WHILE 1

REPEAT

MSGBOX "ENTER THE CODE.":

PROMPT K:

IF K==123698745

THEN

BEEP 2500;0.2:

BREAK:

ELSE

BEEP 50;0.2:

MSGBOX "ERROR":

CONTINUE:

END:

END:

THEN

DISP 1;"NO WAY!":

RUN LOCK:

END:

THEN

RUN LOCK:

密码为k的值。

3.time

计算时间的小程序,记录开始的时间,输出经过的时间。

例程(坏了):

MSGBOX "START?":

MSGBOX "PRESS ON TO STOP":

TIME咥:

INT(A)哘:

INT((A-Q)*100)哛:

INT((A-Q-R/100)*10000)哠:

3600*Q+60*R+S咶:

IFERR

WHILE 1

REPEAT INT(TIME)咷:

INT((TIME-G)*100)咹:

INT((TIME-G-H/100)*10000)咺:

3600*(G-Q)+60*(H-R)+I-S哯:

3600*G+60*H+I咵:

DISP 2;Z:

END:

THEN

E-F咼:

MSGBOX

(J-(J MOD 3600))/3600 " h "

((J MOD 3600)-(J MOD 60))/60 " m " (J MOD 3600) MOD 60 " s ":

2017年5月29日00:18:06

柜里猫

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值