nbhkdz.com冰点文库

【优化方案】2016年高中数学 第一章 算法初步 1.2.2、2.3循环语句学案 新人教A版必修3

时间:2016-05-10


1.2.2 1.2.3

条件语句 循环语句

1.问题导航 (1)条件语句的格式是怎样的? (2)程序中的条件语句与程序框图中的条件结构有什么关系? (3)循环语句可细分为哪两类?格式分别是怎样的?它们有什么相同点和不同点? (4)程序中的循环语句与程序框图中的循环结构有什么关系? 2.例题导读 通过对例 5 的学习,学会条件语句的基本结构; 通过对例 6 的学习,学会如何将程序框图转化为程序; 通过对例 7 的学习,学会如何编写排序的程序; 通过对例 8 的学习,学会循环语句的基本结构.

1.条件语句的概念 处理条件结构的算法语句,叫做条件语句. 2.条件语句的格式 条件 THEN (1)IF-THEN 格式 形式: 语句体 END IF (2)IF-THEN-ELSE 格式 形式: 条件 THEN 语句体1 ELSE 语句体2 END IF 3.功能 (1)IF-THEN 格式:首先对 IF 后的条件进行判断,如果(IF)条件符合,那么(THEN)执行 语句体,否则执行 END IF 之后的语句. (2)IF-THEN-ELSE 格式: 首先对 IF 后的条件进行判断, 如果(IF)条件符合, 那么(THEN) 执行语句体 1;否则(ELSE)执行语句体 2. 4.循环语句的格式、功能及程序框图的对应关系 名称 直到型 当型 IF IF

-1-

DO 格式 循环体 LOOP_UNTIL 条件 先执行一次 DO 和 UNTIL 之间的循环体,再判断 UNTIL 后的条件是否符 合,如果不符合,继续执 行循环体,然后再检查上 述条件,如果仍不符合, 再次执行循环体,直到条 件符合时为止.这时不再 执行循环体,跳出循环体 执行 UNTIL 语句后面的语 句

WHILE 条件 循环体 WEND 先判断条件的真假,如果 条件符合,则执行 WHILE 和 WEND 之间的循环体, 然 后再检查上述条件,如果 条件仍符合,再次执行循 环体, 这个过程反复进行, 直到某一次条件不符合为 止, 这时不再执行循环体, 跳出循环体,执行 WEND 后面的语句

功能

对应程序 框图

1.判断下列各题.(对的打“√”,错的打“×”) (1)算法中的循环结构只能由 WHILE 语句来实现;( ) (2)一般程序设计语言中有当型和直到型两种循环语句结构;( ) (3)算法中的循环结构由循环语句来实现.( ) 解析:循环结构包含两种基本类型:WHILE 语句和 UNTIL 语句,故(1)×;(2)(3)都对. 答案:(1)× (2)√ (3)√ 2.求下列函数的函数值的算法中需要用到条件语句的函数为( ) 2 A.f(x)=x -1 3 B.f(x)=x -1
? ?x +1(x≤2.5) C.f(x)=? 2 ?x -1(x>2.5) ?
2

D.f(x)=2 解析:选 C.A、B、D 只需要用顺序结构就能描述算法.C 需要对自变量进行判断,要用条 件语句,故选 C. 3.当 x=3 时,下面算法的输出结果是________.

x

-2-

INPUT x IF x<10 THEN y=2*x ELSE ∧ y=x 2 END IF 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.解决具体的构造循环语句的算法问题,引入循环变量要尽可能地少,否则较多的变量 会使得设计程序比较麻烦,并且较多的变量会使得计算机占用大量的系统资源,致使系统缓 慢.另外,也尽可能使得循环嵌套的层数少,否则也浪费计算机的系统资源.

条件语句的简单应用

-3-

?x -1 (x≥0), ? 已知函数 f(x)=? 2 对任意的 x,求函数值,请画出程序框图并写 ? ?2x -5 (x<0),

2

出程序语句. (链接教材 P25 例 5) [解] 程序框图如图所示:

