课件43张PPT。第二章算法初步§3 几种基本语句3.1 条件语句自主预习学案中央电视台《开心辞典》正在进行,主持人王小丫:“第一个题目:酱油分老抽和生抽,是老抽咸一点还是生抽咸一点?有下列两个选项,二选一:A老抽,B.生抽.请做答.”这时参与答题的人面临着两种选择,即回答A(错)或B(对).正是由于这两种不同的选择而导致下一步执行的方式不同,即:答A则游戏终止,答B则继续下面的答题.
你能用算法中的语句来描述上面的小故事吗?1.条件语句
条件语句是表达____________最常用的语句.
2.If语句的一般格式
对于框图(1)的算法可以用下列语句来表示.
If ________ Then
语句1
Else
语句2
End If选择结构 条件 3.复合If语句的一般格式
对于形如图(2)所示框图描述的算法,都可以用复合语句来表示.
If 条件1 Then
__________
Else
If 条件2 Then
语句2
Else
__________
End If
End If语句1 语句3 1.执行一个条件语句,可以有几种结果( )
A.1种 B.2种
C.3种 D.多于3种
[解析] 不论执行哪种程序,执行一次只有一个结果. A
2.下列关于条件语句的叙述正确的是( )
A.条件语句中必须有Else和End If
B.条件语句中可以没有End If
C.条件语句中可以没有Else,但必须有End If
D.条件语句中可以没有End If,但必须有Else
[解析] 由条件语句的形式可知,只有C正确.C3.若输入8时,则下列程序执行后输出的结果是__________.
输入t
If t≤4 Then
C=0.2
Else
C=0.2+0.1*(t-3)
End If
输出C
[解析] 当输入t=8时,因为t=8>4.所以执行语句2,故输出C=0.2+0.1×(8-3)=0.7.0.7 互动探究学案命题方向1 ?条件语句的理解a negative number 分别判断下列两组语句执行的结果:
(1)输入a;
If a>0 Then
m=a*a+3*a+2
输出m.
Else
输出“a negative number”.
End If
若输入-3,则输出的结果为_________________;若输入2,则输出的结果为________;12 (2)输入x;
If x≤10 Then
p=x*0.35
Else
p=10*0.35+(x-10)*0.7
End If
输出p.
若输入6,则输出的结果为__________;若输入18,则输出的结果为__________.2.1 9.1 [思路分析] (1)中,若输入-3,则条件判断为假,所以执行Else后面的语句:输出“a negative number”.若输入2,则条件判断为真,所以执行Then后面的语句:m=a*a+3*a+2;输出m(先将a*a+3*a+2的值赋予变量m,然后输出变量m的值).同理可分析得出(2)的答案.
[解析] (1)若输入-3,则输出的结果为:a negative number;若输入2,则输出的结果为12.
(2)若输入6,则输出的结果为2.1;若输入18,则输出的结果为9.1.『规律总结』 解决此类题目,首先要明确程序中所给的判断条件,其次要理解在不同的条件下需要执行的语句.解题的关键是条件的准确判断.分别输入8,4和2,4,则两次执行该语句的输出结果分别为( )
A.8,2 B.8,4
C.4,2 D.4,4C命题方向2 ?应用If语句描述算法[思路分析] 本题是已知分段函数的解析式求函数值的问题,当输入一个x的值,由于x所在的范围不同,因而用来计算函数值的解析式也有所不同,因此要计算函数值必须先判断x的范围,因而要设计求函数值的算法必须用条件结构.相应程序的书写也应用条件语句书写.[解析] 算法流程图为:
算法语句为:
输入x;
If x≥0 Then
y=x2-1
Else
y=2*x2-5
End If
输出y.『规律总结』 当计算机执行If语句时,首先对If后边的条件进行判断,如果满足条件,那么执行语句1,再执行End If之后的语句,即结束条件语句;如果不满足条件,那么执行语句2,再执行End If之后的语句,即结束条件语句.〔跟踪练习2〕 编写程序,输入任意两个实数,输出其差的绝对值.
[解析] 设a和b是任意两个实数,则当a≥b时,其差的绝对值等于a-b,否则等于b-a,可用条件语句实现这一算法.
流程图如下图所示.
用条件语句描述这个算法:
输入a,b
If a≥b Then
输出a-b
Else
输出b-a
End If命题方向3 ?复合If语句及应用 给出一个算法:
1.输入x.
2.若x<0,则y=x+1.
3.若x=0,则y=0.
4.若x>0,则y=x.
5.输出y.
(1)指出该算法的功能;
(2)将该算法用流程图表示出来;
(3)用基本语句写出该算法.[思路分析] 本题的算法是一个分段函数问题,故要用条件语句来处理.x的取值共分三部分,需要用复合If语句.(2)流程图如图所示.(3)用基本语句描述为:
输入x
If x<0 Then
y=x+1
Else
If x=0 Then
y=0
Else
y=x
End If
End If
输出y『规律总结』 在一些较为复杂的算法中,有时需要在判断之后接着进行判断,亦即在执行语句1或语句2的过程中又需要进行条件的判断,这就形成了复合的选择结构,我们可以利用复合条件语句来描述这种类型的算法.[解析] 用复合If语句描述算法:
输入x
If x<0 Then
y=-x+2
Else If x=0 Then
y=4
Else
y=x+2
End If
End If
输出y
流程图如图所示. 算法如下:
1.输入x;
2.判断x>0是否成立,若成立,则z=1;若不成立,则z=-1;
3.z=z+1;
4.输出z;
试将上面算法用程序表示.[错解] 用语句描述为:
输入x
If x≤0 Then
z=-1
Else
z=1
z=z+1
输出z.
[辨析] 丢掉“End If”,这样条件语句的结构就不完整了.算法流程图如下图所示:
用语句描述为:
输入x;
If x≤0 Then
z=-1
Else z=1
End If
z=z+1
输出z.
[点评] 由If语句的格式知,条件语句的结束语为“End If”,如果漏掉,该语句是不完整的,程序无法运行.条件语句在实际问题中的应用 乘坐火车时,可以托运货物.从甲地到乙地,规定每张火车客票托运费计算方法是:行李质量不超过50 kg时按0.25元/kg;超过50 kg而不超过100 kg时,其超过部分按0.35元/kg.超过100 kg时,其超过部分按0.45元/kg.设计算法语句,输入行李质量,计算出托运的费用.
[思路分析] 本题要对条件语句有较好的理解,要先列出托运的费用关于行李质量的函数关系式,然后写出算法,画出流程图,转化为条件语句.算法步骤:
1.输入行李质量x;
2.当x≤50时,计算y=0.25x,否则执行下一步;
3.当x≤100时,计算y=0.35x-5,否则计算y=0.45x-15;
4.输出y.算法流程图,如下图.算法语句如下:
输入x;
If x≤50 Then
y=0.25*x
Else
If x≤100 Then
y=0.35*x-5
Else
y=0.45*x-15
End If
End If
输出y『规律总结』 对复合If语句的理解
①复合If语句一般用于要解决的问题需要分类(分为3类或3类以上)讨论的情况.
②在复合If语句中,要注意“If”和“End If”的配对,一般可利用文字的缩进表示复合的层次.
③对于复合If语句,一定要分清内层条件语句和外层条件语句,内层的条件结构是外层条件结构的一个分支.其中不需要用条件语句来描述相应算法的有( )
A.1个 B.2个
C.3个 D.4个
[解析] 根据条件语句的适用范围,当需要根据某个给定条件是否满足而决定是否执行某一步时,应该使用条件语句.由此可判断出问题③不需要用条件语句,因为正方形周长一定时,其面积也一定.A[解析] 只有③④使用条件语句.D 3.求实数x的绝对值的程序如下,其中空白处应填入( )
A.x>0 B.x<=0
C.x<0 D.x>=0
[解析] 求的是x的绝对值,输出的为y=-x,故输入条件应用x<=0,选B.B 4.阅读下列程序:
输入“x=”,x
IF x≥2 Then
y=x
Else
y=x+1
End If
输出y
输入x的值为π,则程序运行的结果为______.
[解析] 因为输入的x=π≥2,故执行语句1,所以输出π.π 课件44张PPT。第二章算法初步§3 几种基本语句3.2 循环语句自主预习学案
1.For语句
循环结构是算法中的基本结构,For语句是表达循环结构最常见的语句之一,它适用于预先知道____________的循环结构.For语句的一般形式是:
For 循环变量=初始值 To终值
循环体
Next循环次数 2.Do Loop语句
在循环结构中,若预先不知道循环次数,一般用_____________________来描述,Do Loop语句的一般形式为:
Do
循环体
Loop While 条件为真Do Loop语句
[特别提示]
For循环语句和Do Loop循环语句的异同:
For循环语句和Do Loop循环语句都能表达循环结构的算法,但是它们在表达方式和功能上又有一定的区别,它们的区别主要表现为以下几点:
1.书写格式不同.
2.作用不同:For循环语句主要适用于预先知道循环次数的循环结构;如果预先不知道循环次数,则使用Do Loop循环语句.
3.For循环语句循环条件在前,首先判断循环条件再执行,如果条件不满足,一次也不执行;而Do Loop循环语句循环条件在后.
4.用For循环语句编写时要注意设定好循环变量的初始值、终值、循环变量的改变量,应避免出现多一次循环或少一次循环的情况;用Do Loop循环语句编写程序时,一定要注意表达式的写法,当表达式为真时,继续执行循环体,当表达式为假时,结束循环,防止出现表达式正好相反的错误.1.下列问题可以设计成循环语句的有( )
①求1+3+32+…+39的和;
②比较a,b两个数的大小;
③对于分段函数,要求输入自变量,输出函数值;
④求平方值小于100的最大整数.
A.0个 B.1个
C.2个 D.3个
[解析] ②③是由条件语句来实现的;①④都可由循环语句来实现.C2.对于下面的语句:
x=-1
Do
x=x*x
Loop While x≤10
输出x.
下列说法正确的是( )
A.输出结果是1 B.能执行一次
C.能执行10次 D.是“死循环”,有语法错误D[解析] 从循环语句的格式看,这个循环语句是Do Loop语句,那么当满足条件x>10时,终止循环体,但是第一次执行循环体后x=1,由于x=1<10成立,则再次执行循环体,执行完成后x=1,则这样无限循环下去,是一个“死循环”,有语法错误,循环终止的条件永远不能满足.故选D.
3.(1)有下列算法语句:
For x=1 To 5
Next
输出x
该程序的输出结果是______.5 (2)有下列算法语句:
For x=1 To 5
输出x
Next
该程序的输出结果是______________________.
[解析] (1)中循环体为空,最后输出的值为循环变量x的终值;(2)中循环体为“输出x”,故输出循环变量x的每一个值.1 2 3 4 5 互动探究学案命题方向1 ?循环语句的理解 写出下列语句执行后输出的结果.
(1)a=2
Do
a=a+2
Loop While a≤10
输出a.(2)M=0
For i=1 To 3
M=M+i
Next
输出M.
[思路分析] (1)这个算法语句中a是循环变量,循环体为a=a+2,实际上这个算法处理的是求a=2+2+2+2+…的问题,循环终止条件为a>10.
(2)由For语句的形式,本题中i是循环变量,初始值为1,终值为3,循环体为M=M+i.[解析] (1)运行结果为2+2+2+2+2+2=12.
(2)运行过程是:M=0;i=1时,M=M+i=0+1=1;i=2时,M=M+i=1+2=3;i=3时,M=M+i=3+3=6.跳出循环,输出6.『规律总结』 判断含有循环语句的算法的执行结果关键是明确循环终止条件.在Do Loop语句中,当条件不满足时终止循环;而在For语句中,当循环变量取终值时,再执行一次循环体才终止循环.〔跟踪练习1〕 写出下列语句执行后输出的结果.
(1)s=1
For i=9 To 11
s=s*i
Next
输出s.
(2)x=100
Do
x=x-20
Loop While x≥0
输出x.
[解析] (1)该程序的运行过程是:s=1;i=9时,s=s*i=1*9=9;i=10时,s=s*i=9*10=90;i=11时,s=s*i=90*11=990.跳出循环,输出990.
(2)这个算法语句中x是循环变量,循环体为x=x-20,实际上这个算法处理的是求x=100-20-20-20-20…的问题,循环终止条件为x<0,最后输出的结果为-20(100-20-20-20-20-20-20=-20).命题方向2 ?For语句的应用[思路分析] 用i表示循环次数,用S表示总和,步骤如下:
第一步:输入i、S,i的初始值为1,S的初始值为0;
第二步:i从1开始循环到1 000,i=i+1,S=S+1/i;
第三步:循环结束后,输出S.[解析] 用i表示循环次数,用S表示总和,算法步骤如下:
1.令S的初始值为0,i的初始值为1;
2.S=S+1/i,i=i+1;
3.如果i≤1 000,返回执行第2步,否则输出S.
算法流程图如图所示:
用For语句表示如下:
S=0
i=1
For i=1 To 1 000
S=S+1/i
Next
输出S.『规律总结』 (1)For语句是从循环变量的初始值开始执行一次循环后,直到循环变量取到其终值结束循环,适用于预先知道循环次数的循环结构.
(2)在For循环语句中,我们默认循环变量每次的增量为1.如果需要考虑增加量不为1的情况,需使用参数step.
例如:“输出1到100内的所有奇数”的算法语句为:
For i=1 To 100 Step 2
输出i
Next〔跟踪练习2〕 请阅读用For语句给出的算法,画出算法框图并说明该算法的处理功能.[解析] 算法的框图如图所示,因此,这个算法实际上处理的是求和S=1+3+5+7+9+11+13+15+17+19.命题方向3 ?Do Loop语句的应用 以下给出的是用循环语句编写的一个算法,根据该算法写出此题的算法功能,并画出相应的算法框图. [思路分析] 该算法表示的功能是:找出并输出1至100的正整数中的所有偶数.
[解析] 算法框图如图所示:『规律总结』 在Do Loop语句中,每一次重复后,都要检验While后的条件是否满足,一旦不满足,循环停止.〔跟踪练习3〕
若1+3+5+…+n>6 000,试设计一个程序,寻找满足条件的最小n值.
[解析] S=0
i=1
Do
S=S+i
i=i+2
Loop Whlie S≤6 000
n=i-2
输出n编写程序,计算1+2+3+…+100的值.
[错解1] 用For语句描述如下:
i=1
sum=0
For i=1 To 100
sum=sum+i
Next
输出sum 编写程序,计算1+2+3+…+100的值.
[错解1] 用For语句描述如下:
i=1
sum=0
For i=1 To 100
sum=sum+i
Next
输出sum[错解2] 用Do Loop语句描述如下:
i=1
sum=0
Do
sum=sum+i
i=i+1
Loop While i>100
输出sum[辨析] 错误的原因是对循环语句的结构不清,应用混乱.错解1中“i=1”不用写.错解2中“Loop While i>100”应改成“Loop While i<=100”,因为Do Loop语句的一般格式为:
Do
循环体
Loop While 条件为真[正解1] 用For语句描述如下:
sum=0
For i=1 To 100
sum=sum+i
Next
输出sum[正解2] 用Do Loop语句描述如下:
i=1
sum=0
Do
sum=sum+i
i=i+1
Loop While i<=100
输出sum『规律总结』 Do Loop语句是先执行一次循环体,再判断是否满足条件,若满足,再执行循环体,然后再检查是否满足条件,若满足,再执行循环体,再判断是否满足条件,如此反复,直到不满足条件为止.循环语句的综合应用 设计一个求20个数的平均数的算法,分别用For语句和Do Loop语句写出其程序.
[思路分析] 可用一个循环依次输入20个数,并将它们的和存在一个变量S中,最后用S除以20即可得到它们的平均数.[解析] 用Do Loop语句程序如下;
S=0
i=1
Do
输入x
S=S+x
i=i+1
Loop While i<=20
a=S/20
输出a用For语句则程序如下:
S=0
For i=1 To 20
输入 x
S=S+x
i=i+1
Next
a=S/20
输出a『规律总结』 本例既可以用For语句写出程序也可以使用Do Loop语句写出程序,要注意这类题目特点,选择恰当的方法.1.关于Do Loop循环语句叙述正确的是( )
A.至少执行循环体一次
B.执行一次循环体
C.满足条件时执行循环体
D.遇到Do Loop就结束
[解析] 对于Do Loop循环语句,先执行循环体,再根据条件是否成立来确定执行循环体,因此至少执行一次循环体.A2.算法语句如下:
S=0
For i=1 To 1 000
S=S+i
Next
其中,语句“For i=1 To 1 000”的作用是( )
A.表示一个数字从1到1 000
B.表示从1一直加到1 000
C.表示从1开始循环到1 000
D.表示i从1开始以1为增量累加到1 000
[解析] 由For语句知选D.D3.执行下面算法语句,输出的结果是________.34 [解析] 循环结构中的循环体的作用是将前两个数相加,得到后一个数;如果没有循环条件的限制,程序中的循环结构将连同初始值,依次给A、B赋值为1、1,2、3,5、8,13、21,…,其中第一、三、五、…个数为A的值,第二、四、六、…个数为B的值;可见,当B=21时,循环结束,此时A=13,所以,C=A+B=34.