高中数学第1章算法初步1.3基本算法语句学案(打包6套)苏教版必修3

文档属性

名称 高中数学第1章算法初步1.3基本算法语句学案(打包6套)苏教版必修3
格式 zip
文件大小 791.2KB
资源类型 教案
版本资源 苏教版
科目 数学
更新时间 2017-10-22 22:21:02

内容文字预览

1.3.3 条件语句
庖丁巧解牛
知识·巧学
1.条件语句的概念:条件语句是指用伪代码表达条件结构,处理条件分支逻辑结构的算法语句.
学法一得
条件语句的作用:执行算法的条件结构;在程序执行过程中,根据判断是否满足约定的条件而决定是否需要转换到何处去.需要计算机按条件进行分析、比较、判断,并按判断后的不同情况进行不同的处理.
2.条件语句的一般格式:
(1)If—Then—Else语句
格式:
If条件
Then
语句1
Else
语句2
End
If
在If
Then
Else语句中,“条件”表示判断的条件,“语句1”表示满足条件时执行的操作内容;“语句2”表示不满足条件时执行的操作内容;End
If表示条件语句的结束.
联想发散
计算机在执行时,首先对If后的条件进行判断,如果条件符合,则执行Then后面的语句1;若条件不符合,则执行ELSE后面的语句2.
该语句对应的程序框图如图1-3-7:
图1-3-7
(2)If—Then语句
条件语句最简单的形式是“If—Then”语句.
格式:
If
条件
Then
语句
End
If
对应的流程图如图1-3-8所示:
图1-3-8
“条件”表示判断的条件;“语句”表示满足条件时执行的操作内容,条件不满足时,结束程序;EndIf表示条件语句的结束.
联想发散
计算机在执行时首先对IF后的条件进行判断,如果条件符合就执行THEN后边的语句,若条件不符合则直接结束该条件语句,转而执行其他语句.
(3)If—Then—Else
If语句
这是条件语句的嵌套形式.内嵌的条件语句作为一个模块以If开头,以End
If结束,体现了结构化程序设计,这样才能使整个的嵌套过程层次分明,逻辑清晰.
格式:
If
条件1
Then
语句1
Else
If
条件2
Then
语句2
Else语句3
End
If
对应的流程图如图1-3-9所示:
图1-3-9
典题·热题
知识点一
通过条件语句设计算法
例1任意输入一个实数,判断是不是偶数.
思路分析:判断一个数是不是偶数,只要把该数除以2,取其余数,若为0,则该数是偶数,否则不是偶数.我们可用Mod符号实现求余运算,x
Mod
2表示把x除以2所得的余数.
解:流程图如图1-3-10:
图1-3-10
伪代码如下:
Read
x
r←x
Mod
2
If
r=0
Then
Print
是偶数
Else
Print
不是偶数
End
if
End
方法归纳
在使用条件语句设计程序伪代码时,为使整个程序更方便阅读、清晰、有条理,通常需要将Then部分、Else部分缩进书写,特别是有块If语句嵌套时,嵌套的块If语句也要缩进书写,并且同是一个块If语句中的If、Else、End
If书写时尽量使第一个字母在同一列上.
例2
写出求过两点P1(x1,y1),P2(x2,y2)的直线的斜率的算法语句.
思路分析:本题由直线上两点坐标求斜率,可用斜率公式,但当x1=x2时,不能使用该公式,此时斜率不存在,所以必须先判断x1是否等于x2,因而要用条件语句.
解:流程图如图1-3-11:
图1-3-11
伪代码如下:
Read
x1,x2,y1,y2
If
x1=x2
Then
Print
直线斜率不存在
Else
k=
Print
k
End
if
End
拓展延伸
解数学问题时,我们应该考虑到其本身的限制与要求,如直线斜率的存在与否,如一元二次方程的二次项系数是否为零.这些都要将问题细化,都要用到条件语句.
知识点二
由条件语句来读解算法
例3
下列程序是求一个函数函数值的程序,在键盘上输入一个自变量x的值,输出它的函数值,若执行的结果为3,则输入的x值为________,函数的解析式是________.
程序:Read
x
If
x≤0
Then
Print
y←x
Else
If
x>0
And
x≤1
Then
Print
y←0
Else
Print
y←x-1
End
If
思路分析:本题由程序框图、算法语句计算算法结果,执行结果为3,可能的结果为:①x≤0时,-x=3;②x>1时,x-1=3,即有x=-3或x=4符合题意.
答案:-3或4,f(x)=
方法归纳
条件语句执行时,先判断条件,根据条件决定执行哪一个操作.算法设计过程中,遇到有多种情况,需要根据一定的条件作出选择时,就要引用条件语句,特别是有3个或3个以上分支时,要使用块If语句嵌套.同时要面面俱到,做到不重不漏.
问题·探究
误区陷阱探究
问题
If—Then—Else条件语句的语句1与语句2可否对调?
探究过程:条件语句一般是按约定条件给出了双向选择,Then分支与Else分支是相应的两种操作,当然可以进行对调,不过,在对调时,应该把原条件改为相反条件,因为Then分支是满足条件的相应操作.一般地,如果条件语句嵌套了,我们总把嵌套放入Then分支内,这时最外层的条件语句不要随便进行对调.还有平时要注意,用条件语句来表达算法时,先把解决问题的思路用程序框图(含选择结构)表示出来,然后再根据程序框图给出的算法步骤,逐步用对应的程序语句表达出来.为了更好地做到这点,必须掌握好各个“框”的具体意义与作用.如判断框表达选择,用语句表达时,就一定接If.同理,条件语句的THEN分支与ELSE分支就对应着执行框的操作.
探究结论:不要“想当然”地去学算法,那会处处碰壁,在“拐弯处”多想想接下来怎么走.
此级HS4的大图若接排前加,若另面则不加1.3.4
循环语句教材梳理
庖丁巧解牛
知识·巧学
1.循环语句的概念
循环语句是主要用来实现算法中的循环结构的算法语句,处理一些需要反复执行的运算任务.如累加求和,累乘求积等问题中常用到.
2.循环语句的两种形式
循环语句一般有两种:“For循环”“While循环”.
(1)For循环:
格式:
功能:根据For语句中所给定的初值、终值和步长,来确定循环次数,反复执行循环体内各语句.
通过For语句进入循环,将初值赋给变量I,当循环变量的值不超过终值时,则顺序执行循环体内的各个语句,遇到Endfor,将循环变量增加一个步长的值,再与终值比较,如果仍不超过终值范围,则再次执行循环体.这样重复执行,直到循环变量的值超过终值,则跳出循环.
误区警示
“For”和“End
For”之间缩进的步骤称为循环体;
①只有当循环次数明确时,才能使用本语句.
②Step可以省略,此时默认步长为1.
③步长可以为正、负,但不能是0,否则会陷入“死循环”.步长为正时,要求终值大于初值,如果终值小于初值,循环将不能执行.步长为负时,要求终值必须小于初值.
(2)While循环
格式:
功能:给语句对应于流程图中的当型循环,如图1-3-12:
图1-3-12
先判断条件是否成立,当条件成立时,执行循环体,遇到Endwhile语句时,就返回继续判断条件,若仍成立,则重复上述过程,若不成立,则退出循环.
学法一得
①该语句以While开头,Endwhile结束,是模块化结构.
②该循环是前测试型循环,即在执行循环体之前先判断条件.只有当条件成立时,才执行循环,条件不成立时,退出循环.所以在循环体内必须有改变条件的语句,以便在适当时候退出循环.
③该循环适用于循环次数不确定的情况,当循环次数确定时也可用该语句.
典题·热题
知识点一
循环次数有限的问题
例1
设计流程图计算2+22+23+…+210,并用循环语句表示.
图1-3-13
思路分析:本题利用等比数列的有限项的和.该循环次数已经确定,可以用“For”语句,也可用“While”语句来实现循环.
解:流程图如图1-3-13:
用For循环语句表示为:
S←0
For
i
From
1
to
10
S←S+2i
End
For
Print
S
变式方法:(用While循环实现)
S←0
i←1
While
i≤10
S←S+2i
i←i+1
End
While
Print
S
方法归纳
面对新问题,在构造算法时,我们应该先把算法结构理清了,再将结构用算法语句表达出来,从而减少错误率,增加直观性.
知识点二
不确定数值输入的问题
例2试设计一个循环语句模拟抛硬币的过程,并计算抛掷中出现正面的概率.
思路分析:随机模拟可通过两种途径实现:一种是用实物模拟,如用抛掷一枚硬币,记录总次数及分别出现正面、反面的次数;另一种是借助于计算机高速的运算、存储能力来实现随机模拟,这个过程实际上是让计算机产生一系列的随机数,事先假设某些数表示什么,另外一些数表示什么.
解:用While循环表示:
S←0
Read
n
{输入模拟次数}
While
i≤n
a=RND
{产生一个0到1之间的随机数,并赋给变量a}
If
a>0.5
Then
S←S+1
End
If
End
While
Print
“出现正面的频率为”,
变式方法:用FOR循环表示:
s←0
Read
n
For
I
From
1
to
n
If
Rnd>0.5
Then
s←s+1
End
For
Print
“出现正面的频率为”,
拓展延伸
①运用RND函数可产生0到1之间的随机函数(不包括1,包括0),本例中用大于0.5的数表示出现正面,用小于0.5的数表示出现反面,如此用来模拟计算.在以后的训练中,我们要注意RND函数的正确用法.
②变式方法中运用Read
n输入数值,一旦输入,就确定了数值,所以可用FOR循环.平时练习时要深化对输入语句的理解.
③“For”和“End
For”之间缩进的步骤称为循环体;“While”和“End
While”之间也是一个循环体;设计语句时,必须注意其完整性.
知识点三
循环次数不确定的问题
例3
设计一个算法,计算并输出一批数据中正数和负数的个数.预先不指定数据的个数,输入0时程序结束(即所有有效的数据,其值均不为0).
思路分析:引入循环结构,每次输入一个数据,并判断是正数还是负数,分别设两个变量m,n,统计正数、负数的个数.因为是一批数据,可用Read语句,预先不指定数据的个数,也即循环次数不确定,可使用While语句,注意循环条件是输入的数不为0.
解:流程图如图1-3-14所示:
图1-3-14
用While循环表示:
m←0
n←0
Read
x
While
x≠0
If
x>0
then
m←m+1
Else
n←n+1
End
If
Read
x
End
While
Print
m,n
方法归纳
1.用For循环的一般思路
(1)确定好初值与终值、步长.
(2)循环变量的初值设置及改变在For语句中实现,如题中For
I
From
0
to
100,程序中的Sum←Sum+i在用伪代码表示时内置于For语句中,其他位置不能再出现.
2.用While循环设计算法的一般思路
(1)把反复要做的工作,作为循环体放在While与End
While之间.
(2)确定循环条件,并在While之前,要设置好初始条件.如题中的i←0,i←1.
(3)考虑在循环体内怎样改变条件以退出循环.
问题·探究
思想方法探究
问题
解决同一个问题,可以有不同的算法;同一个算法稍加改造,可以用于解决不同的问题.
学习算法时,尤其是对循环语句中“累加器”应用,我们能否对其进行优化或改造,从而达到使算法更具通用性、更有效?
探究过程:结合对程序框图的认识及算法的三种基本逻辑结构,有利于对程序语言的理解和掌握.类似地,对算法的优化或改造,在算法的程序框图上进行,也有利于学生看清算法的结构和更好地把握“算理”.
这里,我们来改造求1+2+…+100的值的“累加器”的程序框图(如图1-3-15),
图1-3-15
(1)求1+2+…+m(m∈Z
)的值的过程;
(2)求3+5+…+(2m+1)(m∈Z
)的值的过程;
(3)输出1,1+2,1+2+3,…,1+2+3+…+100的过程;
(4)求2+22+…+2100的值的过程;
(5)求使2+22+…+2n(n∈Z
)的和大于100的最小正整数n的过程;等等.其中,(1)将求前100个正整数的和推广为求前m个正整数的和,只需在循环结构前给定变量m的初始值,并将循环的终止条件变为“n>m?”即可;(2)也是求m个正整数的和,但起始的数字变成了3,终端的数字变成了2m+1,“步长”变成了2,这时需要改变变量初始值和循环的终止条件,循环体变为“sum←sum+(2n+1)”;(3)在循环体中增加输出框“输出sum”,就可以得到前n(n=1,2,…,100)个正整数的和了;(4)需要将循环体变为“sum←sum+2n”;(5)除了需要将循环体变为“sum←sum+2n”,还需要将循环的终止条件变为“sum>100?”.
探究结论:通过这样的练习,不仅可以更好地把握算法的“算理”,而且也能体会到算法在解决问题中的强大威力.1.3.3 条件语句
案例探究
某市电信部门规定,打市内电话时,如果通话时间不超过3min,则收取通话费0.2元;如果通话时间超过3
min,则超过部分以0.1元/min计(不足1
min按1
min计).试设计一个计算通话费用的算法,画出流程图并用伪代码描述.
解:解决这一问题的算法步骤:
?
S1:输入通话时间t;
?
S2:如果t≤3,那么c←0.2
否则c←0.2+0.1(t-0.3)
?
S3:输出c
其流程图如图:
用伪代码表示为:
Read“t=”;t
If
t<=3
then
c←0.2
Eles
c←0.2+0.1
(t-3)
Print“c=”;c
End
if
End
像这种if
A
then
B
Else
C
End
if
语句就是这节课要学习的条件语句.
自学导引
1.算法逻辑结构中条件结构一般由算法语句中的条件语句来实现.
2.条件语句的一般格式有两种,一种是If-then-else格式,其形式为:
if条件then语句1Else语句2END
if
,另一种是If-then格式,其形式
If条件then语句End
if
为:
3.条件语句两种格式的流程图可化为:
疑难剖析
【例1】
已知分段函数y=编写程序输入自变量x,输出其相应的函数值.
思路分析:由于函数是一个分段函数,所以输入x的值后根据x所在的范围,选择相应的函数解析式代入求值,故应该选择条件语句,又因为实数x的值共分为三个范围,所以要用条件语句的嵌套,流程图如图.
解:伪代码表示:
Read“x=”;x
If
x<0
then
y←-x+1
Else
If
x=0
then
y←0
Else
y←x+1
End
if
End
if
Print
y
End
思维启示:由于分段函数,是对x的范围进行判断,从而选择不同的解析式进行计算,像这种数学上的分类讨论问题一般都选择条件语句进行算法设计.
【例2】
任意输入三个正数,判断能否构成三角形,若能构成三角形,利用公式
S=[其中p=(a+b+c)]计算其面积.
思路分析:能否构成三角形,要看两边之和是否大于第三边,且任意两边都要比较,这实际上有三个条件同时成立.
解:Read“请输入三个正数a,b,c:”;a,b,c
If
a+b>c
and
b+c>a
and
c+a>b
Then
p←(a+b+c)/2
m←p
(p-a)
(p-b)
(p-c)
S←SQR(m)
Print“能构成三角形”
Print“这个三角形的面积是S=”;S
Else
Print“构不成三角形”
End
if
End
思维启示:本题首先要判断能否构成三角形,若能构成三角形,则计算其面积,否则输出不能构成三角形,于是需采用条件语句设计算法程序.
【例3】
输入三个数,按由小到大的顺序把它们打印出来,画出流程图,并用伪代码表示.
思路分析:根据题意有如图所示的流程图,于是可根据流程图写出程序.
解:程序如下:
Read“输入三个数”a,b,c
If
a>b
then?
t←a
a←b
b←t
End
if
If
a>c
then
t←a
a←c
c←t
End
if
If
b>c
then
t←b
b←c
c←t
End
if
Print
a,b,c
End
思维启示:本题中当每个判断条件不成立时没有可执行的语句,于是采用这一格式来设计程序,本题中有三个判断条件设计了三个模块,逐块处理,最后连成一个整体方案.
【例4】
根据下面程序,画出流程图,并说出表示了什么样的算法.
Read“请输入a,b,c”;a,b,c
If
a>b
and
a>c
then
Print“最大数为”;a
if
b>c
Then
print
“最大数为”;b
print“最大数为”;c
End
分析:我们根据程序按顺序从上到下分析.
第一步:是输入a,b,c三个数;
第二步:是判断a与b,a与c的大小,如果a同时大于b,c则输出a,否则执行第三步;
第三步:判断b与c的大小,因为a已小于b和c,则只需比较b与c的大小就能看出a,b,c中谁是最大的了,如果b>c,则输出b,否则输出C.
通过上面的分析,程序表示一个什么样的算法已经非常清楚了.
解:则框图为下图
拓展迁移
【拓展点1】
学习优良奖的条件如下:
(1)所考五门课成绩总分超过450分;
(2)每门课都在88分以上;
(3)前三门(主课)每门成绩都在95分以上,其他两门(非主课)每门成绩在88分以上.
输入某学生的五门课成绩,问他是否够优良条件?写出程序伪代码.
解析:伪代码如下:
Read“输入学生成绩”;a,b,c,d,e
Sum←a+b+c+d+e
If
Sum≥450
and
a≥95
and
b≥95
and
c≥95
and
d≥88
and
e≥88
Then
print“该生够优良条件”
Else
print“该生不够优良条件”
End
if
End
【拓展点2】
某商场实行优惠措施,若购物金额x在800元以上,打8折,若购物金额x在500元以上,则打9折,否则不打折.请写出一个程序(伪代码表示).
解析:根据题意首先画出流程图.
伪代码如下:
Read“购物金额”;x
If
x>=800
then
y←x
0.8
Print“应缴金额”;y
Else
If
x>=500
then
y←x
0.9
Print“应缴金额”;y
Else
y←x
Print“应缴金额”;y
End
if
End
if
End1.3.4 循环语句
案例探究
高一·五班共60人,市青少年保护中心来抽样检测同学们的身体素质,要求学号被3整除的同学参加体检.已知学生的学号是从1到60号,请编写输出参加同学学号的一个算法,画出流程图,并用伪代码表示.
解:算法设计:第一步:选择一个变量S表示学号,并赋给初值0;
第二步:开始进入While循环语句,首先判断S是否小于60;
第三步:写出循环体,用End
while来控制循环;
第四步:用End来结束程序.
流程图如图所示:
伪代码表示为:
S←0
While
S<60
S←S+3
Print
S
End
while
End
自学导引
1.循环语句是用来实现算法中的循环结构.
2.伪代码语言中的循环语句主要有两种类型,“For”语句和“While”语句.
3.For语句的一般格式为:For
I
from“初值”to“终值”step“步长……End
for.
4.“While”语句的一般格式为:.
5.当循环次数已经确定时可选用“For”语句来表示;当循环次数不能确定时,可选用“while”语句来表示.
疑难剖析
【例1】
求使1×2×3×…×n<5
000的最大整数n,画出流程图,并用伪代码表示.
思路分析:本题是一个连乘积问题,一般情况下选用循环语句设计算法.由于不能确定循环次数,所以可运用“While”语句来实现.
解:流程图如图:
用伪代码表示为:
n←1
S←1
While
S<5
000
S←S
n
n←n+1
End
while
Print
n-1
End
思维启示:对于数学中有规律的连乘积问题一般选用循环语句来设计算法.循环语句包括?For语句循环和While语句循环,解题时要根据需要灵活运用.
【例2】
设计求+++…+的值的算法,用伪代码表示.
思路分析:本题可以用迭代的方法,+++…一个数一个数的向上加,直到加到为止,于是可以选用循环语句来设计算法.
解法1:S←0
For
I
from
1
to
1
000
step
1
S←S+1/i
End
for
Print
S
End
解法2:S←0
i←1
While
i<=1
000
S←S+
i←i+1
End
while
Print
S
End
【例3】
如果我国工农业产值每年以9%增长率增长,问几年后我国产值翻一番.画出流程图;并用伪代码表示.
思路分析:根据问题,我们先设原来产值p(基数)为100,然后每年底计算一次增长后产值,如果未达到200,就再计算下一年产值,直到某一年产值达到或超过200为止,我们按此思路画出程序框图.
解:流程图如图所示:
用伪代码表示为:
p←100
R←0.09
n←0
While
p<200
p←p
(1+R)
n←n+1
End
while
Print
n
End
思维启示:解决此问题需要我们理解变量n,用n来累计经历的年数,每执行一次循环,n就加1,表示又经历了一年.
【例4】
根据下面程序,画出其算法的流程图.
i=-1
While
i<=1
x←i
f(x)←x∧3
i←i+0.2
Print“f(x)”;f(x)
End
While
End
思路分析:可以看出这是一个有循环语句的程序,第一次循环取x=-1,第二次取x=-1+0.2+……最后一次取x=1,实际上就是把区间[-1,1]10等分,求该函数在各分点和区间端点的函数值问题.
解析:流程图如图:
拓展迁移
【拓展点】
相传古代印度国王舍罕要褒赏他聪明能干的宰相达依尔(国际象棋的发明者),问他需要什么,达依尔说:“国王只要在国际象棋的棋盘第一格子放一粒麦子,第二个格子上放两粒,第三个格子里放四粒,以后按此比例每一格加一倍,一直放到第64格(国际象棋是8×8=64格),我就感恩不尽,其他什么也不要了.”国王想:“这有多少,还不容易!”让人扛来一袋小麦,但不到一会儿就全用没了,再来一袋很快又没有了,结果全印度的粮食都用完还不够,国王很奇怪,怎么也算不清这笔账.一个国际象棋棋盘一共能放多少小麦粒
试用流程图表示其算法,并用伪代码表示.
思路分析:根据题目可知
第一个格 放1粒=20
第二个格 放2粒=21
第三个格 放4粒=22
第四个格 放8粒=23
……   ……?
第六十四格 放263粒
则此题就转化为求1+21+22+23+24+…+263的和的问题.我们引入一个累加变量Sum,一个计数变量i,累加64次就能算出一共有多少粒小麦.
解析:流程图如图:
用伪代码表示为:
i←0
Sum←0
While
i<=63
Sum←Sum+2∧i
i←i+1
End
While
Print
Sum
End1.3
基本算法语句
1.3.1
赋值语句
1.3.2
输入、输出语句
庖丁巧解牛
知识·巧学
一、伪代码的定义
伪代码是介于自然语言和计算机语言之间的文字和符号,它的表示形式比较灵活自由,而且由于与计算机语言比较接近,因此可以比较容易地转换成计算机程序.伪代码无统一语法,只要写出来自己或别人能看懂就行.
学法一得
1.在伪代码中,每一条指令占一行(else
if例外),指令后不跟任何符号;
2.在伪代码中,变量名和保留字不区分大小写;
3.在伪代码中,变量不需声明,但变量局限于特定过程,不能不加显示的说明就使用全局变量.
二、赋值语句
格式:变量←表达式或变量
作用:先计算出赋值号右边表达式的值,然后把这个值赋给赋值号左边的变量,使该变量的值等于表达式的值.
注意:
①赋值运算完成两类操作,一是计算,二是赋值,先计算,后赋值.
②“←”的右边可以是常量、变量或算式,如:“x←10”表示把10赋给变量x,“x←y”表示把变量y的值赋给变量x.
③“←”左边须是变量,而不能是表达式、常量,如:“15←a”,“x+y←c”是不正确的.
④赋值号左右不能对换;“x←y”与“y←x”是两个不同的赋值过程,“x←y”是把y的值赋给x,“y←x”是把x的值赋给y.
⑤一个赋值语句一次只能给一个变量赋值,但可给一个变量多次赋值,注意只保留最后一次所赋给的值.如:A←5,B←3,A←A+B,执行后A的值为8.
学法一得
赋值语句在流程图中对应使用
三、输入、输出语句
1.输入语句
格式:(1)Read变量
或;(2)Read变量,变量,变量,变量.
功能:可以一次为一个或多个变量赋值,实现算法中的输入功能.
注意:
(1)给多个变量赋值时,中间用“,”隔开;如:Read
a,b表示输入的数据依次赋给a,b两个变量.
(2)输入语句无计算功能,只能直接输入程序运行需要的数据.
误区警示
输入语句要求输入的值只能是具体的常数,不能是函数、变量或表达式.
2.输出语句
格式:Print变量.
例如:Printa;也可输出表达式的值,如:Print
12/3.
功能:表示输出运算结果,具有计算功能;实现算法中的输出功能.
学法一得
输入、输出语句对应于流程图中的.
典题·热题
知识点一
赋值符号在伪代码算法中的运用与作用
例1执行下列语句后,A,B的值各为多少?
A←2
B←3
B←A×A
A←A+B
B←A+B
思路分析:本例是对赋值语句的理解,可给一个变量多次赋值,但只保留最后一次所赋给的值.
解:A←2;
B←3;
B←A×A,{B=A2=4,A=2};
A←A+B,{A=A+B=2+4=6};
B←A+B,{B=A+B=6+4=10}.
故A为6,B为10.
深化升华
变量是指程序在运行时其值是可以变化的量,如题中A,B,C都是变量,通常把一个变量
比喻成一个盒子(其实是内存单元),盒子内可以存放数据,当一个新数据放进去时,原来的数就被“挤”了出去.变量的命名原则:由字母、数字组成,首字符必须是字母.如sum,s2,a,mcx,stu(10),d(5
to
20)等.把握好变量,对设计程序有很大帮助.
知识点二
输入、输出语句的运用
例2已知某生三科成绩为80,75,95分,求三科总分及平均分.
思路分析:本例要给(多个)变量赋值.将三科成绩赋给三个变量A,B,C,然后对三个变量进行操作、运算,求其总分、平均分,可用赋值语句,也可用输入语句.
解:(算法1):流程图如图1-3-1.
图1-3-1
伪代码:A←80,B←75,C←95
ZF←A+B+C
PJF=ZF/3
图1-3-2
PrintZF,PJF
(算法2):流程图如图1-3-2.
伪代码:Read
A,B,C
ZF←A+B+C
PJF←ZF/3
Print
ZF,PJF
方法归纳
本题巧妙地运用了输入语句与赋值语句的共同功能:给变量赋值,达到了一题多解的效果.
例3交换两个变量的值,并输出交换前后的值.
思路分析:交换变量的值要借助中间变量,因两个变量的值不确定,所以使用输入语句.
注意在伪代码中,变量不需声明.
解:流程图如图1-3-3:
图1-3-3
伪代码:Read
a,b
Print
a,b
x←a
a←b
b←x
Print
a,b
深化升华
给一个或几个变量提供数据要用赋值语句,给多个变量提供数据要用输入语句(Read).如果程序运行所需数据事先已确定且比较少,可用赋值语句,也可用输入语句;否则,如果事先不确定或数量较多,应使用输入语句.
知识点三
用秦九韶算法求多项式的值
例4设计利用秦九韶算法计算5次多项式
f(x)=a5x5+a4x4+a3x3+a2x2+a1x+a0当x=x0时的值的程序框图.
思路分析:如何应用秦九韶算法完成一般的多项式f(x)=anxn+an-1xn-1+…+a1x+a0求值问题?
f(x)=anxn+an-1xn-1+…+a1x+a0
=(anxn-1+an-1xn-2+…+a1)x+a0
=[(anxn-2+an-1xn-3+…+a2)x+a1]x+a0
=……
=[…(anx+an-1)x+an-2x+…+a1]x+a0.
求多项式的值时,首先计算最内层括号内一次多项式的值,即v1=anx+an-1
然后由内向外逐层计算一次多项式的值,即
v2=v1x+an-2
v3=v2x+an-3
……
vn=vn-1x+a0
这样,把n次多项式的求值问题转化成求n个一次多项式的值的问题,只要算n次乘法和n次加法.
解:程序框图如图1-3-4:
图1-3-4
拓展延伸
我国宋代秦九韶是一般高次多项式方程的数值求解的集大成者,他在《数书九章》(1247年)一书中给出了高次多项式方程数值解的完整算法,即他所称的“正负开方术”.
《数书九章》中用这一算法去解决各种可以归结为代数方程的实际问题,其中涉及的方程最高次数达到10次,秦九韶解这些问题的算法整齐划一,步骤分明,堪称中国古代数学算法化、机械化的典范.这样有利于计算机的运行速度.
观察秦九韶算法的数学模型,计算vk时要用到vk-1的值,若令v0=an,我们可以得到下面的递推公式:
这是一个在秦九韶算法中反复执行的步骤,可以用循环结构来实现.
问题·探究
交流讨论探究
问题
在掌握新知识伪代码后,怎么把握输入与输出语句的联系?
探究过程:同学甲:设计一算法时,首先用自然语言描述问题的一个算法,然后把自然语言转化为程序框图,最后把程序框图转化为程序语句,最终就可以让计算机来执行这个算法.
同学乙:具体设计算法,要分三部分:第一部分是输入部分,为程序运行提供必须的数据;第二部分是数据处理部分,按题目要求进行一系列的操作,得到结果;第三部分是输出部分,输出所求结果.
同学丙:输入语句和输出语句的区别:输入语句是外部直接给程序中变量赋值;输出语句是程序运行的结果输出到外部,先计算表达式,得到结果输出.
探究结论:只有计算机程序有输入与输出语句,计算机语言才算有生命力,才实现了它的应用价值,我们必须掌握好这两种语句.
此级HS4的大图若接排前加,若另面则不加1.3 基本算法语句
1.3.1 赋值语句 1.3.2 输入、输出语句
案例探究
用伪代码写出计算任何一个学生的语、数、外三门课成绩的算法.
解:Begin(算法开始)
Read
a←“chinese”
b←“maths”
c←“foreign
language”
Aver←(a+b+c)/3
Print
aver
End
伪代码是表示算法的一种方法,它是介于自然语言和计算机语言之间的文字和符号,是描述算法简单而实用的方法.
自学导引
1.伪代码是介于自然语言和计算机语言之间的文字和符号.
2.在伪代码中,赋值语句用符号“←”表示,“x←y”表示将y的值赋给x,其中x是一个变量,y是一个与x同类型的变量或表达式.?
3.在某些算法中,变量的初值要根据情况经常地变化,每次做题时,即使初始值数据改变,也不必改变程序部分,只要每次程序运行时,输入相应的数据即可,这个过程在程序语言中用“输入语句”来控制,其格式为“Read
a,b”表示输入的数据送给a,B.
4.任何求解问题的算法,都要把求解的结果“输出”,任何程序语言也必须有“输出语句”来控制,其格式为:“Print
x”,表示输出运算结果x.
疑难剖析
【例1】
若三角形的边长分别为a,b,c,借助于公式S=(其中p=),求该三角形的面积.试用输入、输出语句表示计算面积的一个算法.
分析:这里有三个变量a,b,c的值需要输入,变量p的值由a,b,c确定,可用赋值语句,S的计算也用赋值语句,最后输出的是S的值.
解:Read
a,b,c
p←(a+b+c)/2
x←p-a
y←p-b
z←p-c
S←SQR(p
x
y
z)
Print“三角形的三条边长分别为:”;a,b,c
Print“这个三角形的面积是:”;S
End
思维启示:在程序语言中,乘、除、乘方、求平方根、求绝对值,分别用下列符号表示:
、/、∧、SQR(  ),ABS(  ),如3×2,3÷2,32,,|3|分别写成3
2,3/2,3∧2,?SQR(3),ABS(3),在程序中≥,≤,≠分别写成>=,<=,<>.
【例2】
试用伪代码设计一个程序,已知圆柱体的底面半径和高,求圆柱体的表面积.
思路分析:根据圆柱的表面积等于两底的面积加上侧面积,我们就可以先求出底面积,再算出侧面积,然后把两个面积相加,圆柱体的表面积便有了.
解:程序:Read“R,H=”;R,H
A←2
3.145
R
H
B←3.145
R
R
S←A+2
B
Print“S=”;S
End
思维启示:“R,H=”提示输入圆柱体的底面半径和侧面高,当我们把值赋给R,H后,R,H中的值与2及3.1415相乘,乘积存入变量A,R中的值代入圆面积公式,求出圆的面积存入B,A中的值与两个底面的面积2B相加存入S,则S中的值便是圆柱体的表面积.
【例3】
根据下面伪代码编写的程序,画出流程图.
Read“输入边长A,B的值”;A,B
Read“输入夹角C的角度值”;C
C←C
3.141
6/180
P←A
A+B
B-2
A
B
cos(C)
Y←SQR(P)
Print“第三边=”;Y
End
思路分析:从伪代码程序可以看出,此程序只用输入语句、赋值语句和输出语句组成,因此根据程序画流程图,只要按顺序从上到下把输入语句、赋值语句、输出语句换成输入框、处理框、输出框就可以了.
解:流程图如图所示:
【例4】
编写一个程序求出方程x2-3x+2=0的两根.
思路分析:用输入语句输入a,b,c的值,然后利用求根公式求根,最后输出方程的两根即可.
解:Read
a,b,c”;1,-3,2
x1←(-b+SQR(b∧2-4
a
c))/(2
a)
x2←(-b-SQR(b∧2-4
a
c))/(2
a)
Print“x1=”;x1;“x2=”;x2
End
【例5】
某粮库3月4日存粮50
000
kg,3月5日调进粮食30
000
kg,3月6日调出全部存粮的二分之一,编写一个算法描述输出每天的库存数,并用伪代码表示.
思路分析:粮库的库存是逐日变化的,可以设置一个变量来存放每天的库存数,我们只设一个变量a,处理时,每次当天的库存统计好存入变量里,然后输出变量当前值,来说明当天的库存.在这样的思路,则流程图如图所示.
解:由流程图看出,这是一个有多个输出的顺序结构,因此只需用输入、输出、赋值语句即可写出程序.
程序为:
a←50
000
Print“3月4日库存数:”;a;“kg”
a←a+30
000
Print“3月5日库存数:”;a;“kg”
a←a/2
Print“3月6日库存数:”;a;“kg”
End
拓展迁移
【拓展点】某市2003年1~12月的产值分别为5.3,3.8,4.2,5.4,6.2,4.6,6.7,7.3,6.4,
5.8,
4.7,6.5(亿元),该市要统计每季度的月平均产值及2003年的月平均产值,试分别用赋值语句和输入、输出语句表示计算上述各个平均值的算法.
解:Read“a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12”;
5.3,3.8,4.2,5.4,6.2,4.6,6.7,7.3,6.4,5.8,4.7,6.5
?Print“第1季度aver=”;(a1+a2+a3)/3
?Print“第2季度aver=”;(a4+a5+a6)/3
?Print“第3季度aver=”;(a7+a8+a9)/3
?Print“第4季度aver=”;(a10+a11+a12)/3
?Print“全年aver=”;(a1+a2+a3+…+a12)/12
?End