2019-2020年高中数学 第1章 算法初步 1.3 基本算法语句 1.3.3 条件语句教学案 苏教版必修3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019-2020年高中数学第1章算法初步 1.3 基本算法语句 1.3.3 条件
语句教学案苏教版必修3
[新知初探]
1.条件语句
流程图中的条件结构可以运用条件语句来实现.
2.条件语句的格式
If A Then
B
Else
C
End If
其中A表示判断的条件;B表示满足条件时执行的操作内容;C表示不满足条件时执行的操作内容;End If表示条件语句结束.
[点睛]
(1)条件语句必须以If语句开始,以End If语句结束,一个If语句必须和一个End If 语句对应.
(2)条件语句中不一定有“Else”分支,当判断语句的两个出口语句只有一个需要执行时,可以没有“Else”分支,只使用“If—Then”语句.此时对应的伪代码及流程图如下:
[小试身手]
1.下列对条件语句的说法不正确的是________.
①条件语句是程序语言的最基本语句;
②算法中的选择结构与条件语句相对应;
③当计算机执行条件语句时,首先对If 后的条件进行判断,如果条件符合,就执行Then 后的语句,否则执行Else 后的语句或执行End If 后的语句;
④条件语句在某些情况下也可以使用If —Then 语句. 答案:①
2.下面是一个算法的伪代码,如果输出的y 的值是20,则输入的x 的值是________.
解析:由10x =20,得x =2.
6. 答案:2或6
伪代码表示的条件语句的识读 [典例] 下面是某一问题算法的伪代码,
Read x
If x ≤3 Then y ←10Else
y ←10+x -End If Print y
分析伪代码,回答下列问题: (1)说明伪代码的功能.
(2)当输入的x 值为13时,求输出的结果. (3)根据伪代码给出对应的流程图. [解] (1)根据条件语句的含义可知是求函数
y =⎩⎪⎨
⎪⎧
10, x ≤3,
10+
x -, x >3
的函数值.
(2)当x =13时,y =10+1.3(13-3)=10+13=23. (3)对应流程图为
给出下面的伪代码
(1)把它翻译成算法.
(2)画出相应的流程图.
(3)若输入的x=5,求输出的y值,若输出的y值为21,求输入的x的值.解:(1)伪代码所表示的算法如下:
S1 输入x;
S2 如果x<1,则y←x,转执行S4,否则执行S3;
S3 y←2x-1;
S4 输出y,算法结束.
(2)相应流程图:
(3)∵x=5>1,∴y=2×5-1=9,
由2x -1=21得x =11,故输入的x 值应为11.
条件语句的实际应用
[典例] 某市公用电话(市话)的收费标准为:3分钟之内(包括3分钟)收取0.30元;超过3分钟,每分钟按0.10元收费.设计一个算法根据通话时间计算话费.并用伪代码表示这个算法,并画出相应的流程图.
[解] 设通话时间为x (分钟),话费为y (元),
则y =⎩
⎪⎨
⎪⎧
0.30, 0<x ≤3,0.3+x -, x >3,
算法:S1 输入x
S2 如果x ≤3,则y ←0.3,转执行S4,否则执行S3 S3 y ←0.3+(x -3)×0.1 S4 输出y ,算法结束 伪代码:
Read x
If
x ≤3 Then y ←0.3Else
y ←0.3+x -End If Print y
流程图:
某公司出售软磁盘,购买500片和500片以上时每片按4.5元计价,否则按5元/片计
价.请设计一算法计算收费金额,并用伪代码表示这个算法.
解:设购买x (片),所付金额为y (元)
则y =⎩⎪⎨
⎪
⎧
5x ,x <5004.5x ,x ≥500
算法: S1 输入x
S2 如果x <500,则y ←5x ,转执行S4,否则执行S3 S3 y ←4.5x
S4 输出y ,算法结束 伪代码:
Read x
If x <500 Then y ←5x
Else y ←4.5x End If Print y
条件语句的嵌套
[典例] 根据下列流程图,写出伪代码.
[解] 由流程图知它的功能是计算的函数值.f (x )=⎩⎪⎨⎪⎧
x +2,x ≤-1,-x 2
+2,-1<x <1,
-x +2,x ≥1.
伪代码如下:
Read x
If x≤-1 Then
y←x+2
Else
If x≥1Then
y←-x+2
Else
y←-x2+2
End If
End If
Print y
[活学活用]
下面是某一问题的一个算法对应的伪代码,指出这一算法的功能并画出相应的流程图.Read a,b,c
If a>b And a>c Then
Print a
Else
If b>c Then
Print b
Else
Print c
End If
End If
解:根据伪代码可写出这一问题的算法如下:
S1 输入a,b,c;
S2 若a>b且a>c,则输出a,否则执行S3;
S3 若b>c,则输出b,否则输出c;
S4 结束.
根据算法可知这一算法的功能是求三个数a,b,c中最大的一个.流程图如图所示:
[层级一学业水平达标]
1.下面程序的运行结果是________.
A←100
B←90
If A<B Then
T←A A←B B←T
Else
A←A-B
End If
Print A
解析:由题意可知:A=100-90=10.
答案: 10
2.求函数y=|x-
4|+1的函数值,则横线处应为________.
答案:y←5-x
3.下面伪代码:
以上程序运行的目的是答案:求函数y =⎩⎪⎨
⎪⎧
1,x ≥0,
-1,x <0
的函数值
4.给出一个算法:
Read x
If x ≤0 Then
f x
x
Else
f x
x
End If Print f x
根据以上算法,求得f (-3)+f (2)的值为________.
解析:由题意知f (-3)=-12,f (2)=4,∴f (-3)+f (2)=-12+4=-8. 答案: -8
5.将下面的伪代码翻译成算法,并画出相应的流程图.
解:算法: S1 输入x
S2 若x <1,则y ←x ,否则执行S3
S3 若1≤x <10,则y ←2x -1,否则y ←3x -11 S4 输出y ,算法结束. 流程图如图所示:
[层级二应试能力达标]
1.判断输入的数是否为正数,若是,输出它的平方,若不是输出它的相反数,则①为________.
答案:x≤0
2.下面给出的是用伪代码描述的某一问题的算法,
若输入x0=4,y0=2,.
解析:∵x20+y20=20<r2,∴输出“P在圆C内”.
答案:“P在圆C内”
3.下面的伪代码输出的结果为12,则输入的值为________.
解析:此算法的功能是求函数b =⎩⎪⎨⎪
⎧4a ,a <3,3a ,3≤a ≤8,
2a ,a >8的函数值.
令b =12,可求出a =4. 答案:4
4.给出如图所示的伪代码,若输出的结果是2,则输入的x 的值是________.
解析:由伪代码可知输出值为y =⎩
⎪⎨
⎪⎧x , x <0,
4-2x , x ≥0,
当x <0时,由x 2
=2解得x =2(舍)或x =-2, 当x >0时,由4-2x =2,解得x =1. 所以输入的x 的值是-2或1. 答案:-2或1
5.下图是某一问题算法的伪代码.
Read x
If x <2 Then y ←2x -3Else y ←log 3x End If Print y
此问题是______________________.当输入的x 值为3时,输出的结果是________.
解析: 本问题是求函数y =⎩
⎪⎨
⎪⎧
2x -3, x <2,
log 3x , x ≥2的函数值,
当x =3时, y =log 33=1.
答案: 求函数y =⎩⎪⎨
⎪
⎧
2x -3,x <2,log 3x ,x ≥2,
的函数值 1
6.已知算法:
Read a ,b ,c
m ←a
If b >m Then m ←b End If If c >m Then m ←c End If Print m
若输入10,12,8,则输出的结果为________. 解析:此算法的功能是输出三个数中的最大值. 答案:12
7.给定下列伪代码
若a =4,则b =________解析:此伪代码是求b =⎩
⎪⎨⎪⎧
0.5a ,a <0,
a 2
+3a +1,a ≥0,的函数值,所以当a =4时,b =42
+3×4
+1=29;当a =-4时,b =0.5×(-4)=-2.
答案:29 -2
8.下列程序输出x 的含义是__________________.
(x 除以10的余数)
答案:将一个三位数的个位数与百位数交换,组成一个新三位数
9.某商场为迎接店庆举办促销活动,活动规定:购物额在100元及以内不予优惠;在100~300元之间(含300元)优惠付货款的5%;超过300元之后,超过部分优惠8%,原优惠条件仍然有效.用伪代码写出根据输入购物额能输出应付货款的算法,并画出流程图.
解:设购物额为x 元时,实付金额为y 元,由题意得
y =⎩⎪⎨⎪
⎧
x , x ≤100,0.95x , 100<x ≤300,285+x -
, x >300
伪代码如下:
流程图如图所示.
10.画出判断直线ax+by+c=0与圆(x-x0)2+(y-y0)2=r2的位置关系,输出相关信息的流程图,并用伪代码表述.
解:流程图如图所示.
伪代码描述算法如下:
2019-2020年高中数学第1章算法初步 1.3 基本算法语句 1.3.4 循环
语句教学案苏教版必修3
[新知初探]
1.循环语句
处理循环结构的算法要用循环语句.
2.循环语句的三种格式
[点睛]
“For”语句的一般形式中Step“步长”为1时“Step 1”可省略,否则不能省略.
[小试身手]
1.关于For循环说法正确的是________.
①步长可以是负数;
②初值一定小于终值;
③步长不可以省略;
④初值不能为负数.
答案:①
2.下列问题的伪代码可以通过循环语句来实现的是________.
①计算:1+⎝ ⎛⎭⎪⎫121+⎝ ⎛⎭⎪⎫122+⎝ ⎛⎭⎪⎫123+…+⎝ ⎛⎭
⎪⎫12100
;
②计算:1×3×5×7×9× (99)
③比较两个实数a ,b 的大小,并输出较小的数; ④计算:1+12+13+…+1
100.
答案:①②④ 3.已知如下伪代码:
S ←0
I ←5
While I ≤20
S ←S +I I ←I +5End While Print S
上述伪代码运行的结果是________. 答案:50
[典例] (1)如果以下伪代码运行后输出的结果是132,那么在伪代码中Until 后面的“条件”应为________.
i ←12s ←1
Do
s ←s ×i
i ←i -1Until 条件End Do Print s
(2)下面伪代码表示的算法所解决的问题是__________________________________.
i ←1S ←0
While i ≤100
S ←S +i 2
i ←i +1End While Print S
[解析] (1)该程序中使用了直到型循环语句,当条件不满足时执行循环体,满足时退
阅读伪代码表示的循环语句
出循环,由于输出的是132,故执行了两次循环体,因此条件应为i<11.
(2)令i=1,S=0,第i步的结果可以表示为第i-1步的结果加上i2,则循环体为“S←S +i2,i←i+1”,不断地进行循环,直到不符合条件时结束循环.所以本伪代码所解决的问题是计算12+22+32+…+1002的值.
[答案] (1)i<11 (2)计算12+22+32+…+1002的值.
T←1
For I From 2 To 5
T←T×I
End For
Print T
以上伪代码运行结果T=________.
解析:由条件I From 2 To 5知共循环4次.
第一次循环T←1×2=2,
第二次循环T←2×3=6,
第三次循环T←6×4=24,
第四次循环T←24×5=120.
故运行结果为120.
答案:120
应用循环语句设计程
[典例] 写出计算12+32+52+…+9992的伪代码,并画出相应的流程图.
[解] 由题意知各项指数相同,底数相差2,可以借助于循环语句设计算法,因为循环次数是确定的,因而算法语句选用“For”语句,在这个问题里初值I←1,步长是2.
伪代码如下:
S←0
For I From 1 To 999 Step 2
S←S+I2
End For
Print S
相应流程图如图所示:
设计一个求1×3×5×…×2 017的值的算法,写出伪代码,并画出相应的流程图.解:算法:
S1 S←1;
S2 i←1;
S3 S←S×i;
S4 i←i+2;
S5 如果i不大于2 017则转S3;
S6 输出S值;
S7 结束.
伪代码:
循环语句的实际应用
[典例] 某商场第一年销售计算机5 000台,如果平均每年销售量比上一年增加10%,那么从第一年起大约到第几年可使销售量达到40 000台,用循环语句写出解决此问题的一个算法,并画出相应的流程图.
[解] 由题意得第二年销售量为5 000(1+0.1),第3年销售量为5 000(1+0.1)2
,…,第n 年销售量为5 000(1+0.1)
n -1
.
法一:用While 语句如下:
m ←5 000i
←1
While m <40 000m ←m +i ←i +1
End While Print i 相应流程图如下:
法二:用Do 语句如下:
m ←5 000i ←1
Do m ←m +
i ←i +1
Until m ≥40 000End Do Print i
相应流程图如下:
某玩具厂xx年的产值为200万元,如果年生产增长率为5%,计算最早哪一年生产总值超过400万元,画出流程图,并写出伪代码.
解:流程图如图所示:
伪代码如下:
[层级一 学业水平达标]
1.以下该算法共执行循环体的次数为________. For i =-3 To 147 Step 3 End For
解析:循环次数=(终值-初始值)/增量+1=
[147--
3+1=51.
答案:51
2.有以下伪代码,其中描述正确的是________.
k ←8
While k =0
k ←k +1End While
①循环体语句执行10次; ②循环体是无限循环; ③循环体语句一次也不执行; ④循环体语句只执行一次.
解析:不符合条件,循环语句一次也不执行. 答案:③
3.如图是一算法的伪代码,执行此算法,最后输出的n 的值为______.
n ←6s ←0
While s <15s ←s +n n ←n -1End While Print n
解析: s =6,n =5;s =11,n =4;s =15,n =3,退出循环,此时n =3.
答案: 3
4.求1+2+22+…+2100
的算法的伪代码为:
其中横线上应填________.
解析:1+2+22+…+2100为有规律的累加运算,又S 的初值为1,指数i 的初值为1,终值为100,步长为1,
所以应填S ←S +2i .
答案:S ←S +2i
5.如图给出的是计算S =1-12+1
3-14+…+199-1100
的流程图,请填充框图内所缺的式子,并写出伪代码.
解:根据流程图的功能得①i <100 ②S =N -T
相应的伪代码如下:
i ←1
N ←0
T ←0
While i <100
N ←N +1/i
T ←T +i +
S ←N -T
i ←i +2
End While
Print S
[层级二 应试能力达标]
1.下述伪代码表示的算法运行结果为________.
N←1
S←0
Do
S←S+N
N←N+1
Loop While S≤10
Print N-1.
解析:S=1+2+3+4+5时循环停止,此时输出5.
答案:5
2.给出如下的伪代码,是计算____________的值.
S←1
I←3
While I<99
S←S+I3
I←I+2
End While
Print S
答案:1+33+53+…+973
3.如果下列伪代码运行后输出的结果是720,则在横线处应填入的正整数为________.
解析:依题意需计算S←S×8后应结束循环,因此在横线处应填8.
答案:8
4.观察下列程序,该循环变量I共循环________次.
S←0
I←1
While S<60
S←S+I
I←I+1
End While
解析:由题意知该程序的作用是判断S=1+2+3+…+n≥60的最小整数n.
∵1+2+3+…+10=55<60
1+2+3+…+11=66>60.
故可知该程序循环了11次.
答案:11
5.已知下列算法语句:
I←12
S←1
Do
S←S×I
I←I-2
Until I<8
End Do
Print S
则语句执行后输出的结果为________.
解析:第一次循环得S=12,I=10.
第二次循环得S=12×10,I=8.
第三次循环得S=12×10×8=960,I=6<8退出循环.
答案:960
6.根据以下伪代码,可知输出的结果b为________.
a←1
b←1
While b<5
c←a+b
a←b
b←c
End While
Print b
解析:第一步:c=2,a=1,b=2;第二步:c=3,a=2,b=3;第三步:c=5,a =3,b=5.结束循环,输出b=5.
答案:5
7.下面是求1×3×5×…×99的值的四个程序的伪代码,其中正确的序号为________.
答案:①④
8.给定下面伪代码,输出结果为________.
a←2
i←1
While i≤6
a←a+1
Print i,a
i←i+1
End While
解析:算法中用到了While循环语句,从a←2,i←1开始,第一次循环求2+1,并输出1,3;第二次求3+1,并输出2,4;第三次求4+1,并输出3,5,…;第六次求7+1,并输出6,8.
即输出结果为1,3 2,4 3,5 4,6 5,7 6,8.
答案:1,3 2,4 3,5 4,6 5,7 6,8
9.阅读下面伪代码,完成问题.
i←1
p←0
While i≤99
p←p+i
i←i+2
End While
Print p
(1)伪代码中的循环语句是什么型循环语句;
(2)将伪代码用另外类型的循环语句来实现.
解:(1)从伪代码可看出这是一个用当型循环语句给出求1+3+5+…+99的值的一个算法.
(2)改成直到型循环语句如下:
i←1
p←0
Do
p←p+i
i←i+2
Until i>99
End Do
Print p
用For语句表示如下:
S←1
For I From 3 To 99 Step 2
S←S+I
End For
Print S
10.13世纪初,欧洲最好的数学家斐波那契出了这样一道有趣的数学题:如果一对兔子每月能生一对小兔,而每对小兔子在它出生后的第3个月里,又能开始生一对小兔子,假定在不发生死亡的情况下,由一对初生的兔子开始,一年后能繁殖成多少对兔子?
解:假设最初的一对兔子出生在头一年的12月份.显然,1月份只有一对兔子,到2月份时,总共2对兔子;到3月份总共3对兔子;到4月份总共5对兔子;到5月份总共8对兔子,…,观察这组数据,1,1,2,3,5,8,…,里面隐含着一个规律,从第3个数开始,后面的每个数都是它前面两个数的和.根据这个规律,只要作一些简单的加法,就能推算出以后各个月兔子的数目了.我们可以写出算法如下:
S1 f1←1,f2←1,i←3;
S2 输入N(几个月后?);
S3 f3←f1+f2;
S4 f1←f2;
S5 f2←f3;
S6 i←i+1;
S7 如果i≤N转第(3)步继续执行;
S8 输出f3的值;
S9 结束.
伪代码为:。