2020版高中数学新人教B版必修3第一章算法初步1.2.3循环语句学案(含解析)

文档属性

名称 2020版高中数学新人教B版必修3第一章算法初步1.2.3循环语句学案(含解析)
格式 zip
文件大小 218.1KB
资源类型 教案
版本资源 人教新课标B版
科目 数学
更新时间 2019-06-03 17:01:32

图片预览

文档简介

1.2.3 循环语句
学习目标 1.正确理解循环语句的概念,并掌握其结构.2.会应用循环语句编写程序.3.经历对现实生活情境的探究,认识到应用计算机解决数学问题方便、简捷.
知识点一 循环语句的概念和适用范围
思考1 循环语句与条件语句有何关系?
答案 循环语句中一定有条件语句,条件语句是循环语句的一部分,离开条件语句,循环语句无法循环,但条件语句可以脱离循环语句单独存在,可以不依赖循环语句独立地解决问题.
思考2 编写程序时,什么情况下使用循环语句?
答案 在问题处理中,对不同的运算对象进行若干次相同运算或处理时,一般用到循环结构,在编写程序时要用到循环语句.
梳理 1.循环语句的概念
用来处理算法中的循环结构的语句.
2.循环语句的作用
循环语句是用来控制有规律的重复运算或者在程序中需要对某些语句进行重复的执行.
知识点二 循环语句的一般格式
(1)for循环的格式
for循环变量=初值:步长:终值
??循环体;
end
(2)while循环的格式
while 表达式
  ?循环体;
end
1.算法中的循环结构由while语句来实现.( × )
2.循环语句中有直到型语句和当型语句,即until语句和while语句.( √ )
3.循环语句在循环的过程中需要有“结束”的语句.( √ )
题型一 for循环及应用
例1 写出求1+2+3+…+1000的值的计算程序.
解 用for循环语句来实现计算
S=0;
for i=1:1:1 000
S=S+i;
end
S
步骤:这个程序一共四步:
S1 选择一个变量S表示和,并赋给初值0.
S2 开始进入for循环语句,首先设i为循环变量,分别设定其初值、步长、终值.这里初值为1,步长为1(步长是指循环变量i每次增加的值.步长为1,可以省略不写,若为其他值,则不可省略),终值为1000.
S3 循环表达式(循环体).
S4 用“end”控制结束一次循环,开始一次新的循环.
反思与感悟 (1)for循环语句的格式:
for 循环变量=初值:步长:终值
?循环体;
end
(2)根据for语句中所给定的初值、终值和步长,来确定循环次数,反复执行循环体内各语句.
(3)执行过程:通过for语句进入循环,将初值赋给循环变量,当循环变量的值不超过终值时,则顺序执行循环体内的各个语句,遇到end,将循环变量增加一个步长的值,再与终值比较,如果仍不超过终值范围,则再次执行循环体,这样重复执行,直到循环变量的值超过终值,则跳出循环.
跟踪训练1 用for循环语句写出求1+++…+的值的计算程序.
解 程序如下.
i=1;
S=0;
for i=1:1:99
S=S+;
end
S
题型二 while循环语句
例2 编写一个程序求使1×2×…×n<5000的最大正整数n,并画出程序框图.
解 该算法的程序框图如图所示.
程序如下.
S=1;
n=1;
while S<5 000
 S=S*n;
 n=n+1;
end
n=n-1;
print?%io?2?,n?;
引申探究 将本例中“求使1×2×3×…×n<5000的最大正整数”,改为“求使1+3+5+…+i>2016的最小自然数i”,如何设计?
解 程序框图如图所示:
程序为:
S=0;
i=1;
while S<=2 016
S=S+i;
i=i+2;
end
print?%io?2?,i-2?;
反思与感悟 (1)while循环语句的执行过程:首先要求对表达式进行判断,如果表达式为真,则执行循环体部分,每次开始执行循环体前,都要判断表达式是否为真.这样重复执行,一直到表达式值为假时,就跳过循环体部分,结束循环.
(2)在Scilab界面内,可直接输入程序,for(while)循环语句可以在同一行,但在循环条件后面一定要用“,”分开,也可以分行写,最后要记住加end.
跟踪训练2 计算1+2+3+…+100的值有如下算法:
S1 令i=1,S=0.
S2 若i≤100成立,则执行S3;否则,输出S,结束算法.
S3 S=S+i.
S4 i=i+1,返回S2.
请利用while语句写出这个算法对应的程序.
解 程序如下:
i=1;
S=0;
while i<=100
S=S+i;
i=i+1;
end
S
1.在一个程序中含有语句“for x=(-100):10:190”,则该程序执行循环体的次数为(  )
A.29 B.30
C.28 D.19
答案 B
解析 执行循环体的次数=+1,结果不是整数时,取其整数部分.
2.下列问题可以用循环语句设计程序的有(  )
①求1+3+32+…+39的和;
②比较a,b两个数的大小;
③对于分段函数,要求输入自变量的值,输出函数值;
④求平方小于100的最大自然数.
A.0个 B.1个
C.2个 D.3个
答案 C
解析 ①④可用循环语句设计程序,②③要用条件语句设计程序.
3.执行下面的程序,输出的结果是________.
i=1;
S=0;
while i<=4
S=S*2+1;
i=i+1;
end
print?%io?2?,S?;
答案 15
解析 当i=1时,S=0×2+1=1,依次执行i=2,i=3,当i=4时,S=7×2+1=15.
4.将求1×2×3×4×5×6×7×8×9×10的值的程序补充完整.
a=10;
b=1;
while    
b=b*a;
a=    ;
end
print?%io?2?,b?;
答案 a>0(或a>=1) a-1
解析 a的初值为10,故循环体中a的值应该递减,
即a从10减小到1,循环的条件可为a>0,也可为a≥1.
5.编写一个程序,求使不等式1+++…+>10成立的最小自然数i的值.
解 程序如下:
S=0;
i=1;
while S<=10
S=S+1/i;
i=i+1;
end
i=i-1;
print?%io?2?,i?;
1.应用循环语句编写程序要注意以下三点:
(1)循环语句中的变量一定要合理设置变量的初始值.
(2)循环语句在循环的过程中需要有“结束”的语句,即有跳出循环的机会.
(3)在循环中要改变循环条件的成立因素.
程序每执行一次循环体,循环条件中涉及到的变量就会发生改变,且在步步逼近跳出循环体的条件.
2.循环语句主要用来实现算法中的循环结构,处理一些需要反复执行的运算任务,如累加求和,累乘求积等问题.
一、选择题
1.执行下面的程序,输出的结果为(  )
for i=1:2:7
S=3*i;
end
S
A.17B.21C.25D.27
答案 B
解析 i的终值为7,故S=3×7=21.
2.在程序:
a=1;
for i=0:2:100
a=a+1;
end
a
执行完毕后,a的值是(  )
A.50B.51C.52D.53
答案 C
解析 结合程序,知其执行循环体51次,a=51+1=52.
3.在循环语句的格式中有“while A”,其中A是(  )
A.循环变量 B.终止条件
C.开始循环的条件 D.循环体
答案 C
解析 当满足A时,程序才开始循环,故A是开始循环的条件,故选C.
4.下面的程序运行后输出的结果为(  )
i=1;
while i<5
 i=i+2;
