循环语句
2.会分析含有循环语句的算法.
3.能运用循环语句描述算法.
1.循环语句的概念
用来处理算法中的循环的语句.
2.在Scilab语言中,for循环和while循环的格式
名称
格式
适合条件
作用
for
循环
for 循环变量=初值:步长:终值
循环体;
end
用于预先知道循环次数的情形
用来控制有规律的重复运算或者在程序中需要对某些语句进行重复的执行
while
循环
while 表达式
循环体;
end
用于预先不知道循环次数的情形
【做一做1】 下面程序最后输出的结果为( )
A.17 B.21 C.27 D.37
解析:程序最后输出的结果为$S=3 \times 7=21$.
答案:B
【做一做2】 下面程序的运行结果是 .
解析:程序的功能是计算$1 \times 2 \times 3 \times 4 \times \cdots \times 10$的值.
答案:3 628 800
1.两种循环语句的执行原理
剖析:(1)for循环的执行过程:通过for语句进入循环,将初值赋给循环变量i,当循环变量的值不超过终值时,则按顺序执行循环体内的各个语句,遇到end,将循环变量增加一个步长的值,再与终值比较,如果仍不超过终值范围,那么再次执行循环体,这样重复执行,直到循环变量的值超过终值,则跳出循环.
温馨提示
1.只有当循环次数明确时,才能使用本语句.2.步长可以为正、负,但不能是0,否则会陷入“死循环”.步长为正时,要求终值大于初值,如果终值小于初值,那么循环将不能执行.步长为负时,要求终值必须小于初值.
3.for语句对应的程序框图如下图所示:
(2)while语句执行过程:该语句对应于程序框图中的循环,先判断条件是否成立,当条件成立时,执行循环体,遇到end语句时,就返回到while,继续判断条件,若仍成立,则重复上述过程,若不成立,则去执行end后面的语句(即退出循环体).
温馨提示1.当循环次数未知时,只能利用while循环语句解决累加、累乘问题,循环体结束循环的条件必须是唯一的,若不确定,则无法结束,形成“永不停止”的循环.对于循环结束的条件,要注意与“是”“否”后面的处理框相对应.
2.while语句对应的基本框图如图所示:
2.两种循环语句的区别
剖析:(1)for语句适用于预先知道循环次数的循环,而while语句主要用于预先不知道循环次数的情形,首先要对表达式进行判断,这是这两种语句的区别.
(2)for循环是先执行一次循环体,然后每次循环i的值都比上一步增加一个“步长”,如此循环直到结束;而while循环则在每次执行循环体之前,都要判断表达式是否为真,这样重复执行,一直到表达式为假时,就跳过循环体部分,结束循环.
(3)在Scilab界面内,可直接输入程序,for(while)循环语句可以写在同一行,但在循环条件后要用“,”分开;也可分行写,但要记住加“end”.
对循环语句概念的理解
【例1】 下列命题中正确的是( )
A.for循环可以无限循环
B.while循环可以无限循环
C.循环语句中必须有判断
D.while循环不能实现for循环的功能
【变式训练1】 下列问题可以运用循环语句设计的个数为( )
①求$1+3+3^{2}+\ldots+3^{9}$的和;
②比较$a, b$两个数的大小;
③对于分段函数,要求输入自变量,输出函数值;
④求平方值小于100的最大整数.
A.0 B.1 C.2 D.3
含循环语句算法程序的理解及应用
【例2】 指出下列两个算法程序运行后的输出结果.
分析:按照for语句和while语句的执行过程分别进行分析求解.
反思
1.分析用for循环编写的程序时,要注意循环变量的初值、步长和终值,避免出现多一次循环和少一次循环的情况.
2.分析用while循环编写的程序时,一定要注意表达式的形式,当表达式为真时执行循环体,表达式为假时结束循环体,以防出现表达式正好相反的错误.
【变式训练2】 以下程序的功能是( )
A.计算$3 \times 10$的值
B.计算$3^{55}$的值
C.计算$3^{10}$的值
D.计算$1 \times 2 \times 3 \times \ldots \times 10$的值
循环语句的应用
【例3】 用for语句写出计算$1 \times 3 \times 5 \times 7 \times \ldots \times 2015$的值的程序.
分析:解决这一问题的算法步骤如下:
$\mathrm{S} 1 \quad S=1$;
$\mathrm{S} 2 \quad i=3$;
$\mathrm{S} 3 \quad S=S \times i$;
$\mathrm{S} 4 \quad i=i+2$;
$\mathrm{S} 5$ 如果$i>2015$,则执行$\mathrm{S} 6$,否则执行$\mathrm{S} 3, \mathrm{S} 4, \mathrm{S} 5$;
$\mathrm{S} 6$输出$S$.
反思
1.本题中的“
”是循环体.
2.由于是一个累乘问题,如果我们设定$S$的初始值为$1,i$的初始值为1,则第二句也可改为“for i=1:2:2015”,最后程序的运行结果是一样的.
3.注意程序中分号的作用,若没有分号,则最后在屏幕上会出现每一步的运行结果;而有分号,则只出现最后的运行结果.
【变式训练3】 设计算法计算$1^{2}+2^{2}+3^{2}+\ldots+2015^{2}$,使用for语句描述该算法,并画出框图.
【例4】 用循环语句写$1+\frac{1}{2}+\frac{1}{3}+\dots+\frac{1}{n}>10$的最小自然数$n$的算法,并写出相应程序..
分析:本题不等号的左边为$1+\frac{1}{2}+\frac{1}{3}+\dots+\frac{1}{n}$是有规律的累加运算,因此,引入累加变量$S$.而要求$\mathrm{S}>10$的最小自然数$n$,则可用“while $S<=10$”来控制循环,又要引入计数变量$i$,通过“$\mathfrak{i}=\mathrm{i}+1$”进行循环.
反思
由于本题中终值预先不清楚,因此才考虑用while循环,要注意程序与算法一致.
【变式训练4】 写出求满足$1+2+3+\cdots+n < 2017$的最大自然数$n$的程序.
易错辨析
易错点:循环语句格式不正确致错
【例5】 写出求使$1+2+3+\cdots+$_____$ < 2017$成立的所有正整数的一个程序
真题
真题
1.下列算法:
①求和$\frac{1}{1^{2}}+\frac{1}{2^{2}}+\frac{1}{3^{2}}+\cdots+\frac{1}{100^{2}}$
②已知两个数求它们的商;
③已知函数定义在区间上,将区间十等分求端点及各分点处的函数值;
④已知三角形的一边长及此边上的高,求其面积.
其中可能要用到循环语句的是( )
A.①② B.①③
C.①④ D.③④
2.下列说法正确的是( )
A.for循环变化时变化的方向是由初值到终值
B.初值一定小于终值
C.步长只能为正数
D.步长任何时候都不能省略
3.在循环语句for$\mathrm{x}=-10 : 5 : 15$中,循环体共执行循环的次数是( )
A.5 B.6 C.7 D.8
4.已知如下程序,则其运行结果是( )
A.81 B.100 C.10 D.9
5.试分别用for语句和while语句设计求$\frac{1}{2}+\frac{1}{4}+\frac{1}{6}+\dots+\frac{1}{100}$的值的算法语句.