程序如下: INPUT “x=”;x IF x>=0 THEN ∧ y=x 2-1 ELSE ∧ y=2*x 2-5 END IF PRINT “y=”;y END 方法归纳 (1)对于分段函数的求值问题,由于计算之前,需要对自变量进行判断,因此需要用到条 件结构,并且本例还是一个两个分支的条件结构,所以可运用条件语句的 IF—THEN—ELSE— END IF 格式来表示算法. (2)条件语句是一个整体, IF THEN ELSE END IF 都是语句的一部分, 且“IF END IF” 必须成对出现.

1.(1)输入一个数 x,如果它是正数,则输出它;否则不输出.画出解决该问题的程序框 图,并写出对应的程序. 解:程序框图如图所示: 程序如下:

-4-

INPUT x IF x>0 THEN PRINT x END IF END

(2)根据以下程序框图写出程序:

解:程序如下: INPUT “输入正整数” ;n IF n>0 AND n<=2 THEN PRINT “获得一等奖学金” END IF IF n>2 AND n<=6 THEN PRINT “获得二等奖学金” END IF IF n>6 AND n<=12 THEN PRINT “获得三等奖学金” END IF END
-5-

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=S+i 分别改为 S=1 和 S=S×i ,程序中“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,并画出程序框图. 解:程序框图如图所示:

-6-

程序如下: i=1 s=0 m=1 WHILE i<=100 m=m*i s=s+m i=i+1 WEND PRINT s END

UNTIL 语句的应用 1 1 1 1 编写一个程序计算 + + +?+ 的值,并画出程序框图. 1×2 3×4 5×6 2 015×2 016 (链接教材 P30 例 8) [解] 程序框图如图:

-7-

程序如下: s=0 i=1 DO s=s+1/(i*(i+1) ) i=i+2 LOOP UNTIL i>2 015 PRINT s END 方法归纳 (1)这是一个累加求和问题,共 1 008 项相加,可设计一个计数变量,一个累加变量,用 循环结构实现这一算法. (2)UNTIL 语句是先执行了一次循环体,再进行条件判断.

1 1 1 1 1 3.(1)用 UNTIL 语句写出求 1- + - +?+ - 的程序. 2 3 4 999 1 000 解:程序如下: s=0 i=1 DO ∧ s = s + (( - 1) (i - 1))/i i=i+1 LOOP UNTIL i>1 000 PRINT s END (2)根据下列程序,画出相应的程序框图. s=0 k=1 DO s=s+1/(k*(k+1)) k=k+1 LOOP UNTIL k>99 PRINT s END 解:程序框图如图所示.

-8-

条件语句与循环语句的综合应用 输入 100 个数,将其中的正数输出,写出计算正数个数的程序. [解] 程序如下: i=0 m=0 DO INPUT x i=i+1 IF x>0 THEN PRINT x m=m+1 END IF LOOP UNTIL i>=100 PRINT m END 方法归纳 本例引入了两个变量:i 是计数变量,初值为 0,作用是记录输入的实数个数,故循环的 条件为 i≥100,若改用当型循环,则改为 i<100.m 也是计数变量,初值为 0,作用是记录输 入的正数个数.

4.(1)输入 20 个实数,统计并输出其中正数、零和负数的个数,写出算法语句. 解:程序如下: i=1 num1=0 num2=0
-9-

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 END IF END IF i=i+1 WEND PRINT “正数的个数为:”;num1 PRINT “零的个数为:”;num2 PRINT “负数的个数为:”;num3 END (2)给出某班 50 名学生的数学测试成绩,60 分及以上为及格,要求统计及格人数、及格 人数的平均分、全班同学的平均分,画出程序框图,并写出程序. 解:程序框图如图所示:

程序如下: M=0,i=1,S=0,T=0
- 10 -

DO INPUT x IF x>=60 THEN S=S+x M=M+1 END IF T=T+x i=i+1 LOOP UNTIL i>50 P=S/M T=T/50 PRINT M,P,T END

规范解答

条件嵌套型问题的程序编写

