1 算法的基本思想
学习目标 1.了解算法的含义,体会算法的思想,能够用自然语言叙述算法.2.掌握正确的算法应满足的要求.3.学会将一整数分解成素因数之积,会设计求两整数的最大公因数的算法,了解“韩信点兵”问题及二分法求方程近似解.
知识点一 算法的概念
思考 有一碗酱油,一碗醋和一个空碗.现要把两碗盛的物品交换一下,试用自然语言表述你的操作方法.
梳理 一般地,算法是解决某类问题的一系列____________,只要按照这些步骤执行,都能使问题得到解决.一般来说,“用算法解决问题”都是可以利用________帮助完成的.
同一个问题可能存在____种算法,一个算法也可以解决某一类问题.
知识点二 算法的特点
思考 设想一下电脑程序需要计算无限多步,会怎么样?
梳理 一般地,算法的特点有:
(1)有穷性
一个算法应包括________的操作步骤,能在执行有穷的操作步骤之后________.
(2)确定性
算法的计算规则及相应的计算步骤必须是唯一确定的.
(3)可行性
算法中的每一个步骤都是可以在________的时间内完成的基本操作,并能得到________的结果.
类型一 生活中的算法案例
例1 在电视台的某个娱乐节目中,要求参与者快速猜出物品价格.主持人出示了一台价值在1 000元以内的随身听,并开始了竞猜.下面是主持人和参与者之间的一段对话:
参与者:800元!
主持人:高了!
参与者:400元!
主持人:低了!
参与者:600元!
主持人:低了!
……
试把参与者的竞猜策略概括成一系列的步骤.
反思与感悟 按照上述方法,继续判断,直到游戏结束.像这样的一系列步骤通常称为解决这个问题的一个算法.生活中有很多蕴含算法思想的案例.
跟踪训练1 一个大人和两个小孩一起渡河,渡口只有一条小船,每次只能渡1个大人或两个小孩,他们三人都会划船,但都不会游泳.试问他们怎样渡过河去?请写出一个渡河方案.
类型二 数学中的算法思想
例2 设计一个算法,求840与1 764的最大公因数.
反思与感悟 以上这个算法的思想具有一般性,它可以帮助设计求三个或者三个以上正整数的最大公因数的算法.
跟踪训练2 设计一个算法,求98与63的最大公因数.
例3 “韩信点兵”问题
韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为建立汉朝立下了汗马功劳.据说他在点兵的时候,为了保住军事机密,不让敌人知道自己部队的实力.采用下述点兵方法:先令士兵从1~3报数,结果最后一个士兵报2;再令士兵从1~5报数,结果最后一个士兵报3;又令士兵从1~7报数,结果最后一个士兵报4.这样,韩信很快就算出了自己部队士兵的总人数.请设计一个算法,求出士兵至少有多少人.
反思与感悟 在完成上述步骤后,就找到了所求的数53,这5个步骤称为解决“韩信点兵”问题的一个算法.
跟踪训练3 在例3中,我们颠倒一下3,5,7的顺序,请再设计一个算法.
类型三 用二分法求方程近似解
例4 求方程x3+x2-1=0在[0,1]上的近似解,精度为0.1.
反思与感悟 二分法求方程近似解的基本思想:逐渐缩小有解区间的长度,直到满足精度的要求.虽然看似烦琐,但很适合计算机执行.
跟踪训练4 用二分法设计一个求方程x2-2=0的近似正根的算法,精度为0.05.
1.下列关于算法的说法,正确的个数为( )
①求解某一类问题的算法是唯一的;
②算法必须在有限步操作之后停止;
③算法的每一步操作必须是明确的,不能有歧义或模糊;
④算法执行后一定产生确定的结果.
A.1 B.2 C.3 D.4
2.已知一个算法:
(1)给出三个数x、y、z;
(2)计算M=x+y+z;
(3)计算N=M;
(4)得出每次计算的结果.
则上述算法是( )
A.求和 B.求余数
C.求平均数 D.先求和再求平均数
3.看下面的四段话,其中不是解决问题的算法是________.
(1)从济南到北京旅游,先坐火车,再坐飞机抵达;
(2)解一元一次方程的步骤是去分母、去括号、移项、合并同类项、系数化为1;
(3)方程x2-1=0有两个实根;
(4)求1+2+3+4+5的值,先计算1+2=3,再计算3+3=6,6+4=10,10+5=15,最终结果为15.
4.已知直角三角形两直角边长为a,b,求斜边长c的一个算法分下列三步:
(1)计算c=;
(2)输入直角三角形两直角边长a,b的值;
(3)输出斜边长c的值.
其中正确的顺序是________.
算法是建立在解法基础上的操作过程,算法不一定要有运算结果,答案可以由计算机解决,算法没有一个固定的模式,但有以下几个基本要求:
(1)符合运算规则,计算机能操作;
(2)每个步骤都有一个明确的计算任务;
(3)对重复操作步骤返回处理;
(4)步骤个数尽可能少;
(5)每个步骤的语言描述要准确、简明.
答案精析
问题导学
知识点一
思考 先把醋倒入空碗,再把酱油倒入原来盛醋的碗,最后把倒入空碗中的醋倒入原来盛酱油的碗,就完成了交换.
梳理
步骤或程序 计算机 多
知识点二
思考 若有无限步,必将陷入死循环,解决不了问题.故算法必须在有限步内解决问题.
梳理
(1)有限 结束 (3)有限 确定
题型探究
例1 解 1.报出首次价格T1;
2.根据主持人的回答确定价格区间:(1)若报价小于商品价格,则商品的价格区间为(T1,1 000);(2)若报价大于商品价格,则商品的价格区间为(0,T1);(3)若报价等于商品价格,则游戏结束.
3.如果游戏没有结束,则报出上面确定的价格区间的中点T2.
跟踪训练1 解 1.两个小孩同船过河去;
2.一个小孩划船回来;
3.一个大人划船过河去;
4.对岸的小孩划船回来;
5.两个小孩同船渡过河去.
例2 解 算法步骤如下:
1.先将840进行素因数分解:840=23×3×5×7;
2.然后将1 764进行素因数分解:1 764=22×32×72;
3.确定它们的公共素因数:2,3,7;
4.确定公共素因数的指数:公共素因数2,3,7的指数分别为2,1,1;
5.最大公因数为22×31×71=84.
跟踪训练2 解 算法步骤如下:
1.先将98进行素因数分解:98=2×72;
2.然后将63进行素因数分解:63=32×7;
3.确定它们的公共素因数:7;
4.确定公共素因数的指数:公共素因数的指数是1;
5.最大公因数为7.
例3 解 算法步骤如下:
1.首先确定最小的满足除以3余2的正整数:2;
2.依次加3就得到所有除以3余2的正整数:2,5,8,11,14,17,20,23,26,29,
32,35,38,41,44,47,50,53,56,…
3.在上列数中确定最小的满足除以5余3的正整数:8;
4.然后依次加上15,得到8,23,38,53,…
不难看出,这些数既满足除以3余2,又满足除以5余3;
5.在第4步得到的一列数中找出满足除以7余4的最小数53,这就是我们要求的数.
跟踪训练3 解 算法步骤如下:
1.首先确定最小的除以7余4的正整数:4;
2.依次加7就得到所有除以7余4的正整数:4,11,18,25,32,39,46,53,60,…
3.在第2步得到的一列数中确定最小的除以5余3的正整数:18;
4.然后依次加上35,得到18,53,88,…
5.在第4步得到的一列数中找出最小的满足除以3余2的正整数:53.
例4 解 根据上述分析,可以通过下列步骤求得方程的近似解:
设f(x)=x3+x2-1,
1.因为f(0)=-1,f(1)=1,f(0)·f(1)<0,则区间[0,1]为有解区间;
2.取[0,1]的区间中点0.5;
3.计算f(0.5)=-0.625;
4.由于f(0.5)·f(1)<0,可得新的有解区间[0.5,1],
1-0.5=0.5>0.1;
5.取[0.5,1]的区间中点0.75;
6.计算f(0.75)=-0.015 625;
7.由于f(0.75)·f(1)<0,可得新的有解区间[0.75,1],
1-0.75=0.25>0.1;
8.取[0.75,1]的区间中点0.875;
9.计算f(0.875)=0.435 546 875;
10.由于f(0.75)·f(0.875)<0,可得新的有解区间[0.75,0.875],0.875-0.75=0.125>0.1;
11.取[0.75,0.875]的区间中点0.812 5;
12.计算f(0.812 5)=0.196 533 203 125;
13.由于f(0.75)·f(0.812 5)<0,可得新的有解区间[0.75,0.812 5],0.812 5-0.75=0.062 5<0.1.
所以,区间[0.75,0.812 5]中的任一数值,都可以作为方程的近似解.
跟踪训练4 解 1.因为f(1)=-1,f(2)=2,f(1)·f(2)<0,则区间[1,2]为有解区间,精度2-1=1>0.05;
2.取[1,2]的中点1.5;
3.计算f(1.5)=0.25;
4.由于f(1)·f(1.5)<0,可得新的有解区间[1,1.5],精度1.5-1=0.5>0.05;
5.取[1,1.5]的中点1.25;
6.计算f(1.25)=-0.437 5;
7.由于f(1.25)·f(1.5)<0,可得新的有解区间[1.25,1.5],精度1.5-1.25=0.25>0.05;
…当得到新的有解区间[1.406 25,1.437 5]时,
由于|1.437 5-1.406 25|=0.031 25<0.05,
该区间精度已满足要求,所以取区间[1.406 25,1.437 5]的任一数值,都可以作为方程的一个近似解.
当堂训练
1.C 2.D 3.(3) 4.(2)(1)(3)
2.1 顺序结构与选择结构
学习目标 1.掌握算法框图的概念.2.熟悉各种程序框的功能和作用.3.会判断顺序结构和选择结构,能用两种结构表示算法.
知识点一 算法框图
思考 许多办事机构都有工作流程图,你觉得要向来办事的人员解释工作流程,是用自然语言好,还是用流程图好?
梳理 在算法设计中,算法框图(也叫程序框图)可以________、________、直观地表达解决问题的思路和步骤.
算法框图由框图构成,以下是基本的框图及其表示的功能
框图
功能
终端框(起止框)
表示一个算法的____________
输入、输出框
表示一个算法____________的信息
处理框
判断框
判断某一条件是否成立
知识点二 顺序结构
顺序结构描述的是最简单的算法结构,语句与语句之间,框与框之间按____________的顺序进行.
结构形式如图:
知识点三 选择结构
思考 我们经常需要处理分类讨论的问题,顺序结构能否完成这一任务?为什么?
梳理 选择结构是依据指定条件____________________的控制结构,它包含一个判断框,根据指定的条件是否成立而选择不同的路径,请注意无论条件成立与否,只能执行________路径.在算法的流程中,需要对条件进行判断,判断的结果决定后面的步骤,像这样的结构通常称作选择结构.
其结构形式如图:
类型一 把自然语言描述的算法翻译成算法框图
例1 已知一个算法如下:
第一步,输入x.
第二步,计算y=2x+3.
第三步,计算d=.
第四步,输出d.
把上述算法用算法框图表示.
反思与感悟 画算法框图的规则:
(1)使用标准的框图符号;
(2)框图一般按从上到下,从左到右的方向画;
(3)描述语言写在框内,语言清楚、简练.
跟踪训练1 算法如下,画出算法框图.
第一步,输入a,b,c的值-1,-2,3.
第二步,计算max=.
第三步,输出max.
类型二 顺序结构
例2 一个笼子里装有鸡和兔共m只,且鸡和兔共n只脚,设计一个计算鸡和兔各有多少只的算法,并画出算法框图.
反思与感悟 顺序结构的算法框图的基本特征:
(1)必须有两个起止框,穿插输入、输出框和处理框,没有判断框.
(2)各程序框从上到下用流程线依次连接.
(3)处理框按计算机执行顺序沿流程线依次排列.
跟踪训练2 已知一个三角形三条边的边长分别为a,b,c,利用海伦-秦九韶公式(令p=,则三角形的面积S=,设计一个计算三角形面积的算法,并画出算法框图.
类型三 用算法框图表示选择结构
例3 下面给出了一个问题的算法:
第一步,输入x.
第二步,若x>1,则y=x2+3,否则y=2x-1.
第三步,输出y.
试用算法框图表示该算法.
反思与感悟 凡是必须先根据条件作出判断然后再进行哪一个步骤的问题,在画算法框图时,必须引入一个判断框应用选择结构.
跟踪训练3 任意给定3个正实数,设计一个算法,判断以这3个正实数为三条边边长的三角形是否存在,并画出这个算法的算法框图.
1.框图中,具有赋值、计算功能的是( )
A.处理框 B.输入、输出框
C.终端框 D.判断框
2.下面框图输出的S表示________________.
3.下面四个问题中必须用选择结构才能实现的是_____________________________.
①已知梯形上、下底分别为a、b,高为h,求梯形面积;
②求方程ax+b=0(a,b为常数)的根;
③求三个数a,b,c中的最小数;
④求函数f(x)=的函数值.
4.如图所示的算法框图中,当输入的数为3时,输出的结果为________.
5.利用梯形的面积公式计算上底为2,下底为4,高为5的梯形面积,设计出该问题的算法及算法框图.
1.顺序结构描述的是最简单的算法结构,语句与语句之间、框与框之间是按从上到下的顺序进行的.
2.对需要按给定的条件进行分析、比较和判断,并按判断的不同情况进行不同的操作的问题,设计算法时就要用到选择结构.
3.选择结构要先根据指定的条件进行判断,再由判断的结果决定选取执行两条分支路径中的某一条.
答案精析
问题导学
知识点一
思考 使用流程图好.因为使用流程图表达更直观准确.
梳理
准确 清晰 起始和结束 输入和输出 赋值、计算
知识点二
从上到下
知识点三
思考 分类讨论是带有分支的逻辑结构,而顺序结构是一通到底的“直肠子”,所以不能表达分支结构,这就需要选择结构出场.
梳理
选择执行不同指令 一条
题型探究
例1 解 算法框图如图:
跟踪训练1 解 算法框图如图:
例2 解 算法分析:设鸡和兔分别有x,y只,
则有
解得x=.
算法:第一步,输入m,n.
第二步,计算鸡的只数x=.
第三步,计算兔的只数y=m-x.
第四步,输出x,y.
算法框图如图所示:
跟踪训练2 解 算法步骤如下:
第一步,输入三角形三条边的边长a,b,c.
第二步,计算p=.
第三步,计算S=.
第四步,输出S.
算法框图如图:
例3 解 主体用顺序结构,其中根据条件x>1是否成立选择不同的流向用选择结构实现.
算法框图如图:
跟踪训练3 解 算法步骤如下:
第一步,输入3个正实数a,b,c.
第二步,判断a+b>c,b+c>a,c+a>b是否同时成立.若是,则存在这样的三角形;否则,不存在这样的三角形.
算法框图如下图.
当堂训练
1.A 2.半径为5的圆的面积 3.②③④ 4.8
5.解 算法如下:
1.a=2,b=4,h=5;
2.S=(a+b)h;
3.输出S.
该算法的算法框图如图所示:
2.2 变量与赋值
学习目标 1.通过实例,理解并掌握变量和赋值的概念.2.掌握赋值号“=”的作用及与等号的区别.3.进一步体会算法的基本思想.
知识点一 变量
思考 在前面学过的算法案例中,我们已经注意到步骤要反复执行,但具体的数据却每步都在变,怎样解决步骤相同数据在变的问题?
梳理 常量与变量的概念
(1)在算法过程中,其值________________称为常量.
(2)在研究问题的过程中,可以取________________叫做变量,变量的名称一般要用一个或几个英文字母组成,或一个或几个英文字母后面跟着一个数字组成.
知识点二 赋值
思考 在算法框图中,常见“i=i+1”,它是什么意思?
梳理 一般地,有
(1)赋值:赋予一个变量一个值的过程.通常“____”为赋值符号.
(2)赋值语句的一般格式:____________.
(3)赋值语句的作用:先计算出赋值号____________的值,然后把这个值赋给赋值号____________,使该____________等于________的值.
(4)一个变量可以被多次赋值,这时的变量表现得就像一个黑瞎子,当新的值一来,旧的值就丢掉,它手里始终只能拿着最后一次赋给的值.
类型一 变量与赋值语句的应用
例1 若A,B是两个变量,先把1赋给A,把2赋给B,再交换A,B的值.
反思与感悟 可以把变量想像成一个盒子,这个盒子可以装不同的值,但一次只能装一个,所以要交换A,B的值,需要再找一个变量C,用来寄存A原来存放的值.
跟踪训练1 用赋值语句写出变量a,b,c分别为3,4,5,求b2-4ac的值的算法.
类型二 变量与赋值语句在算法框图中的应用
例2 经过市场调查分析得知,2015年第一季度内,某地区对某件商品的需求量为12 000件.为保证商品不脱销,商家在每月月初将商品按相同数量投放市场.已知年初商品的库存量为50 000件,用S表示商品的库存量,请设计一个算法,求出第一季度结束时商品的库存量,算法用框图表示.
反思与感悟 在算法框图中,对变量S进行了多次赋值,赋值的目的是改变变量S的值,将变量S上次的值减去4 000再次赋予变量S.
跟踪训练2 有关专家建议,在未来几年,中国的通货膨胀率保持在3%左右将对中国经济的稳定有利无害,所谓通货膨胀率为3%,指的是每年消费品的价格增长率为3%.在这种情形下,某种品牌的钢琴2015年的价格是20 000元,请用框图描述这种钢琴今后4年的价格变化情况,并输出4年后钢琴的价格.
1.给出下列算法框图:
若输出的结果为2,则①处的处理框内应填的是( )
A.x=2 B.b=2
C.x=1 D.a=5
2.如图所示的算法框图输出的结果为( )
A.2,5 B.4,5
C.11,5 D.7,5
3.下列赋值语句正确的是( )
A.a+b=5 B.5=a
C.a=b=2 D.a=a+1
4.所给算法语句执行后,变量a,b的值分别为( )
a=15
b=20
a=a+b
b=a-b
a=a-b
输出 a,b.
A.20,15 B.35,35
C.5,5 D.-5,-5
1.赋值语句是最重要的一种基本语句,一定要注意其格式要求,如:赋值号左边只能是变量而不能是表达式;赋值号左右两边不能对换;不能利用赋值语句进行代数式计算等.
2.利用赋值语句可以实现两个变量值的互换,方法是引进第三个变量,用三个赋值语句完成.
答案精析
问题导学
知识点一
思考 引入常量和变量的概念,这样就可以把多个重复的步骤变为可以反复执行的一个步骤.
梳理
(1)不能被改变的量 (2)不同数值的量
知识点二
思考 它表示先计算等号右边“i+1”的值,再把这个值赋给等号左边的变量.
梳理
(1)= (2)变量=表达式 (3)右边表达式 左边的变量 变量的值 表达式
题型探究
例1 解 A=1;B=2;C=A;A=B;B=C.
跟踪训练1 解 算法如下:
a=3;
b=4;
c=5;
y=b2-4ac;
输出y.
例2 解 因为第一季度商品的需求量为12 000件,而且每个月以相同数量投放市场,因此每个月向市场投放4 000件商品,这样,三个月后的库存量为50 000-12 000=38 000件.
算法框图如图:
跟踪训练2 解 算法框图如图:
当堂训练
1.C 2.C 3.D 4.A
2.3 循环结构
学习目标 1.理解循环结构的概念.2.掌握循环结构的三要素:循环变量、循环体、循环的终止条件.3.能识别和理解循环结构的框图以及功能.4.能运用循环结构设计算法框图以解决简单的问题.
知识点 循环结构
思考 前面我们曾用累加法计算1+2+3+…+100的值,其中有没有重复操作的步骤?
梳理
1.循环结构的概念
在一些算法中,经常会出现从某处开始,按照一定条件,____________某一处理步骤的情况,像这样的算法结构称为循环结构.
循环体:________________________称为循环体.
循环变量:________________________的变量,称为循环变量.
循环的终止条件:________________________的条件,称为循环的终止条件.
2.循环结构的设计过程
设计循环结构之前需要确定的三件事:
(1)确定循环变量和____________;
(2)确定算法中____________的部分,即循环体;
(3)确定循环的________条件.
类型一 循环结构的概念
例1 阅读下图所示的框图,回答下列问题:
(1)变量y在这个算法中的作用是什么?
(2)这个算法的循环体是哪一部分,功能是什么?
(3)这个算法的处理功能是什么?
反思与感悟 循环结构的三要素:
循环变量,循环体,循环的终止条件.
跟踪训练1 1+2+3+…+100的算法框图如下,
指出它的循环变量、初始值及循环的终止条件.
类型二 循环结构的设计
例2 设计一个计算1+3+5+…+(2n-1)(n∈N+)的值的算法,并画出算法框图.
反思与感悟 此例中循环变量为i,但它并不是逐次加1,而是加2,设计者可以根据需要灵活控制循环变量的变化幅度.
跟踪训练2 请设计一个求100个数中的最大数的算法框图.
类型三 循环结构的应用
例3 电脑游戏中,“主角”的生命机会往往被预先设定,如其枪战游戏中,“主角”被设定生命机会5次,每次生命承受射击8枪(被击中8枪则失去一次生命机会).假设射击过程均为单发发射,试将“主角”耗用生命机会的过程设计成一个算法框图.
跟踪训练3 在某次田径比赛中,男子100米A组有8位选手参加预赛,成绩(单位:秒)依次为:9.88,10.57,10.63,9.90,9.85,9.98,10.21,10.86.请设计一个算法,在这些成绩中找出不超过9.90秒的成绩,并画出算法框图.
1.给出下面的算法框图,那么其循环体执行的次数是( )
A.500 B.499 C.1 000 D.998
2.下面4种说法中正确的是( )
①任何一个算法都离不开顺序结构;
②算法框图中,根据条件是否成立有不同的流向;
③任何一个算法都必须同时含有三种基本结构;
④循环结构中必须有选择结构,选择结构中也一定有循环结构.
A.①② B.①③
C.①②④ D.②③
3.现有欧几里得算法框图如图所示,若取A=10,B=3,则打印出的答案B为( )
A.2 B.6 C.16 D.1
4.如图所示,算法框图的输出结果是( )
A. B. C. D.
1.用循环结构来描述算法时,要事先确定三件事:
(1)确定循环变量和初始条件.
(2)确定算法中反复执行的循环体.
(3)确定循环的终止条件.
2.选择结构与循环结构的区别和联系:
选择结构是根据条件是否成立决定有不同的流向,循环结构是根据条件决定是否重复执行一条或多条指令.循环结构一定要在某个条件下跳出循环,这就需要选择结构来判断.因此,循环结构一定包含选择结构.
答案精析
问题导学
知识点
思考 用S表示每一步的计算结果,S加下一个数得到一个新的S,这个步骤被重复了100次.
梳理
1.反复执行 反复执行的处理步骤 控制着循环的开始和结束
判断是否继续执行循环体 2.(1)初始条件 (2)反复执行
(3)终止
题型探究
例1 解 (1)变量y是循环变量,控制着循环的开始和结束;
(2)框图中的第②部分是循环体,其功能是判断年份y是不是闰年,并输出结果;
(3)由前面的分析,我们知道,这个算法的处理功能是判断2000~2500(包括2500)年中,哪些年份是闰年,哪些年份不是闰年,并输出结果.
跟踪训练1 解 循环变量为i,i的初始值为1,循环的终止条件为i>100.
例2 解 这一问题的算法:
第一步,输入n的值.
第二步,令i=1,S=0.
第三步,若i≤2n-1成立,则执行第四步;否则,输出S,结束算法.
第四步,S=S+i,i=i+2,返回第三步.
算法框图如下:
跟踪训练2 解 算法框图如图:
例3 解 方法一 “主角”所有生命机会共能承受8×5=40(枪)(第40枪被击中则生命结束).设“主角”被击中枪数为i(i=0,1,2,…,39),算法框图可设计为如图1.
方法二 与方法一相对,电脑中预先共承受枪数40,“主角”生命机会以“减法”计数,算法框图可设计为如图2.
跟踪训练3 解 算法步骤如下:
1.把计数变量n的初值设为1.
2.输入一个成绩x,判断x与9.90的大小:若x>9.90,则执行下一步;若x≤9.90,则输出x,并执行下一步.
3.使计数变量n的值增加1.
4.判断计数变量n的值与成绩个数8的大小,若n≤8,则返回第2步,否则结束.
算法框图如图所示.
当堂训练
1.B [本题中循环的结束条件是i≥1 000,而计数变量是i=i+2,由于计数变量的初始值是i=2,所以计数变量应该为4,6,8,10,…,1 000,故循环体执行的次数为499.]
2.A [本题可以从算法框图及三种基本结构的结构形式的特点入手,仔细分析每一句话,并注意概念间的异同点.]
3.D [根据算法框图,当A=10,B=3时,用3除10余1,此时C=1≠0,继续执行循环,用1除3余0,此时A=3,B=1,C=0,由于C=0执行最后一框,停止计算并打印出答案B=1,故选D.]
4.D [赋值S=0,n=2
进入循环体:检验n=2<8,
S=0+=,n=2+2=4;
检验n<8,
S=+=,n=4+2=6;
检验n<8,
S=+=,
n=6+2=8,
检验n=8,脱离循环体,
输出S=.]
3.1 条件语句
学习目标 1.掌握条件语句的含义、格式.2.会利用条件语句将具体问题的框图转化为算法语句.3.会利用条件语句解决实际生活中的应用问题.
知识点一 程序语言
思考 为什么要在数学课上学程序语言?
梳理 程序语言的种类很多,但所有语言都要使用的语句有__________语句、__________语句、________语句、________语句和________语句.
知识点二 条件语句
思考 对于选择结构的算法或算法框图,要转化为计算机能够理解的算法语言,使用输入、输出和赋值语句还行吗?需要用怎样的语句?
梳理 条件语句的一般格式
If 条件 Then
语句1
Else
语句2
End If
类型一 选择结构翻译成条件语句
例1 用条件语句表示分段函数y=
反思与感悟 当计算机执行条件语句时,首先对If后的条件进行判断,如果(If)条件符合,那么(Then)执行语句1,否则(Else)执行语句2.
跟踪训练1 写出求实数x的绝对值的一个算法,画出算法框图并写出算法对应的语句.
类型二 条件语句的应用
例2 在音乐唱片超市里,每张唱片售价25元.顾客如果购买5张以上(含5张)唱片,则按照九折收费;如果顾客购买10张以上(含10张)唱片,则按照八五折收费.请用语句描述完成计费工作的算法,画出算法框图并写出对应的语句.
反思与感悟 先建立数学模型,再画出算法框图,根据算法框图就比较容易写出算法语句了.
跟踪训练2 已知某商店对顾客购买货款数满500元,减价3%,不足500元不予优惠,输入一顾客购物的货款数,计算出这个顾客实交的货款,画出算法框图,写出算法语句.
类型三 条件语句的复合
例3 已知分段函数y=编写算法语句,要求输入自变量x的值,输出相应的函数值,并画出算法框图.
反思与感悟 1.适用范围:已知分段函数的解析式求函数值的问题,须用条件语句书写算法语句,当条件的判断有两个以上的结果时,可以选择条件语句的复合去解决.
2.解此类问题的步骤:
(1)构思出解决问题的一个算法(可用自然语言).
(2)画出算法框图,形象直观地描述算法.
(3)根据框图编写语句,即逐步把框图中的算法步骤用算法语句表达出来.
跟踪训练3 已知函数f(x)=试编写算法语句,根据输入的x值输出对应的y值.
1.以下关于条件语句的说法,正确的是( )
A.条件语句的执行是按照程序中的先后顺序执行的
B.条件语句实现了算法框图中的选择结构
C.条件语句中不能再使用条件语句
D.条件语句一定要完整,即If-Then-Else-End If中每一部分都不能少
2.给出以下问题:
①输入一个数x,输出它的相反数;
②求周长为8的正方形的面积;
③求三个数a,b,c中的最小值;
④求分段函数f(x)的函数值.
其中不需要用条件语句来描述其算法的有( )
A.①② B.②③ C.③④ D.①③
3.给出以下算法语句:
输入x1,x2;
If x1=x2 Then
x1=x1+x2
End If
y=x1+x2
输出y.
如果输入x1=2,x2=3,那么执行此算法语句的结果是输出( )
A.7 B.10 C.5 D.8
4.写出下面所示的算法语句表示的函数:____________.
输入x;
If x<=6 Then
y=3*x+2
Else
y=x+2 006
End If
输出y.
5.将下列算法语句补充完整.
(1)输入两个数、输出其中较大的一个数;
(2)判断输入任意数x的奇偶性.
输入a,b
If a>b Then
输出 a
Else
End If
(1)
输入x
m=x Mod 2
If Then
输出 x是奇数
Else, 输出 x是偶数
End If
(2)
使用条件语句时应注意的问题
(1)条件语句是一个语句,If,Then,Else,End If都是语句的一部分.
(2)条件语句必须是以If开始,以End If结束,一个If必须与一个End If相对应.
(3)如果程序中只需对条件为真的情况作出处理,不用处理条件为假的情况时,Else分支可以省略,此时条件语句就由双支变为单支.
(4)为了程序的可读性,一般If、Else与End If顶格书写,其他的语句体前面则空两格.
答案精析
问题导学
知识点一
思考 现代算法主要在计算机上实现,学习程序语言可以增强人机交流,便于检验修改算法、理解算法思想.
梳理
输入 输出 赋值 条件 循环
知识点二
思考 不行,要用与选择结构相适应的条件语句.
题型探究
例1 解 可以用条件语句表示如下:
If x<=2.5 Then
y=x*x+1
Else
y=x*x-1
End If
跟踪训练1 解 算法步骤:
1.输入一个实数x;
2.判断x的符号,若x≥0,则输出x;否则,输出-x;
算法框图:
算法对应的语句:
输入x;
If x>=0 Then
输出 x
Else
输出 -x
End If
例2 解 假如用变量a表示顾客购买的唱片数,用变量C表示顾客要缴纳的金额,则这个算法可以表示为
(1)输入a.
(2)对a进行判断:
①若a<5,则C=25a;
②若5≤a<10,则C=22.5a;
③若a≥10,则C=21.25a.
(3)输出C.
算法框图如图所示:
算法对应的语句为
输入a;?
?If?a<5?Then??
C=25*a?
?Else??
?If?a<10?Then??
C=22.5*a?
?Else??
C=21.25*a?
End If??
?End If??
输出 C.
跟踪训练2 解 设购买货款数为x元,则顾客实际应交的货款y元为y=
即y=
所以,算法框图如图所示:
算法语句为
输入?x;?
?If?x>=500 ?Then??
y=0.97*x?
Else??
y=x?
End If?
输出?y.
例3 解 算法框图如图所示:
算法语句为
输入x;
If x<0 Then
y=-x+1
Else
If x=0 Then
y=0
Else
y=x+1
End If,End If
输出y.
跟踪训练3 解 算法语句如下:
输入x;?
?If?x>0?Then??
y=2*x*x-1?
?Else??
?If?x=0?Then??
y=2*x+1?
?Else??
y=(-2)*x*x+4?
?End If??
?End If??
输出y.
当堂训练
1.B 2.A 3.C
4.y=
5.(1)输出b (2)m≠0
3.2 循环语句
学习目标 1.理解两种结构的循环语句——For语句和Do Loop语句.2.掌握两种循环语句的一般形式并会应用.3.通过具体实例使学生明确两种循环语句的区别和联系.
知识点一 循环语句
思考 在算法框图中我们用选择结构来控制循环.在语句中怎样实现循环?
梳理 一般地,循环语句有两种,预先知道循环次数用________语句,不知道则用________语句.
知识点二 For语句
1.For语句适用范围
循环结构是算法中的基本结构,________是表达循环结构最常见的语句之一,它适用于________________的循环结构.
2.For语句的一般形式是
For循环变量=初始值To终值
循环体
________
知识点三 Do Loop语句
1.Do Loop语句适用范围
预先不知道循环次数的循环结构,一般用________语句来描述.
2.Do Loop语句的一般形式为
Do
循环体
______________
类型一 For语句
例1 结合教材图2-20中的框图,使用For语句描述输出菲波那契数列的前50项的算法.
反思与感悟 解决这类问题首先是确定循环变量的初始值和终止值,根据题意确定循环体,然后用For语句的形式对算法加以描述.
跟踪训练1 已知S=5+10+15+…+1 500,画出算法框图,用For语句写出算法.
例2 请阅读下列用For语句写出的算法,则该算法的处理功能为______________________.
S=0
T=1
For i=1 To 20
S=S+i
T=T*i
Next
输出 S
输出 T.
反思与感悟 阅读For语句关键是弄清循环变量的初始值、终止值和循环体.
循环变量、初始值、终止值分别为i、1、20.
循环体为
S=S+i;
T=T*i.
跟踪训练2 设计一个计算1++++…+的算法,并画出算法框图写出算法语句.
类型二 Do Loop语句
例3 计算1+2+3+…+100的值有如下算法:
1.令i=1,S=0.
2.计算S+i,仍用S表示.
3.计算i+1,仍用i表示.
4.判断i≤100是否成立.若是,则返回第二步;否则,输出S,结束算法.
请利用Do Loop语句写出这个算法对应的语句.
反思与感悟 用Do Loop语句写算法时,要注意Loop While后面的条件,只要条件为真就执行循环体.
跟踪训练3 根据下面的算法语句,绘制算法框图,指出输出的最后结果是什么?并将它改为另一种循环语句.
S=0
For i=3 To 99
S=S+i3
i=i+2
Next
输出S.
1.关于Do Loop循环语句叙述正确的是( )
A.至少执行循环体一次
B.执行一次循环体
C.满足条件时执行循环体
D.遇到Do Loop就结束
2.根据下面语句判断输出结果为( )
i=1
S=0
Do
S=S+i
i=i+1
Loop While S<20
输出 i.
A.6 B.7 C.8 D.9
3.下列算法语句输出的结果是( )
i=1
S=0
Do
S=S*2+1
i=i+1
Loop While i<=4
输出S.
A.3 B.7 C.15 D.19
4.请阅读下面用For语句给出的算法,画出算法框图并说明该算法的处理功能.
S=0
For i=1 To 20 Step 2
S=S+i
Next
输出 S.
1.For语句适用于预先知道循环次数的循环结构,而不知循环次数的循环结构用Do Loop语句.
2.当计算机执行For语句时,一般先执行一次循环体,当循环变量在初始值与终止值之间时,执行循环体;当循环变量超过终止值时,不再执行循环体,跳出循环体执行后面的语句.
计算机执行Do Loop语句,先执行一次循环体,若符合条件,继续执行循环体;当不符合条件时,跳出循环,执行Loop While后的语句.
3.一般情况下,For语句可以改成Do Loop语句,而Do Loop语句不一定能改成For语句.
答案精析
问题导学
知识点一
思考 使用循环语句.
梳理
For Do Loop
知识点二
1.For语句 预先知道循环次数
2.Next
知识点三
1.Do Loop
2.Loop While条件为真
题型探究
例1 解
f1=0
f2=1
输出“菲波那契数列为”
f1
f2
For i=3 To 50
f3=f1+f2
输出f3
f1=f2
f2=f3
Next
跟踪训练1 解 算法框图如图所示:
从算法框图可以看出是一个循环结构,我们可以运用循环语句来实现.
S=0
For i=5 To 1 500
S=S+i
i=i+5
Next
输出S.
或
S=0
For i=5 To 1 500 Step 5
S=S+i
Next
输出S.
例2 求和S=1+2+3+…+20及求积T=1×2×3×…×20
跟踪训练2 解 原式=1++++…+,计数变量在指数位置上,累积变量与计数变量的初始值都可看作1,利用循环结构设计算法.
算法如下:
(1) S=1;
(2) i=1;
(3) S=S+;
(4) i=i+1;
(5) 如果i≤20,则返回(3),重新执行(3)、(4)、(5),否则输出S.
语句如下:
S=1
For i=1 To 20
S=S+1/?3i?
Next
输出S.
相应算法框图如图所示:
例3 解 语句如下:
i=1
S=0
Do
S=S+i
i=i+1
Loop While i<=100
输出S.
跟踪训练3 解 算法语句对应的算法框图如图所示,它用的是“For”语句,最终输出的结果是33+53+…+993,
算法框图如图所示:
或
利用“Do Loop语句”可以改为
S=0
i=3
Do
S=S+i3
i=i+2
Loop While i<=99
当堂训练
1.A
2.B [前6次循环后,S的值分别为1,3,6,10,15,21,因21>20,要输出i,此时i是加1后的值为7.]
3.C [由算法语句可知,该循环体共循环4次,分别为S=2×0+1=1,S=2×1+1=3,S=2×3+1=7,S=2×7+1=15.]
4.解 算法的框图如图所示,因此,这个算法实际上处理的是求和S=1+3+5+7+9+11+13+15+17+19.
第二章 算法初步
学习目标 1.提高把具体问题的求解转化为算法步骤的能力.2.能正确选择并运用三种逻辑结构框图表示具体问题的算法.3.提高读图能力.
知识点一 三种逻辑结构
思考1 我们先后学了三种逻辑结构,你能简述一下什么时候会用到它们吗?
思考2 循环结构是个难点.你认为循环结构的关键在哪里?需要注意些什么?
知识点二 用算法框图表示算法
设计一个算法的算法框图通常要经过以下步骤:
第一步,用____________表述算法步骤.
第二步,确定每一个算法步骤所包含的逻辑结构,并用相应的________表示,得到该步骤的算法框图.
第三步,将所有步骤的框图用________连接起来,并加上终端框,得到表示整个算法的算法框图.
类型一 算法的设计
例1 已知函数y=试设计一个算法,输入x的值,求对应的函数值.
反思与感悟 设计一个具体问题的算法,通常按以下步骤:
(1)认真分析问题,找出解决此题的一般数学方法;
(2)借助有关变量或参数对算法加以表述;
(3)将解决问题的过程划分为若干步骤;
(4)用简练的语言将这个步骤表示出来.
跟踪训练1 已知函数y=试设计一个算法,输入x的值,求对应的函数值.
类型二 画算法框图
例2 设计求1×2×3×4×…×2 013×2 014的值的算法,并画出算法框图.
反思与感悟 算法要求指令明确,在有限步内解决问题,故用自然语言设计算法时不能大而化之.一旦用自然语言表述出算法,转换为算法框图相对简单,但画时要用对框图,并尽量使主线在一条纵轴上,以增强算法框图的条理.
跟踪训练2 如图所示的算法框图的功能是____________________________________.
类型三 算法在生活中的应用
例3 以下是某次考试中某班15名同学的数学成绩:72,91,58,63,84,88,90,55,61,73,64,77,82,94,60,画出求80分以上的同学的平均分的算法框图.
反思与感悟 在循环结构中,要注意根据条件设置合理的计数变量、累加(乘)变量,同时条件的表述要恰当、准确.累加变量的初值一般为0,而累乘变量的初值一般为1.
跟踪训练3 乘坐火车时,可以托运货物.从甲地到乙地,规定每张火车客票托运费计算方法:行李质量不超过50 kg时按0.25元/kg;超过50 kg而不超过100 kg时,其超过部分按0.35元/kg;超过100 kg时,其超过部分按0.45元/kg.设计输入行李质量,计算出托运的费用的算法,并画出算法框图.
1.算法共有三种逻辑结构,即顺序结构、选择结构和循环结构,下列说法正确的是( )
A.一个算法只能含有一种逻辑结构
B.一个算法最多可以包含两种逻辑结构
C.一个算法必须含有上述三种逻辑结构
D.任何一个算法都离不开顺序结构
2.下列关于算法框图的描述中,正确的有( )
①对于一个算法来说,算法框图是唯一的;
②任何一个框图都必须有起止框;
③算法框图只有一个入口,也只有一个出口;
④输出框一定要在终止框前.
A.1个 B.2个
C.3个 D.4个
3.阅读如图所示的算法框图,运行相应的程序,则输出的S等于( )
A.14 B.30 C.20 D.55
4.执行如图所示的算法框图,若输出的结果为s=132,则判断框中应填( )
A.i≥10 B.i≥11
C.i≤11 D.i≥12
1.在一个问题中经常要进行多次判断,这就需要选择结构嵌套来进行解决.
2.算法问题经常涉及到与现实生活有关的题目,解答时,首先根据题意写出内含的表达式,选择适合的结构,设计算法框图,因此,解题的关键是写出函数解析式.
答案精析
问题导学
知识点一
思考1 (1)顺序结构每一个算法框图都有.
(2)当一个问题需要根据不同的条件选择不同的处理方法时,要用到选择结构;循环结构中必须有选择结构来控制循环.
(3)循环结构用于处理需要反复执行同一个算法的问题.
思考2 在循环结构中,关键是根据条件设置合理的计数变量、累加(乘)变量,需要注意的是控制循环的条件表述要恰当、准确.累加变量的初值一般为0,而累乘变量的初值一般为1.
知识点二
自然语言 框图 流程线
题型探究
例1 解 算法如下:
第一步,输入x的值.
第二步,当x≤-1时,计算y=-x2-1,否则执行第三步.
第三步,计算y=x3.
第四步,输出y.
跟踪训练1 解 算法如下:
第一步,输入x的值.
第二步,当x≤-1时,计算y=2x-1,否则执行第三步.
第三步,当x<2时,计算y=log2(x+1),否则执行第四步.
第四步,计算y=x2.
第五步,输出y.
例2 解 算法如下:
第一步,设M的值为1.
第二步,设i的值为2.
第三步,如果i≤2 014,则执行第四步,否则转去执行第六步.
第四步,计算M乘i,并将结果赋给M.
第五步,计算i加1,并将结果赋给i,转去执行第三步.
第六步,输出M的值并结束算法.
算法框图如图:
跟踪训练2 计算12-22+32-42+…+992-1002的值
解析 i=1,S=12;
i=2,S=12-22;
i=3,S=12-22+32;
i=4,S=12-22+32-42;
i=100,S=12-22+32-42+…+992-1002,i=100+1>100,终止循环,输出S.
故其功能是计算12-22+32-42+…+992-1002的值.
例3 解 算法框图如下:
跟踪训练3 解 设行李质量为x kg,应付运费为y元,则运费公式:
y=
整理得y=
算法步骤:
第一步,输入行李质量x.
第二步,当x≤50时,计算y=0.25x,否则,执行下一步.
第三步,当x≤100时,计算y=0.35x-5;否则,计算y=0.45x-15.
第四步,输出y.
算法框图:
当堂训练
1.D
2.B [②、③正确,对于一个算法来说,算法框图不唯一,与设计有关,故①错.输入、输出的位置,不一定在开始和结束处,故④错.]
3.B [由算法框图知:第一次循环,S=1,i=1+1=2,不满足条件i>4,继续循环;
第二次循环,S=1+4=5,i=2+1=3,不满足条件i>4,继续循环;
第三次循环,S=5+9=14,i=3+1=4,不满足条件i>4,继续循环;
第四次循环,S=14+16=30,i=4+1=5,满足条件i>4,终止循环,输出S=30,故选B.]
4.B [由题意可知,s为从12开始的逐渐减小的若干个整数的乘积,
由于12×11=132,故需要执行两次循环体.
初始条件:s=1,i=12;第一次循环:s=12,i=11;第二次循环:s=132,i=10.
由于i的值为10时,应该退出循环体,故B符合题意,故选B.]
第二章 算法初步
1 算法概念的诠释
同学们也许对算法这个概念很陌生,但其实大家在日常生活中已经接触过很多算法了,广义地说,算法就是做某一件事情的步骤或程序.菜谱是做菜肴的“算法”,洗衣机的使用说明书是操作洗衣机的“算法”.每个算法都闪耀着人类的智慧,阅读和学习这些东西会给我们带来一种难以用语言表达的满足感和快感.在以后的学习和工作中我们会不断从实际应用中了解和领会算法是如何解决各个领域的实际问题,推动人类文明的发展的.
一、算法的特征
1.确定性
算法中的每条运算规则必须是明确定义的、可行的,每一个步骤只能有一个确定的后继步骤,运行终止应得到问题的解答或指出问题没有解答.
2.有限性
一个算法必须保证在执行有限步后结束,至少不能出现无限循环或死循环.在此基础上越简洁越快越好.越简洁,占用内存越少,对设备的要求越基本;越快,这个意义就不用说了吧.比如一个计算对方导弹轨迹的算法,如果等你算出来,那边导弹已经落地了,那还有什么意义?
二、算法的思想
专业的事交给专业的人去做.普通人只要按专业人士给出的步骤一步一步地去完成,这就是算法的思想,即程序思想,你也可以理解为傻瓜化思想.另外,算法强调的是通性通法,即给出一个算法,实际上是给出了一种解决一类问题的方法.比如你给出一个计算圆的面积的算法,它应该能计算各种半径的圆的面积,而不是只适用于半径为某一具体数的圆.
三、特别提示
1.算法中的每一步应该是确定的并且能够有效地执行且得到确定的结果,而不应当模棱两可,如求的近似值却没有要求近似的精确度,则该问题不能求解.
2.现代算法主要是面向计算机的,如果算法中没有输出,程序也能运行 ,但是运行结果无法输出.如果想要得到结果,那就要有输出.
3.只要有公式可以利用,利用公式解决问题是最理想、最简便的方法,比如在写解方程x2-3x-4=0的算法时,用求根公式来做,步骤则较为简洁.
4.求解某一个问题的算法一般不是唯一的,我们通常选择较为简单的算法.
四、典例分析
例1 已知一个等边三角形的周长为a,求这个三角形的面积,设计一个算法解决这个问题.
分析 对于已知等边三角形的边长求面积的题目同学们已经很熟悉,回顾其中的解题过程不难得到这个问题的算法步骤.但学会清晰条理地表达自己的想法,也是一个基本的要求.
解 算法步骤如下:
第一步,输入a的值.
第二步,计算l=的值.
第三步,计算S=×l2的值.
第四步,输出S的值.
例2 下面给出了一个问题的算法:
第一步,输入x.
第二步,若x≥4,则执行第三步,否则执行第四步.
第三步,输出2x-1.
第四步,输出x2-2x+3.
这个算法解决的问题是什么?
分析 依据题目给出的算法步骤依次执行,是读懂算法的一个重要而基本的办法.
解 这个算法先是输入一个变量x,当x≥4时输出2x-1,当x<4时输出x2-2x+3,不难发现这个算法解决的问题是求分段函数f(x)=的函数值.
2 典型算法举例
1.解方程(方程组)、不等式的算法
例1 用自然语言描述求一元二次方程ax2+bx+c=0的根的算法.
思维切入 对于求方程的根,解方程组这样的数值型的问题,我们都有具体的计算方法,只要我们把平时的计算方法严格地按步骤描述出来即可.因此我们很容易得到下面的算法.
解 用自然语言来描述算法,
第一步,计算Δ=b2-4ac;
第二步,如果Δ<0,则原方程无实数解,输出“无实数解”;否则(Δ≥0)x1=,x2=,输出x1,x2的值.
点评 第二步中包含了一个判断Δ=b2-4ac是否小于零的条件,并根据判断结果进行不同的处理.算法是否“健壮”,也是衡量算法优劣的重要指标.如果思维不严谨,比如这个算法忘记考虑Δ=b2-4ac小于零的情形,实际运算一旦遇到,则会导致不是出错就是死机,那这个算法就是不“健壮”的.
例2 写出解x2-4x+3<0的算法.
思维切入 只要把平时的固定解法有条理地写出来,即为解不等式的算法.
解 第一步,求出对应方程的根x1=1,x2=3;
第二步,确定根的大小x1第三步,写出解集{x|12.套用公式求值的算法
例3 已知摄氏温度C与华氏温度F的关系是F=C×+32,写出由摄氏温度求华氏温度的算法.
思维切入 这是一个函数求值问题,给C赋值再代入解析式求F.
解 第一步,输入摄氏温度C;
第二步,代入F=C×+32;
第三步,输出华氏温度F.
点评 平时计算我们只注重第二步,其他步骤往往忽略了,算法却讲究“按部就班”,这类问题的算法一般分为三步:第一步输入值,第二步套用公式,第三步输出结果.
3.判断性质型问题的算法
例4 试描述判断圆(x-a)2+(y-b)2=r2和直线Ax+By+C=0位置关系的算法.
思维切入 直线与圆的关系有三种:相离、相切、相交,如果圆心到直线的距离d>r,则直线与圆相离,d=r则直线与圆相切,d解 第一步,输入圆心的坐标、直线方程的系数和半径r;
第二步,计算z1=Ax0+By0+C;
第三步,计算z2=A2+B2;
第四步,计算d=;
第五步,如果d>r则相离,如果d=r则相切,如果d点评 算法要求分解成简单计算,不要直接计算d=.一个比较大的程序,会分成若干模块,一个模块出了问题只需要修改这一个模块,而不需要全盘翻工.
4.累加、累乘问题的算法
例5 用自然语言描述求解mul=1×2×3×4×5×6问题的算法.
思维切入 根据算法的特点,我们学过的加、减、乘、除运算法则都是算法,只要按照具体的规则有步骤地描述过程,便有了该题的算法.
解 第一步,计算1×2,得2;
第二步,将第一步中的运算结果2与3相乘得6;
第三步,将第二步中的运算结果6与4相乘得24;
第四步,将第三步中的运算结果24与5相乘得120;
第五步,将第四步中的运算结果120与6相乘得720.
点评 如果让人一步一步地做,太枯燥了.但这恰好是计算机的优势.所以算法好不好,还分让谁来执行,对人来讲是奇笨无比的办法,对计算机却可能是一个好办法.
思维拓展 该算法包含一个重复操作的过程是循环结构,我们可将算法改造得更为简练、科学.
解 第一步,设i=1,P=1;
第二步,如果i≤6执行第三步,否则执行第五步;
第三步,计算P×i并将结果代替P;
第四步,将i+1代替i,转去执行第二步;
第五步,输出P.
点评 i称为计数变量,每一次循环它的值增加1,由1变到6,P是一个累乘变量,每一次循环得到一个新的结果,然后新的结果代替原值.
3 算法框图画法全知晓
一、画算法框图的基本步骤
第一步,设计算法,因为算法的设计是画算法框图的基础,所以画算法框图前,首先写出相应的算法步骤,并分析算法需要用哪种基本逻辑结构(顺序结构、选择结构、循环结构)完成.
第二步,把算法步骤转化为对应的算法框图,在这种转化过程中往往需要考虑很多细节,是一个将算法“细化”的过程.
第三步,将所有步骤的算法框图用流程线连接起来,并加上终端框,得到整个表示算法的算法框图.
二、画算法框图的规则
1.使用标准的框图符号.
2.框图一般按从上到下、从左到右的方向来画.
3.除判断框外,大多数框图符号只有一个进入点和一个退出点,判断框是唯一具有超过一个退出点的符号.
4.在图形符号内描述的语言要简练清楚.
三、典例分析
1.顺序结构
顺序结构是最简单的算法结构,是任何一个算法都离不开的结构.若一个算法由若干个依次执行的步骤组成,则在画算法框图时,可直接由顺序结构完成.因为在其他的结构中都会涉及到顺序结构,所以关于顺序结构的画法,在此不再单独叙述.
2.选择结构
设计算法框图时,若是分段函数或执行时需要先判断才能执行的问题,则需要用到判断框,引入选择结构.
例1 如图,在边长为4的正方形ABCD的边上有一点P,沿着BCDA的方向由点B向点A运动,设点P运动的路程为x(0分析 随着点P的位置不同,△APB的面积与路程x有不同的对应关系,所以需要先判断点P的位置,这就需要用到选择结构,先根据题意写出算法,再根据算法画出算法框图.即
第一步,按照题意,y与x的关系满足分段函数:
y=
第二步,用合适的含选择结构的算法框图表示该分段函数.
解 算法框图如图所示.
点评 该题中的分段函数是分三段的函数,需引入两个判断框.至于判断框的内容是没有顺序的,但与下一图形的内容或操作必须相互对应.同时,在画算法框图时,要特别注意图形符号的规范性.
3.循环结构
如果问题中进行了重复的运算,且有相同的规律,就可根据需要引入相关变量,利用这些规律组成一个循环体,用循环结构来解决.
例2 某机械厂为增加产值进行了技术革新.据统计2009年的生产总值为500万元,技术革新后预计每年的生产总值比上一年增加5%,问最早要到哪一年生产总值才能超过600万元,试用算法框图表示.
分析 用变量n,a分别表示所经过的年数和生产总值的数量,注意变量的初始值以及递加的值是多少.由题意知第n年后的生产总值为a=500(1+0.05)n,此时为(2009+n)年.由于题中进行了重复的运算,故应引入循环结构.
解 算法框图如图所示.
4 例说选择结构
选择结构是三种基本逻辑结构之一,可以解决一些含有条件判断的算法问题,如分段函数求值问题、比较大小问题、分类讨论问题和一些实际问题等.下面就其应用略举两例,供同学们学习时参考.
一、分段函数求值问题
例1 已知函数y=请设计算法框图,要求输入自变量x,输出函数值y.
分析 输入自变量x的值,首先判断x与0的大小关系,再代入相应的表达式求函数值.
解 算法框图如图.
点评 求分段函数的函数值,需先判断再执行步骤,需要引入选择结构.在使用选择结构时,要注意判断条件的设定不重不漏,确保各种可能的判断值有正确、唯一的流向.
二、实际应用问题
例2 邮政电子汇款单笔最高限额为1万元,每笔汇款的资费标准为汇款金额的1%,最低收费为2元,最高收费为50元.试编写一算法框图求出当汇款x (0分析 由题意分析,当x≤200时,应交纳资费2元,当x≥5 000时,应交纳资费50元,所以引入选择结构,200和5 000是两个分段点.
解 算法框图如图.
点评 很多在一些需要判断的实际问题,比如水电费,纳税额,结构工资,身体各项指标是否正常等,一般都会用到选择结构,在设计算法框图时,可先根据题意,设计算法,再根据算法画出算法框图.
5 循环结构的应用
在循环结构中,经常会出现两个变量:计数变量和累计变量.计数变量往往出现在循环结构中,起到循环计数的作用,这个变量一般出现在执行或终止循环体的条件中;而累计变量用于输出结果,往往与计数变量同步执行,一般有累加与累乘两种.下面举例说明循环结构的应用.
一、求和或求积问题
例1 设计两个求1+3+5+…+2 011的值的算法的算法框图.
分析 本题是一个累加问题,由于加数较多,采用逐一相加的思路不可取,引入变量,应用循环结构解决:(1)设一个循环变量为i,初始值为1;再设一个累加变量为S,初始值为0.(2)循环体为S=S+i,i=i+2.(3)终止条件为i>2 011.
解 两种方法:算法框图如图1和如图2所示.
点评 涉及求多项的和与积的算法框图要用到循环结构和选择结构.画图时要注意循环变量的初始值、终值以及循环变量的增量在程序中的作用.本题代表了一类相邻两个数的差为常数的求和问题的解法,在设计算法框图时要注意前后两个加数相差2,此时计数变量不是i=i+1,而是i=i+2,要根据题意灵活地改变算法中的相应部分.
二、叠加求值
例2 画出求式子(共9个3)的值的一个算法框图.
分析 本题是一个叠加问题,由于前后重复了多次相同的运算,所以应采用循环结构来设计算法,但利用循环结构实现算法需搞清初始值是什么.本题中初始值可设定为a1=,第一次循环得到a2=,第二次循环得到a3=,……,a9=,共循环了8次.
解 算法框图如图所示.
点评 如果算法问题里涉及的运算有许多重复的步骤,且数之间有相同的规律,那么可引入变量,应用循环结构.在循环结构中,要注意根据条件,设计合理的计数变量、累计变量,特别要注意条件的表述要恰当、精确,以免出现多一次循环或少一次循环的情况.
6 三种逻辑结构辨与析
算法中有三种逻辑结构,即顺序结构、选择结构、循环结构,同学们初学这三种结构,容易混淆.本文将这三种结构进行比较,希望同学们能深刻体会这三种结构的差异与共同点.
一、三种基本逻辑结构
顺序结构
按照语句的先后顺序,从上而下依次执行这些语句,该结构不具备控制流程的作用,是任何一个算法都离不开的基本结构.
选择结构
根据是否满足某种条件来选择程序的走向.当条件满足时,运行一个分支,不满足时,运行另一个分支.
循环结构
从某处开始,按照一定的条件,反复执行某一处理步骤的情况.用来处理一些进行反复操作的问题.
二、三种基本逻辑结构的共同特点
1.只有一个入口.
2.只有一个出口,注意一个菱形判断框有两个出口,而一个选择结构只有一个出口,不要将菱形框的出口和选择结构的出口混为一谈.
3.结构内的每一部分都有机会被执行到,即对每一个框来说都应当有一条从入口到出口的路径通过它,如图1中的A,没有一条从入口到出口的路径通过它,是不符合要求的算法框图.
4.结构内不存在死循环,即无终止的循环,如图2就是一个死循环,在算法框图中是不允许有死循环出现的.
三种基本结构的这些共同特点,也是检查一个算法框图或算法是否正确、合理的方法和试金石.
7 条件语句小聚
1.“If—Then”语句
“If—Then”语句的一般格式如下
If 条件 Then
语句
End If
对应的框图如图1所示
图1
计算机在执行“If—Then”语句时,首先对If后的条件进行判断,如果符合条件,就执行Then后面的语句,若不符合条件,则直接结束该条件语句,转而执行后面的语句.
2.“If—Then—Else”语句
“If—Then—Else”语句的一般格式如下
If 条件 Then
语句1
Else
语句2
End If
对应的框图如图2所示
图2
计算机在执行“If—Then—Else”语句时,首先对If后的条件进行判断,如果符合条件,则执行Then后面的“语句1”;若不符合条件,则执行Else后面的“语句2”.
3.条件语句“If—Then—Else”可以嵌套,其格式为
If 条件1 Then
语句1
Else
If 条件2 Then
语句2
Else
语句3
End If
End If
注意:使用条件语句时应注意以下几点:(1)条件语句必须以If语句开始,以End If语句结束,一个End If语句必须和一个If语句对应.(2)如果我们的程序只需对条件为真的情况作出处理,不需处理条件为假的情况,则条件语句省略Else,格式由If—Then—Else语句变成If—Then语句.
8 透析循环语句
两种循环语句
1.For语句的一般形式是
For循环变量=初始值To终值
循环体
Next
执行步骤:
当计算机执行For语句时,一般先执行一次循环体,当循环变量在初始值与终值之间时,执行循环体;当循环变量超过终值时,不再执行循环体,跳出循环体执行后面的语句.
2.Do Loop语句的一般形式是
Do
循环体
Loop While 条件为真
执行步骤:
计算机执行Do Loop语句,先执行一次循环体,若符合条件,继续执行循环体;当不符合条件时,跳出循环,执行Loop While后的语句.
9 算法在生活实际中的应用
数学来源于生活,服务于社会,数学与生活息息相关,数学是有用的,在生活中做一件事情的方法和步骤有多种,生活中的许多问题都可以用算法描述,用算法框图表达.下面请欣赏三例算法问题.
一、第29届奥林匹克运动会的申办
例1 北京成功举办了2008年第29届奥林匹克运动会.你知道在申办奥运会的最后阶段,国际奥委会是如何通过投票决定主办权归属的吗?对选出的5个申办城市进行表决的操作程序是首先进行第一轮投票,如果有一个城市得票数超过总票数的一半,那么该城市将获得举办权;如果所有申办城市的得票数都不超过总票数的一半,则将得票数最少的城市淘汰,然后重复上述过程,直到选出一个申办城市为止.请设计一个算法表述上面过程,并画出算法框图.
解 算法步骤如下:
第一步,投票;
第二步,统计票数,如果有一个城市得票数超过总票数的一半,那么该城市就获得主办权;否则淘汰得票数最少的城市,转第一步;
第三步,宣布主办城市.
算法框图如图所示:
点评 算法本身就是用计算机解决一些实际问题的方法,一定要充分理解算法的特点.
二、奖金的发放
例2 某科研所决定拿出一定量的资金对科研人员进行奖励,按照科研成果价值的大小决定奖励前10名.第1名得全部奖金的一半多1万元,第2名得剩余的奖金的一半多1万元,第3名再得剩余奖金的一半多1万元,以此类推,到第10名恰得奖金1万元,请设计一个算法语句求科研所最初拿出多少奖金进行奖励,并画出算法框图.
解 第10名的奖金额S1=1万元,第9名和第10名的总奖金额S2=(1+1)×2=4万元,第8名、第9名和第10名的总奖金额S3=(4+1)×2=10万元……总奖金额S10=(S9+1)×2,得递推公式S1=1,Sn+1=(Sn+1)×2,n=1,2,…,9.
算法语句:
S=1
i=1
Do
S=?S+1?*2
i=i+1
Loop While i<10
输出S.
算法框图如图所示:
三、李白酒壶中的酒
例3 李白是我国唐代的一位伟大诗人,平时很喜欢喝酒,有一首打油诗讲了李白买酒的一件趣事,“无事街上走,提壶去买酒,遇店加一倍,见花喝一斗,三遇店和花,喝光壶中酒.”问:李白的酒壶中原来有多少酒?请用算法解释,画出算法框图并写出算法语句.
解 通过逆向思考,李白遇到第三枝花时,壶中有1斗酒,遇到第三个店时,壶中有斗酒;遇到第二枝花时,壶中有1+=斗酒,遇到第二个店时,壶中有×=斗酒;遇到第一枝花时,壶中有1+=斗酒,遇到第一个店时,壶中有×=斗酒.
根据以上分析可得算法步骤如下:
第一步,S=0;
第二步,I=1;
第三步,S=;
第四步,I=I+1;
第五步,如果I>3,则输出S;否则,转第三步.
算法框图如图所示:
算法语句:
S=0
I=1
Do
S=?S+1?/2
I=I+1
Loop While I<=3
输出S.
第二章 算法初步
学习目标 1.加深对算法思想的理解.2.加强用算法框图清晰条理地表达算法的能力.3.进一步体会由自然语言到算法框图再到程序的逐渐精确的过程.
1.算法的概念
算法可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤,或看成按要求设计好的________、________计算序列,并且这样的步骤或序列能够解决____________.
2.算法框图
算法框图由__________组成, 按照________________用________将框图连接起来.结构可分为________结构、________结构和________结构.
3.算法语句
基本算法语句有________语句、________语句、________语句、________语句、________语句五种,它们对应于算法的三种逻辑结构:顺序结构、选择结构、循环结构.用基本语句编写程序时要注意各种语句的____________,条件语句应注意If与________________配套使用,缺一不可,而________可选;循环语句应注意____________的准确表达以及____________的步长设置.
类型一 算法设计
例1 已知平面直角坐标系中两点A(-1,0),B(3,2),写出求线段AB的垂直平分线方程的一个算法.
反思与感悟 算法设计应注意:
(1)与解决问题的一般方法有联系,从中提炼出算法;
(2)将解决问题的过程分为若干个可执行步骤;
(3)引入有关的参数或变量对算法步骤加以表达;
(4)用最简练的语言将各个步骤表达出来;
(5)算法的执行要在有限步内完成.
跟踪训练1 某工厂2014年生产小轿车200万辆,技术革新后预计每年的生产数量比上一年增加5%,问最早哪一年该厂生产的小轿车数量超过300万辆?写出解决该问题的一个算法.
类型二 算法框图及设计
例2 给出以下10个数:5,9,80,43,95,73,28,17,60,36.要求把大于40的数找出来并输出.试画出该问题的算法框图.
反思与感悟 算法的设计是画算法框图的基础,我们通过对问题的分析,写出相应的算法步骤.画算法框图之前应先对算法问题设计的合法性和合理性进行探讨,然后分析算法的逻辑结构和各步骤的功能(输入、输出、判断、赋值和计算),画出相应的算法框图.
跟踪训练2 阅读如图所示的算法框图,运行相应的程序,如果输入某个正整数n后,输出的s∈(10,20),那么n的值为( )
A.3 B.4 C.5 D.6
类型三 算法语句的设计
例3 给出30个数:1,2,4,7,…,其规律是:第1个数是1,第2个数比第1个数大1,第3个数比第2个数大2,第4个数比第3个数大3,依此类推,要计算第30个数的大小,现在已给出了该问题算法的算法框图(如图).
(1)请在图中判断框①处和执行框②处填上合适的语句,使之能完成该题算法功能;
(2)根据算法框图写出算法语句.
反思与感悟 用基本语句编写程序时要注意各种语句的格式要求,特别是条件语句和循环语句,应注意这两类语句中条件的表达以及循环语句中有关变量的取值范围.
跟踪训练3 某人用分期付款的方式购买一台价格为1 150元的冰箱,如果购买时先付150元,以后每月付50元,并加入上次余款利息,一个月后付第一个月的分期付款,若月利率为1%,购买冰箱的钱全部付清后,实际付出的款额是多少元?请编写一个算法语句解决这个问题.
1.二分法作为一个优秀算法, 有下列说法( )
①适用于求所有函数的零点;
②一定能在有限步内达到要求的精确度;
③每一步的指令都十分明确,只需按指令机械执行;
④能很方便地移植到计算机上执行,代替人完成枯燥的、重复的、烦琐的工作.
其中正确的说法有( )
A.①②③ B.①②④
C.①③④ D.②③④
2.根据如图所示的算法框图,要使得输出的结果在区间[-1,0]上,则输入的x可以是( )
A.2 B.3 C.5 D.6
3.若算法框图所给的运行结果为S=20,那么判断框中应填入的关于k的条件是( )
A.k=9 B.k≤8
C.k<8 D.k>8
4.计算机执行下面的程序段后,输出的结果是( )
a=1
b=3
a=a+b
b=a-b
输出 a,b
A.1,3 B.4,1
C.0,0 D.6,0
5.将下面的语句改编成Do Loop语句.
S=0
For i=1 To 1 000
S=S+i
Next
输出S.
1.算法往往是把问题的解法划分为若干个可执行的步骤,有些步骤甚至重复多次,但最终都必须在有限个步骤之内完成.
2.对算法框图的考查之一是程序的运行结果;考查之二是补全算法框图中的条件或循环体等.
3.算法设计和算法框图是程序设计的基础,编写程序的基本方法是“自上而下,逐步求精”.
答案精析
知识梳理
1.有限的 确切的 一类问题
2.框图 算法进行的顺序 流程线 顺序 选择 循环
3.输入 输出 赋值 条件 循环 格式要求 Then、End If Else 循环条件 循环变量
题型探究
例1 解 第一步,计算x0==1,y0==1,得AB的中点N(1,1).
第二步,计算k1==,得直线AB的斜率.
第三步,计算k=-=-2,得直线AB的垂直平分线的斜率.
第四步,由点斜式方程得直线AB的垂直平分线的方程,并输出.
跟踪训练1 解 算法如下:第一步,令n=1,a=200,r=0.05.
第二步,T=ar(计算年增量).第三步,a=a+T(计算年产量).
第四步,如果a≤300,那么n=n+1,返回第二步;否则执行第五步.
第五步,N=2 014+n.第六步,输出N.
例2 解 算法框图如下:
跟踪训练2 B [逐项验证.若n=3,输出s=7?(10,20).
若n=4,输出s=15∈(10,20),选B.]
例3 解 (1)①i≥30 ②P=P+i
(2)算法语句如下:
P=1
i=1
Do
P=P+i
i=i+1
Loop While i<30
输出 P.
跟踪训练3 解 购买时付款150元,余款1 000元,分20次分期付款,并且每次要加上余款的利息,可以看出每次付款数是这样一列数:ai=50+(21-i)×50×1%(i=1,2,…20).
算法语句如下:
m=1 000
S=0
i=1
Do
k=50+m*1%
S=S+k
m=1 000-50*i
i=i+1
Loop While i<=20
S=S+100
输出 S
当堂训练
1.D [二分法只适合求零点左右两侧函数值异号的零点,虽能解决一类问题,但不适合所有函数求零点.]
2.A [由算法框图可得输出值y=
若y∈[-1,0],则或
解得2≤x≤.]
3.D [据算法框图可得当k=9时,S=11;
k=8时,S=11+9=20.∴应填入“k>8”.]
4.B [由语句知a=1+3=4,b=4-3=1.]
5.解
i=1
S=0
Do
S=S+i
i=i+1
Loop While i<=1 000
输出S.