LOGO语言把编制好的一段一段的程序叫做过程。过程的整体形式是:TO过程名……过程头过程内容……过程体END……过程尾例如,键入:TO WBX按回车键后,屏幕进入编辑状态,屏幕下方有一行提示:EDIT:CTRL—C TO DEFINE,CTRL—G TO ABORT屏幕上方有一闪动的光标,这是你开始输入过程体的地方。例如,我们输入:REPEAT 5[FD 50 RT 72]END按了回车键,计算机并不执行这一命令,因为现在处于程序方式,而不是立即执行的命令方式。
按照屏幕下方的提示,按CTRL—C复合键,则刚刚输入的过程WBX被定义,而且存入工作区。
如果按CTRL—G复合键,就是向计算机声明刚刚输入的过程作废。按这两种键都可以退出编辑状态。
按CTRL—C键后,屏幕显示:PLEASE WAIT……WBX DEFINED?计算机说:请稍候…
…WBX定义定毕
这时,WBX就是LOGO的一个新指令了,而且这个指令是你教给它的!请键入:WBX屏幕上立刻就画出一个五边形来。
在编辑过程时,难免会出现错误,如果有错误,可以用下面的一些命令或功能键帮助修改。
ED过程名进入编辑状态,并出现该过程名的过程。ED是EDIT的缩写。
左移键使光标左移一格。
右移键使光标右移一格。
上移键删除光标右边的所有字符
CTRL-N使光标下移一行
CTRL-P使光标上移一行
CTRL-D删除光标所在位置上的字符,并使光标右边的所有字符顺序左移一格。
ESC删除光标左方的一个字符。
以上这些功能键,除CTRL—N,CTRL—P仅适用于编辑状态,其它各键在其它状态时也适用。
请定义下面的过程,并运行它(花括弧中的中文说明,不输入)。
KTOSHUYE{定义过程树叶}
LT45FD10BK10RT90FD10BK10LT45ENDTOSHUZHI{定义过程树枝}FD15SHUYEFD15SHUYEFD10BK40ENDTOSHUGUAN{定义过程树冠}LT60REPEAT7[SHUZHI RT 20]LT80ENDTOYIKESHU{定义过程一棵树}FD50SHUGUANBK50ENDTOYIBI{定义过程移笔}PURT90FD80LT90PDENDTOLIANGKESHU{定义过程两棵树}REPEAT 2[YIKESHUYIBI]END以上共定义了六个过程。这六个过程从画树叶开始直到画出两棵树,建议除了第五个过程(移笔),每定义一个过程,就运行一次看一看。认真体会LOGO语言可以在过程中调用已经定义过的过程的程序设计方法。
怎样编写和使用带参数的过程
请定义下面的过程:
TO ZFX:BIANCHANGREPEAT 4[FD:BIANCHANG RT 90]END这个过程可以画各种边长不同的正方形。过程名“ZFX”后面的“:BIANCHANG”(边长)叫做参数。
试键入:ZFX 50屏幕上将出现一个边长为50的正方形。
键入:ZFX 100则屏幕上出现一个边长为100的正方形。
需要注意的是,在定义过程时,参数名前需要加一个冒号。但在调用过程时,过程名后只须加一空格直接写出该参数的值即可,不能加冒号。
过程中的参数可以有多个。例如画任意边长的长方形,可定义如下:TO CFX:CHANG:KUANREPEAT 2[FD:CHANG RT 90 FD:KUAN RT 90]END键入:CFX100 60即可画出长100,宽60的长方形。
键入:CFX80 30
即可画出长80,宽30的长方形。
输入并运行下列带参数的过程:
TO CFX:CHANG:KUANREPEAT 2[FD:CHANG RT 90 FD:KUAN RT 90]ENDTO FENGCHE{定义过程风车}REPEAT 9[CFX 100 20 RT 40]ENDTO HUA{定义过程花}REPEAT 9[CFX 40 10 RT 40]LT20FENGCHEEND顺序运行上述过程,可以画出长方形和用长方形组成的风车、花的图案。应该注意到这三个过程中,CFX(长方形)过程带有两个参数,运行这个过程时,必须在过程名后绘出CHANG(长)和KUAN(宽)两个具体数值。后面的两个过程在调用CFX过程时,都已经给出了具体的参数。
什么是递归调用
常常有人讲这样一个故事:“从前有座山,山里有个庙,庙里有个老和尚。老和尚在讲故事,讲的什么故事呢?从前,有座山……”。这个故事可以永远讲不完。因为在故事又“调用”了这个故事本身。
LOGO语言的一些过程也可以调用它本身。这就叫过程的递归调用。
请看下例:TO XING{定义过程星}FD 100RT 160XING{调用XING(过程本身)}END运行这个程序,可以看到屏幕上出现一个九角星,而且海龟在不断地重复画。可以用CTRL—G使海龟停下来。想一想,为什么这么简单的过程能使海龟画出九角形,而且不停地在画?
下面的过程与上例基本一样,只是给出了BUSHU(步数)和JIAODU(角度)两个参数。变换这两个参数的值,可以画出许多不同的图形。
TO XING2:BUSHU:JIAODUFD:BUSHURT:JIAODUXING2:BUSHU:JIAODUEND请多次运行XING2过程,分别给出以下参数(每次运行前键入DRAW命令,以免各次显示的图形混在一起)。
BUSHUJIAODU501205090
507210185016060806013580144
下面给出的三个过程分别叫做LINGJIAN(零件)、ZUHE(组合)、ZAZUHE(再组合)。请分析它们的运行过程,并体会递归调用的作用。
TO LINGJIANHTFD 50LT 90FD 20LT 120FD 30ENDTO ZUHELINGJIANZUHEENDTO ZAZUHELINGJIANRT 60BK 50ZAZUHEEND怎样在LOGO语言中使用变量定义并运行下面这个可以输出方形螺旋的过程。过程名叫做FLX(方螺旋汉语拼音“FANG LUOXUAN”的缩写)。
TO FLXMAKE“BIAN 5REPEAT 80[FD:BIAN RT 90 MAKE”BIAN:BIAN+2]ENDMAKE是给变量赋值的命令。在MAKE“BIAN 5中,BIAN是变量名。这句的意思是给变量BIAN赋值为5。
在重复执行的表中(即方括弧中的命令系列)有:MAKE“BIAN:BIAN+2这相当于BASIC语言中的“LET BIAN=BIAN+2”。也就是变量BIAN在原来的值上增加2作为现有的值。例如,第1次执行“FD:BIAN”时,BIAN的值是5,第2次执行时,BIAN的值就变为7了,第3次执行时,BIAN的值变为9。依此类推,每次增值2。正是因为变量有这个特性,所以可以用跟画正方形形式上差不多的命令,画出如此复杂的螺旋形。这里的关键是边长每次都在变!
把上边的过程加上一个角度(JIAODU)参数,把过程名改为XUAN(旋),请输入下边给定的角度参数运行这个过程(也可以自定一些参数),你会看到许多“旋”的图案。
TO XUAN:JIAODUMAKE“BIAN 5REPEAT 50[FD:BIAN RT:JIAODU MAKE“BIAN:BIAN+2]END运行该过程时,可以在过程名后分别带上如下一些角度参数:12292727036最后,提醒大家注意两点:一、在MAKE命令中,变量名前必须有”号,而在后面的命令中,使用这个变量名时,则不用”号,而是必须在变量名前加上:号。
二有些命令系列比较长,例如上例过程体中的第2行,在屏幕的一行中显示不完。这时你应该继续输入,计算机会自动换到下一行,并认为这两行是连在一起的。计算机在自动换行时,会在这一行的最后加上一个!,它只是一个标记,不会影响过程的执行。你千万不要在一个语句没打完时按下回车键,这样会造成语法错误,使过程不能正常运行。
怎样使用LOGO语言做计算题(一)
PRINT(可以缩写为PR)命令可以输出表达式的结果,例如:PRINT 3+2按回车键后输出结果:5PR(78-34)/11*624在第二个表达式中,/表示÷号,表示乘号。表达式中可以使用圆括弧,但不能使用方括弧或花括弧。如果需要的话,可以在圆括弧中嵌套圆括弧,运算顺序为先内后外。如:PR5*(3+(7-2))40这个表达式不能写成:5*[3+(7-2)]键入:PR12345678100000
显示的结果是:
123457E12
这是用科学记数法表示的数,它的值是:123457×1012=1234570000000
可以看出,运算结果经过四舍五入保留了6位有效数字。
键入:
PR12345678/100000000000
1234357N3
这也是LOGO系统中科学记数法表示的数。它的值是:123457×10-3=000123457同样的,这个结果也是经过四舍五入保留了6位有效数字。
这里需要注意的是,当指数是负数的时候,LOGO的科学记数法用N而不用E。
定义过程:TOHCJS:X:Y
PR:X+:YPR:X-:YPR:X:YPR:X/:YEND这个过程的功能是求X、Y的和差积商(HCJS:和差积商汉语拼音的缩写),例如键入:HCJS104将显示:1464025试试看,如果键入:HCJS430
会出现什么结果。
怎样使用LOGO语言做计算题(二)
定义下面的过程:
TO JISUANMAKE“X RQMAKE“Y RQMAKE“X FIRST:XMAKE“Y FIRST:YPR[]IF:Y=0 STOPPR:X+:YPR:X-:YPR:X:YPR:X/:YPR[]JISUANEND这个过程名叫JISUAN(计算)。它的功能是从键盘输入X、Y的值,输出X、Y的和差积商。程序可以反复运行,直到输入的Y值是0为止。通过这个程序我们要了解LOGO语言中的一些新的概念和命令。
该过程体共有12行。下面我们逐行进行分析。
第1行和第2行使用了等待输入命令RQ(REQUEST的缩写)。计算机执行到这个命令时,等待你从键盘上给它输入。键盘输入的既可以是数字,也可以是字符串;既可以是1项,也可以是用空格分隔开的多项。我们现在用到的这个过程需要输入的是一个数。计算机把这个数放入一个“表”中,并通过MAKE命令把这个“表”赋给变量X。在第2行则把“表”赋给变量Y。
在LOGO语言中,把一串字符或一个数(一串数字字符)称为“字”;把若干个字的组合称为“表”。RQ命令是等待从键盘上输入一个表。
第3行和第4行使用了FIRST命令。第3行中的FIRST命令是把X(注意,FIRST右边X中存的是表)
中的第一个元素取出,经过MAKE命令把这个元素再赋值给变量X。这时变量X中存的不再是表,而是表中的第一个元素,一个具体的数了。同样的,执行第4行后,变量Y中存的也是一个具体的数了。
第3、4行是必要的。因为在第1、2行变量X和Y存的是表,而表是不能进行四则运算的。通过第3、4行的处理,把表中的第1个元素取出,分别赋给X和Y,这时变量X和Y才能进行下边的各种运算。
第5行和第11行中,两个方括弧中间没有字,这称为空表。PR[],输出一空行。
这是为了显示格式清楚。
第9~第10行分别显示变量X与Y的和差积商。
第11行是递归调用,使该过程可以反复运行。换行第6行中的IF是条件命令,STOP是停止当前过程执行的命令。全句的意思是:如果Y=0则停止过程的执行。否则,接下去执行下一命令行。
使用IF命令,对过程的控制将更为灵活。条件命令的用法可以细分为以下几种:一、IF条件THEN过程名如果条件满足,则执行THEN后面的过程,执行完该过程后再返回来接着往下执行。
二、IF条件THEN指令
如果条件满足,则执THEN后面的指令(或指令系列),执行完该指令后再返回来接着往下执行。
三、IF条件THEN STOP
如果条件满足,则退出本过程。如果本过程曾被其它过程调用,则返回曾调用此过程的过程去。
四、IF条件THEN TOPLEVEL
如果条件满足,就终止执行全部程序。
五、IF条件THEN过程或指令STOP或TOPLEVEL与3、4基本相同,只是在THEN后面可以先执行过程或指令,再停止本过程或全部过程。
以上5种形式的条件命令,THEN可以省略不写。
六、IF条件THEN活动1 ELSE活动2
这里的活动1、活动2可以由过程或指令系列组成(过程或指令之间用空格隔开,中间不得使用回车键换行)
这种形式的条件命令的执行方式是:如果条件满足则执行“活动1”中的内容,然后跳过“活动2”,继续往下执行;如果条件不满足则执行“活动2”中的内容,然后继续往下执行。
定义下列过程并运行,体会条件命令的用法。
TO BANYUAN:X{定义过程半园}IF:X>36 THEN HOME STOPFD 4 RT 5BANYUAN:X+1END(调用时,参数X的值可为0)下面这个过程的功能是计算并输出商品的售价。题目是:某商店出售磁盘,零售(10片和10片以下)按每片6元计价,批量购买(10片以上)按优惠价每片55元计价。要求编一程序、输入磁盘片数,即输出应付价款。
TO MCP{MCP:卖磁盘汉语拼音字头}MAKE“X RQMAKE“X FIRST:X
IF:X=0 STOP
IF:X>10 THEN PR 55*:X ELSE PR 6*:XPR[]MCPEND这个过程可以反复运行,只有当输入的X为0时,退出本过程。注意体会过程体中第4行的作用和执行顺序。