算法的三种基本逻辑和框图表示(2)??循环
2.会用循环设计算法解决有关重复性计算和判断等问题.
循环的概念
循环是根据指定条件决定是否重复执行一条或多条指令的控制.
温馨提示1.循环中必须包含条件分支,以保证在适当时候终止循环.
2.循环只有一个入口和一个出口.
3.循环内不存在无终止的循环.
4.循环中几个常用的变量:
计数器:即计数变量,用来记录某个事件发生的次数,如$i=i+1, n=n+1$;
累加器:即累加变量,用来计算数据之和,如$\mathrm{sum}=\mathrm{sum}+\dot{i}$;
累乘器:即累乘变量,用来计算数据之积,如$p=p \times i$.
对于这些变量,在程序开始,一般要先赋初值,可根据实际问题合理选择初始值,一般情况下,计数器可设初值为0或1,累加器初值为0,累乘器初值为1.
【做一做1】 执行如图所示的程序框图,输出的S值为 ( )
A. 1 $\mathrm{B} \cdot \frac{2}{3} \mathrm{C} \cdot \frac{13}{21} \mathrm{D} \cdot \frac{610}{987}$
解析:当$i=0$时,向下运行,将$\frac{s^{2}+1}{2 S+1}=\frac{2}{3}$赋值给$S,i$增加1变成1,经判断执行否,然后将$\frac{S^{2}+1}{2 S+1}=\frac{13}{21}$赋值给$S,i$增加1变成2,经判断执行是,然后输出$S$的值为 13/21,故选$C$.
答案:$C$
【做一做2】 下图给出的是计算$\frac{1}{2}+\frac{1}{4}+\frac{1}{6}+\dots+\frac{1}{2016}$的值的一个程序框图,其中判断框内应填入的条件是 .
解析:由程序框图可知,当$i=2,4,6, \cdots, 2,016$时应执行循环体,当$i=2018$时,跳出循环,故条件应为$i \leqslant 2016$或$i < 2017$或$i < 2018$等.
答案:$i \leqslant 2016$(答案不唯一)
循环的特点
剖析:(1)循环不能是永无终止的“死循环”,一定要在某个条件下终止循环,这就需要条件分支来作出判断,因此循环中一定包含条件分支.
(2)用循环描述算法,一般说需要事先确定三件事:①确定循环变量和初始条件;②确定算法中反复执行的部分,即循环体;③确定循环的条件.
(3)一般地,循环中都有一个计数变量和累加变量.计数变量用于记录循环次数,同时它的取值还用于判断循环是否终止;累加变量用于输出结果.计数变量和累加变量一般是同步执行的,累加一次,计数一次.另外,还有累乘变量,累乘变量和累加变量的设置目的是一样的,只不过分工不同,累加变量用来计算很多项的和,累乘变量用来处理很多项的积.无论哪一种变量都是为最终输出结果服务的.
循环程序框图的识图问题
【例1】 已知程序框图如图所示,该程序运行后,为使输出的$b$的值为9,则判断框内的整数$M=$___________.
分析:分析输出结果与$a,b$值的关系,确定循环终止的条件,即得$M$值.
反思
已知含循环的程序框图,分析其算法功能,确定其输出结果,或完善其缺少的内容是一类重要问题,解决这类问题时,应注意以下几点:
(1)明确循环变量、计数变量、循环体分别是什么,尤其要弄清楚循环的次数以及循环终止的条件分别是什么;
(2)若循环执行的次数较少,可将算法执行过程一一列举、分析获得结果;若循环执行的次数较多,则应考查循环过程中相关变量取值的周期性.
【变式训练1】 下面程序框图所对应的算法的功能是_______.
利用循环求和
【例2】 画出计$1+\frac{1}{3}+\frac{1}{5}+\dots+\frac{1}{2015}$的值的一个程序框图.
分析:选好计数变量$i$与累加变量$S$,且$i=i+2, S=S+\frac{1}{i}$
反思
本题是累加问题,代表了一类相邻两个数的差为常数的求和问题的解法,在设计算法时要注意前后两个数的分母相差2,此时计数变量不是“$i=i+1$”,而是“$i=i+2$”,但如果计算$1+\frac{1}{4}+\frac{1}{7}+\frac{1}{10}+\dots$,此时计数变量应为“$i=i+3$”,要灵活地改变算法中的相应部分.
【变式训练2】 设计一个求2+4+6+8+…+200的值的算法,并画出程序框图.
利用循环求积
【例3】 设计求1×2×3×…×1 000的值的算法,并画出程序框图.
分析:本算法若是只采用顺序,要一个一个地累乘,需千余步,考虑到运算过程的重复性,引入循环,同时设计计数变量和累乘变量来控制循环,因为是乘法运算,所以累乘变量的值不能从0开始,要从1开始,计数变量的值从2开始增至1 000.
反思
在循环中,要注意根据条件设计合理的计数变量、累加变量、累乘变量等,特别要求条件的表述要恰当、准确,累加变量的初始值一般取0,累乘变量的初始值一般取1.
【变式训练3】 画出求99×97×95×…×3×1的值的程序框图.
利用循环求最值
【例4】 看下面的问题:1+2+3+…+( )>10 000.这个问题的答案不唯一,如果我们确定出满足条件的最小正整数$n_{0}$,那么括号内填写的数字只需大于或等于$n_{0}$即可.试写出寻找满足条件的最小正整数$n_{0}$的算法,并画出相应的程序框图.
分析:由于10 000是一个较大的数,用试或猜的办法是行不通的,因此需设计一个循环的程序框图来解决.
【变式训练4】 写出求满足1×3×5×7×…×n < 50 000的最大正整数n的算法,并画出程序框图.
易错辨析
易错点:循环中循环体设置不当致错
【例5】 设计一个程序框图求$S=1^{2}+3^{2}+5^{2}+\ldots+99^{2}$的值.
【例6】 已知$S=1 \times 2^{2}+2 \times 2^{3}+3 \times 2^{4}+\ldots+10 \times 2^{11}$,画出计算$S$的程序框图.
真题
1.下列框图是循环的是( )
A.①② B.②③ C.③④ D.②④
2.阅读下面的程序框图,则输出的S等于( )
A.40 B.38 C.32 D.20
3.阅读如下程序框图,如果输出i=4,那么空白的判断框中应填入的条件是( )
$\begin{array}{ll}{\mathrm{A} . S < 8} & {\mathrm{B.S} < 9} \\ {\mathrm{C} . S < 10} & {\mathrm{D} . S < 11}\end{array}$
4.阅读下面的程序框图,若输入$m=4, n=6$,则输出$a=$________,$i=$________.
5.阅读如图所示的程序框图,运行相应的程序.若输入$m$的值为2,则输出的结果$i=$________.
6.已知有一列数$\frac{1}{2}, \frac{2}{3}, \frac{3}{4}, \ldots, \frac{n}{n+1}$,设计程序框图实现求该列数前 2 017项的和.