本论文在其他论文栏目,由论文格式网整理,转载请注明来源www.lwgsw.com,更多论文,请点论文格式范文查看
《循环结构》教学设计
盐城中学 周勇军 高士娟
【教材分析】本课取自教育科学出版社出版的《算法与程序设计》,第二章第三节的第三课时:循环结构之for循环。循环结构可以使大量具有重复性的代码简化,给编写较复杂的程序带来方便,因此在程序设计中具有重要的地位。
【学情分析】学生已经学习了顺序结构和分支结构,而循环结构相对于前面两种结构难度要
大。这部分的学习将为“常用算法的程序实现”奠定基础。
【知识目标】理解循环结构的概念,掌握for循环的语句格式,掌握for循环中初值、终值、
步长、循环体的分析方法。
【技能目标】掌握解决问题的一般思路,学会使用循环结构解决实际问题。
【情感目标】通过师生、生生互动的活动过程,培养学生的主动探究、勇于发现的精神,增
强编程兴趣,体验成功喜悦。
【教学重点】for循环结构的语句格式;循环结构中初值、终值、步长、循环体的分析方法;
使用循环结构解决问题。
【教学难点】循环结构中初值、终值、步长、循环体的分析方法;,使用循环结构解决问题。
【教学方法】采用案例模拟的方式,给学生不同的模板,让学生通过模仿解决问题,达到教
学效果。
【教学过程】
一、创设情景,导入课题
师:200多年前,数学家高斯的小学老师出了一道题目, 1+2+3+…+100的和是多少?,高斯很快就算出了正确答案,而其他同学则算得很慢,大家想一想这是为什么?
生:他们用的计算方法不一样?
师:他们分别采用了什么样的方法呢?
生:高斯是用公式的方法:1+2+3+…+100=(1+100)+(2+99)+(3+98)+…+(50+51)= 50101 = 5050。其他同学是采用累加的方法:先求1+2,再加3,再加4,一直加到100,最后得到结果5050。
师:如果用编程来解决这个问题,无论是累加法,还是公式法,对于计算机而言都是适用的。对于公式的方法,关键是找到求和公式;那么对于累加的方法,又该如何编程解决呢?
师:请大家思考一下。我们可以用我们以前学过的知识。
师:这个题目要求的是 ‘和’,那这个地方要定义一个变量表示‘和’。我们定义一个变量s(dim s as integer),既然是和的话,那s的初始值应该设成0,即s=0。然后累加,从1开始,应该用什么语句表示,怎么写,s=s+1,然后加2,即s=s+2,以此类推,一直到s=s+100
生:
Dim s as integer
s = 0
s = s + 1
s = s + 2
s=s+3
……
s = s + 100
print s
师:大家可以发现,方法很简单,就是反复累加,但方法好不好?
生:太烦琐了。
师:那能不能把程序写得简单一些,让计算机自动重复上述过程呢?
师:我们仔细观察一下,这里的s=s+1、s=s+2、s=s+3等等,都是很相似的语句,都可以写成s=s+数字的形式。这里的数字是从1、2一直到100,是一个等差数列,公差是1。
师:如果用变量i来表示这里的数字,那每一行的操作就是s=s+i(i分别取1、2、3。。。、100),所以整个计算过程是在重复若干个同样的操作,即s=s+i。
像这样,在一定条件下,反复执行某种操作的结构,我们称之为循环结构。这就是我们今天要研究的内容。
设计意图:通过学生熟悉的例子引入课题,学生容易接受,也容易进行知识的迁移,降低学生的难度,能让学生水到渠成的掌握知识。学生适时归纳,总结规律,从中抽象出循环结构这样一类逻辑结构。
二、展示实例程序,分析程序
现在我们来看一看,这个程序用循环结构是如何实现的。
展示程序:
Private Sub cmdgs_Click()
Dim i As Integer
Dim s As Integer
s = 0
For i = 1 To 100
s = s + i
Next i
Print s
End Sub
师:很明显,左右两边哪一边的程序是用循环结构实现的程序?左边的。对比一下,原来用于累加的100行语句现在变成了几行?3行。简单多了。这个3行就是循环结构。
师:解释一下这里的循环结构:i从1(i的初值)开始一直到100(i的终值),这里的1称之为i的初值,100称之为i的终值,这里重复执行的是什么?s=s+i,next i是什么意思呢?让i的值增加1,i的初值是1,然后是2,然后是3,一直到100,所以s=s+i执行了多少次?100次。
师:现在我们来看一下这个程序的运行结果。运行一下,是多少?5050。
师:我将这个程序稍微改动一下,让i从2开始到99结束,最后s的值是多少?
生:4949。
师:实际上这时候计算的是2+3+4+…+99的和。
三、模拟尝试,用循环思想解决问题
师:通过刚才的分析,我想大家对循环结构有了一个初步的认识,下面请大家,模仿这个程序,完成下面4个程序的填空(1、2两题师生共同分析完成,3、4两题由学生上机实践完成。)
[任务一]:
1、计算s = 100 + 101 + … + 200
Private Sub cmd11_Click()
Dim i As Integer
Dim s As Integer
s = 0
For i= to
s = s + i
Next i
Print s
End Sub
师:第1题,要我们填的是i的初值和终值,
师:这边是100、101、102一直加到200,那这些数字的公差是多少?
生:1
师:那初值终值显然应该多少呢?
2、计算s = 1 + 1 / 2 + 1 / 3 + … + 1 / 10
Private Sub cmd12_Click()
Dim i As Integer
Dim s As Single
s = 0
For i = 1 To 10
Next i
Print s
End Sub
师:第2题,要我们填的是重复执行的语句,大家考虑一下,应该填什么?
生:s=s+1/i
师:怎么分析的?
师:根据题目,如果用累加的方法编程,应该怎么写?
S=0
S=s+1/1
S=s+1/2
…
S=s+1/10
显然每一行里,除了分母以外,其他部分都一样吧,分母的变化(1、2、…、10),分母用i来表示,i从1开始一直到10,重复执行s=s+1/i。
师:好的,有了第一题和第二题的基础,下面请大家上机实践完成第三题和第四题。
3、求S = 1^2 + 2^2 + 3^2 + … + 10^2
Private Sub cmd13_Click()
Dim i As Integer
Dim s As Single
s = 0
For i = 1 To 10
Next i
Print s
End Sub
4、求p = 1 * 2 * 3 * … * 9
Private Sub cmd14_Click()
Dim i As Integer
Dim p As Single
p = 1
For i = To
Next i
Print p
End Sub
师:请一同学展示结果,并作出分析。
设计意图:学生刚刚接触循环结构,对于循环的格式不熟悉,所以任务一的作用是让学生模仿累加求和的程序,对于循环结构有个初步的认识。其中第一题,要求学生通过模仿,分析出初值和终值。第二题和第三题要求学生通过模仿,找规律,分析出循环体。第四题要求学生不仅能分析初终值,还需要确定循环体,相对前面三题,增加了难度。这些关键代码的修改使得学生通过循环变量的初终值以及循环体的变化初步认识 for循环的各部分。也正是通过这样的模仿,学生能够初步掌握循环结构的编程。这些代码为学生建立了开始编程的起点,也是通过代码的模仿进行初步的知识建构。因为任务一,只是学生对于程序的模仿和修改,大多数同学都能依葫芦画瓢的完成,所以学生出现的问题不多。本论文由论文格式网整理,转载请注明来源www.lwgsw.com,更多论文,请点论文格式范文查看
四、for-next循环语句格式
师:通过完善程序,我想大家对循环结构有了进一步认识,那现在我们能不能总结一下循环结构的语句格式呢?
基本格式:
For 循环变量=初值 To 终值
循环体 ----------------- 重复执行的语句或语句块
Next 循环变量 ------------- 让循环变量增加1,执行下一次循环
师:有了循环结构的语句格式,我们再请大家解决这样一个问题。
【学生思考】任务二
计算S=10+20+30+…+100
Private Sub Command1_Click()
Dim I as integer
Dim s as integer
s = 0
For i= to
Next i
Print s
End Sub
师:这里要填的是初值、终值、循环体,应该怎么分析呢?
生:回答有2种可能
做法1 做法2
S=0
For i= 10 to 100
S=s+i
Next i
Print s
S=0
For i= 1 to 10
S=s+10*i
Next i
Print s
错误 正确
分析过程:
s=0
s=s+10----s+10*1
s=s+20----s+10*2
s=s+30----s+10*3
…
s=s+100---s+10*10
师:做法2是正确的,有没有更好的解决办法呢?实际上VB为这类问题的解决引入了步长的概念。我们看循环结构的完整格式。
完整格式
For 循环变量=初值 To 终值 Step 步长
循环体
Next 循环变量
师:请大家看一下这个完整格式跟前面的格式有什么区别?
生:多了“step 步长”。
师:那是不是前面我们研究的循环结构程序就没有步长呢?不是的,前面的程序也是有步长的,步长是多少?1,而vb规定,步长为1的时候,“step 1” 可以省略。
师:前面是“循环变量增加1,执行下一次循环”,那现在呢?
生:是“循环变量增加一个步长,执行下一次循环”。
师:有了循环结构的完整格式,我们再来解决这个问题。
师:同样用累加的方法进行分析:
S=0
S=s+10
S=s+20
…
S=s+100
i取值10、20、…、100,i的增量是10。
所以归纳出:循环体是s=s+i,步长是10。
S=0
For i= 10 to 100 step 10
S=s+i
Next i---------让循环变量i增加10,执行下一次循环
Print s
设计意图:给出完整格式,对照前面的求和程序,让学生理解for循环中的循环变量、初值、终值、循环变量增量、循环体的概念,给学生编写程序以理论基础。设计S=10+20+30+….+100题目,是为了加深学生对于for循环的各个部分的理解,也弥补了任务一中没有设计到循环变量增量发生变化的情况。通过问题的提出,学生讨论思考后,对于循环结构的理解达到一个更深的层次。
五、利用循环结构编程解决问题
掌握了循环结构的语句格式,学会了初值、终值、步长、循环体的分析方法,我们就可以利用循环结构来解决实际生活中的一些问题。
【学生操作】任务三。
师:这个题目用循环结构来编程,初值、终值、步长、循环体各是什么?请大家上机实践完成任务三。请你帮猴子算一下它一共摘了多少个玉米?——650。
一只猴子准备摘一些玉米过冬,第1天摘了2个,第2天摘了4个,以后每天都比前一天多摘2个,直到有一天,它摘了50个玉米,它觉得这么多玉米已经足够过冬了,于是就不再摘了。请你帮猴子算一下它一共摘了多少个玉米?
Private Sub Command1_Click()
Dim i As Integer
Dim s As Integer
End Sub
师:请一个学生展示,请学生说出初值、终值、步长、循环体各是什么?并请学生分析为什么?
师:大部分同学都帮猴子计算了过冬的玉米个数,下面还要请大家帮助小明解决一个问题。
设计意图: 通过实际生活中的例子,培养学生运用算法设计的思想解决生活中实际问题的能力,在实践和体验中建构符合自身发展特点的认知结构。同时,这一阶段的操作要求学生相互之间进行适当的讨论,旨在让学生在协作学习中掌握新知识。通过生活实例,以累加求和作为理论基础,使得学生容易理解,找到思考的方法。学生对于循环理解了,循环体也就会写了。
【学生操作】任务四。
小明遇到一个题目,如果四位数11□□能被17整除,那么满足此条件的所有四位数的和是多少?请你编写程序帮助小明解决这个问题。
Private Sub Command1_Click()
Dim I as integer
Dim s as integer
End Sub
师:读了题目,发现这个题目有些难点。我们先将题目变换一下,即:小明遇到一个题目,如果存在四位数11□□,那么形如此形式的所有四位数的和是多少?
变换之后的题目用循环结构来编程,初值、终值、步长、循环体各是什么?
生:初值1100、终值1199、步长1、循环体s=s+i
师:好,再回到原来的题目,请你再思考初值、终值、步长、循环体各是什么?请大家上机实践完成任务四。
师:找错误的同学展示,讲解错误。
师:请学生展示做好的程序。(可以展示2到3个学生的程序)
师:这个程序将循环结构和选择结构结合起来,为我们编写更复杂的程序作了有益的尝试。
设计意图:学生已经对for循环有了深入的理解,学生已能自己编写for循环程序,在编程过程中也掌握了调试程序的方法。任务四是要求学生编写完整的for循环语句,运行结果,解决实际问题,体验成功的喜悦。给出拓展任务,让学有余力的同学多思考,多尝试,进一步优化程序。
六、总结
通过今天的学习,我们掌握了循环结构的语句格式、学会了循环结构中初值、终值、步长、循环体的分析方法,并且利用循环结构,解决了一些实际问题。实际上,利用循环结构还可以解决许多实际生活中的问题,这就要求大家在今后的学习中勤于思考,增强实践,提高自己的编程水平,从而能解决更多实际问题。
好,今天这节课就到这里,下课!
【参考文献】
1.《信息技术基础(必修)教师教学用书》, 李艺等主编,教育科学出版社出版,2004
2.《走进高中信息技术教学现场》,胡秀琴主编,首都师范大学出版社出版,2007