(本题满分 12 分)元旦期间,某商城搞挂历促销活动:原价每本 20 元,购买 5 到 9 本按 9 折收费,买 10 本及其以上按 8 折收费,请帮商场设计收费的程序. [解] 设某人所购挂历本数为 x,商场应收其 y 元,则 y 关于 x 的函数关系式为: 20x, 0<x<5, ? ? y=?20×0.9x,5≤x≤9,? 4 分 ? ?20×0.8x,x≥10, 程序如下: INPUT “x=”;x IF x>0 AND x<5 THEN y=20*x ELSE IF x<=9 ? THEN y=20*0.9*x ELSE y=20*0.8*x END IF END IF PRINT y END

8分

12 分

[规范与警示] ?正确写出 y 关于 x 的分段函数的关系式是解本题的关键. ?注意语言符号的规范. (1)写程序一定要按要求的符号书写,要与我们平时的手写区分开. (2)首先,对程序中条件的书写格式要熟练规范,如果要多个条件同时成立,应用“AND” 连接,而不能是连续的不等式.其次,对条件语句要理解清楚,实际上第一个 IF 语句不成立
- 11 -

时,已经隐含了“x>=5”这个条件. (3)要熟悉条件语句的嵌套形式,任何时候,条件语句中的“IF”与“END IF”一定成对 出现.

1.下列需用循环语句编写程序的是( 2 A.输入 x 的值,输出 y=x -3x 的值

)

? ?x-4,x>0, B.y=? 输入 x 的值,输出对应的函数值 ?-x+1,x≤0, ?

C.求 x 的立方根 D.求 1+2+3+?+2 015 的值 解析:选 D.D 项中是求多项数值的和,需用到循环语句. 2 .给出以下四个问题,①输入一个数 x ,输出它的算术平方根;②求函数 f(x) =
?x +1,x≥0 ? ? 的函数值;③求周长为 6 的正方形的面积;④求三个数 a,b,c 中的最小数.其 ?x-1,x<0 ?
2

中不需要用条件语句来描述其算法的有( ) A.1 个 B.2 个 C.3 个 D.4 个 解析:选 A.①需判断这个数是否为非负数;②是分段函数求值问题;④需判断这三个数 的大小.①②④均需用到条件语句,只有③不需要. 3. 如果下列程序执行后输出的结果是 132, 那么在程序 UNTIL 后面的“条件”应为( ) i=12 s=1 DO s=s*i i=i-1 LOOP UNTIL PRINT s END

________

A.i>11 B.i>=11 C.i<=11 D.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 END IF END 执行完毕后 i 的值是________. 解析:i 的初始值为 0,满足条件 i<100 成立,执行语句 i=i+3,有 i=0+3=3. 答案:3

- 12 -

[A.基础达标] 1.下列对条件语句的描述正确的是( ) A.ELSE 后面的语句不可以是条件语句 B.两个条件语句可以共用一个 END IF 语句 C.条件语句可以没有 ELSE 后的语句 D.条件语句中 IF—THEN 和 ELSE 后的语句必须都有 解析:选 C.条件语句有两种格式:分别是 IF—THEN 格式和 IF—THEN—ELSE 格式.对于 一个分支的条件语句可以没有 ELSE 后的语句. 2.下面程序输出的结果为( ) i=1 DO i=i+2 S=2*i+3 LOOP UNITL i>=8 PRINT S END A.17 B.19 C.21 D.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 END IF PRINT y END 则填入的条件应该是( ) A.x>0 B.x<0 C.x>=0 D.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
- 13 -

A.1 B.2 C.3 D.4 解析:选 C.程序执行如下: 2 (1)x<20,x=0+1=1,x=1 =1; 2 (2)x<20,x=1+1=2,x=2 =4, 2 (3)x<20,x=4+1=5,x=5 =25,此时跳出循环,并输出 x. ∴一共进行 3 次循环,故选 C. 5.(2013·高考陕西卷)根据下列算法语句,当输入 x 为 60 时,输出 y 的值为( 输入 x; If x≤50 Then y=0.5*x Else y = 25 + 0.6*(x - 50) End If 输出 y. A.25 C.31 解析:选 C.由题意,
? ?0.5x,x≤50, 得 y=? ?25+0.6(x-50),x>50. ?

)

B.30 D.61

