螺号声声
——过程的递归调用与条件判断
教学目标:
1、理解递归调用的定义及应用,并能熟练运用递归调用画出精妙的图形。
2、学会暂停和终止“过程”运行的三种*作。
3、正确认识二种条件判断语句的格式及区别,并能使用它们判断控制“过程”的执行。
4、理解条件运算符的作用和“真”、“假”逻辑值的概念。
教学重、难点:
1、学会暂停和终止“过程”运行的三种*作。
2、正确认识二种条件判断语句的格式及区别,并能使用它们判断控制“过程”的执行。
教学方法:
教学法、演示法、练习法、讨论法
教具、学具:
电脑、演示图案
教学过程:
一、复习导入
1、复习教材37页图7.2.
2、前面我们已经学会了很多画图的知识,通过运用所学的知识使我们画的图越来越美丽了,荀子说过“学不可以已也”,我们是不是就满足所学的那点知识呢?相信大家一定不会的,我们要不断的学习新知识,让我们经验越来越丰富,作的图越来越美丽。今天我们就一起来学习新知识“过程的递归调用与判断”。
谁会讲故事“从前有座山……”
二、新授课
1、展示:准备的课件图案。
这些图美不美?你知道它们是怎么画的呢?要不要试一试。
2、递归调用
在学习画图之前,我们首先要学习一个熟语“递归调用”。一个过程不但可以调用别的过程,还可以调用自已本身,我们把这种调用称为递归调用。
例:
toyuan:r
setpc6
repeat36[fd2*pi*:r/36rt10]
end
tohailuo:r
yuan:rrt10
hailuo:r+1
end
说明:
(1)过程hailuo每次调用yuan画出一半径为:r的圆后,就旋转10°,再调用自已本身画出一个更大的圆。
(2)过程的递归调用,不仅使过程本身被重复调用,而且可以实现过程中的变量有规律地变化。
3、让小海龟适可而止
在执行以上的过程中,我们会看到一个“重画缓冲区已满,部分图形将被丢失”(教材43页图8.2)的对话框,原因是什么呢?
从上面的过程可以知道:过程不断地调用它自已(递归调用),就会无限地执行下去。
那么我们怎样让小海龟“适可而止”,停下来歇会呢?我们来了解一下以下几种让过程停下来的方法:
(1)单击工具栏上的“中断”图标,过程终止运行;
(2)单击工具栏上的“暂停”图标,过程暂停运行。要让过程继续运行,再单击工具栏上的继续图标。
(3)按住键盘上的ctrl键不放,再按g键,过程就停止运行。
这几种方法都需要我们手动干预,我们可不可以加入一个命令让它停下来呢?
在hailuo过程中递归调用前增加一条使用条件判断命令的语句就行了。格式如下:
if<判断条件>then<命令>
功能:当判断条件成立时,先执行then后面的命令,再执行过程中的下一条命令。
例:
if:r>68thenstop
stop命令是终止当前过程的运行,这个判断条件是指组成小螺号的半圆超过68时,绘图立即停止。
例画四边形(图8.3第2图)螺旋线的过程:
tosblx:b
if:b>150thenstop
fd:brt360/4
sblx:b+10
end
(运行的格式:sblx10)
教材43页图8.1停止的格式为:
toyuan:r
setpc6
repeat36[fd2*pi*:r/36rt10]
end
tohailuo:r
if:r>80thenstop
yuan:rrt10
hailuo:r+1
end
(运行格式为:hailuo1
说明:在运行的过程中,要输入的数据不在过程中,而是在按f2键后出现的命令窗口中的过程名后输入适当的数字。
提示:
(1)判断条件中可以使用的条件运算符号有:>>=<<=等。
(2)条件判断命令还有一种格式:if<判断条件>then<命令1>else<命令2>。它的功能是:当判断条件满足时,执行then后的“命令1”,否则就执行else后面的“命令2”。也就是“命令1”或“命令2”必须选择执行其中的一条,然后才执行过程中的下一条命令。
3、观看海龟的表演
海龟的表演太快了,我们甚至来不及看清它是怎样画的,同学们一定很好奇吧?那么我们能不能用一个命令来控制海龟的画图呢?如果能用一个命令来控制,让我们能清楚地看到海龟表演的过程,那该多好呀。
其实,这种想法是可以实现的,我们可以在hailuo过程调用它本身之前加入一条wait命令(如:wait10),让小海龟执行完一次递归调用后休息一会儿,再执行下一次递归调用,这样我们就能慢慢地观看小海龟表演了。
例教材43页图8.1停止的格式:
tohailuo:r
wait50
if:r>80thenstop
yuan:rrt10
hailuo:r+1
end
同学们可以执行该过程体验一下,要想让小海龟走慢一点,我们就把wait后面的数字设置大一点,如wait100就比wait50慢,呵,有越吧。
提示:
我们已经学了不少命令吧,它们的格式和作用你是不是都记得呢?如果记不得,那我们该怎么办呢?
别急,只要你还记得命令的名称就可以了,“用?命令名”来*出这条命令的帮助窗口,十分方便的。不过,要看看你的英文功底啊?加油吧!如:
?fd(按回车键就会*出一个帮助窗口)
三、巩固练习
学生分组复习本节课讲的内容,互相交流讨论,看看你还能不能利用递归调用知识设计出别的图形来。
四、作业
有余力的学生可以合作完成教材4546页创伤天地中的两个大题。
参考过程:
第1大题:
第一图:
tolxx:a:b
setpc10
fd:alt:b
if:a>200thenstop
lxx:a+2:b
end
说明:在执行这个过程时,除了在命令窗口中对“lxx:a:b”格式要输入数字外,还应该在编辑窗口中对“lt:b”命令的转向角度确定。如画一个六边形的递归调用为:
tolxx:a:b
wait50
setpc10
fd:alt60
if:a>200thenstop
lxx:a+2:b
end
(执行格式为:lxx1010)
在这个过程中,就可以画出三个甚至更多的类似图形,只是在转向的度数上有差异,如120度就是三角形;90度就是四边形即第二图,180度就是第三图。
如果你有兴趣,你可以试一试这个过程:
tolxx:a:b
wait50
setpc10
fd:alt120rt10
if:a>200thenstop
lxx:a+2:b
end
说明:这个过程在第一次右转的后面又进行了第二次右转,度数因自已而定,就显示出了一种另外的效果,有趣吧?一个过程,可以变换不同的参数、角度、进行不同的转向等都可以得到另外的效果。
第二图:
tosblx:b
if:b>150thenstop
fd:brt360/4
sblx:b+10
end
(运行:sblx40)
第三图:
tolxx:a:b
wait50
setpc10
fd:alt90lt2
if:a>200thenstop
lxx:a+2:b
end
提示:细心的小朋友一定会发现,三个图都是用一个过程来执行的,只是在执行过程中的参数发生了变化而已。
第2大题
toyuanhu:r
repeat18[rt5fd30*pi/18rt5]rt180
end
tothl:r
if:r<5rt90fd70bk70rt90stop
yuanhu:r
thl:r3
yuanhu:r
end
(运行:thl5)
提示:在这个过程中,需要对“repeat18[rt5fdr*pi/18rt5]rt180”需要对命令中的r确定一个数字,如确定数字为30时“repeat18[rt5fd30*pi/18rt5]rt180”
教学反思:
在本节课的教学中,如果讲得太多,太杂,就会让学生觉得很困难,失去学习兴趣。所以从展示自已设计的图形入手,让学生先轻松地观赏。激发起学生兴趣后就可以选择一个来讲解。重点就放在一个图案上,让学生反复练习,熟练掌握。然后在一个过程中变换不同的量来观察一下不同的效果。至于其他的图案过程,教师可以提供出来作学生选学,学有余力的学生可以*完成,也可以合作完成。不过,最好是合作完成,因为他们*完成的难度大,易出错,并且一旦出现了错误的时候,就很难调整了。所以后面的创伤天天的很多过程,教师只作参考*的提供,学生可尝试。