教学目标:
1. 知道循环结构的两种常用模式,掌握用当型循环结构写算法。
2. 理解控制循环的条件。
3. 培养学生分析和解决某些循环问题的能力。
重点:
1. 控制循环的条件。
2. 循环的执行过程。
难点:
1. 控制循环的条件。
2. 确定循环体的内容。
教学过程:
一. 通过例题引入循环的概念。
1. 例1:在屏幕上输出五行相同的文字“信息科技”,写出它的算法。
同学们可以根据以前学的知识很快地用顺序结构写出如图1的算法,然后提出问题,如果输出20甚至100遍相同的内容,当然也可以用顺序结构这种方法做到,但是流程图太大,程序输入到计算机中的工作量是很大的,。有没有更好的结构(算法)呢?
其实再看看题目:“信息科技”在题目中只出现一次,只不过要重复五次而已。可以考虑:做一次,回过头去再做一次……,当然要控制好次数。这就是循环的思想(见图2),利用循环结构,使我们只要通过少量的语句,让计算机重复执行它许多次,从而完成要求。
问:重复要做的事情是什么?这就是循环体
问:这个例子中循环次数用什么办法控制的?
演示:告诉大家任何一种程序设计语言都有循环控制语句,调一段VB程序看看。
2. 循环的特点:
循环结构的基本思想是重复,即利用计算机的高速运算特性和逻辑控制特性,重复执行某些语句,以完成大量的信息处理的要求,当然这种重复不仅是简单机械的重复,每次重复都可以有其新的内容。
3.提问:在循环结构和分支结构中都有判断框,那么循环结构和分支结构这两种结构的区别到底在哪里?
(都是根据判断决定算法下一步做什么的流程,但是循环结构中一定有向上跳转的流程即“回过头去再做一次”)
二、给出循环结构的两种常用模式:
1、当型循环:
特点:先做判断后执行循环体的内容。
2、直到型循环:
特点:先执行循环体的内容后做判断。
三、循环的过程:
利用课件演示循环的过程,本课件主要是用来动态演示每一次进入循环体内部后I值的变化,可以使学生很清晰的理解循环结构的运行特点。主要课件界面如下图所示:
演示好后提两个问题:
问题1:若把循环体内的I=I+1语句去掉,程序的执行结果如何。主要让学生知道循环结构必须要控制循环次数,否则称为死循环,不符合算法的“有穷性”特征;
问题2:解答刚才提出的问题,判断框在循环结构中的作用。于此同时强调在循环结构中控制循环的变量在循环体内一般是改变的,这样才能使循环体内的内容重复执行,以及适当的时候跳出循环。
四、通过例题分析对于已知循环次数的问题如何写出算法:
例2:计算1/1+1/2+1/3+…+1/10的值。
1.分析问题:
先分析解题的思路:
人工计算:
1
1.5
1.833……
是依次把这十项累加上去,问题是中间结果留在纸上不容易抹掉。而算盘和计算器只保留当前值,它是在不断地刷新的。利用给变量赋值的办法SUM=SUM+1/N,就保证了SUM总是当前值。
再仿照例1的算法2给出流程图(图3),并分析循环的次数。
讨论累加项Sum在循环体内的写法:一般累加项Sum的初值设为0,仿照例1讨论相同部分,
|
第几次进入循环体 |
I的值 |
Sum的值 |
|
1 |
I=1 |
Sum=Sum+1/1 |
|
2 |
I=2 |
Sum= Sum+1/2 |
|
3 |
I=3 |
Sum= Sum+1/3 |
|
… |
… |
… |
|
10 |
I=10 |
Sum= Sum+1/10 |
从表中可以看出如果设当前项为N,则下一项为1/(N+1),当然可以再设一个变量N,让它从1变化到10,而Sum= Sum+1/N,就可以完成任务。算法如下(图4):
从流程图中我们注意到N的变化和I的变化是相同的,因此可以利用控制循环次数的变量I来进行累加,把Sum=Sum+1/N变为Sum=Sum+1/I,而去掉变量N,从而使算法更加简单,我们看到循环控制变量不但用来控制循环次数,还可以参与循环体内的运算。如下流程图(图5):
2.小结对于已知循环次数的问题写算法的注意项:
⑴.分析循环的次数,确定控制循环的条件;
⑵.分析问题中需要重复的内容,比如例题中的累加器;
⑶.有时候控制循环的变量也可以作为累加项使用。
3.课堂练习:
写出计算2+4+6+…的前15项值的算法。给出部分流程图,让学生补充完整,如图6:
对于学生填写的结果做一些讨论。
估计大部分同学的做法为图7(分析错误原因及改正方法)。也许有个别同学写出如图8的算法,在全班进行分析。
五、通过例题分析对于不知道循环次数的问题如何写出算法:
例3:设计一个算法,计算并输出一批数据中正数和负数的个数。这批数据由使用者从键盘输入,预先并不指定数据的个数,输入0时表示输入结束(即所有有效的数据,其值均不为0)。
1.分析问题:
(1) 循环次数:未知
(2) 进入循环体条件:输入的数据不为0
(3) 循环体内容:
内容1:判断输入的数据,如果为正数,给正数计数变量c1加1;如果为负数,给负数计数变量c2加1。
内容2:输入下一个数据。
⑷ 循环结束的条件:输入的数据为0
2.流程图(图9):
还是强调跳出循环的条件。
3.(本练习可以根据不同班级对前面知识的掌握程度作为课堂练习或课后作业)练习2:模拟一个SD计算器,依次输入一系列数据,以-99为结束,计算所输入所有数据的平均值 ,所输入所有数据的平方和∑X2,以及标准差S,
六、课堂总结:
如果一个算法涉及到循环结构,一定要分析以下几点:
1.分析循环次数:已知或未知
2.分析进入循环体条件。
3.分析循环体内容:即需要重复的内容以及改变循环变量的值。
4.循环结束的条件:不论是已知或未知循环次数的算法,一定要有控制循环结束的条件。