版优化方案高一数学人教版必修三学案 第一章 算法初步 12223循环语句.docx
《版优化方案高一数学人教版必修三学案 第一章 算法初步 12223循环语句.docx》由会员分享,可在线阅读,更多相关《版优化方案高一数学人教版必修三学案 第一章 算法初步 12223循环语句.docx(31页珍藏版)》请在冰豆网上搜索。
版优化方案高一数学人教版必修三学案第一章算法初步12223循环语句
1.2.2 条件语句
1.2.3 循环语句
1.问题导航
(1)条件语句的格式是怎样的?
(2)程序中的条件语句与程序框图中的条件结构有什么关系?
(3)循环语句可细分为哪两类?
格式分别是怎样的?
它们有什么相同点和不同点?
(4)程序中的循环语句与程序框图中的循环结构有什么关系?
2.例题导读
通过对例5的学习,学会条件语句的基本结构;
通过对例6的学习,学会如何将程序框图转化为程序;
通过对例7的学习,学会如何编写排序的程序;
通过对例8的学习,学会循环语句的基本结构.
1.条件语句的概念
处理条件结构的算法语句,叫做条件语句.
2.条件语句的格式
(1)IF-THEN格式 形式:
(2)IF-THEN-ELSE格式
形式:
3.功能
(1)IF-THEN格式:
首先对IF后的条件进行判断,如果(IF)条件符合,那么(THEN)执行语句体,否则执行ENDIF之后的语句.
(2)IF-THEN-ELSE格式:
首先对IF后的条件进行判断,如果(IF)条件符合,那么(THEN)执行语句体1;否则(ELSE)执行语句体2.
4.循环语句的格式、功能及程序框图的对应关系
名称
直到型
当型
格式
DO
循环体
LOOP_UNTIL 条件
WHILE 条件
循环体
WEND
功能
先执行一次DO和UNTIL之间的循环体,再判断UNTIL后的条件是否符合,如果不符合,继续执行循环体,然后再检查上述条件,如果仍不符合,再次执行循环体,直到条件符合时为止.这时不再执行循环体,跳出循环体执行UNTIL语句后面的语句
先判断条件的真假,如果条件符合,则执行WHILE和WEND之间的循环体,然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止,这时不再执行循环体,跳出循环体,执行WEND后面的语句
对应程序框图
1.判断下列各题.(对的打“√”,错的打“×”)
(1)算法中的循环结构只能由WHILE语句来实现;( )
(2)一般程序设计语言中有当型和直到型两种循环语句结构;( )
(3)算法中的循环结构由循环语句来实现.( )
解析:
循环结构包含两种基本类型:
WHILE语句和UNTIL语句,故
(1)×;
(2)(3)都对.
答案:
(1)×
(2)√ (3)√
2.求下列函数的函数值的算法中需要用到条件语句的函数为( )
A.f(x)=x2-1
B.f(x)=x3-1
C.f(x)=
D.f(x)=2x
解析:
选C.A、B、D只需要用顺序结构就能描述算法.C需要对自变量进行判断,要用条件语句,故选C.
3.当x=3时,下面算法的输出结果是________.
INPUT x
IF x<10 THEN
y=2*x
ELSE
y=x∧2
ENDIF
PRINT y
END
解析:
由x=3<10,则执行y=2×3=6.
答案:
6
4.求出下面语句的输出结果.
i=4
S=0
WHILE i<6
i=i+2
S=S+i∧2
WEND
PRINT S
END
解:
该程序的执行过程是
i=4
S=0
i=4<6成立
i=4+2=6
S=0+62=36
i=6<6不成立
输出S=36.
1.条件语句的嵌套可多于两层,可以表达算法步骤中的多重限制条件.
条件语句一般用在需要对条件进行判断的算法设计中,如判断一个数的正负,确定两个数的大小等问题,还有求分段函数的函数值等,往往要用条件语句,有时甚至要用到条件语句的嵌套.
2.解决具体的构造循环语句的算法问题,引入循环变量要尽可能地少,否则较多的变量会使得设计程序比较麻烦,并且较多的变量会使得计算机占用大量的系统资源,致使系统缓慢.另外,也尽可能使得循环嵌套的层数少,否则也浪费计算机的系统资源.
条件语句的简单应用
已知函数f(x)=
对任意的x,求函数值,请画出程序框图并写出程序语句.
(链接教材P25例5)
[解] 程序框图如图所示:
程序如下:
INPUT “x=”;x
IF x>=0 THEN
y=x∧2-1
ELSE
y=2*x∧2-5
ENDIF
PRINT “y=”;y
END
方法归纳
(1)对于分段函数的求值问题,由于计算之前,需要对自变量进行判断,因此需要用到条件结构,并且本例还是一个两个分支的条件结构,所以可运用条件语句的IF—THEN—ELSE—ENDIF格式来表示算法.
(2)条件语句是一个整体,IF THEN ELSE ENDIF都是语句的一部分,且“IF ENDIF”必须成对出现.
1.
(1)输入一个数x,如果它是正数,则输出它;否则不输出.画出解决该问题的程序框图,并写出对应的程序.
解:
程序框图如图所示:
程序如下:
INPUT x
IF x>0 THEN
PRINT x
ENDIF
END
(2)根据以下程序框图写出程序:
解:
程序如下:
INPUT “输入正整数”;n
IF n>0 AND n<=2 THEN
PRINT “获得一等奖学金”
ENDIF
IF n>2 AND n<=6 THEN
PRINT “获得二等奖学金”
ENDIF
IF n>6 AND n<=12 THEN
PRINT “获得三等奖学金”
ENDIF
END
WHILE语句的应用
设计计算1+2+3+4+…+99的值的一个算法,画出程序框图,并编写程序.
[解] 程序框图如图所示:
程序如下:
i=1
S=0
WHILE i<=99
S=S+i
i=i+1
WEND
PRINT S
END
[互动探究] 如果本例的“加”改为“乘”,框图及程序有哪些变化?
解:
框图中
和
分别改为
和
,程序中“S=0”改为“S=1”,“S=S+i”改为“S=S*i”.
方法归纳
累加、累乘问题一般都要应用循环语句来设计算法程序,应用循环语句时,关键是设计循环条件及循环体.本例的循环体为S=S+i,i=i+1.
2.编写一个程序计算1+1×2+1×2×3+…+1×2×3×…×100,并画出程序框图.
解:
程序框图如图所示:
程序如下:
i=1
s=0
m=1
WHILE i<=100
m=m*i
s=s+m
i=i+1
WEND
PRINT s
END
UNTIL语句的应用
编写一个程序计算
+
+
+…+
的值,并画出程序框图.
(链接教材P30例8)
[解] 程序框图如图:
程序如下:
s=0
i=1
DO
s=s+1/(i*(i+1))
i=i+2
LOOPUNTIL i>2015
PRINT s
END
方法归纳
(1)这是一个累加求和问题,共1008项相加,可设计一个计数变量,一个累加变量,用循环结构实现这一算法.
(2)UNTIL语句是先执行了一次循环体,再进行条件判断.
3.
(1)用UNTIL语句写出求1-
+
-
+…+
-
的程序.
解:
程序如下:
s=0
i=1
DO
s=s+((-1)∧(i-1))/i
i=i+1
LOOPUNTIL i>1000
PRINT s
END
(2)根据下列程序,画出相应的程序框图.
s=0
k=1
DO
s=s+1/(k*(k+1))
k=k+1
LOOPUNTIL k>99
PRINT s
END
解:
程序框图如图所示.
条件语句与循环语句的综合应用
输入100个数,将其中的正数输出,写出计算正数个数的程序.
[解] 程序如下:
i=0
m=0
DO
INPUT x
i=i+1
IF x>0 THEN
PRINT x
m=m+1
ENDIF
LOOPUNTIL i>=100
PRINT m
END
方法归纳
本例引入了两个变量:
i是计数变量,初值为0,作用是记录输入的实数个数,故循环的条件为i≥100,若改用当型循环,则改为i<100.m也是计数变量,初值为0,作用是记录输入的正数个数.
4.
(1)输入20个实数,统计并输出其中正数、零和负数的个数,写出算法语句.
解:
程序如下:
i=1
num1=0
num2=0
num3=0
WHILE i<=20
INPUT “请输入实数:
”;x
IF x>0 THEN
num1=num1+1
ELSE
IF x=0 THEN
num2=num2+1
ELSE
num3=num3+1
ENDIF
ENDIF
i=i+1
WEND
PRINT “正数的个数为:
”;num1
PRINT “零的个数为:
”;num2
PRINT “负数的个数为:
”;num3
END
(2)给出某班50名学生的数学测试成绩,60分及以上为及格,要求统计及格人数、及格人数的平均分、全班同学的平均分,画出程序框图,并写出程序.
解:
程序框图如图所示:
程序如下:
M=0,i=1,S=0,T=0
DO
INPUT x
IF x>=60 THEN
S=S+x
M=M+1
ENDIF
T=T+x
i=i+1
LOOPUNTIL i>50
P=S/M
T=T/50
PRINT M,P,T
END
规范解答
条件嵌套型问题的程序编写
(本题满分12分)元旦期间,某商城搞挂历促销活动:
原价每本20元,购买5到9本按9折收费,买10本及其以上按8折收费,请帮商场设计收费的程序.
[解] 设某人所购挂历本数为x,商场应收其y元,则y关于x的函数关系式为:
y=
4分
程序如下:
INPUT “x=”;x
IF x>0 AND x<5 THEN
8分
y=20*x
ELSE
IF x<=9 THEN
y=20*0.9*x
ELSE
y=20*0.8*x
ENDIF
12分
ENDIF
PRINT y
END
[规范与警示]
正确写出y关于x的分段函数的关系式是解本题的关键.
注意语言符号的规范.
(1)写程序一定要按要求的符号书写,要与我们平时的手写区分开.
(2)首先,对程序中条件的书写格式要熟练规范,如果要多个条件同时成立,应用“AND”连接,而不能是连续的不等式.其次,对条件语句要理解清楚,实际上第一个IF语句不成立时,已经隐含了“x>=5”这个条件.
(3)要熟悉条件语句的嵌套形式,任何时候,条件语句中的“IF”与“ENDIF”一定成对出现.
1.下列需用循环语句编写程序的是( )
A.输入x的值,输出y=x2-3x的值
B.y=
输入x的值,输出对应的函数值
C.求x的立方根
D.求1+2+3+…+2015的值
解析:
选D.D项中是求多项数值的和,需用到循环语句.
2.给出以下四个问题,①输入一个数x,输出它的算术平方根;②求函数f(x)=
的函数值;③求周长为6的正方形的面积;④求三个数a,b,c中的最小数.其中不需要用条件语句来描述其算法的有( )
A.1个B.2个
C.3个D.4个
解析:
选A.①需判断这个数是否为非负数;②是分段函数求值问题;④需判断这三个数的大小.①②④均需用到条件语句,只有③不需要.
3.如果下列程序执行后输出的结果是132,那么在程序UNTIL后面的“条件”应为( )
i=12
s=1
DO
s=s*i
i=i-1
LOOPUNTIL ________
PRINT s
END
A.i>11B.i>=11
C.i<=11D.i<11
解析:
选D.当i=12时,s=1×12=12;当i=11时,s=11×12=132.故应填i<11.
4.下列语句
i=0
IF i<100 THEN
i=i+3
ENDIF
END
执行完毕后i的值是________.
解析:
i的初始值为0,满足条件i<100成立,执行语句i=i+3,有i=0+3=3.
答案:
3
[A.基础达标]
1.下列对条件语句的描述正确的是( )
A.ELSE后面的语句不可以是条件语句
B.两个条件语句可以共用一个ENDIF语句
C.条件语句可以没有ELSE后的语句
D.条件语句中IF—THEN和ELSE后的语句必须都有
解析:
选C.条件语句有两种格式:
分别是IF—THEN格式和IF—THEN—ELSE格式.对于一个分支的条件语句可以没有ELSE后的语句.
2.下面程序输出的结果为( )
i=1
DO
i=i+2
S=2*i+3
LOOPUNITL i>=8
PRINT S
END
A.17B.19
C.21D.23
解析:
选C.当i=9时,S=2×9+3=21,判断条件9≥8成立,跳出循环,输出S.
3.(2015·临沂高一检测)下列程序的功能是:
判断任意输入的数x是否为正数,若是,输出它的平方值;若不是,输出它的相反数.
INPUT x
IF ________ THEN
y=-x
ELSE
y=x*x
ENDIF
PRINT y
END
则填入的条件应该是( )
A.x>0B.x<0
C.x>=0D.x<=0
解析:
选D.因为条件真则执行y=-x,条件假则执行y=x*x,由程序功能知条件应为x<=0.
4.如下程序的循环次数为( )
x=0
WHILE x<20
x=x+1
x=x∧2
WEND
PRINT x
END
A.1B.2
C.3D.4
解析:
选C.程序执行如下:
(1)x<20,x=0+1=1,x=12=1;
(2)x<20,x=1+1=2,x=22=4,
(3)x<20,x=4+1=5,x=52=25,此时跳出循环,并输出x.
∴一共进行3次循环,故选C.
5.(2013·高考陕西卷)根据下列算法语句,当输入x为60时,输出y的值为( )
输入x;
Ifx≤50Then
y=0.5*x
Else
y=25+0.6*(x-50)
EndIf
输出y.
A.25B.30
C.31D.61
解析:
选C.由题意,
得y=
当x=60时,y=25+0.6×(60-50)=31.
∴输出y的值为31.
6.若a=11,下面的程序段输出的结果是________.
INPUT a
IF a<10 THEN
y=2*(a-1)
ELSE
y=aMOD10
ENDIF
PRINT y
END
解析:
由于当a=11时,不满足条件a<10,所以执行y=aMOD10,得到的结果是y=1.注意“aMOD10”是a除以10的余数.
答案:
1
7.已知下列程序:
INPUT x
IF x<=-1 THEN
y=-x-1
ELSE
IF x>1 THEN
y=-x∧2+1
ELSE
y=x-1
ENDIF
ENDIF
PRINT “y=”;y
END
如果输出的是y=0.75,则输入的x是________.
解析:
由程序可知本题为根据输入的x,求函数y=
的函数值.我们可以分段令y=0.75,并验证,可求得x=-1.75.
答案:
-1.75
8.(2015·吉林高一检测)已知有下面的程序,如果程序执行后输出的结果是360,那么在程序UNTIL后面的“条件”应为________.
i=6
s=1
DO
s=s*i
i=i-1
LOOPUNTIL 条件
PRINT s
END
解析:
因为输出的结果是360,即s=1×6×5×4×3,需执行4次,s需乘到3,i<3后结束算法.所以,程序中UNTIL后面的“条件”应为i<3(或i<=2).
答案:
i<3(或i<=2)
9.(2015·罗源高一检测)编写一个程序计算12+32+52+…+992,并画出相应的程序框图.
解:
程序如下:
S=0
i=1
DO
S=S+i∧2
i=i+2
LOOPUNTIL i>99
PRINT S
END
程序框图如图所示:
10.给出一个算法的程序框图(如图所示).
(1)说明该程序的功能;
(2)请用WHILE型循环语句写出程序.
解:
(1)该程序的功能是求1+
+
+…+
的值.
(2)程序如下:
S=0
K=1
WHILE K<=99
S=S+1/K
K=K+1
WEND
PRINT S
END
[B.能力提升]
1.(2015·衡阳检测)下面程序运行后输出的结果为( )
a=0
j=1
WHILE j<=5
a=(a+j)MOD5
j=j+1
WEND
PRINT a
END
A.50B.5
C.25D.0
解析:
选D.本程序的功能是求a+j被5除所得的余数,从而循环体在执行的过程中a与j的对应值如下表:
a
1
3
1
0
0
j
2
3
4
5
6
2.读程序:
甲:
i=1
S=0
WHILE i<=1000
S=S+i
i=i+1
WEND
PRINT S
END
乙:
i=1000
S=0
DO
S=S+i
i=i-1
LOOPUNTIL i<1
PRINT S
END
对甲、乙程序和输出结果判断正确的是( )
A.程序不同,结果不同
B.程序不同,结果相同
C.程序相同,结果不同
D.程序相同,结果相同
解析:
选B.执行甲、乙程序后,可知都是计算1+2+3+…+1000的值.
3.(2015·滨州质检)读程序,完成下列题目:
程序如图:
INPUT x
IF x>=1 THEN
y=x+1
ELSE
y=2*x+1
ENDIF
PRINT y
END
(1)若执行程序时,没有执行语句y=x+1,则输入的x的范围是________;
(2)若执行结果为3,则执行的赋值语句是________,输入的x的值是________.
解析:
(1)不执行y=x+1语句,
说明不满足条件x≥1,故有x<1.
(2)当x<1时,y<2×1+1=3,
只有x+1=3,x=2.
答案:
(1)x<1
(2)y=x+1 2
4.下面是一个用于计算
+
+…+
的程序,则①处应填的语句是________,②处应填的语句是________.
s=0
i=1
WHILE i<=20
①__
②__
WEND
PRINT “s=”;s
END
解析:
累加求和需用赋值语句“s=s+1/(i*(i+1))”,控制执行循环条件需要用赋值语句“i=i+1”.
答案:
s=s+1/(i*(i+1)) i=i+1
5.儿童乘坐火车时,若身高不超过1.1m,则无需购票;若身高超过1.1m但不超过1.4m,可买半票;若超过1.4m,应买全票.试写出一个购票算法程序.
解:
程序如下:
INPUT “身高h(h>0)”;h
IF h<=1.1 THEN
PRINT “免费乘车”
ELSE
IF h<=1.4 THEN
PRINT “半票乘车”
ELSE
PRINT “全票乘车”
ENDIF
ENDIF
END
6.(选做题)一个小朋友在一次玩皮球时,偶然发现一个现象:
球从某高度落下后,每次都反弹回原高度的
,再落下,再反弹回上次高度的
,如此反复.假如球从100cm处落下,那么第10次下落的高度是多少?
在第10次落地时共经过多少路程?
试用程序语言表示其算法.
解:
程序如下:
s=0
h=100
s=s+h
i=2
WHILE i<=10
h=h/3
s=s+2*h
i=i+1
WEND
PRINT “第10次下落的高度为”;h
PRINT “第10次落地时共经过的路程为”;s
END