1 / 22

Logo 程序设计

Logo 程序设计. ( 授课讲稿 ) 吴剑辉. 第四讲 简单递归. 我们知道,已定义的过程名可视为新的命令直接来执行;另外,还可以在一个过程中允许使用已定义的过程,即过程的嵌套调用。如果在一个过程体的末尾出现自身过程名,这是一种特殊的过程调用方式。称之为调用自身 “ 命令 ” ,叫做尾部递归。. 一、什么是尾递归. 二、用尾递归画图. 三、进入色彩世界. 一、什么是尾递归. 1 、对比分析:以画一个边长为 100 的正方形为例。. 用重复命令编写: REPEAT 4[ FD 100 RT 90 ]. 尾部递归过程编写: TO ZFX

parker
Download Presentation

Logo 程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Logo程序设计 (授课讲稿) 吴剑辉

  2. 第四讲 简单递归 我们知道,已定义的过程名可视为新的命令直接来执行;另外,还可以在一个过程中允许使用已定义的过程,即过程的嵌套调用。如果在一个过程体的末尾出现自身过程名,这是一种特殊的过程调用方式。称之为调用自身“命令”,叫做尾部递归。 一、什么是尾递归 二、用尾递归画图 三、进入色彩世界

  3. 一、什么是尾递归 1、对比分析:以画一个边长为100的正方形为例。 用重复命令编写:REPEAT 4[FD 100 RT 90] 尾部递归过程编写:TO ZFX FD 100 RT 90 ZFX END 相同点:两种方式编写,海龟都要以“FD 100 RT 90”作图,并重 复出现。 不同点:重复命令是有限的重复,根据设定的重复次数(4 次)来 执行。而尾部递归是无限的重复,每当调用到 ZFX时,又 作为命令执行,并反复进行。 说 明:递归过程不能自动停下来,只能用Ctrl+G组合键强行终止 或操作工具栏相关功能图标。最好在设计递归过程时,通 过设置条件使其自动停止。

  4. 2、线段的奇妙变幻。(分析下列编程所画出的图形变化)2、线段的奇妙变幻。(分析下列编程所画出的图形变化) ⑴、TO ZHX1 :X :N RT :N FD :X END ⑵、TO ZHX2 :X :N RT :N FD :X ZHX2 :X :N END ⑶、TO ZHX3 :X :N IF :X>200 STOP RT :N FD :X ZHX3 :X+5 :N END ? ZHX1 100 0 ? ZHX1 100 90 ? ZHX2 100 90 ? ZHX2 100 144 ? ZHX3 100 90 ? ZHX3 100 144 ⑷、TO ZHX4 :X :N :M IF :X>200 STOP RT :N FD :X ZHX4 :X+:M :N :M END ⑸、TO ZHX5 :X :N :M RT :N FD :X WAIT 50 ZHX5 :X :N+:M :M END ? ZHX5 15 3 10 ? ZHX5 20 2 10 ? ZHX5 20 3 100 ? ZHX4 0 118 2 ? ZHX4 0 61 0.4 ? ZHX4 100 144 0.4

  5. 【知识点】:控制判断命令 说明:条件都用“比较算式”表示。常用的“比较符号”有: ⑴、> 大于;⑵、< 小于;⑶、= 等于; ⑷、>= 大于或等于(“=>”和“>=”的意义是相同的); ⑸、<= 小于或等于(“=<”和“<=”的意义是相同的)。 在递归过程中,常根据实际的需要,对参数进行加(+)、减(-)、乘(*)、除(/)的运算,最后画出各种有趣的图形来。 在实践中,我们将会发现有时候所写的过程,执行结果并没有按照我们所期望的去做。这种“意外的发现 ”正是促使你去思考、去探索、去尝试更多的创造。

  6. 动脑筋,画一画 用上述编写的递归过程,试输入实际参数,分别画出下列图形。

  7. 二、用尾递归画图 1、用尾部递归方式,画出如图所示的五个连续正方形。 TO ZF1 :X :N IF :N<1 STOP REPEAT 4[FD :X RT 90] RT 90 FD :X LT 90 ZF1 :X :N-1 END 执行: ?ZF1 20 5↙ 这里以正方形的个数来计算,运用“递减器”。 也可运用“累加器”。即: TO ZF2 :X :N IF :N>4 STOP REPEAT 4[FD :X RT 90] RT 90 FD :X LT 90 ZF2 :X :N+1 END 对照一下,执行过程时,哪一种形式较方便?(画8个、10个呢 ?) 同时要注意条件的设定! 执行: ?ZF2 20 0↙

  8. 2、在操作中认识变幻规律 与“重复命令”编写类同。注意分析海龟的位置和方向的不同变化,规律性大致有四种基本组合图形。 ⑴、位置不变、方向改变。 TO ZFX12 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] RT 90 ZFX12 :B/2 :N-1 END ? ZFX12 100 4 TO ZFX11 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] RT 90 ZFX11 :B :N-1 END ? ZFX11 100 4

  9. ⑵、位置改变、方向不变。 TO ZFX21 :B :N TO ZFX22 :B :N IF :N<1 STOP IF :N<1 STOP REPEAT 4[FD :B RT 90] REPEAT 4[FD :B RT 90] FD :B FD :B ZFX21 :B :N-1 ZFX22 :B/2 :N-1 END END ? ZFX21 100 4 ? ZFX22 100 4

  10. ⑶、位置改变、方向也改变。 TO ZFX31 :B :N TO ZFX32 :B :N IF :N<1 STOP IF :N<1 STOP REPEAT 4[FD :B RT 90] REPEAT 4[FD :B RT 90] FD :B FD :B LT 90 LT 90 ZFX31 :B :N-1 ZFX32 :B/2 :N-1 END END ? ZFX31 100 4 ? ZFX32 100 4

  11. ⑷、位置不变、方向也不变。 TO ZFX41 :B :N TO ZFX42 :B :N IF :N<1 STOP IF :N<1 STOP REPEAT 4[FD :B RT 90] REPEAT 4[FD :B RT 90] ZFX41 :B :N-1 ZFX42 :B/2 :N-1 END END ? ZFX41 100 4 ? ZFX42 100 4

  12. 3、画超级葫芦串。 主过程: TO THL :R :M :N DRAW FS HT REPEAT :M[THL2 :R :N RT 360/:M] END ?THL 10 5 3 子过程: TO THL1 :R :N IF :N<1 STOP STAMPOVAL :R :R PU FD :R*2.2 PD THL1 :R*1.2 :N-1 END TO THL2 :R :N FD :R*2 PU FD :R PD THL1 :R :N PU SETXY [0 0] PD END ?THL 10 8 5

  13. 4、画树枝。 主过程: TO SHIZI :R :N IF :N<2 FD 0.5*:R SHY 90 :R STOP FD :R SHZ 90 :R SHIZI :R*0.8 :N-1 END 子过程: TO RHU :N :R REPEAT :N[FD :R*PI/180 RT 1] END TO SHY :N :R LT :N/2 REPEAT 2[RHU :N :R RT 180-:N] RT :N/2 END TO SHZ :N :R LT 60 REPEAT 2[SHY :N :R RT 120] RT 180 END ?DRAW FS HT SHIZI 100 2 ?DRAW FS HT SHIZI 50 8

  14. 动脑筋,画一画 ⑵ ⑶ ⑸ ⑴ ⑷ ⑼ ⑽ ⑻ ⑺ ⑹ ⒂ ⑾ ⑿ ⒀ ⒁

  15. 三、进入色彩世界 0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15 通过设置画笔与背景颜色、图形填色等方式和命令实现各种色彩缤纷的图案。 【知识点】:色彩命令 [色码说明]:海龟笔画、屏幕背景, 都可选择使用16种颜色。

  16. 【指导说明】 ⑴、刚进入LOGO系统时, 画笔颜色是黑色(色码为0);背景颜色是白色(色码为15);海龟笔宽的初始状态为1。 ⑵、涂色命令只能对已经被海龟线条封闭起来的图形填色;图形封闭线条的颜色必须和所填的颜色相同;开始填色时,必须使海龟抬笔进入封闭图形内,再落笔。 1、设置变幻背景 TO BJ :S IF :S>15 STOP SETBG :S WAIT 100 BJ :S+1 END ?DRAW FS BJ 0↙

  17. 2、画一个变幻的彩球(如右图)。 方法一: TO CQ1 :C IF :C>15 STOP SETPC :C PU LT 90 FD 100 RT 90 PD REPEAT 360[FD 100*PI/180 RT 1] PU RT 90 FD 50 PD FILL FD 50 LT 90 WAIT 50 CQ1 :C+1 END 方法二: TO CQ2 :C IF :C>15 STOP SETPC :C (STAMPOVAL 100 100 "TRUE) WAIT 50 CQ2 :C+1 END

  18. 3、画出一幅多彩七巧板 (如右图)。 TO QQB :B DRAW HT SETPC 9 RT 45 FD :B RT 135 FD :B*1.4142 RT 135 FD :B PU RT 135 FD :B/4 PD FILL PU BK:B/4 RT 45 PD SETPC 2 FD :B RT 135 FD :B*1.4142 RT 135 FD :B PU RT 135 FD :B/4 PD FILL PU BK :B/4 RT 135 PD SETPC 14 FD :B/2 RT 135 FD :B/2*1.4142 RT 135 FD :B/2 PU RT 135 FD :B/8 PD FILL PU BK :B/8 LT 45 PD SETPC 3 REPEAT 4[FD :B/2 LT 90] PU LT 45 FD :B/8 PD FILL PU BK :B/8 LT 45 FD :B/2 PD

  19. SETPC 11 FD :B/2 RT 135 FD :B/2*1.4142 RT 135 FD :B/2 PU RT 135 FD :B/8 PD FILL PU BK :B/8 RT 45 FD :B/2 RT 45 PD SETPC 13 REPEAT 2[FD :B/2*1.4142 RT 90] RT 45 FD :B PU BK :B RT 22 FD :B/8 PD FILL PU BK :B/8 LT 22 PD SETPC 12 REPEAT 2[FD :B/2 LT 135 FD :B/2*1.4142 LT 45] PU LT 45 FD :B/8 PD FILL PU BK :B/8 RT 90 FD :B/2*1.4142 LT 90 PD SETPC 0 REPEAT 4[FD :B*1.4142 LT 90] PU HOME PD END

  20. 4、画出多层重叠的彩色正方形 (如右图,随机色彩)。 第一步: TO ZFD1 :B HT LT 90 REPEAT 4[FD :B/2 RT 90 FD :B/2] RT 90 END 第二步: TO ZFD2 :B IF :B<20 STOP SETPC RANDOM 14 PU FD 10 PD ZFD1 :B PU FD :B/2 PD FILL PU BK :B/2 PD ZFD2 :B-20 END ?DRAW FS ZFD2 200↙

  21. 5、画满天的星星。 TO XX :N IF :N<1 STOP MAKE "X 315-RANDOM 630 MAKE "Y 235-RANDOM 470 PU SETXY SE :X :Y PD SETPC RANDOM 15 WAIT 5 MAKE "P 4+RANDOM 21 MAKE "Q RANDOM 360 SETH :Q WJX :P XX :N-1 END TO MTXX :N DRAW FS HT XX :N END TO WJX :S REPEAT 5[FD :S LT 72 FD :S RT 144] PU RT 18 FD 4 PD FILL PU END

  22. 动脑筋,画一画 ⑷ ⑶ ⑴ ⑵ ⑻ ⑺ ⑹ ⑸ ⑾ ⑿ ⑽ ⑼

More Related