当 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=a MOD 10 END IF PRINT y END 解析:由于当 a=11 时,不满足条件 a<10,所以执行 y=a MOD 10,得到的结果是 y= 1.注意“a MOD 10”是 a 除以 10 的余数. 答案:1 7.已知下列程序: INPUT x IF x<=-1 THEN y=-x-1 ELSE IF x>1 THEN ∧ y=-x 2+1
- 14 -

ELSE y=x-1 END IF END IF PRINT “y=”;y END 如果输出的是 y=0.75,则输入的 x 是________. -x-1,x≤-1 ? ? 2 解析:由程序可知本题为根据输入的 x,求函数 y=?-x +1,x>1 的函数值.我们 ? ? x-1,-1<x≤1 可以分段令 y=0.75,并验证,可求得 x=-1.75. 答案:-1.75 8.(2015·吉林高一检测)已知有下面的程序,如果程序执行后输出的结果是 360,那么 在程序 UNTIL 后面的“条件”应为________. i=6 s=1 DO s=s*i i=i-1 LOOP UNTIL 条件 PRINT s END 解析:因为输出的结果是 360,即 s=1×6×5×4×3,需执行 4 次,s 需乘到 3,i<3 后 结束算法.所以,程序中 UNTIL 后面的“条件”应为 i<3(或 i<=2). 答案:i<3(或 i<=2) 2 2 2 2 9.(2015·罗源高一检测)编写一个程序计算 1 +3 +5 +?+99 ,并画出相应的程序框 图. 解:程序如下: S=0 i=1 DO ∧ S=S+i 2 i=i+2 LOOP UNTIL i>99 PRINT S END 程序框图如图所示:

- 15 -

10.给出一个算法的程序框图(如图所示).

(1)说明该程序的功能; (2)请用 WHILE 型循环语句写出程序. 1 1 1 解:(1)该程序的功能是求 1+ + +?+ 的值. 2 3 99 (2)程序如下: S=0 K=1 WHILE K<=99 S=S+1/K K=K+1 WEND PRINT S END [B.能力提升]
- 16 -

1.(2015·衡阳检测)下面程序运行后输出的结果为( a=0 j=1 WHILE j<=5 a=(a+j) MOD 5 j=j+1 WEND PRINT a END

)

A.50 B.5 C.25 D.0 解析:选 D.本程序的功能是求 a+j 被 5 除所得的余数,从而循环体在执行的过程中 a 与 j 的对应值如下表:

a j
2.读程序: 甲: i=1 S=0 WHILE i<=1 000 S=S+i i=i+1 WEND PRINT S END 乙: i=1 000 S=0 DO S=S+i i=i-1 LOOP UNTIL i<1 PRINT S END

1 2

3 3

1 4

0 5

0 6

对甲、乙程序和输出结果判断正确的是( ) A.程序不同,结果不同 B.程序不同,结果相同 C.程序相同,结果不同 D.程序相同,结果相同 解析:选 B.执行甲、乙程序后,可知都是计算 1+2+3+?+1 000 的值. 3.(2015·滨州质检)读程序,完成下列题目: 程序如图: INPUT x IF x>=1 THEN
- 17 -

y=x+1 ELSE y=2*x+1 END IF 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 1 1 1 4. 下面是一个用于计算 + +?+ 的程序, 则①处应填的语句是________, 1×2 2×3 20×21 ②处应填的语句是________. 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.1 m,则无需购票;若身高超过 1.1 m 但不超过 1.4 m,可买半票;若超过 1.4 m,应买全票.试写出一个购票算法程序. 解:程序如下: INPUT “身高 h(h>0)”;h IF h<=1.1 THEN PRINT “免费乘车” ELSE IF h<=1.4 THEN PRINT “半票乘车” ELSE PRINT “全票乘车” END IF END IF END 6.(选做题)一个小朋友在一次玩皮球时,偶然发现一个现象:球从某高度落下后,每次
- 18 -

1 1 都反弹回原高度的 ,再落下,再反弹回上次高度的 ,如此反复.假如球从 100 cm 处落下, 3 3 那么第 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

- 19 -


赞助商链接

更多相关标签