第5节 循环结构程序设计
一、教学目标
知识目标:了解循环结构程序设计的概念
技能目标:1、学会对循环事件进行分析,并用循环结构对事件加以描述
2、学会画循环结构流程图
二、重点难点
教学重点:循环结构程序设计及画流程图
教学难点:循环与分支结构相结合的程序设计
三、环境与素材
1、能够上因特网的多媒体网络教室
2、相关图例(挂图或板书)
四、教学过程
建议课时:2课时。
本课从生产中、自然界的循环事件入手,让学生理解:循环事件在人们的生产、生活及自然界都是广泛存在的现象。然后,例举了一个学生大多数都熟悉的数学问题,分析用计算机是如何处理这个问题的。
讲到这里,也许有学生会说:计算机只会用死办法来计算结果,没有人聪明。教师需要向学生说明的是:计算机相对于人脑来说,它的最大优势是在于它的运算速度。一个人要用几年时间来处理的数据量,计算机只用几秒钟就可以完成了。另外,计算机程序是在人的控制下运行的,计算机的运行效率取决于人在编程时的方案。上述程序也可以用较简便的方法来解决,只要对程序进行适当的修改就能实现了。下面是修改后的程序片段:
课文中的“开动脑筋”及练习,主要都是围绕这一例题展开的,只要以上述程序作部分修改就可以了。要让学生有足够的练习时间,把课文中的练习完成,以加深对循环程序的理解。
循环结构程序设计关键点是循环变量和循环条件,要帮助学生分析哪个条件作为循环条件,循环变量如何设定;对程序运行时实际循环次数加以分析;如何避免出现死循环。
练习1、2学生参照教材范例一般可以完成。练习3难度较大,它需要把循环结构与分支结构程序结合起来才能完成,另外对于循环变量的指定也有一定的难度。
练习参考答案:
《开动脑筋》
流程图:(奇数和)
说明:如果是偶数的和,则I的初值应为2。
BASIC源程序:
S=0 : I = 1
FOR I=1 TO 100 STEP 2
S=S+I
NEXT I
PRINT “S=”,S
END
练习1、流程图:
源程序:
S=1
FOR I=1 TO 10
S=S*I
NEXT I
PRINT “S=”,S
END
练习2:循环变量终值改为9就可以了。
练习3:
流程图:
BASIC源程序:
REM 猜0-9之间的随机数
RAMDOMIZE TIMER ;用时间作为随机数参数
I=0 ;设置循环条件,即当没有猜中时I始终是0
DO WHILE I=0
INPUT “请输入你猜的数字(0-9)”; x
IF x=r THEN
PRINT “你猜对了!”
I=1 ;改变循环结束条件,使循环结束
ELSE
IF x>r THEN
PRINT “大了”
ELSE
PRINT “小了”
END IF
END IF
LOOP
END
第6节 数学问题 一、教学目标 知识目标:了解用计算机解决数学问题的方法 技能目标:初步学会对数学问题进行分析的方法,并能够把解决问题的过程转化为流程图 二、重点难点 教学重点:分析问题的方法及用计算机解决数学问题的方法 教学难点:计算机解决数学问题与一般数学方法的不同之处 三、环境与素材 演示流程图的相关挂图 四、教学过程 建议课时:2课时。 计算机最初发明时就是用来解决数值计算的问题,因此,解决数学问题是计算机最主要的特长。但用计算机解决数学问题与一般的数学方法是有些不同的。在很多情况下,我们是利用计算机的运算速度来解决数学问题,而对运算过程中的技巧不太强调。用计算机解决数学问题时,采用什么样的“算法”是问题的关键。 本节通过三个数学问题的实例,分析用计算机解决数学问题的方法。 “年龄问题”是小学数学中常见的问题。用小学数学方法解决这个问题时,通常采用的是“画线段图”的方法,而在初中则采用“解方程”的方法解决。现在我们采用计算机编程来解决上述问题,又有另外一种不同的方法——“穷举法”。对穷举法,前面几课中已经举过一些例子,通过数学问题的解决对这种方法也是一种复习。教材中“年龄问题”提供的流程图留下一个小bug来让学生思考(即开动脑筋):如果判断条件永远不能成立,程序会出现什么情况?怎样避免上述问题出现? “鸡兔同笼”求解过程与“年龄问题”类似。对于教材中提出的问题——输出语句出现在循环体内与循环体外有什么不同?很显然,当输出语句在循环体内时,它要被多次执行,即会输出多次(根据循环次数而定)。而在循环体外部的输出语句只是在循环结束后被执行一次。 “求自然数的阶乘”问题,教师在分析时应注意与累加问题进行比较。一是要注意分析清楚循环被执行几次,二要分析用来保存累乘结果的变量(S)的初值与累加时有什么不同?为什么要有这些不同?程序运行过程中各变量的变化可以通过列表方式进行分析:
循环次数
0
1
2
3
4
…
I的值
2
3
4
5
6
…
S的值
1
1*2
1*2*3
1*2*3*4
1*2*3*4*5
…
S=S*I
1*2
1*2*3
1*2*3*4
1*2*3*4*5
1*2*3*4*5*6
…
本节练习题提供了几道与课本范例相似的题目,以让学生反复练习,加深对数学问题分析方法的理解。
五、练习实施建议
本课练习比较多,其中3、4两题难度较大,是选做题。第1、2二题主要是为巩固学生基础知识,加强对教材中范例的理解。要让学生通过练习,加深对计算机编程的理解,培养学生正确的思维习惯(与数学思维的不同)。要指导学生先对问题进行分析,画出解决问题的流程图,然后再动手编程的好习惯。
·练习答案:
练习1:流程图
BASIC语言原程序:
练习2: 流程图
BASIC原程序:FOR I=49 TO 1 STEP -1
IF I+5=4*(50-I+5) THEN
PRINT I,50-I
END IF
NEXT I
END
练习3: 要用到循环嵌套
①流程图:
注:S作为累加器,其初值赋值为0,而M用于保存累乘结果,初值应赋为1。
②BASIC语言原程序:
S=0
FOR I=1 TO 5 ‘外循环,循环5次
M=1
FOR J=1 TO I ‘内循环,循环I次
M=M*J ‘计算I的阶乘的值
NEXT J
S=S+M ‘累加器,把计算的各数阶乘相加
NEXT I
PRINT S ‘输出计算结果
END
练习4: 让我们先来模拟操作结果:
操作次数
四个盒子中的球数
0
8
5
3
2
1
5
6
4
3
2
6
3
5
4
3
3
4
6
5
4
4
5
3
6
5
5
6
4
3
6
6
3
5
4
7
3
4
6
5
8
4
5
3
6
9
5
6
4