1、1算法概念的诠释同学们也许对算法这个概念很陌生,但其实大家在日常生活中已经接触过很多算法了,广义地说,算法就是做某一件事情的步骤或程序菜谱是做菜肴的“算法”,洗衣机的使用说明书是操作洗衣机的“算法”每个算法都闪耀着人类的智慧,阅读和学习这些东西会给我们带来一种难以用语言表达的满足感和快感在以后的学习和工作中我们会不断从实际应用中了解和领会算法是如何解决各个领域的实际问题,推动人类文明的发展的一、算法的特征1确定性算法中的每条运算规则必须是明确定义的、可行的,每一个步骤只能有一个确定的后继步骤,运行终止应得到问题的解答或指出问题没有解答2有限性一个算法必须保证在执行有限步后结束,至少不能出现无限
2、循环或死循环在此基础上越简洁越快越好越简洁,占用内存越少,对设备的要求越基本;越快,这个意义就不用说了吧比如一个计算对方导弹轨迹的算法,如果等你算出来,那边导弹已经落地了,那还有什么意义?二、算法的思想专业的事交给专业的人去做普通人只要按专业人士给出的步骤一步一步地去完成,这就是算法的思想,即程序思想,你也可以理解为傻瓜化思想另外,算法强调的是通性通法,即给出一个算法,实际上是给出了一种解决一类问题的方法比如你给出一个计算圆的面积的算法,它应该能计算各种半径的圆的面积,而不是只适用于半径为某一具体数的圆三、特别提示1算法中的每一步应该是确定的并且能够有效地执行且得到确定的结果,而不应当模棱两可
3、,如求的近似值却没有要求近似的精确度,则该问题不能求解2现代算法主要是面向计算机的,如果算法中没有输出,程序也能运行 ,但是运行结果无法输出如果想要得到结果,那就要有输出3只要有公式可以利用,利用公式解决问题是最理想、最简便的方法,比如在写解方程x23x40的算法时,用求根公式来做,步骤则较为简洁4求解某一个问题的算法一般不是唯一的,我们通常选择较为简单的算法四、典例分析例1已知一个等边三角形的周长为a,求这个三角形的面积,设计一个算法解决这个问题分析对于已知等边三角形的边长求面积的题目同学们已经很熟悉,回顾其中的解题过程不难得到这个问题的算法步骤但学会清晰条理地表达自己的想法,也是一个基本的
4、要求解算法步骤如下:第一步,输入a的值第二步,计算l的值第三步,计算Sl2的值第四步,输出S的值例2下面给出了一个问题的算法:第一步,输入x.第二步,若x4,则执行第三步,否则执行第四步第三步,输出2x1.第四步,输出x22x3.这个算法解决的问题是什么?分析依据题目给出的算法步骤依次执行,是读懂算法的一个重要而基本的办法解这个算法先是输入一个变量x,当x4时输出2x1,当x4时输出x22x3,不难发现这个算法解决的问题是求分段函数f(x)的函数值.2典型算法举例1解方程(方程组)、不等式的算法例1用自然语言描述求一元二次方程ax2bxc0的根的算法思维切入对于求方程的根,解方程组这样的数值型
5、的问题,我们都有具体的计算方法,只要我们把平时的计算方法严格地按步骤描述出来即可因此我们很容易得到下面的算法解用自然语言来描述算法,第一步,计算b24ac;第二步,如果0,则原方程无实数解,输出“无实数解”;否则(0)x1,x2,输出x1,x2的值点评第二步中包含了一个判断b24ac是否小于零的条件,并根据判断结果进行不同的处理算法是否“健壮”,也是衡量算法优劣的重要指标如果思维不严谨,比如这个算法忘记考虑b24ac小于零的情形,实际运算一旦遇到,则会导致不是出错就是死机,那这个算法就是不“健壮”的例2写出解x24x30的算法思维切入只要把平时的固定解法有条理地写出来,即为解不等式的算法解第一
6、步,求出对应方程的根x11,x23;第二步,确定根的大小x1x2;第三步,写出解集x|1xr,则直线与圆相离,dr则直线与圆相切,dr则相离,如果dr则相切,如果dr则相交点评算法要求分解成简单计算,不要直接计算d.一个比较大的程序,会分成若干模块,一个模块出了问题只需要修改这一个模块,而不需要全盘翻工4累加、累乘问题的算法例5用自然语言描述求解mul123456问题的算法思维切入根据算法的特点,我们学过的加、减、乘、除运算法则都是算法,只要按照具体的规则有步骤地描述过程,便有了该题的算法解第一步,计算12,得2;第二步,将第一步中的运算结果2与3相乘得6;第三步,将第二步中的运算结果6与4相
7、乘得24;第四步,将第三步中的运算结果24与5相乘得120;第五步,将第四步中的运算结果120与6相乘得720.点评如果让人一步一步地做,太枯燥了但这恰好是计算机的优势所以算法好不好,还分让谁来执行,对人来讲是奇笨无比的办法,对计算机却可能是一个好办法思维拓展该算法包含一个重复操作的过程是循环结构,我们可将算法改造得更为简练、科学解第一步,设i1,P1;第二步,如果i6执行第三步,否则执行第五步;第三步,计算Pi并将结果代替P;第四步,将i1代替i,转去执行第二步;第五步,输出P.点评i称为计数变量,每一次循环它的值增加1,由1变到6,P是一个累乘变量,每一次循环得到一个新的结果,然后新的结果
8、代替原值.3算法框图画法全知晓一、画算法框图的基本步骤第一步,设计算法,因为算法的设计是画算法框图的基础,所以画算法框图前,首先写出相应的算法步骤,并分析算法需要用哪种基本逻辑结构(顺序结构、选择结构、循环结构)完成第二步,把算法步骤转化为对应的算法框图,在这种转化过程中往往需要考虑很多细节,是一个将算法“细化”的过程第三步,将所有步骤的算法框图用流程线连接起来,并加上终端框,得到整个表示算法的算法框图二、画算法框图的规则1使用标准的框图符号2框图一般按从上到下、从左到右的方向来画3除判断框外,大多数框图符号只有一个进入点和一个退出点,判断框是唯一具有超过一个退出点的符号4在图形符号内描述的语
9、言要简练清楚三、典例分析1顺序结构顺序结构是最简单的算法结构,是任何一个算法都离不开的结构若一个算法由若干个依次执行的步骤组成,则在画算法框图时,可直接由顺序结构完成因为在其他的结构中都会涉及到顺序结构,所以关于顺序结构的画法,在此不再单独叙述2选择结构设计算法框图时,若是分段函数或执行时需要先判断才能执行的问题,则需要用到判断框,引入选择结构例1如图,在边长为4的正方形ABCD的边上有一点P,沿着BCDA的方向由点B向点A运动,设点P运动的路程为x(0x12),APB的面积为y,画出y关于x的关系式的算法框图分析随着点P的位置不同,APB的面积与路程x有不同的对应关系,所以需要先判断点P的位
10、置,这就需要用到选择结构,先根据题意写出算法,再根据算法画出算法框图即第一步,按照题意,y与x的关系满足分段函数:y第二步,用合适的含选择结构的算法框图表示该分段函数解算法框图如图所示点评该题中的分段函数是分三段的函数,需引入两个判断框至于判断框的内容是没有顺序的,但与下一图形的内容或操作必须相互对应同时,在画算法框图时,要特别注意图形符号的规范性3循环结构如果问题中进行了重复的运算,且有相同的规律,就可根据需要引入相关变量,利用这些规律组成一个循环体,用循环结构来解决例2 某机械厂为增加产值进行了技术革新据统计2009年的生产总值为500万元,技术革新后预计每年的生产总值比上一年增加5%,问
11、最早要到哪一年生产总值才能超过600万元,试用算法框图表示分析用变量n,a分别表示所经过的年数和生产总值的数量,注意变量的初始值以及递加的值是多少由题意知第n年后的生产总值为a500(10.05)n,此时为(2009n)年由于题中进行了重复的运算,故应引入循环结构解算法框图如图所示4例说选择结构选择结构是三种基本逻辑结构之一,可以解决一些含有条件判断的算法问题,如分段函数求值问题、比较大小问题、分类讨论问题和一些实际问题等下面就其应用略举两例,供同学们学习时参考一、分段函数求值问题例1 已知函数y请设计算法框图,要求输入自变量x,输出函数值y.分析输入自变量x的值,首先判断x与0的大小关系,再
12、代入相应的表达式求函数值解算法框图如图点评求分段函数的函数值,需先判断再执行步骤,需要引入选择结构在使用选择结构时,要注意判断条件的设定不重不漏,确保各种可能的判断值有正确、唯一的流向二、实际应用问题例2 邮政电子汇款单笔最高限额为1万元,每笔汇款的资费标准为汇款金额的1%,最低收费为2元,最高收费为50元试编写一算法框图求出当汇款x (02 011.解两种方法:算法框图如图1和如图2所示点评涉及求多项的和与积的算法框图要用到循环结构和选择结构画图时要注意循环变量的初始值、终值以及循环变量的增量在程序中的作用本题代表了一类相邻两个数的差为常数的求和问题的解法,在设计算法框图时要注意前后两个加数
13、相差2,此时计数变量不是ii1,而是ii2,要根据题意灵活地改变算法中的相应部分二、叠加求值例2画出求式子(共9个3)的值的一个算法框图分析本题是一个叠加问题,由于前后重复了多次相同的运算,所以应采用循环结构来设计算法,但利用循环结构实现算法需搞清初始值是什么本题中初始值可设定为a1,第一次循环得到a2,第二次循环得到a3,a9,共循环了8次解算法框图如图所示点评如果算法问题里涉及的运算有许多重复的步骤,且数之间有相同的规律,那么可引入变量,应用循环结构在循环结构中,要注意根据条件,设计合理的计数变量、累计变量,特别要注意条件的表述要恰当、精确,以免出现多一次循环或少一次循环的情况.6三种逻辑
14、结构辨与析算法中有三种逻辑结构,即顺序结构、选择结构、循环结构,同学们初学这三种结构,容易混淆本文将这三种结构进行比较,希望同学们能深刻体会这三种结构的差异与共同点一、三种基本逻辑结构顺序结构按照语句的先后顺序,从上而下依次执行这些语句,该结构不具备控制流程的作用,是任何一个算法都离不开的基本结构选择结构根据是否满足某种条件来选择程序的走向当条件满足时,运行一个分支,不满足时,运行另一个分支循环结构从某处开始,按照一定的条件,反复执行某一处理步骤的情况用来处理一些进行反复操作的问题.二、三种基本逻辑结构的共同特点1只有一个入口2只有一个出口,注意一个菱形判断框有两个出口,而一个选择结构只有一个
15、出口,不要将菱形框的出口和选择结构的出口混为一谈3结构内的每一部分都有机会被执行到,即对每一个框来说都应当有一条从入口到出口的路径通过它,如图1中的A,没有一条从入口到出口的路径通过它,是不符合要求的算法框图4结构内不存在死循环,即无终止的循环,如图2就是一个死循环,在算法框图中是不允许有死循环出现的三种基本结构的这些共同特点,也是检查一个算法框图或算法是否正确、合理的方法和试金石.7条件语句小聚1“IfThen”语句“IfThen”语句的一般格式如下If条件Then语句End If对应的框图如图1所示图1计算机在执行“IfThen”语句时,首先对If后的条件进行判断,如果符合条件,就执行Th
16、en后面的语句,若不符合条件,则直接结束该条件语句,转而执行后面的语句2“IfThenElse”语句“IfThenElse”语句的一般格式如下If条件Then 语句1Else 语句2End If对应的框图如图2所示图2计算机在执行“IfThenElse”语句时,首先对If后的条件进行判断,如果符合条件,则执行Then后面的“语句1”;若不符合条件,则执行Else后面的“语句2”3条件语句“IfThenElse”可以嵌套,其格式为If条件1Then语句1ElseIf条件2Then 语句2Else语句3End IfEnd If注意:使用条件语句时应注意以下几点:(1)条件语句必须以If语句开始,以
17、End If语句结束,一个End If语句必须和一个If语句对应(2)如果我们的程序只需对条件为真的情况作出处理,不需处理条件为假的情况,则条件语句省略Else,格式由IfThenElse语句变成IfThen语句.8透析循环语句两种循环语句1For语句的一般形式是For循环变量初始值To终值循环体Next执行步骤:当计算机执行For语句时,一般先执行一次循环体,当循环变量在初始值与终值之间时,执行循环体;当循环变量超过终值时,不再执行循环体,跳出循环体执行后面的语句2Do Loop语句的一般形式是Do循环体Loop While条件为真执行步骤:计算机执行Do Loop语句,先执行一次循环体,若
18、符合条件,继续执行循环体;当不符合条件时,跳出循环,执行Loop While后的语句.9算法在生活实际中的应用数学来源于生活,服务于社会,数学与生活息息相关,数学是有用的,在生活中做一件事情的方法和步骤有多种,生活中的许多问题都可以用算法描述,用算法框图表达下面请欣赏三例算法问题一、第29届奥林匹克运动会的申办例1北京成功举办了2008年第29届奥林匹克运动会你知道在申办奥运会的最后阶段,国际奥委会是如何通过投票决定主办权归属的吗?对选出的5个申办城市进行表决的操作程序是首先进行第一轮投票,如果有一个城市得票数超过总票数的一半,那么该城市将获得举办权;如果所有申办城市的得票数都不超过总票数的一
19、半,则将得票数最少的城市淘汰,然后重复上述过程,直到选出一个申办城市为止请设计一个算法表述上面过程,并画出算法框图解算法步骤如下:第一步,投票;第二步,统计票数,如果有一个城市得票数超过总票数的一半,那么该城市就获得主办权;否则淘汰得票数最少的城市,转第一步;第三步,宣布主办城市算法框图如图所示:点评算法本身就是用计算机解决一些实际问题的方法,一定要充分理解算法的特点二、奖金的发放例2某科研所决定拿出一定量的资金对科研人员进行奖励,按照科研成果价值的大小决定奖励前10名第1名得全部奖金的一半多1万元,第2名得剩余的奖金的一半多1万元,第3名再得剩余奖金的一半多1万元,以此类推,到第10名恰得奖金1万元,请设计一个算法语句求科研所最初拿出多少奖金进行奖励,并画出算法框图解第10名的奖金额S11万元,第9名和第10名的总奖金额S2(11)24万元,第8名、第9名和第10名的总奖金额S3(41)210万元总奖金额S10(S91)2,得递推公式S11,Sn1(Sn1)2,n1,2,9.算法语句:S1i1DoS(S1)*2ii1Loop Whilei3,则输出S;否则,转第三步算法框图如图所示:算法语句:S0I1DoS(S1)/2II1Loop WhileI3输出S.