end
print?%io?2?,i?;
A.1B.3C.5D.7
答案 C
解析 i=1<5,满足条件,i=1+2=3<5,满足条件,
i=3+2=5<5不成立,输出i的值为5,
故选C.
5.下列程序的运行结果为(  )
i=0;
S=0;
while S<=20
i=i+1;
S=S+i;
end
i
A.5B.6C.7D.8
答案 B
解析 S=0+1+2+…,由于0+1+2+3+4+5=15,0+1+2+3+4+5+6=21,∴i=6.
6.下面程序输出的结果为(  )
for i=1:2:9
  S=2*i+3;
end
S
A.17 B.19 C.21 D.23
答案 C
解析 S=2×9+3=21.
7.下面程序运行的结果是(  )
x=100
for i=1∶1∶11
x=x+10
end
print?%io?2?,x,i?;
A.180,10 B.190,10 C.200,10 D.11,200
答案 D
解析 每次执行循环体后x与i的值对应如下.
x
110
120
130
140
150
160
170
180
190
200
i
2
3
4
5
6
7
8
9
10
11
二、填空题
8.执行下列程序后输出的结果是________.
n=5;
s=0;
while s<8
 s=s+n;
 n=n-2;
end
print?%io?2?,n?;
答案 1
解析 运行程序:
n=5,s=0,满足s<8,
∴s=0+5=5,n=3;满足s<8,
∴s=5+3=8,n=1;
不满足s<8,循环结束,故输出1.
9.下面的程序运行后第3次输出的数是________.
x=1;
for i=1:1:6
  x=x+1/2;
print(%io(2),x);
end
答案 
解析 该程序中关键是循环语句,
第一次输出的数是x=1+=,
第二次输出的数是x=+=2,
第三次输出的数是x=2+=.
10.求1+2+22+…+2100的程序如下,请补全.
S=1;
for i=1:1:100
    ;
end
S
答案 S=S+2^i
解析 由于进行1+2+22+…+2100为有规律的累加运算,其中底数为2,指数i的步长为1.
11.写出以下程序的算术表达式.
N=2;
T=1;
while N<=5
T=N*T;
N=N+1;
end
disp?T?;
该程序的表达式为________________.
答案 T=1×2×3×4×5
三、解答题
12.已知程序框图如图所示.试分析算法的功能,并用for语句写出其程序.
解 此程序框图的功能是求方程x(x+2)=48的正整数解.for语句为
for i=1∶1∶48
 if i*(i+2)=48
 print(%io(2),i);
 end
end
13.根据下列程序画出相应的程序框图,并写出相应的算法.
S=1;
n=1;
while S<1 000
  S=S*n;
  n=n+1;
end
n
解 算法分析:
S1 输入S,n,S的初始值为1,n的初始值为1.
S2 n从1开始循环直到S≥1000停止,且S=S×n,
  n=n+1.
S3 跳出循环,输出n值.
程序框图:
四、探究与拓展
14.下列程序运行的结果为__________.
i=1;
S=0;
while S<=20
S=S+i;
i=i+1;
end
print?%io?2?,i?;
答案 7
解析 第一次循环:S=0+1=1,i=1+1=2;第二次循环:S=1+2=3,i=2+1=3;第三次循环:S=3+3=6,i=3+1=4;第四次循环:S=6+4=10,i=4+1=5;第五次循环:S=10+5=15,i=5+1=6;第六次循环:S=15+6=21>20,i=6+1=7,故输出i的值为7.
15.在某电视台举行的青年歌手大赛中,有10名选手参加,并邀请了12名评委,在给每位选手计算平均分数时,为避免个别评委所给的极端分数的影响,必须去掉一个最高分和一个最低分后再求平均数(分数采用10分制,即每位选手的分数最高为10分,最低为0分).
试用循环语句来解决上述问题.
解 程序如下:
S=0;
k=1;
max=0;
min=10;
while k<=12
x=input(“x=”);
S=S+x;
 if max<=x
   max=x;
 end
 if min>=x
  min=x;
 end
 k=k+1;
end
S1=S-max-min;
a=S1/10;
print(%io(2),a);