生:哈哈哈,if d(j)<d(j-1) then 交换
师:我们不断地在做d(j)跟d(j-1)两个数的比较及交换,只是j不断地在变,代码如下,为了不重复写代码,那么可以用什么语句来完成?
j=5
if d(j)<d(j-1) then 交换
j=4
if d(j)<d(j-1) then 交换
j=3
if d(j)<d(j-1) then 交换
j=2
if d(j)<d(j-1) then 交换
生:循环
师:请同学们尝试着在刚才一次比较交换代码基础之上,写出一轮比较的代码。老师走动指导。几分钟后,老师给出参考代码:
For j=5 to 2 step -1
If d(j)<d(j-1) then 交换
Next j
教师强调步长为-1的原因。现在的问题是交换如何实现,这时教师出示两瓶不同液体的互换动画,引导学生得出:k←d(j),d(j)←d(j-1),d(j-1)←k,并让学生在原来基础上自行完成交换代码的编写。
目前已一遍排序完成,提醒学生验证代码,看看运行结果是不是和我们分析的一样,把最小数1像气泡一样冒到了第1个位置。这时每个学生都积极主动地尝试着,当调试结果:1,7,3,4,8显示出来后,学生喜上眉稍,很有成就感。到了这一步,学生已对课堂的下一环节非常期待。
设计意图:分解一轮冒泡过程,用代码逐步实现冒泡原理,并调试程序,验证结果,理解代码的用途,分解程序的神秘。毕业论文
http://www.751com.cn/师:现在是一轮排序,一个最小的气泡已经冒到了最前面,接下去的第二轮、第三轮排序……又是如何实现呢?请同学们分析一下。
生2:第二轮排序让j从5逐个走到3就可以了,下面依次少一个,即:
第二轮的冒泡过程是
For j=5 to 3 step -1
If d(j)<d(j-1) then k=d(j):d(j)=d(j-1):d(j-1)=k
Next j
……
第四轮的冒泡过程是:
For j=5 to 5 step -1
If d(j)<d(j-1) then k=d(j):d(j)=d(j-1):d(j-1)=k
Next j
师:5个数据要排4轮,重复过程要写4遍,如果是50个数据,这样的重复过程就要写49遍,数据越多,重复过程就越多,所以为了提高效率,重复劳动的过程我们可以用什么语句来完成?
生:循环
在老师的引导下得出,5个数共经过4轮排序,如果用i来记录轮数,则所用的循环语句是:
For i=1 to 4 step 1
……
Next i
中间就是一轮排序的代码段,到此为止,把5个数冒泡排序的双重循环代码由里及外地逐步呈献给学生,学生不断地调试、修改,再调试,直到把结果:1,3,4,7,8完全排序成功,学生的好奇和成就感达到极点。最后的程序优化:把for j=5 to 2改成for j=5 to i+1以及清空列表框list1.clear代码的添加都变得那么必然和水到渠成了。
设计意图:在一轮冒泡过程的基础上,分析余下轮数的冒泡过程,强调重复过程用循环语句实现的理念,自然地得到外循环,从而把二重循环由里及外地呈现出来,让学生真正明白二重循环的必要性。
(三)简单、有效的拓展
1.练习:在“降序”按钮里完成“降序”排序
2.思考:如果是n个数的冒泡,如何修改程序?
设计意图:通过这两个简单的拓展,达到对整个程序的总结提升,构建并完善知识体系。
教学反思毕业论文
http://www.751com.cn/1.简单。简单是一种智慧,简单是先“深入”后“浅出”,把复杂的内容变得简单起来,从而使学生易于掌握。本节课我以“简单化”为原则,简化界面,省略对齐格式的自定义函数,再把n个数据的键盘输入过程处理成5个数据的赋值过程,降低难度,减少学生对程序的“恐惧”和“神秘”感。
2.分步。先从界面设计,再到输入数据,输出数据,都由学生自己分步设计完成,最后通过第一轮冒泡过程的分解,完成一轮冒泡代码的编写(内循环),再通过余下三轮冒泡过程的分解,完成全过程的代码编写(外循环),通过这样由里及外,由上及下的的方法分解难点,分步编写,在调试中验证,在验证中修改,把程序真正作为“工具”体现算法思想。发现学生整节课学得主动、积极,并有几位学生一开始没认真学习,后来被整个课堂氛围所感染,也开始奋起直追,激发了学生进一步学习算法和VB程序的热情。
3.紧扣。课堂内容步步深入,代码环环相扣,很有挑战性,有一定的成就感,但是这样的教学模式对学生的要求比较高,如果上课一开始就不认真,有一环没跟上,就很难完成整个作品的制作。
上一页 [1] [2] [3]
冒泡排序算法及程序实现教学案例 第3页下载如图片无法显示或论文不完整,请联系qq752018766