高三数学算法初步
- 格式:pdf
- 大小:594.88 KB
- 文档页数:9
高中数学必修3-算法初步精讲高中数学必修3-算法初步精讲§13.1 流程图一、知识导学1.流程图:是由一些图框和带箭头的流线组成的,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,带箭头的流线表示操作的先后次序.2.算法的三种基本的逻辑结构:顺序结构、条件结构、循环结构.3.根据对条件的不同处理,循环结构又分为两种:直到型(until型)循环:在执行了一次循环体之后,对控制循环条件进行判断,当条件不满足时执行循环体.满足则停止.如图13-1-3,先执行A框,再判断给定的条件p是否为“假”,若p为“假”,则再执行A,如此反复,直到p为“真”为止.当型(while型)循环:在每次执行循环体前对控制循环条件进行判断,当条件满足时执行循环体,不满足则停止.如图13-1-4,当给定的条件p成立(“真”)时,反复执行A框操作,直到条件p为“假”时才停止循环.图13-1-1 图13-1-2二、疑难知识1.“算法“没有一个精确化的定义,教科书只对它作了描述性说明,算法具有如下特点:(1)有限性:一个算法的步骤是有限的,必须在有限操作之后停止,不能是无限的.(2)确定性:算法的每一步骤和次序应当是确定的.(3)有效性:算法的每一步骤都必须是有效的.2. 画流程图时必须注意以下几方面:(1)使用标准的图形符号.(2)流程图一般按从上到下、从左到右的方向画.(3)除判断框外,大多数流程图符号只有一个进入点和一个退出点.判断框具有超过一个退出点的唯一符号.(4)判断框分两大类,一类判断框“是”与“否”两分支的判断,而且有且仅有两个结果;另一类是多分支判断,有几种不同的结果.(5)在图形符号内描述的语言要非常简练清楚.3. 算法三种逻辑结构的几点说明:(1)顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的.在流程图中的体现就是用流程线自上而下地连接起来,按顺序执行算法步骤.(2)一个条件结构可以有多个判断框.(3)循环结构要在某个条件下终止循环,这就需要条件结构来判断.在循环结构中都有一个计数变量和累加变量.计数变量用于记录循环次数,累加变量用语输出结果,计数变量和累加变量一般是同步执行的,累加一次,计数一次. 三、经典例题[例1] 已知三个单元存放了变量x,y,z的值,试给出一个算法,顺次交换x,y,z的值(即y取x的值,z取y的值,x取z的值),并画出流程图.错解:第一步xy←第二步yz←第三步zx←流程图为图13-1-3错因:未理解赋值的含义,由上面的算法使得y,z均取x的值.举一形象的例子:有蓝和黑两个墨水瓶,但现在却把蓝墨水装在了黑墨水瓶中,黑墨水错装在了蓝墨水瓶中,要求将其互换,请你设计算法解决这一问题.对于这种非数值性问题的算法设计问题,应当首先建立过程模型,根据过程设计步骤完成算法. 我们不可将两个墨水瓶中的墨水直接交换,因为两个墨水瓶都装有墨水,不可能进行直接交换.正确的解法应为:S1 取一只空的墨水瓶,设其为白色;S2 将黑墨水瓶中的蓝墨水装入白瓶中;S3 将蓝墨水瓶中的黑墨水装入黑瓶中;S4 将白瓶中的蓝墨水装入蓝瓶中;S5 交换结束.p←{先将z的值赋给变量p,这时存放z的单元可作它正解:第一步z用}第二步yz←{再将y的值赋给z,这时存放y的单元可作它用}第三步xy←{同样将x的值赋给y,这时存放x的单元可作它用}第四步px←{最后将p的值赋给y,三个变量x,y,z的值就完成了交换}流程图为图13-1-4点评:在计算机中,每个变量都分配了一个存储单元,为了达到交换的目的,需要一个单元存放中间变量p.[例2]已知三个数a,b,c.试给出寻找这三个数中最大的一个算法,画出该算法的流程图.解:流程图为图13-1-5点评:条件结构可含有多个判断框,判断框内的内容要简明、准确、清晰.此题也可将第一个判断框中的两个条件分别用两个判断框表示,两两比较也很清晰.若改为求100个数中的最大数或最小数的问题则选择此法较繁琐,可采用假设第一数最大(最小)将第一个数与后面的数依依比较,若后面的数较大(较小),则进行交换,最终第一个数即为最大(最小)值.点评:求和时根据过程的类同性可用循环结构来实现,而不用顺序结构. [例3]画出求222210022+--Λ的值的算法流程图.++991-423解:这是一个求和问题,可采用循环结构实现设计算法,但要注意奇数项为正号,偶数项为负号.思路一:采用-1的奇偶次方(利用循环变量)来解决正负符号问题;图13-1-6 图13-1-7 思路二:采用选择结构分奇偶项求和;图13-1-8思路三:可先将222100222-++-Λ化简成+299431---Λ,转化为一个等差数列求和问题,易利用循环结构求出结果.199--1173-[例4] 设计一算法,求使200621232>22Λ成立的最小正整数n的+n+++值.解:流程图为图13-1-9点评:这道题仍然是考察求和的循环结构的运用问题,需要强调的是求和语句的表示方法.若将题改为求使200621232<22Λ成立的最大正整数++n++n的值时,则需注意的是输出的值.[例5]任意给定一个大于1的整数n,试设计一个程序或步骤对n是否为质数做出判断.解:算法为:S1 判断n是否等于2,若n=2,则n是质数;若n>2,则执行S2 S2 依次从2~n-1检验是不是的因数,即整除n的数,若有这样的数,则n不是质数;若没有这样的数,则n是质数.点评:要验证是否为质数首先必须对质数的本质含义作深入分析:(1)质数是只能被1和自身整除的大于1的整数.(2)要判断一个大于1的整数n是否为质数,只要根据定义,用比这个整数小的数去除n.如果它只能被1和本身整除,而不能被其它整数整除,则这个数便是质数.图13-1-10[例6]设计一个求无理数2的近似值的算法.分析:无理数2的近似值可看作是方程022=-x 的正的近似根,因此该算法的实质是设计一个求方程022=-x 的近似根的算法.其基本方法即运用二分法求解方程的近似解.解:设所求近似根与精确解的差的绝对值不超过0.005,算法:S1 令2)(2-=x x f .因为0)2(,0)1(><f f ,所以设2,121==x xS2 令2)(21x x m +=,判断)(m f 是否为0,若是,则m 为所求;若否,则继续判断)()(1m f x f 大于0还是小于0.S3 若)()(1m f x f >0,则m x =1;否则,令m x =2.S4 判断005.021<-x x 是否成立,若是,则21,x x 之间的任意值均为满足条件的近似根;若否,则返回第二步.点评:二分法求方程近似解的算法是一个重要的算法案例,将在第三节中详细阐述.四、典型习题1.已知两个单元分别存放了变量A 和B 的值,则可以实现变量B A ,交换的算法是( ). A .S1 A B ← B .S1 A C ←C .S1 A C ←D .S1 A C ← S2 B A ← S2 C B ←S2 B A ← S2 B D ← S3 BC ← S3 C B ← 1. 下面流程图中的错误是( )图13-1-11A .i 没有赋值B .循环结构有错C .S 的计算不对D .判断条件不成立3.将“打电话”的过程描述成一个算法,这个算法可表示为,由此说明算法具有下列特性 .4. 在表示求直线0byax(a,b为常数,且a,b不同时为0)的斜率的+c=+算法的流程图中,判断框中应填入的内容是5. 3个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在,画出这个算法的流程图.6.一队士兵来到一条有鳄鱼的深河的左岸.只有一条小船和两个小孩,这条船只能承载两个小孩或一个士兵.试设计一个算法,将这队士兵渡到对岸,并将这个算法用流程图表示.§13.2基本算法语句一、知识导学1.赋值语句用符号“←”表示,“yx←”表示将y的值赋给x,其中x是一个变量,y是一个与x同类型的变量或表达式.2.条件语句主要有两种形式:“行If 语句”和“块If语句”.“行If 语句”的一般形式为:If A Then B [Else C] .一个行If 语句必须在一行中写完,其中方括号中的Else部分可以缺省.“块If 语句”的一般格式为:If A ThenBElseCEnd ifThen 部分和Else 部分是可选的,但块If语句的出口“End if”不能省. 3.循环语句主要有两种类型:For语句和While语句.当循环的次数已经确定,可用“For”语句表示.“For”语句的一般形式为:For I from“初值”to step“步长”…End for上面“For”和“End for”之间缩进的步骤称为循环体.当循环次数不能确定是,可用“While”语句来实现循环.“While”语句的一般形式为:While A…End while其中A表示判断执行循环的条件.上面“While”和“End While”之间缩进的步骤称为循环体.二、疑难知识1.有的条件语句可以不带“Else”分支,即满足条件时执行B,否则不执行任何操作.条件语句也可以进行嵌套,在进行条件语句的嵌套时,书写要有层次.例如:If A ThenBElse if C ThenDElseEEnd if2.“For”语句是在执行过程中先操作,后判断.而“While”语句的特点是“前测试”,即先判断,后执行.若初始条件不成立,则一次也不执行循环体中的内容.任何一种需要重复处理的问题都可以用这种前测试循环来实现.三、经典例题[例1] 下列程序的运行结果是 .X←9Y8←If X>5 Then 7+Y←YIf X>4 Then 6+←YYIf X>3 Then 6+Y←YPrint Y错解:8+7=15错因:误认为在一个程序中只执行一个条件语句,与在一个条件语句中只选择其中一个分支相混淆.If A Then B [Else C] 若满足条件A 则执行B,否则是执行C,B和C是这个条件语句的分支,而这个程序省略了Else部分.正解:这里是有三个条件语句,各个条件语句是独立的,三个条件均成立,所以按顺序依次执行,结果为8+7+6+6=27.[例2] 下面的伪代码的效果是0←iWhile i <102⨯←i iEnd WhileEnd错解:执行10次循环错因:将For 语句和While 语句混淆. For 语句中有步长使循环变量不断变化,而While 语句则无.正解:无限循环下去,这是因为这里i 始终为0,总能满足条件“10<i ”,故是一个“死循环”.点评:“死循环”是设计循环结构的大忌,此题可改变i 的初始值或每一次循环i 都增加一个值.[例3]下面的程序运行时输出的结果是( )1←IWhile 5<I0←S1+←I II I S S *+←End whilePrint SEnd错解:第一次循环时,I 被赋予2,S 被赋予4;第二次循环时,I 被赋予3,S 被赋予4+23=13;第三次循环时,I 被赋予4,S 被赋予13+24=29;第四次循环时,I 被赋予5,S 被赋予545292=+.由于此时5=I ,故循环终止,输出S 为54.正解:由于0←S 在循环内,每经过一次循环后S 都被赋值0,因此,只要求满足条件的最后一次循环S 的值,即当4=I 时,16440=⨯+=S .[例4]用语句描述求使10007531<⨯⨯⨯⨯⨯n Λ成立的最大正整数n 的算法过程.解: 1←n1←TWhile 1000<T2+←n n n T T ⨯←End whilePrint 2-n点评:此题易错的是输出值,根据While 循环语句的特征当1000≥T 时跳出循环体,此时n 的值是1000≥T 时的最小的整数,则使1000<T 的最大整数应为n 的前一个奇数即2-n .[例5]已知当100100<<-x 时,1+=x y ,当100-≤x 时,4=y ,当100≥x 时,4-=x y ,设计一算法求y 的值.解: Read xIf 100100<<-x then1+←x yElse if 100≥x Then4-←x yElse4←yEnd ifEnd点评:嵌套If 语句可用如上的紧凑形式书写,要注意的是如不是采取紧凑形式,则需注意一个块If 语句对应一个End If ,不可省略或缺少.[例6]设计一个算法,使得输入一个正整数n ,输出1!+2!+3!+…+n !的值.写出伪代码.解:思路一:利用单循环,循环体中必须包括一个求各项阶乘的语句以及一个求和语句.Read n1←←S T For I from 1 to nTS S I T T +←⨯← End ForPrint S思路二:运用内外双重循环,但尤其注意的是每一次外循环T 的值都要从1开始.Read n0←SFor I from 1 to n1←TFor J from 1 to IJ T T ⨯←End ForT S S +←End ForPrint S四、典型习题1.下列的循环语句循环的次数为()For I from 1 to 7For J from 1 to 9Pint I+JEnd forEnd forEndA.7次B.9次C.63次D.16次2.运行下面的程序后输出的结果是,若将程序中的A语句与B语句的位置互换,再次执行程序后输出的结果为 .x←1y←While 3<x←′A语句y+yxx′B语句←x+1End WhilePrint x,yEnd3.伪代码描述的求T的代数式是,求S的代数式是 .Read n1←T0←SFor I from 1 to nI T T ⨯←I S S +←End forPrint T,S4.运行下面程序后输出的结果为For I from 10 to 1 step -2Print IEnd forEnd5. 将100名学生的一门功课的成绩依次输入并计算输出平均成绩.§ 13.3 算法案例一、知识导学1.算法设计思想:(1)“韩信点兵—孙子问题”对正整数m 从2开始逐一检验条件,若三个条件中有任何一个不满足,则m 递增1,一直到m 同时满足三个条件为止(循环过程用Goto 语句实现)(2)用辗转相除法找出b a .的最大公约数的步骤是:计算出b a ÷的余数r ,若0=r ,则b 为b a ,的最大公约数;若0≠r ,则把前面的除数b 作为新的被除数,继续运算,直到余数为0,此时的除数即为正整数b a ,的最大公约数.2.更相减损术的步骤:(1)任意给出两个正数,判断它们是否都是偶数.若是,用2约简;若不是,执行第二步.(2)以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数.继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数.(3)二分法求方程0)(=x f 在区间[]b a ,内的一个近似解*x 的解题步骤可表示为 S1 取[b a ,]的中点()b a x +=210,将区间 一分为二; S2 若()00=x f ,则0x 就是方程的根;否则判别根*x 在0x 的左侧还是右侧:若()()00>⋅x f a f ,()b x x ,*0∈,以0x 代替a ;若()()00<⋅x f a f ,则()0,*x a x ∈,以0x 代替b ;S3 若c b a <-,计算终止,此时0x x ≈*,否则转S1.二、疑难知识1.)int(x 表示不超过x 的整数部分,如0)32.0int(,5)86.5int(==,但当x 是负数时极易出错,如1)14.1int(-=-就是错误的,应为-2.2.),mod(b a 表示a 除以b 所得的余数,也可用a mod b 表示.3.辗转相除法与更相减损术求最大公约数的联系与区别:(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显.(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到.4.用二分法求方程近似解,必须先判断方程在给定区间[b a ,]上是否有解,即()x f 连续且满足()()0<b f a f .并在二分搜索过程中需对中点处函数值的符号进行多次循环判定,故需要选择结构、循环结构,即可用Goto 语句和条件语句实现算法.三、经典例题[例1]=)5int(π , =-)05.0int( ,=)9,67mod( , 45 mod 7= .A .16,-1,4,3 B.15,0,4,3 C.15,-1,3,4 D.15,-1,4,3 错解:根据)int(x 表示不超过x 的整数部分, ),mod(b a 表示a 除以b 所得的余数,选择B.错因:对)int(x 表示的含义理解不透彻,将不超过-0.05的整数错认为是0,将负数的大小比较与正数的大小比较相混淆.正解:不超过-0.05的整数是-1,所以答案为D.[例2] 所谓同构数是指此数的平方数的最后几位与该数相等.请设计一算法判断一个大于0且小于1000的整数是否为同构数.错解: 算法思想:求出输入数的平方,考虑其个位或最后两位或最后三位与输入数是否相等,若相等,则为同构数.Read xx x y *=If )10(y x = or )100(y x = or )1000(y x = ThenPrint xEnd ifEnd错因:在表示个位或最后两位或最后三位出现错误,“/”仅表示除,y/10,y/100,y/1000都仅仅表示商.正解:可用)1000,mod(),100,mod(),10,mod(y y y 来表示个位,最后两位以及最后三位.Read x=y*xxIf ))1000x=or )),mod((yx=(ymod(10,(ymod(,100x=or ))ThenPrint xEnd ifEnd[例3]《孙子算经》中的“物不知数”问题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”可以用下面的算法解决:先在纸上写上2,每次加3,加成5除余3的时候停下来,再在这个数上每次加15,到得出7除2的时候,就是答数.试用流程图和伪代码表示这一算法.解:流程图为:伪代码为:10 2m←20 3+m←m30 If ()35,m od ≠m Then Goto 2040 If 2)7,mod(=m ThenPrint mGoto 8050 End if60 15+←m m70 Goto 4080 End点评:这是孙子思想的体现,主要是依次满足三个整除条件.[例4]分别用辗转相除法、更相减损法求192与81的最大公约数.解:辗转相除法:S1 30281192ΛΛΛΛ=÷S2 2123081ΛΛΛΛ=÷S3 912130ΛΛΛΛ=÷S4 32921ΛΛΛΛ=÷S5 0339ΛΛΛΛ=÷故3是192 与81 的最大公约数.更相减损法:S1 11181192=-S2 3081111=-S3 513081=-S4 213051=-S5 92130=-S6 12921=-S7 3912=-S8 639=-S9 336=-故3 是192与81的最大公约数.点评:辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少.辗转相除法是当大数被小数整除时停止除法运算,此时的小数就是两者的最大公约数,更相减损术是当大数减去小数的差等于小数时减法停止,较小的数就是最大公约数.[例5]为了设计用区间二分法求方程0123=-+x x 在[0,1]上的一个近似解(误差不超过0.001)的算法,流程图的各个框图如下所示,请重新排列各框图,并用带箭头的流线和判断符号“Y”、“N ”组成正确的算法流程图,并写出其伪代码.(其中b a ,分别表示区间的左右端点)图13-3-2流程图为图13-3-3伪代码为10 Read b a ,20 2)(0b a x +←30 1)(23-+←a a a f40 1)(20300-+←x x x f 50 If 0)(0=x f Then Goto 12060 If 0)()(0<x f a f Then70 0x b ←100 End if80 Else90 0x a ←100 End if110 If 001.0≥-b a Then Goto 20120 Print 0x130 End点评:二分法的基本思想在必修一中已渗透,这里运用算法将二分法求方程近似解的步骤更清晰的表述出来.[例6] 用秦九韶算法计算多项式654323567983512)(x x x x x x x f ++++-+=在4-=x 时的值时,3v 的值为 .解: 根据秦九韶算法,此多项式可变形为()()()()()()1235879653++-+++=x x x x x x x f按照从内到外的顺序,依次计算一次多项式当4-=x 时的值:40-=v75)4(31-=+-⨯=v346)7()4(2=+-⨯-=v577934)4(3-=+⨯-=v故当4-=x 时多项式的值为57-.点评:秦九韶算法的关键是n 次多项式的变形.把一个n 次多项式0111)(a x a x a x a x f n n n n ++++=--Λ改写成0121)))(()(a x a x a x a x a x f n n n +++++=--ΛΛ,求多项式的值,首先计算最内层括号内一次多项式的值,然后由内向外逐层计算一次多项式的值,这样把求n 次多项式的值问题转化为求n 个一次多项式的值的问题,这种方法成为秦九韶算法.这种算法中有反复执行的步骤,因此,可考虑用循环结构实现.四、典型习题1.以下短文摘自古代《孙子算经》一书,其引申出的“大衍求一术”称为“中国剩余原理”:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”答曰( ).A .二十一 B.二十二 C.二十三 D.二十四2.用辗转相除法求52与39的最大公约数的循环次数为( ).A .1次 B.2次 C.3次 D.5次3.下面程序功能是统计随机产生的十个两位正整数中偶数和奇数的个数,并求出偶数与奇数各自的总和.For I from 1 to 1010)90int(+*←Rnd xPrint x;If Thenxs s n n +←+←22122 Elsex s s +←11End IfEnd forPrintPrint “奇数个数=”;1n,“偶数个数=”;2n4.若一个数的各因子之和正好等于该数本身,则该数成为完数.请补充完整下列找出1~100之间的所有完数的伪代码.For a from 2 to 100c1For b from 2 toIf mod(a,b)=0 ThenEnd ifEnd ForIf ThenPrint aEnd ifEnd ForEnd5.设计求被9除余4,被11除余3的最小正整数的算法,画出流程图,写出伪代码.6.利用辗转相除法或更相减损术求324,243,135的最大公约数.。
高中数学必修三算法初步知识点讲解前言在现代社会中,算法是极其重要的。
无论是互联网公司的搜索引擎、电子商务平台,还是金融市场的投资分析、量化交易,都离不开算法的支持。
因此,在高中阶段学习并掌握一些基础的算法,不仅能提高数学素养和思维能力,还有利于今后的学习和工作。
本文就是要介绍高中数学必修三中一些初步的算法知识点。
下面将分别从排序算法、查找算法和递推算法三个方面展开讲解,以帮助读者加深对算法的理解和掌握。
排序算法冒泡排序冒泡排序是一种基础的排序算法,其思路是通过不断地交换相邻元素的位置,将大的元素逐渐往后移动。
具体实现过程如下:1.从第一个元素开始,一直到倒数第二个元素,依次比较相邻元素的大小。
2.如果前一个元素大于后一个元素,则交换它们的位置。
3.重复以上步骤,直到没有需要交换的元素为止。
冒泡排序的时间复杂度为O(n2),因此对于较大的数据集来说,效率较低。
选择排序选择排序是另一种基础的排序算法,其思路是每次选出剩下元素中最小的一个,放在已排好序的部分的末尾。
具体实现过程如下:1.从第一个元素开始,一直到倒数第二个元素,依次找出剩下元素中的最小值。
2.将找出的最小值与当前位置的元素进行交换。
3.重复以上步骤,直到所有元素都排好序。
选择排序的时间复杂度为O(n2),与冒泡排序相同,但是其空间复杂度较低。
插入排序插入排序是一种简单而有效的排序算法,它类似于整理扑克牌的过程,将未排序的部分依次插入已经排序的部分。
具体实现过程如下:1.从第二个元素开始,将其与已经排好序的部分进行比较。
如果它小于前面的元素,则将它插入到前面的合适位置。
2.重复以上步骤,直到所有元素都排好序。
插入排序的时间复杂度为O(n2),但是对于小规模数据集,效率较高。
查找算法顺序查找顺序查找是一种基础的查找算法,其思路是从头到尾依次查找目标元素。
具体实现过程如下:1.从第一个元素开始,逐个与目标元素进行比较。
2.如果找到目标元素,则返回对应位置的索引值。
算法初步与程序框图1、算法的概念:算法通常指按照一定的规则解决某一类问题的明确和有限的步骤。
2、程序框图:用程序框、流程线及文字说明来表示算法的图形叫做程序框图或流程图。
(1)用框图表示算法步骤的一些常用的图形符号图形符号名称功能终端框(起止框)表示一个算法的起始和结束,是任何算法程序框图不可缺少的输入、输出框表示一个算法输入和输出的信息,可用在算法中任何需要输入、输出的位置处理框(执行框)赋值、计算.算法中处理数据需要的算式、公式等,它们分别写在不同的用以处理数据的处理框内判断框判断某一条件是否成立,成立时出口处标明“是”或“Y”;不成立时标明“否”或“N”流程线连接程序框,表示算法进行的前进方向以及先后顺序连接点如果一个流程图需要分开来画,要在断开处画上连接点,并标出连接的号码(2)程序框图的结构形式①顺序结构;②条件结构;③循环结构;(3)基本算法语句①输入语句;②输出语句;③赋值语句;④条件语句;⑤循环语句;3、程序框图举例:开始11(1)(2)4、辗转相除法:5、更相减损术:6、秦九韶算法:7、二分法:8、进位制:9、流程图和结构图框图是表示一个系统各部分和各环节之间关系的图示,它的作用在于能够清晰地表达比较复杂的系统各部分之间的关系,框图可分为流程图和结构图,流程图与结构图直观形象、简洁、明了,在日常生活中应用广泛.一、流程图:流程图常常用来表示一个动态过程,通常会有一个“起点”,一个或多个“终点”.程序框图是流程图的一种.流程图可以直观、明确地表示动态过程从开始到结束的全部步骤.它是由图形符号和文字说明构成的图示.流程图用于描述一个过程性的活动,活动的每一个明确的步骤构成流程图的一个基本单元,基本单元之间用流程线联系.基本单元中的内容要根据需要而确定.可以在基本单元中具体说明,也可以为基本单元设置若干子单元.10、流程图的种类(1)算法流程图①算法流程图在必修课程中已经学过,它是一种特殊的流程图,主要适用于计算机程序的编写.②在算法流程图内允许有闭合回路.(2)工艺流程图①工艺流程图是常见的一种流程图,又称统筹图,在日常生活、生产实践等各方面经常用到工艺流程图.②用来描述具有先后顺序的时间特征的动态过程.③工艺流程图的构成由矩形框、流程线和名称(代号)构成.④工艺流程图可以有一个或多个“起点”,一个或多个“终点”,对于同一个矩形框可以有多个流出点和流入点.⑤在工艺流程图中不允许出现几道工序首尾相连接的圈图或循环回路.20、绘制流程图的一般过程首先,用自然语言描述流程步骤;其次,分析每一步骤是否可以直接表达,或需要借助于逻辑结构来表达; 再次,分析各步骤之间的关系;最后,画出流程图表示整个流程.二、结构图:表示一个系统中各部分之间的组成结构的框图叫做结构图.10、结构图的种类常用的结构图一般包括知识结构图、组织结构图、建筑结构图、布局结构图及分类结构图.20、绘制结构图步骤:(1)确定组成系统的基本要素,及它们之间的关系.(2)将系统的主体要素及其之间的关系表示出来.(3)确定主体要素的下位要素(从属主体的要素)“下位”要素比“上位”要素更为具体,“上位”要素比“下位”要素更为抽象.(4)逐步细化各层要素,直到将整个系统表示出来为止.三、结构图与流程图的区别:流程图和结构图不同.流程图是表示一系列活动相互作用、相互制约的顺序的框图.结构图是表示一个系统中各部分之间的组成结构的框图.流程图描述动态过程,结构图刻画系统结构.流程图通常会有一个“起点”,一个或多个“终点”,其基本单元之间由有向线连接;结构图则更多地表现为“树”状结构,其基本要素之间一般为逻辑关系.四、考点详解考点一:流程图类型一:算法流程图例1、写出方程0ax b += (,a b 为常数)的根的流程图.分析:因为,a b 是实数,要解方程需先判断a 是否为0,当0a ≠时,方程根为b x a =-;当0a =时,需再次判断b 是否为0,若0b =,则方程根为全体实数,若0b ≠,则方程无解,因此可以用算法中的条件结构来实现,相应程序语句是条件语句.解:根据以上的算法分析可得出算法流程图:点评:算法流程图是学习算法语言的必备工具,在使用时必须用其标准的图形符号.变式练习1:某程序框图如图所示,该程序运行后输出的k 的值是( )A .4B .5C .6D .7类型二: 工序流程图例2、某工厂装配一辆轿车的工序、工序所花的时间及各工序的先后关系如下表所示:开始输入,a b0a ≠? b x a=- 0b ≠? 输出方程无解 输出方程根是全体实数输出原方程根为x 结束否 否是是注:紧前工序,即与该工序相衔接的前一工序.(1)画出装配该轿车的工序流程图;(2)装配一辆轿车的最短时间是多少小时?分析:要画工序流程图,首先要弄清整项工程应划分为多少道工序,这当然应该由上到下,先粗略后精细,其次是仔细考虑各道工序的先后顺序及相互联系、制约的程度,最后考虑哪些工序可以平行进行,哪些工序可以交叉进行.一旦上述问题都考虑清楚了,一个合理的工序流程图就成竹在胸了,依据其去组织生产,指挥施工,就能收到统筹兼顾的功效.解:(1)工序流程图如下图所示:(2)装配一辆轿车的最短时间是1154125340+++++=(小时).点评: 有关工序流程图应先理清工序大体分几个阶段,再对每一阶段细分,每一步应注意先后顺序,这是十分关键的,否则会产生错误.在画工序流程图时,不能出现几道工序首尾相接的圈图或循环回路.变式练习2:某成品的组装工序图如下,箭头上的数字表示组装过程中所需要的时间(小时),不同车间可同时工作,同一车间不能同时做两种或两种以上的工作,则组装该产品所需要的最短时间是( )A. 11小时B. 13小时C. 15小时D. 17小时考点二: 结构图类型一: 知识结构图例3、设计一个结构图,表示《数学{5}》第二章“数列”的知识结构图. 分析:画知识结构图的过程与方法:首先,要对所画结构图从头到尾抓住主要脉络进行分解;然后将每一步分解进行归纳与提炼,形成一个个知识点,并将其逐一地写在矩形框内;最后,按其内在的逻辑顺序将它们排列起来并且用线段相连,这样就画成了知识结构图.解:本章的知识结构图如下:点评:要熟悉知识结构,注意实际问题的逻辑顺序和概念上的从属关系,这个结构图从整体上反映了数列的结构,从左向右反映的是要素之间的从属关系.在画结构图时,应根据具体需要确定复杂程度,简洁的结构图有时能更好地反映主体要素之间的关系和系统的整体特点.另外在画结构图时还应注意美观、明了. 变式练习3:下图是《集合》的知识结构图,如果要加入“子集”,则应该放在( )A. “集合的概念”的下位B. “集合的表示”的下位C. “基本关系”的下位D. “基本运算”的下位类型二: 组织结构图例4、下面为某集团的组织结构图,请据下图分析财务部和人力资源部的隶属关系.分析: 根据组织结构图,分析好各部门之间的从属关系,最后作答.解:由组织结构图可分析得:财务部直属总裁管理;而总裁又由董事长管理,董事长服从于董事会管理.人力资源部由董事长助理直接管理,董事长助理服从董事长管理,董事长又服从于董事会管理,董事会是最高管理部门.点评:有关组织结构图一般都呈“树”形结构.这种图直观,容易理解,被应用于很多领域中.在组织结构图中,可采用从上到下或从左到右的顺序绘制图,注意各单元要素之间的关系,并对整个组织结构图进行浏览处理,注重美观、简洁、明了.变式练习4:某公司做人事调整:设总经理一个,配有经理助理一名;设副经理两人,直接对总经理负责,设有6个部门,其中副经理A 管理生产部、安全部和质量部,经理B 管理销售部、财务部和保卫部;生产车间由生产部和安全部共同管理,公司配有质检中心和门岗。
高三数学第一轮复习:算法初步苏教版【本讲教育信息】一. 教学内容:算法初步教学目的:了解算法的含义,能用自然语言描述算法。
理解设计流程图表达解决问题的过程,了解算法和程序语言的区别;理解流程图的三种基本逻辑结构,会用流程图表示算法。
重点:算法与流程图的含义。
难点:算法在实际问题中的应用。
二、知识要点:(一)算法的概念算法实际上就是解决一类问题的一种程序性方法,其特征为:概括性、逻辑性、有穷性、不唯一性和普遍性.(二)程序框图利用程序框图表示算法,具有直观、形象的特点,能更清楚地展现算法的逻辑结构.(三)算法的三种基本逻辑结构顺序结构、选择结构、循环结构(四)基本算法语句1、输入语句:Read2、输出语句:Print3、赋值语句:变量 表达式4、条件语句:处理条件分支逻辑结构的算法语句.主要用if语句,其一般格式如下: If 条件AThen语句BElse语句CEnd If条件语句的另一种格式为:If 条件 Then 语句End If5、循环语句:(1)For语句For 变量I From “初值”To“终值”Step“步长”…End For(2) While语句While 语句A…End While(3)注意while循环(当型)和until循环(直到型)两种形式.while循环的特点是先判断再执行循环.即当条件满足时,执行循环体. until循环的的特点是先执行循环再判断是否满足条件。
(五)算法结构图见下:三、基础训练1、执行下列算法:S←0For I From 1 To 999 Step 2S←S+IEnd ForPrint S其中循环10次S的值是________,程序运行结束时S的值是____________.解:循环10次S的值是100;程序运行结束时S的值是500(1999)250000 2+=2、如果执行上面的程序框图,那么输出的S=解:241002550S=+++=3、(某某文7、艺术理6)下面左图是某县参加2007年高考的学生身高条形统计图,从左到右的各条形表示的学生人数依次记为A1、A2、…、A10(如A2表示身高(单位:cm)(150,155)内的学生人数).右图是统计左图中身高在一定X围内学生人数的一个算法流程图.现要统计身高在160~180cm (含160cm ,不含180cm )的学生人数,那么在流程图中的判断框内应填写的条件是解:7i ≤4、用“冒泡法”给数列1,5,3,2,7,9按从大到小进行排序时,经过第一趟排序后得到的新数列为。
第十一章算法初步高考导航种基本逻辑结构:的一些基本语句结构.知识网络11.1 算法的含义与程序框图典例精析题型一 算法的含义【例1】已知球的表面积是16π,要求球的体积,写出解决该问题的一个算法. 【解析】算法如下: 第一步,s =16π. 第二步,计算R =s 4π. 第三步,计算V =4πR 33.第四步,输出V .【点拨】给出一个问题,设计算法应该注意:(1)认真分析问题,联系解决此问题的一般数学方法,此问题涉及到的各种情况; (2)将此问题分成若干个步骤; (3)用简练的语句将各步表述出来.【变式训练1】设计一个计算1×3×5×7×9×11×13的算法.图中给出程序的一部分,则在横线①上不能填入的数是( )A.13B.13.5C.14D.14.5【解析】当I <13成立时,只能运算 1×3×5×7×9×11.故选A.题型二 程序框图【例2】图一是某县参加2010年高考的学生身高条形统计图,从左到右的各条形表示的学生人数依次记为A 1,A 2,…,A 10(如A 2表示身高(单位:cm)在[150,155)内的学生人数).图二是统计图一中身高在一定范围内学生人数的一个算法流程图.现要统计身高在160~180 cm(含160 cm ,不含180 cm)的学生人数,那么在流程图中的判断框内应填写的条件是( )A.i <6?B.i <7?C.i <8?D.i <9?图一【解析】根据题意可知,i 的初始值为4,输出结果应该是A 4+A 5+A 6+A 7,因此判断框中应填写i <8?,选C.【点拨】本题的命题角度较为新颖,信息量较大,以条形统计图为知识点进行铺垫,介绍了算法流程图中各个数据的引入来源,其考查点集中于循环结构的终止条件的判断,考查了学生合理地进行推理与迅速作出判断的解题能力,解本题的过程中不少考生误选A ,实质上本题中的数据并不大,考生完全可以直接从头开始限次按流程图循环观察,依次写出每次循环后的变量的赋值,即可得解.【变式训练2】(2009辽宁)某店一个月的收入和支出,总共记录了N 个数据a 1,a 2,…,a N .其中收入记为正数,支出记为负数,该店用如图所示的程序框图计算月总收入S 和月净盈利V ,那么在图中空白的判断框和处理框中,应分别填入下列四个选项中的( )A.A >0?,V =S -TB.A <0?,V =S -TC.A >0?,V =S +TD.A <0?,V =S +T 【解析】选C.题型三 算法的条件结构【例3】某快递公司规定甲、乙两地之间物品的托运费用根据下列方法计算: f =⎩⎨⎧⨯-+⨯).50>(85.0)50(53.050),50≤<0(53.0ωωωω其中f (单位:元)为托运费,ω为托运物品的重量(单位:千克),试写出一个计算费用f 的算法,并画出相应的程序框图.【解析】算法如下:第一步,输入物品重量ω.第二步,如果ω≤50,那么f=0.53ω,否则,f=50×0.53+(ω-50)×0.85.第三步,输出托运费f.程序框图如图所示.【点拨】求分段函数值的算法应用到条件结构,因此在程序框图的画法中需要引入判断框,要根据题目的要求引入判断框的个数,而判断框内的条件不同,对应的框图中的内容或操作就相应地进行变化.【变式训练3】(2010天津)阅读如图的程序框图,若输出s的值为-7,则判断框内可填写()A.i<3?B.i<4?C.i<5?D.i<6?【解析】i=1,s=2-1=1;i=3,s=1-3=-2;i=5,s=-2-5=-7.所以选D.题型四算法的循环结构【例4】设计一个计算10个数的平均数的算法,并画出程序框图.【解析】算法步骤如下:第一步,令S=0.第二步,令I=1.第三步,输入一个数G.第四步,令S=S+G.第五步,令I=I+1.第六步,若I>10,转到第七步,若I≤10,转到第三步.第七步,令A=S/10.第八步,输出A.据上述算法步骤,程序框图如图.【点拨】(1)引入变量S作为累加变量,引入I为计数变量,对于这种多个数据的处理问题,可通过循环结构来达到;(2)计数变量用于记录循环次数,同时它的取值还用于判断循环是否终止,累加变量用于输出结果.【变式训练4】设计一个求1×2×3×…×10的程序框图.【解析】程序框图如下面的图一或图二.图一图二总结提高1.给出一个问题,设计算法时应注意:(1)认真分析问题,联系解决此问题的一般数学方法;(2)综合考虑此类问题中可能涉及的各种情况;(3)借助有关的变量或参数对算法加以表述;(4)将解决问题的过程划分为若干个步骤;(5)用简练的语言将各个步骤表示出来.2.循环结构有两种形式,即当型和直到型,这两种形式的循环结构在执行流程上有所不同,当型循环是当条件满足时执行循环体,不满足时退出循环体;而直到型循环则是当条件不满足时执行循环体,满足时退出循环体.所以判断框内的条件,是由两种循环语句确定的,不得随便更改.3.条件结构主要用在一些需要依据条件进行判断的算法中.如分段函数的求值,数据的大小关系等问题的算法设计.11.2 基本算法语句典例精析题型一 输入、输出与赋值语句的应用【例1】阅读程序框图(如下图),若输入m =4,n =6,则输出a = ,i = .【解析】a =12,i =3.【点拨】赋值语句是一种重要的基本语句,也是程序必不可少的重要组成部分,使用赋值语句,要注意其格式要求.【变式训练1】(2010陕西)如图是求样本x 1,x 2,…,x 10的平均数x 的程序框图,则图中空白框中应填入的内容为( )A.S =S +x nB.S =S +x nnC.S =S +nD.S =S +1n【解析】因为此步为求和,显然为S =S +x n ,故选A. 题型二 循环语句的应用【例2】设计算法求11×2+12×3+13×4+…+199×100的值.要求画出程序框图,写出用基本语句编写的程序.【解析】这是一个累加求和问题,共99项相加,可设计一个计数变量,一个累加变量,用循环结构实现这一算法.程序框图如下图所示:程序如下:语句编写程序解决问题时,一定要注意格式和条件的表述方法,WHILE语句是当条件满足时执行循环体,UNTIL语句是当条件不满足时执行循环体.(2)在解决一些需要反复执行的运算任务,如累加求和、累乘求积等问题中应注意考虑利用循环语句来实现.(3)在循环语句中,也可以嵌套条件语句,甚至是循环语句,此时需要注意嵌套的这些语句,保证语句的完整性,否则就会造成程序无法执行.【变式训练2】下图是输出某个有限数列各项的程序框图,则该框图所输出的最后一个数据是 .【解析】由程序框图可知,当N =1时,A =1;N =2时,A =13;N =3时,A =15,…,即输出各个A值的分母是以1为首项以2为公差的等差数列,故当N =50时,A =11+(50-1)×2=199,即为框图最后输出的一个数据.故填199.题型三 算法语句的实际应用【例3】某电信部门规定:拨打市内电话时,如果通话时间3分钟以内,收取通话费0.2元,如果通话时间超过3分钟,则超过部分以每分钟0.1元收取通话费(通话不足1分钟时按1分钟计算).试设计一个计算通话费用的算法,要求写出算法,编写程序.【解析】我们用c (单位:元)表示通话费,t (单位:分钟)表示通话时间,则依题意有⎩⎨⎧⨯+=,3>2],[0.10.23,≤<0,2.0t t-t c算法步骤如下: 第一步,输入通话时间t .第二步,如果t ≤3,那么c =0.2;否则c =0.2+0.1×[t -2]. 第三步,输出通话费用c . 程序如下:IF 【点拨】法步骤,画出程序框图,最后准确地编写出程序,同时要注意结合题意加深对算法的理解.【变式训练3】(2010江苏)下图是一个算法流程图,则输出S 的值是 .【解析】n=1时,S=3;n=2时,S=3+4=7;n=3时,S=7+8=15;n=4时,S=15+24=31;n =5时,S=31+25=63.因为63≥33,所以输出的S值为63.总结提高1.输入、输出语句可以设计提示信息,加引号表示出来,与变量之间用分号隔开.2.赋值语句的赋值号左边只能是变量而不能是表达式;赋值号左右两边不能对换,不能利用赋值语句进行代数式计算,利用赋值语句可以实现两个变量值的互换,方法是引进第三个变量,用三个赋值语句完成.3.在某些算法中,根据需要,在条件语句的THEN分支或ELSE分支中又可以包含条件语句.遇到这样的问题,要分清内外条件结构,保证结构的完整性.4.分清WHILE语句和UNTIL语句的格式,在解决一些需要反复执行的运算任务,如累加求和,累乘求积等问题中应主要考虑利用循环语句来实现,但也要结合其他语句如条件语句.5.编程的一般步骤:(1)算法分析;(2)画出程序框图;(3)写出程序.11.3 算法案例典例精析题型一求最大公约数【例1】(1)用辗转相除法求840与1 764的最大公约数;(2)用更相减损术求440与556的最大公约数.【解析】(1)用辗转相除法求840与1 764的最大公约数:1 764=840×2+84,840=84×10+0.所以840与1 764的最大公约数是84.(2)用更相减损术求440与556的最大公约数:556-440=116,440-116=324,324-116=208,208-116=92,116-92=24,92-24=68,68-24=44,44-24=20,24-20=4,20-4=16,16-4=12,12-4=8,8-4=4.所以440与556的最大公约数是4.【点拨】(1)辗转相除法与更相减损术是求两个正整数的最大公约数的方法,辗转相除法用较大的数除以较小的数,直到大数被小数除尽结束运算,较小的数就是最大公约数;更相减损术是用两数中较大的数减去较小的数,直到所得的差和较小数相等为止,这个较小数就是这两个数的最大公约数.一般情况下,辗转相除法步骤较少,而更相减损术步骤较多,但运算简易,解题时要灵活运用.(2)两个以上的数求最大公约数,先求其中两个数的最大公约数,再用所得的公约数与其他各数求最大公约数即可.【变式训练1】求147,343,133的最大公约数.【解析】先求147与343的最大公约数.343-147=196,196-147=49,147-49=98,98-49=49,所以147与343的最大公约数为49.再求49与133的最大公约数.133-49=84,84-49=35,49-35=14,35-14=21,21-14=7,14-7=7.所以147,343,133的最大公约数为7.题型二秦九韶算法的应用【例2】用秦九韶算法写出求多项式f(x)=1+x+0.5x2+0.016 67x3+0.041 67x4+0.008 33x5在x=-0.2时的值的过程.【解析】先把函数整理成f(x)=((((0.008 33x+0.041 67)x+0.166 67)x+0.5)x+1)x+1,按照从内向外的顺序依次进行.x=-0.2,a5=0.008 33,v0=a5=0.008 33;a4=0.041 67,v1=v0x+a4=0.04;a3=0.016 67,v2=v1x+a3=0.008 67;a2=0.5,v3=v2x+a2=0.498 27;a1=1,v4=v3x+a1=0.900 35;a0=1,v5=v4x+a0=0.819 93;所以f(-0.2)=0.819 93.【点拨】秦九韶算法是多项式求值的最优算法,特点是:(1)将高次多项式的求值化为一次多项式求值;(2)减少运算次数,提高效率;(3)步骤重复实施,能用计算机操作.【变式训练2】用秦九韶算法求多项式f(x)=8x7+5x6+3x4+2x+1当x=2时的值为.【解析】1 397.题型三进位制之间的转换【例3】(1)将101 111 011(2)转化为十进制的数;(2)将53(8)转化为二进制的数.【解析】(1)101 111 011(2)=1×28+0×27+1×26+1×25+1×24+1×23+0×22+1×21+1=379.(2)53(8)=5×81+3=43.所以53(8)=101 011(2).【点拨】将k进制数转换为十进制数,关键是先写成幂的积的形式再求和,将十进制数转换为k进制数,用“除k取余法”,余数的书写是由下往上,顺序不能颠倒,k进制化为m进制(k,m≠10),可以用十进制过渡.【变式训练3】把十进制数89化为三进制数.【解析】具体的计算方法如下:89=3×29+2,29=3×9+2,9=3×3+0,3=3×1+0,1=3×0+1,所以89(10)=10 022(3).总结提高1.辗转相除法和更相减损术都是用来求两个数的最大公约数的方法.其算法不同,但二者的原理却是相似的,主要区别是一个是除法运算,一个是减法运算,实质都是一个递推的过程.用秦九韶算法计算多项式的值,关键是正确的将多项式改写,然后由内向外,依次计算求解.2.将k进制数转化为十进制数的算法和将十进制数转化为k进制数的算法操作性很强,要掌握算法步骤,并熟练转化;要熟练应用“除基数,倒取余,一直除到商为0”.。
必修3:知识点一:算法初步 1:算法的概念(1)算法概念:通常是指可以用计算机来解决的某一类问题是程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成. (2)算法的特点:①有限性:一个算法的步骤序列是有限的,必须在有限操作之后停止,不能是无限的. ②确定性:算法中的每一步应该是确定的并且能有效地执行且得到确定的结果。
③顺序性与正确性:算法从初始步骤开始,分为若干明确的步骤,每一个步骤只能有一个确定的后继步骤,前一步是后一步的前提,只有执行完前一步才能进行下一步,并且每一步都准确无误,才能完成问题. ④不唯一性:求解某一个问题的解法不一定是唯一的,但是答案是唯一的。
⑤普遍性:很多具体的问题,都可以设计合理的算法去解决。
2: 程序框图(1)程序框图基本概念:①程序构图的概念:程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形。
一个程序框图包括以下几部分:表示相应操作的程序框;带箭头的流程线;程序框外必要文字说明。
学习这部分知识的时候,要掌握各个图形的形状、作用及使用规则,画程序框图的规则如下:1、使用标准的图形符号。
2、框图一般按从上到下、从左到右的方向画。
3、除判断框外,大多数流程图符号只有一个进入点和一个退出点。
判断框具有超过一个退出点的唯一符号。
4、判断框分两大类,一类判断框“是”与“否”两分支的判断,而且有且仅有两个结果;另一类是多分支判断,5、在图形符号内描述的语言要非常简练清楚。
3:算法的三种基本逻辑结构:顺序结构、条件结构、循环结构。
(1)顺序结构:顺序结构在程序框图中的体现就是用流程线将程序框自上而下地连接起来, 按顺序执行算法步骤。
如在示意图中,A 框和B 框是依次执行的,只有在 执行完A 框指定的操作后,才能接着执行B 框所指定的操作。
(2)条件结构:条件结构是指在算法中通过对条件的判断根据条件是否成立而选择不同流向的 算法结构。