LOGO语言教材培训课件(完整版).ppt
LOGO语言简介,LOGO语言是一种早期的编程语言,也是一种与自然语言非常接近的编程语言,它通过“绘图”的方式来学习编程,对初学者特别是儿童进行寓教于乐的教学方式。LOGO语言创始于1968年,是美国国家科学基金会所资助的一项专案研究,在麻省理工学院的人工智能研究室完成。,第一讲,LOGO语言简介,LOGO语言是由美国麻省理工学院人工智能实验室于1968年开发成功的。它的创始人是一位数学家,名字叫西蒙佩伯特(Seymour Papert)。又译为 西蒙派珀特,或西蒙佩帕特。,第一讲,什么是LOGO,LOGO原意是“文字、符号”和“思考”、“思想”。还有“标记、商标”等意思。,第一讲,pc logo for windows基础,1、软件的安装2、界面简介 了解标题栏、菜单栏、工具栏、绘图窗口、小海龟、命令窗口、提示符(?)、光标()、状态栏以及常见的工具按钮。3、了解窗口的各种显示方式以及切换方法 LOGO语言中,可以用各窗口的最大化和还原命令改变窗口的显示状态,也可以用输入命令的方法改变窗口的显示状态(窗口界面视图的切换命令):FS(fullscreen)全图状态命令,即全图方式。SS(splitscreen)图文混合状态命令,即图文方式。TS(textscreen)全文本状态命令,即文本方式。,第一讲,pc logo for windows基础,全图状态时,看不到从键盘上输入的任何命令,只能看到海龟画图区域。(但,此时,仍然可以通过键盘输入并执行命令)。这时输入SS命令,就可以回到图文混合状态了。LOGO语言命令可以使用简写,如FORWARD 是前进命令,可以简写为 FD。在小学教材中,一般使用的都是简写以便于学生记忆。再如LEFT 是左转命令,简写为 LT。RIGHT 是右转命令,简写为 RT。BACK 是后退命令,简写为 BK。LOGO命令不分大小写。,第一讲,简单的绘图命令,FD(forward)参数 前进 BK(back)参数 后退 RT(right)参数 右转 LT(left)参数 左转 注意:命令和参数之间必须用空格分开,执行命令时必须按回车键。,第一讲,练一练,练习1:将FD 40 RT 90 连续输入四次,分别回车,看看画出了什么?将FD 与RT 改为 BK与LT再操作一次。(连续输入4次),第一讲,退出软件的方法,(1)使用BYE命令。(2)使用文件菜单中的“退出”命令。(3)单击窗口右上角的关闭按钮。,第一讲,思考题(P6),1、DRAW命令有什么作用?(DRAW 是初始化命令。使系统恢复到启动状态。效果是:清屏后,海龟归位,设置的属性全部初始化,即,海龟回到原点(又称源点或母位)位置,头向上,笔粗为1,笔色为黑色。例如:比较一下 setw 20 fd 40 cs fd 50 和setw 20 fd 40 draw fd 50)2、小海龟只会一步步走路吗?怎样让小海龟飞一段路程再走呢?(PU PD命令),第一讲,第2课涉及的几个命令,PU(penup)抬笔命令 让海龟把脚抬起来,移动时不画线。PD(pendown)落笔命令 让海龟把脚落下,移动时画出线来。HT(hideturtle)藏龟命令ST(showturtle)显龟命令CLEAN 清图命令。清除屏幕上的图形,海龟的状态不变。即,只清除屏幕上的图形,不改变海龟的位置和方向。(海龟不归位)。CS(clearscreen)清屏。清除屏幕上的图形,海龟回母位。但,设置的属性仍保留。例如:setw 20 fd 40 cs fd 50Draw 初始化命令。使系统恢复到启动状态。效果是:清屏(绘图窗口)后,海龟归位,设置的属性全部初始化,即,海龟回到原点位置,头向上,笔粗为1,笔色为黑色。Home 回家命令。使海龟回到母位。不清屏,海龟回到屏幕中心。(带线归位)。例如:fd 60 rt 30 fd 40 home可以利用带线归位的功能画图,例如:fd 60 rt 90 fd 30 homeCT(cleartext)清文本 作用是:清除命令窗口所有文本,“?”提示符回到第一行。,第一讲,思考一下,怎么在画完图后,让小海龟不留痕迹回家,并保留屏幕上画好的图形?(PU HOME)CLEAN与DRAW命令有什么相同点和不同点?在学过的命令中,哪些命令后面需要参数,哪些命令后面不需要参数?小海龟已经能画出很多好看的图形了,但颜色单一,你能改变它吗?,第一讲,小经验,修改错误的方法:在命令状态下,可以用键盘上的四个光标控制键来移动光标。如果发现命令有错误,首先将光标移到要删除的字符处,删除字符,再键入正确的字符。如果发现某个地方漏打了字符,例如,命令 RT90在命令与数字之间忘记输入空格了,可将光标移到字符“9”前,按一下空格键,命令就变成了RT 90 了。小窍门:使用历史记录运行执行过的命令。在LOGO语言里,若把光标键移到已经执行过的命令上,回车,则可再次执行命令。例如:输入 FD 60 RT 90 回车后,用上述方法再执行三次,看画出了什么图形。,第一讲,REPEAT重复命令,重复命令格式:REPEAT 重复次数 重复内容P12 看一看repeat 2 fd 40 rt 90 fd 80 rt 90repeat 36 fd 10 rt 10比较一下:repeat 6 fd 50 rt 60 与lt 30 repeat 6 fd 50 rt 60,第二讲,想一想,不用重复命令怎样画正方形和长方形?用重复命令怎样画正方形和长方形?体会一下重复命令的好处。怎样用重复命令画正三角形?怎样画出顶点朝正上方的正三角形?画顶点朝正上方的正五边形呢?答案:lt 18 repeat 5 fd 60 rt 72 在画上面各正多边形时,你怎样根据多边形的内角和公式计算旋转角度?先根据(n-2)*180算出内角和,再除以n 算出内角,再用“180内角”算出外角。旋转的角度就是外角的度数。,第二讲,用重复命令画正多边形公式,观察下面的列表,可以发现,小海龟在画正多边形时,重复的次数与转角度数的乘积总是等于360度。,从表中可以看出,画正多边形时,转角的度数是正多边形的一个外角的度数。在画正多边形时只要用360度除以边数,就可以得到转角的度数。画正多边形的公式:REPEAT 边数FD 边长 RT 360/边数,第二讲,小经验,注意:在计算机语言中,除号是/乘号是*在画正多边形时,边数越多,边长就要越小些。否则画出的图形会出界导致错乱。,第二讲,练一练,练习画一下正三角形、正方形、正五、六、七、八、九、十边形。想一想:画正七边形时,转角的度数怎么表示呢?,第二讲,画 圆,如何用REPEAT命令画一个圆呢?(在LOGO语言中,通常采用画一个正36边形来近似画圆。我们画圆一般是根据确定圆心和圆的半径来画,如果圆的半径为r,那么圆的周长就是 2r。这样得到下面的式子:36边长2r 所以,边长2r36r18 所以,画圆的公式为:repeat 36fd 半径*0.174 rt 10 有了这个式子,只要确定了圆的半径,就可以画出指定半径的圆了。例如:画一个半径为10的圆 repeat 36fd 3.14*10/18 rt 360/36 即 repeat 36fd 3.14*10/18 rt 10 或repeat 36fd 10*0.174 rt 10 在LOGO语言中,圆周率可以写成 PI,系统默认是两位小数。所以,上面的语句也可以写成:repeat 36fd PI*10/18 rt 10 提示:若不指定半径,我们常常直接使用这样的命令画圆:repeat 36fd 边长 rt 10 如:repeat 36fd 10 rt 10 也可以使用这样的两次旋转,使画出的圆更平滑:repeat 36 rt 5 fd 10 rt 5,第二讲,小知识,repeat 命令是可以嵌套的。例如:repeat 4 repeat 36fd 10 rt 10 rt 90 想一想:这个语句能画出什么图形?试一下。然后改变最外层的旋转角度和旋转次数,再试试。将用重复命令画的其它图形,加上外部的嵌套(重复次数自定),看看能画出什么图形。例如:repeat 18 repeat 5 fd 80 rt 144 rt 20 repeat 12 repeat 6 fd 70 rt 60 rt 30 repeat 6 repeat 6 fd 70 rt 60 rt 30 提示:当最外层的旋转次数与旋转角度的积是360的时候,正好会旋转一周。若积小于360呢?,第二讲,重复命令嵌套练习,用重复命令嵌套完成下面的练习,要求旋转一周:1、用重复命令画一个圆,并旋转18次。2、用重复命令画一个正方形,并旋转6次。3、用重复命令画一个正八边形,并旋转8次。4、用重复命令画一个五角星,并旋转18次。,第二讲,重复命令嵌套练习,用重复命令嵌套完成下面的练习,要求旋转一周:1、用重复命令画一个圆,并旋转18次。repeat 18 repeat 36fd 10 rt 10 rt 20 或 repeat 18 repeat 36rt 5 fd 10 rt 5 rt 20 或 repeat 18 repeat 36rt 5 fd 5 rt 5 lt 202、用重复命令画一个正方形,并旋转6次。repeat 6 repeat 4 fd 100 lt 90 lt 60 或 repeat 6 repeat 4 fd 100 rt 90 rt 603、用重复命令画一个正八边形,并旋转8次。repeat 8 repeat 8fd 50 lt 45 lt 45 或 repeat 8 repeat 8fd 50 rt 45 rt 454、用重复命令画一个五角星,并旋转18次。repeat 18 repeat 5fd 120 rt 144 rt 20,第二讲,REPEAT命令使用范例,setpc 2 repeat 12 120 lt 30 pu bk 40 rt 30pu fd 40 rt 30 pd repeat 3fd 40 rtsetpc 12 repeat 6 repeat 2 fd 30 rt 90 fd 60 rt 90 rt 60,第二讲,REPEAT命令使用范例,setw 5 setpc 2 repeat 6 lt 45 repeat 4 repeat 9 fd 10 rt 10 repeat 9 fd 10 lt 10 rt 90 rt 105 或 setw 5 setpc 2 repeat 6 lt 45 repeat 4 repeat 9 fd 5 rt 10 repeat 9 fd 5 lt 10 rt 90 rt 105,第二讲,提示:用重复命令画弧的公式:REPEAT 圆心角度数/10 FD 半径*0.174 RT 10 一般可以这样:REPEAT 圆心角度数/10 FD 10 RT 10,思考,REPEAT命令中的中括号可以缺少一个吗?利用重复命令,怎样画出下图呢?,第二讲,参考答案,repeat 4fd 60 bk 60 rt 90 pu fd 20 lt 90 pd,第二讲,改变笔色和背景色(P17),改变笔色:可以通过工具栏的按钮改变笔色。也可以使用命令:setpc 颜色代码(015)背景色也可以改变,大家试试用工具栏改变背景色。用命令是:setbg 颜色代码(015)从工具栏中,单击改变颜色按钮,打开颜色列表。看看各颜色的代码。记一下。,第三讲,颜色代码表,第三讲,填充颜色命令 FILL,FILL 填充颜色命令。使用该命令时,必须先使小海龟抬笔走进要填充颜色的封闭图形中,然后落笔再执行该命令。例如:setpc 12 setbg 14 repeat 4fd 100 rt 90 pu rt 45 fd 30 pd fill,第三讲,小知识,给带有边色线的图形填充不同的颜色,命令格式为:(FILL 图形线的颜色)注意:一定要有括号。例如:setpc 12(设笔色为浅红)repeat 4fd 100 rt 90;画出一个边线色为浅红色的正方形rt 60 pu fd 40 pdsetpc 14;设笔色为浅蓝(fill 12);在浅红边框的正方形内填充浅蓝色,第三讲,想一想,下面的第二条语句能画出什么图形?若想给画出的图填色,横线上应该写什么语句?drawsetw 5 repeat 36 fd 15 rt 10rt 90 pu fd 30 pdsetpc 12_,(FILL 0),第三讲,反笔命令(PX)与笔擦命令(PE),反笔命令不太常用,略。请课后自已阅读P18页内容。PE(PENERASE)笔擦命令。例如fd 60pe bk 60 请自由阅读 教材P1921,第三讲,练习(P21 4),先想一想,下面语句能画出什么图形?然后画一下。REPEAT 4 REPEAT 4 FD 50 RT 90 RT 90画出上面图形后,若想擦除所画的图形,应该输入什么命令呢?,PE REPEAT 4 REPEAT 4 FD 50 RT 90 RT 90当然,也可以先输入PE,回车后,再把光标定位在上面的语句上,再回车。,第三讲,想一想,如何使用PE命令画一条虚线?,可参考下面语句:FD 150 PU BK 20 PE BK 20 PU BK 20 PE BK 20 PU BK 20 PE BK 20 PU BK 20 PE BK 20 注意:执行语句后若再想画线,必须先执行落笔命令。也可参考下面语句:FD 20 PU FD 20 PD FD 20 PU FD 20 PD FD 20 PU FD 20 PD FD 20 PU FD 20 PD,第三讲,设置笔宽命令,格式:SETW N 即,SETW 笔宽值(N是笔头型号,也就是笔宽的值。取值范围是 1999 值越大画出的线越粗。初始化状态值为1。例如:SETPC 12 SETW 30 FD 60 再如:FD 2 BK 2;画点后海龟归位,第三讲,画点的范例(P24),setw 20 setpc 12 fd 2 bk 2;画出一个点 pu rt 90 fd 20 lt 90 pd;改变位置 setw 10 setpc 2 fd 1 bk 1;画出另一个点 画出连续的点:SETW 20 FD 2 BK 2 PU RT 90 FD 40 LT 90 PD SETW 10 FD 1 BK 1 PU RT 90 FD 40 LT 90 PD SETW 20 SETPC 12 FD 2 BK 2,第三讲,读一读,自学教材 P2425 的“练技能”部分。了解各语句的作用。想一想,P25 第4题的各图应该如何画?查询笔宽命令:WIDTH例如:SETW 20 WIDTH,则电脑显示 Result:20,第三讲,画椭圆和矩形,“看一看”(P27)DRAWSETPC 12(STAMPOVAL 40 40“TRUE)PU LT 90 FD 350 RT 90 BK 130 PD SETPC 9(STAMPRECT 700 120“TRUE),第三讲,120,700,画椭圆命令,画空心椭圆格式:STAMPOVAL 横轴半径 纵轴半径画实心椭圆格式:(STAMPOVAL 横轴半径 纵轴半径“TRUE)注意:画实心椭圆时,一定要有括号。两个 参数相等时为正圆。,第三讲,画矩形命令,画空心矩形格式:STAMPRECT 长 宽画实心矩形格式:(STAMPRECT 长 宽“TRUE)注意:画实心矩形时,一定要有括号。两个参数相等时为正方形。,长,宽,第三讲,小知识,用上述命令画椭圆后,小海龟在椭圆的中心。用上述命令画矩形后,小海龟在矩形的左下角。例如:STAMPOVAL 120 50STAMPRECT 120 50,第三讲,练一练(P29 3、4、5题),提示:第3题的前两图可以用STAMPRECT 和STAMPOVAL命令通过修改参数来实现。后一图,可以先画圆,也可以先画正方形,画完一图后,要注意抬笔改变海龟的位置再落笔绘图。特别要注意画圆和画正方形时,海龟处在所画图形中的位置。,第三讲,动脑筋,画矩形或椭圆时,海龟分别处在图形的什么位置?(答案略)海龟在同一位置画两个实心图形时,要注意什么?STAMPOVAL 和 STAMPRECT 命令只能画水平与垂直方向的椭圆和矩形吗?,第三讲,动脑筋,画矩形或椭圆时,海龟分别处在图形的什么位置?(答案略)海龟在同一位置画两个实心图形时,要注意什么?(答案:要注意区别两个图形的颜色。)STAMPOVAL 和 STAMPRECT 命令只能画水平与垂直方向的椭圆和矩形吗?(答案:不管海龟角度如何,都只能画水平与垂直方向的椭圆和矩形),第三讲,多龟作图,多龟作图常用方法:指名法、激活法。退出多龟作图可以用draw命令。1、指名法。使用呼叫命令:ASK 用ASK指名调用海龟。这种方法不够 灵活,用得较少。格式:ASK 海龟代号 命令组例如:ASK 1 FD 30 STASK 2 FD 60 STASK 3 RT 90 FD 60 STSETPC 12 可以发现有一只海龟变红色了。这是系统初始状态时那只0号海龟。默认状态下,除0号海龟以外的海龟是不显示的。只有通过ST命令才能让它们显示出来。,第四讲,多龟作图,范例:ASK 1 FD 30 STASK 2 FD 60 STASK 3BK 30 STASK 1 2 3 REPEAT 3FD 30 RT 120,第四讲,多龟作图,2、激活法。激活法常用TELLWHOEACH命令激活并调用海龟。这是常用的多龟作图方式。(告诉命令TELL是叫醒海龟的命令。用who命令可以查看叫醒了几只。)格式:TELL 海龟代号 ASK 1 FD 30 ST ASK 2 FD 60 ST ASK 3 BK 30 ST TELL 0 1 2 3 RT 90 FD 100上面语句可以调用03号海龟同时作图。,第四讲,多龟作图,也可使用告诉命令TELLALL。这也是叫醒海龟的命令。用who命令可以查看叫醒了几只。)格式:TELLALL 海龟代号1 海龟代号2ASK 1 FD 30 ST ASK 2 FD 60 ST ASK 3 BK 30 ST TELLALL 0 2 RT 90 FD 100上面语句可以调用02号海龟同时作图。,第四讲,温馨提示,使用ASK呼叫命令和TELL告诉命令,只能调用16只(015)海龟。若要调用更多的海龟,可以用SETTURTLES 命令设置海龟的数量。例如:setturtles 300 ask 260 fd 30 st 若没用SETTURTLES 命令设置海龟的数量(132767),则类似ask 29 fd 30 st 这样的语句就会报错。,第四讲,练技能(P34 4),第4题 让五只海龟一起来画奥林匹克五环标志图。drawhtask 1 setpc 9 lt 90 pu fd 90 pdask 2 setpc 12 rt 90 pu fd 90 pdask 3 setpc 14 pu bk 30 lt 90 fd 45 pdask 4 setpc 2 pu bk 30 rt 90 fd 45 pdask 0 1 2 3 4 5 stampoval 35 35,第四讲,练技能(P34 5),第5题(1)用多只海龟画出下列图形参考答案1drawhtpu fd 50 pd fd 50ask 1 rt 24 pu fd 50 pd fd 50ask 2 rt 48 pu fd 50 pd fd 50ask 3 rt 72 pu fd 50 pd fd 50ask 4 rt 96 pu fd 50 pd fd 50ask 5 rt 120 pu fd 50 pd fd 50ask 6 rt 144 pu fd 50 pd fd 50ask 7 rt 168 pu fd 50 pd fd 50ask 8 rt 192 pu fd 50 pd fd 50ask 9 rt 216 pu fd 50 pd fd 50ask 10 rt 240 pu fd 50 pd fd 50ask 11 rt 264 pu fd 50 pd fd 50ask 12 rt 288 pu fd 50 pd fd 50ask 13 rt 312 pu fd 50 pd fd 50ask 14 rt 336 pu fd 50 pd fd 50,第四讲,练技能(P34 5),*第5题(1)用多只海龟画出下列图形答案2 draw ht tellall 0 14 each rt 24*who pu fd 50 pd fd 50,第四讲,练技能(P34 5),第5题(2)用多只海龟画出下列图形,并把每个五角星变成不同的颜色。参考答案1:DRAWFD 70 REPEAT 5 FD 20 RT 144ASK 1 ST SETPC 1 RT 45 FD 70 REPEAT 5 FD 20 RT 144ASK 2 ST SETPC 2 RT 90 FD 70 REPEAT 5 FD 20 RT 144ASK 3 ST SETPC 3 RT 135 FD 70 REPEAT 5 FD 20 RT 144ASK4 ST SETPC 4 RT 180 FD 70 REPEAT 5 FD 20 RT 144ASK 5 ST SETPC 5 RT 225 FD 70 REPEAT 5 FD 20 RT 144ASK 6 ST SETPC 6 RT 270 FD 70 REPEAT 5 FD 20 RT 144ASK 7 ST SETPC 7 RT 315 FD 70 REPEAT 5 FD 20 RT 144,第四讲,练技能(P34 5),第5题(2)用多只海龟画出下列图形,并把每个五角星变成不同的颜色。*参考答案2 DRAW TELLALL 0 7 ST EACH SETH 45*WHO SETPC WHO FD 80 REPEAT 5 FD 30 RT 144,each 命令列表 每只醒着的海龟都执行命令列表 who;当前调出的海龟号。例如:tellall 0 7 who结果显示:result:0 1 2 3 4 5 6 7seth 参数;设置海龟头的方向,第四讲,过程的定义,过程就是一系列有序命令的集合。TO END 过程的第一行称为过程头,以TO开头,后面是过程名,如:SJX WJX,过程头和过程名间要有空格 中间部分是过程体,是我们用来绘图或解决问题而按照一定次序编排的命令序列,它是整个过程的核心。过程体可以是一行命令,也可以是多行命令,还可以是其他一些过程名。最后一行是过程尾,用END表示过程的结束。,第五讲,过程定义范例,定义一个画三角形的过程TO SJXREPEAT 3 FD 90 RT 120END定义一个画五角星的过程TO WJXREPEAT 5 FD 70 RT 144END定义过程后,输入过程名,回车,即可执行过程。,第五讲,过程定义范例2,定义一个画花的过程TO HUAREPEAT 5 REPEAT 3 FD 50 RT 120 RT 72END 定义过程后,输入HUA,回车,即可执行过程,画出花的图形。,第五讲,过程定义范例3,定义画立体五角星的过程TO LWHT RT 18REPEAT 5 FD 60 RT 144 FD 60 RT 54 FD 110 BK 110 LT 54+72END 定义过程后,输入LW,回车,即可执行过程,画出五角星的图形。请大家分析一下上面画立体五角星的方法。,第五讲,动脑筋(41),1、原始命令可以用作过程名吗?过程名可以重复吗?原始命令不可以用作过程名,例如:to draw 回车后,电脑会显示:DRAW is already in use.Try a different name.to cs 回车后,电脑会显示:CS is already in use.Try a different name.过程名也不可以重复。即,定义过的过程,若用它的过程名,再次定义另一个过程,则先定义的过程被替换。2、在一个过程中,如果命令输入错了怎么办?可以输入 EDIT 过程名,回车后会调出过程编辑器。改正错误后,按F2退出编辑器即可自动保存修改。,第五讲,过程的编辑和修改,定义过程后,使用 EDIT 过程名 可调出编辑器,在编辑器中修改后,按F2即可关闭并保存修改。若定义了多个过程,则可以用EDIT ALL 回车后,可以编辑器中编辑所有的过程。例如:TO FREPEAT 4 FD 90 RT 90END 输入F,回车后可画出正方形。此时,输入EDIT F,回车则打开编辑器。在编辑器中添加SETPC 12,过程变成:TO FSETPC12 REPEAT 4 FD 90 RT 90END然后按F2关闭编辑器再输入 F,回车后会发现,画出的是红色的正方形了。说明修改成功。,第五讲,过程的保存,在命令窗口或在编辑器中编写过程后,单击“文件”菜单中的“保存”(快捷键是F6),或使用工具栏的SAVE按钮,可以把过程保存下来,保存时的文件名,可以与过程名不同。保存过程以后,可以使用“文件”菜单中的“打开”或“装载”命令,或使用工具栏上的LOAD按钮,打开保存的过程文件(*.LGO),再输入过程名,回车后即可执行过程。,第五讲,过程范例,旋转的风车 to fcrepeat 6 fd 70 repeat 4 fd 30 rt 90 bk 70 rt 60wait 10 clean rt 10fcend,第五讲,过程范例,编写一个画地板图案的过程(自己加颜色)TO DBHT REPEAT 6 REPEAT 6 FD 30 LT 60 FD 30 RT 60END 想一想,上面的语句是如何画出地板图形的?你能给地板图形填上颜色吗?,第五讲,巧定海龟位置,设置坐标命令SETXY:X:Y 将海龟移到坐标:X:Y 处,海龟的方向不变。设置横坐标命令SETX:X 将海龟移到X坐标指定位置,Y坐标和海龟方向不变。设置纵坐标命令SETY:Y 将海龟移到Y坐标指定位置,X坐标和海龟方向不变。注意:上面的命令,在移动海龟时,会在前后位置间连上线。画点命令DOT:X:Y 在指定的坐标位置画一个点,海龟当前位置不变。,第六讲,小知识,GETXY 显示海龟当前的坐标。XCOR 输出海龟横坐标位置。YCOR 输出海龟Y坐标位置。DOTCOLOR:X:Y 返回指定坐标点的颜色值。大家在电脑上试一下。,第六讲,多角星和空心星(1),画非空心的多角星的公式REPEAT 角数 FD 步数 RT 360*K/角数其中 1K角数/2,且是与角数没有(1以外的)公约数的正整数。计算K的方法举例:五角星:522.5 所以,K的取值是2。六角星:6 23 K的取值范围是2,但2与角数6有公约数,所以,无法取值。七角星:7 23.5 K的取值是2、3。八角星:8 24 K的取值范围是2、3,但2与角数8有公约数,所以,K的取值是3。九角星:9 24.5 K的取值范围是2、3、4,但3与角数9有公约数。所以,K的取值为2、4。十角星:10 25 K的取值范围是2、3、4,但2、4与角数10有公约数,所以,K的取值是3。,第六讲,多角星和空心星(2),画空心多角星的公式方法一:REPEAT 角数 FD 边长 RT 720/角数 FD 边长 LT 360/角数方法二:REPEAT 角数 FD 边长 RT 第一次转角 FD 边长 LT 第一次转角-360/角数例如:画边长为40、第一次转角为100的空心五角星,方法是:REPEAT 5 FD 40 RT 100 FD 40 LT 100-72,第六讲,带参数(变量)的过程,示例TO ZFX:AREPEAT 4 FD:A RT 90END输入 ZFX 20,回车。再输入ZFX 30,回车。再输入ZFX 40,回车,第六讲,带参数(变量)的过程,示例二:TO YUAN:A:BSTAMPOVAL:A:BEND输入YUAN 20 60,回车。再输入YUAN 80 50,回车。再输入YUAN 100 80,回车,第六讲,想一想,画正多边形的公式:REPEAT 边数FD 边长 RT 360/边数 你能定义一个带参数的过程来画任意边长和边数的正多边形吗?,TO DBX:N:BREPEAT:N FD:B RT 360/:NEND输入 DBX 6 90,回车后即可画出边长为90的六边形。输入 DBX 8 100,回车后即可画出边长为100的八边形。,第六讲,画任意多角星(请参见本PPT 68页),TO DJX:N:BC:KREPEAT:N FD:BC RT 360*:K/:NEND其中,:N表示多角星的角数。:BC 表示多角星的线长。:K 表示倍数。倍数K的确定方法,参见以前内容。例如画线长为70的八角星,输入 DJX 8 70 3,再回车即可。,第六讲,画任意空心多角星(请参见本PPT 69页),TO KXX:N:BCREPEAT:N FD:BC RT 720/:N FD:BC LT 360/:NEND其中,:N 表示角数。:BC 表示线长。例如画线长为50的空心九角星,输入 KXX 9 50,再回车即可。,第六讲,画顶角可变的任意空心多角星(P54)(请参见本PPT 69页),TO KXX:N:BC:JREPEAT:N FD:BC RT:J FD:BC LT:J-360/:NEND其中,:N 表示角数。:BC 表示线长。:J表示第一次转角。例如画线长为40、第一次转角为100的的空心五角星,输入 KXX 5 40 100,再回车即可。,第六讲,一个画小海星的过程,TO HX:B:CFD:B RT:CHX:B:C+10HTEND,第六讲,过程的递归调用,一个程序中可以包括多个过程,当一个过程中出现另一个过程的过程名时,就表示要调用那个过程,这种情形称之为过程调用。示例:TO LX:A FD:A RT 120 LX:A+10 END 这里的参数:A 表示第一次前进的步数。执行 LX 10,会发现出现对话框报错。这是由于循环调用,成了死循环,无法停止而造成内存缓冲区已满的错误。我们可以加一条控制过程停止的语句,避免死循环。如下页:,第七讲,过程的递归调用,TO S:A IF:A 300 THEN STOP FD:A RT 120 S:A+10END IF:A 300 THEN STOP 意思是,当参数值增加到300以上时,就停止过程的运行。,第七讲,练技能(P59),画正N边形的过程:TO ZHDBX:N:A;N是边数,A是正多边形的边长REPEAT:N FD:A RT 360/:NEND画正多边形螺旋线的过程:TO DBLX:A:N;N是边数,A是起始多边形的边长IF:A150 THEN STOPFD:A RT 360/:N;画一条边,然后转到画下一条边的方向DBLX:A+3:N;调用自身,边长增加步END 分别输入 DBLX 30 3、DBLX 30 4、DBLX 30 5 再回车试试。,第七讲,练技能(p60),TO ZFXREPEAT 4 FD 40 RT 90ENDTO LXREPEAT 2 FD 40 RT 60 FD 40 RT 120ENDTO SJREPEAT 3 FD 40 RT 120ENDTO XGCS PU FD 80 RT 90 BK 60 PD ZFX RT 90 LX LT 90 FD 40 RT 30 LXRT 60 FD 40 RT 30 SJ FD 40 RT 180 SJ RT 60 ZFX FD 40 LX FD 40 RT 60 FD 9 LT 120 SJEND执行 XG,可画出小狗。注意:若在编辑器或命令窗口中同时定义了多个过程,保存过程文件时,会将定义的多个过程同时保存到一个文件中。装载保存的过程文件后,各过程会全部被调入内存中。大家可以把本页定义的各过程一起复制到编辑器中,再保存一下,然后装载到LOGO中试试。若各个过程要单独保存,则要在编辑器中一个一个的分别定义,再一个一个地分别保存下来。装载时,要一个一个地分别装载到内存中,才可以相互调用。,第七讲,练技能(参考P61),to huarepeat 4 repeat 3 fd 30 rt 120 rt 90endto huahuansetpc 12repeat 8 hua rt 45 pu fd 70 pdend 定义过程后,输入 huahuan,再回车,即可画出一个花环。,第七讲,用递归的方法画三角形圆环,setpc 2 repeat 12 pu fd 40 rt 30 pd repeat 3fd 40 rt 120 lt 30 pu bk 40 rt 30 上面的语句是我们以前画右图时使用的。现在,若用递归调用的方法,应该怎样写呢?to sj setpc 2 repeat 3fd 40 rt 120 endto huanrepeat 12 pu fd 40 rt 30 pd sj lt 30 pu bk 40 rt 30end,第七讲,小知识,1、调用磁盘上保存的过程,除了用“文件”菜单中的“装载”外,还有以下方法:(1)按F5键(2)单击工具栏上的 Load 按钮2、停止按钮 在LOGO系统中有一个“交通岗”,当你进行递归调用时,如果想停止、暂停或继续运行该过程,可以单击工具栏中的三个相应的“红绿灯”按钮。(LOGO的“调试”菜单中也有相应的命令)例如:这是以前我们做过的风车旋转的一个范例:to fcrepeat 6 fd 70 repeat 4 fd 30 rt 90 bk 70 rt 60wait 10 clean rt 10fcend 大家运行一下,并使用工具栏中的“红绿灯”按钮控制一下试试。,第七讲,条件判断语句 IF语句,还记得以前我们画过的风车吧?那个旋转的风车,运行时,需要单击停止按钮停止它的运行。原因是,在那个过程中,使用了循环调用,产生了死循环。下面的范例,使用了IF语句,避免了死循环。TO FC REPEAT 6 FD 70 REPEAT 4 FD 30 RT 90 BK 70 RT 60WAIT 10 CLEAN RT 10MAKE N:N+1IF:N=60 THEN STOP ELSE FCEND定义这个过程后,在命令窗口输入 make“n 0,回车后,再输入 fc,再回车。会发现风车旋转一会儿就自动停止了。因为,每旋转一个新角度后,N的值都会加1,旋转60次后,N的值变为60时,过程就会自动停止了。此时,若在命令窗口内输入 pr:n,回车后会看到此时变量N的值为60.,第七讲,条件判断语句 IF语句,下面我们讲解一下IF语句IF语句有两种格式:格式1:IF 条件 THEN 命令(THEN 可以省略不写)当符合条件时,执行THEN后面的命令,否则就不执行THEN后面的命令,直接执行其它命令。注意:命令可以是一个或多个命令,命令间以空格分开,最后以回车结束。不属于THEN中的命令,一定要写到下一行。其中的“条件”,可以是等式或者不等式及表达式,如:S=40、R35、R10、(OR:N20)等。请大家自行阅读一下教材P63页的两个范例,对IF语句的这种格式加以理解。,第八讲,条件判断语句 IF语句,格式2:IF 条件 THEN 命令1 ELSE 命令2当条件表达式符合条件时,执行 THEN后面的命令1,跳过命令2,再接着执行其它命令;否则,跳过命令1,执行ELSE后面的命令2,再接着执行其它命令。例如画风车的范例:TO FC REPEAT 6 FD 70 REPEAT 4 FD 30 RT 90 BK 70 RT 60WAIT 10 CLEAN RT 10MAKE N:N+1IF:N=60 THEN STOP ELSE FCEND 注意:在递归调用时,若过程自己调用自己,一定要设计至少一个出口,来结束过程,否则会造成死循环,过程不停地运行,甚至导致死机等来重后果。语句中的STOP,是停止过程运行的命令。它只能使用于过程当中。,第八讲,IF语句编程范例(P64),根据提示输入一个1360的数,表示一个角度,由电脑判断这个角是不是锐角,在命令窗口输出判断结果,并在绘图窗口中画出这个角。to jd:n cs rt 90