配套K12高中数学第1章算法初步1.3基本算法语句1.3.4循环语句教材梳理导学案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3.4 循环语句教材梳理
庖丁巧解牛
知识·巧学
1.循环语句的概念
循环语句是主要用来实现算法中的循环结构的算法语句,处理一些需要反复执行的运算任务.如累加求和,累乘求积等问题中常用到.
2.循环语句的两种形式
循环语句一般有两种:“For循环”“While循环”.
(1)For循环:
格式:
功能:根据For语句中所给定的初值、终值和步长,来确定循环次数,反复执行循环体内各语句.
通过For语句进入循环,将初值赋给变量I,当循环变量的值不超过终值时,则顺序执行循环体内的各个语句,遇到Endfor,将循环变量增加一个步长的值,再与终值比较,如果仍不超过终值范围,则再次执行循环体.这样重复执行,直到循环变量的值超过终值,则跳出循环.
误区警示“For”和“End For”之间缩进的步骤称为循环体;
①只有当循环次数明确时,才能使用本语句.
②Step可以省略,此时默认步长为1.
③步长可以为正、负,但不能是0,否则会陷入“死循环”.步长为正时,要求终值大于初值,如果终值小于初值,循环将不能执行.步长为负时,要求终值必须小于初值.
(2)While循环
格式:
功能:给语句对应于流程图中的当型循环,如图1-3-12:
图1-3-12
先判断条件是否成立,当条件成立时,执行循环体,遇到Endwhile语句时,就返回继续判断条件,若仍成立,则重复上述过程,若不成立,则退出循环.
学法一得①该语句以While开头,Endwhile结束,是模块化结构.
②该循环是前测试型循环,即在执行循环体之前先判断条件.只有当条件成立时,才执行循环,条件不成立时,退出循环.所以在循环体内必须有改变条件的语句,以便在适当时候退出循环.
③该循环适用于循环次数不确定的情况,当循环次数确定时也可用该语句.
典题·热题
知识点一循环次数有限的问题
例1 设计流程图计算2+22+23+…+210,并用循环语句表示.
图1-3-13
思路分析:本题利用等比数列的有限项的和.该循环次数已经确定,可以用“For”语句,也可用“While”语句来实现循环.
解:流程图如图1-3-13:
用For循环语句表示为:
S←0
For i From 1 to 10
S←S+2i
End For
Print S
变式方法:(用While循环实现)
S←0
i←1
While i≤10
S←S+2i
i←i+1
End While
Print S
方法归纳面对新问题,在构造算法时,我们应该先把算法结构理清了,再将结构用算法语句表达出来,从而减少错误率,增加直观性.
知识点二不确定数值输入的问题
例2试设计一个循环语句模拟抛硬币的过程,并计算抛掷中出现正面的概率.
思路分析:随机模拟可通过两种途径实现:一种是用实物模拟,如用抛掷一枚硬币,记录总次数及分别出现正面、反面的次数;另一种是借助于计算机高速的运算、存储能力来实现随机模拟,这个过程实际上是让计算机产生一系列的随机数,事先假设某些数表示什么,另外一些数表示什么.
解:用While循环表示:
S←0
Read n {输入模拟次数}
While i≤n
a=RND {产生一个0到1之间的随机数,并赋给变量a}
If a>0.5 Then
S←S+1
End If
End While
S
Print “出现正面的频率为”,
n
变式方法:用FOR循环表示:
s←0
Read n
For I From 1 to n
If Rnd>0.5 Then s←s+1
End For
s
Print “出现正面的频率为”,
n
拓展延伸①运用RND函数可产生0到1之间的随机函数(不包括1,包括0),本例中用大于0.5的数表示出现正面,用小于0.5的数表示出现反面,如此用来模拟计算.在以后的训练中,我们要注意RND函数的正确用法.
②变式方法中运用Read n输入数值,一旦输入,就确定了数值,所以可用FOR循环.平时练习时要深化对输入语句的理解.
③“For”和“End For”之间缩进的步骤称为循环体;“While”和“End While”之间也是一个循环体;设计语句时,必须注意其完整性.
知识点三循环次数不确定的问题
例3 设计一个算法,计算并输出一批数据中正数和负数的个数.预先不指定数据的个数,输入0时程序结束(即所有有效的数据,其值均不为0).
思路分析:引入循环结构,每次输入一个数据,并判断是正数还是负数,分别设两个变量m,n,统计正数、负数的个数.因为是一批数据,可用Read语句,预先不指定数据的个数,也即循环次数不确定,可使用While语句,注意循环条件是输入的数不为0.
解:流程图如图1-3-14所示:
图1-3-14
用While循环表示:
m←0
n←0
Read x
W hile x≠0
If x>0 then
m←m+1
Else
n←n+1
End If
Read x
End While
Print m,n
方法归纳
1.用For循环的一般思路
(1)确定好初值与终值、步长.
(2)循环变量的初值设置及改变在For语句中实现,如题中For I From 0 to 100,程序中的Sum←Sum+i在用伪代码表示时内置于For语句中,其他位置不能再出现.
2.用While循环设计算法的一般思路
(1)把反复要做的工作,作为循环体放在While与End While之间.
(2)确定循环条件,并在While之前,要设置好初始条件.如题中的i←0,i←1.
(3)考虑在循环体内怎样改变条件以退出循环.
问题·探究
思想方法探究
问题解决同一个问题,可以有不同的算法;同一个算法稍加改造,可以用于解决不同的问题.
学习算法时,尤其是对循环语句中“累加器”应用,我们能否对其进行优化或改造,从而达到使算法更具通用性、更有效?
探究过程:结合对程序框图的认识及算法的三种基本逻辑结构,有利于对程序语言的理解和掌握.类似地,对算法的优化或改造,在算法的程序框图上进行,也有利于学生看清算法的结构和更好地把握“算理”.
这里,我们来改造求1+2+…+100的值的“累加器”的程序框图(如图1-3-15),
图1-3-15
(1)求1+2+…+m(m∈Z*)的值的过程;
(2)求3+5+…+(2m+1)(m∈Z*)的值的过程;
(3)输出1,1+2,1+2+3,…,1+2+3+…+100的过程;
(4)求2+22+…+2100的值的过程;
(5)求使2+22+…+2n(n∈Z*)的和大于100的最小正整数n的过程;等等.其中,(1)将求