高中数学《算法与程序框图》文字素材3 新人教A版必修3
人教A版高中数学必修3 .2算法与程序框图课件_2
[变式训练] 5.已知函数 y=-0xx=+01,x>0, 写出求其函数值的算法,并
x+3x<0, 画出程序框图。【解】 算法如下:
第一步,输入 x. 第二步,若 x>0, 则令 y=-x+1, 否则执行第三步. 第三步,若 x=0, 则令 y=0,否则执行第四步. 第四步,y=x+3. 第五步,输出 y.
出的位置
A.1 B.2
C.3
D.4
【解】 (2)由程序框图的定义知,①②③④均正确,故选 D.
人教A版高中数学必修3第一章1.1.2算 法与程 序框图 课件_2
人教A版高中数学必修3第一章1.1.2算 法与程 序框图 课件_2
画程序框图的规则如下: (1)使用标准的图形符号。 (2)框图一般按从上到下、从左到右的方向画。 (3)除判断框外,大多数流程图符号只有一个进入 点和一个退出点。判断框具有超过一个退出点的 唯一符号。 (4)判断框分两大类,一类判断框“是”与“否” 两分支的判断,而且有且仅有两个结果;另一类 是多分支判断,有几种不同的结果。 (5)在图形符号内描述的语言要非常简练清楚。
1.1.2算法的基本结构和 程序框图(1)
复习回顾
1.算法的概念:算法实际上是解决问题的一种程序
性方法,它通常解决某一个或一类问题,在用算法解决
问题时,显然体现了特殊与一般的数学思想. 2.算法的性质有:①有限性,②确定性,③有序性,
④不唯一性,⑤可行性.解答有关算法的概念判断题应
根据算法的这五大特点.
第二步:如果a 0
则lal=a,否则, lal=-a; 第三步:输出lal.
开始
输入a N
a ≥0
Y |a|=a
输出 |a|
人教A版高中数学必修3第一章1.1.2算 法与程 序框图 课件_2
最新人教版高中数学必修3第一章《算法与程序框图》教材梳理
庖丁巧解牛知识·巧学一、算法的含义1.算法的定义广义的算法是指完成某项工作的方法和步骤,所以我们可以说洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法,等等.在数学中,现代意义上的算法可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤,或看成按要求设计好的有限的确切的计算序列.2.算法的要求我们现在学习的算法不同于求解一个具体问题的方法,它有如下要求:(1)写出的算法可适用于一类问题,并且再遇到类似问题时能够重复使用;(2)算法过程要做到能一步一步地执行,每一步执行的操作,必须确切,不能含混不清,且在有限步后必须得到问题的结果.辨析比较算法与数学问题的解法既有联系又有区别.(1)联系:算法与解法是一般与特殊的关系,也是抽象与具体的关系.譬如,教材先从分析一个具体的二元一次方程组的求解过程(解法)出发,归纳出了二元一次方程组的求解步骤;并且指出,这样的求解步骤也适合有限制条件的二元一次方程组,这些步骤就构成了解二元一次方程组的算法;(2)区别:算法是解决某一类问题所需要的程序和步骤的统称,也可理解为数学中的“通法通解”;而解法是解决某一个具体问题的过程和步骤,是具体的解题过程.二、算法的特征及设计要求1.算法的特征对于某一个问题,找到解决它的某种算法是指使用一系列运算规则能在有限步骤内求解某类问题,其中的每条规则必须是明确定义的、可行的,不能含糊其辞、模棱两可,同时应对所有的初始数据(而不仅是指对某些特殊数值)有效.算法从初始步骤开始每一个步骤只能有一个确定的后继步骤,从而组成一个步骤序列,这个序列必须是有限的,序列的终止表示问题得到解决或指出问题没有解答.我们过去学习过的许多数学公式都是算法,加、减、乘、除运算法则以及多项式的运算法则也是算法.算法可以概括出以下几个特点:(1)概括性:写出的算法必须能解决这一类问题,并能重复使用.例如课本中关于二元一次方程组的求解问题,也适用于其他二元一次方程组的解法.(2)逻辑性:也就是算法应具有正确性和顺序性.算法从初始步骤开始,分为若干明确的步骤,前一步是后一步的基础,只有执行完前一步才能进行下一步,并且每一步都有确切的含义,从而组成了一个具有很强逻辑性的序列.(3)有穷性:算法的步骤序列是有限的.一个算法对任何合法的输入值必须总是在执行有穷步之后结束,且每一步都可在有穷时间内完成.(4)不唯一性:求解某个问题的算法不是唯一的,对于一个问题可以有不同的算法,如课本关于二元一次方程组的求解问题可以用公式法,也可以用高斯消去法.(5)普遍性:很多具体的问题,都可以设计合理的算法去解决,例如心算、手算、计算器计算都要经过有限的、事先设计好的步骤去加以解决,同样一个工作计划、教学计划、生产流程都可以称为“算法”.辨析比较课本上有两种表示算法的语言:自然语言和算法语言.对于这两种算法,用自然语言叙述的算法便于理解,但比较冗长,而且操作性不是十分明朗;用数学语言描述的算法十分简洁,而且清晰,操作性强,但较抽象.2.算法的设计要求首先我们要知道,通常算法并不给出精确的解,而是说明如何得到解.算法由一系列加减乘除等运算以及顺序、判断、循环的操作指令完成.研究算法只是将研究解决一类问题的方法分解成一些合理的操作步骤.这些操作步骤必须明确有效并且能在有限步内完成.如何设计一个算法呢?首先应该从头到尾将这个问题解决的思路,以及各种可能出现的情况都想到,并且进行抽象概括.然后对过程进行细分,把每一个操作概括为一个简洁的算法语句,最后将算法一步步地写出来.一般情况下,一个问题对应很多不同的算法,我们在实际应用中可以选择一个效率最高的算法.算法设计的要求:(1)写出的算法必须能解决一类问题(如判断一个任意整数n是否为质数,求任意一个函数式的近似解等),并且能重复使用.(2)要使算法尽量简单,步骤尽量少,算法从初始步骤开始,每一个步骤只能有一个后继步骤,从而组成一个步骤序列,序列的终止表示问题得到解答或指出问题没有答案.(3)算法过程要能一步一步执行,每一步执行的操作,必须确切不能含糊不清,而且在有限步后能得出结果.(4)尽量地从步骤和思想上优化算法,使得算法效率最高.深化升华(1)算法实际上就是解决问题的一种程式化方法,它通常指向某一个或某一类问题,而解决的过程具有程序性和构造性.算法又可看成是一种解决问题的特殊的有效方法,我们在学习的过程中应重点学习算法的构造过程.(2)算法与一般的解决问题的过程有联系,但算法是“傻瓜化”的,即算法要“面面俱到”,不能省略任何一个小小的步骤(只有这样做,人们才能在设计出算法后,把具体的执行过程交给计算机去完成).三、算法的描述描述算法可以用不同的方式.例如:可以用自然语言和数学语言加以叙述,也可以借助形式语言(算法语言)给出精确的说明,还可以用程序框图直观地显示算法的全貌.1.自然语言自然语言就是人们日常使用的语言,可以是人们之间用来交流的语言、术语等,它通过分步的方式表达解决问题的过程.优点:好理解,当算法的执行都是先后顺序时比较容易理解.难点:表达冗长,且不易表达清楚步骤间的重复操作、分情况处理、先后顺序等问题.2.程序框图程序框图是用规定的图形符号来表达算法的具体过程.优点:简捷形象、步骤的执行方向直观明了.3.程序语言程序语言是将自然语言和框图所表达的解决问题的步骤用特定的计算机可识别的低级或高级语言编写而成的.特点:能在计算机上执行,但格式要求严格.四、程序框图1.程序框图的定义程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形.打个比方,写文章要先拟提纲,盖楼房要先设计图纸,而计算机解题要先考虑算法,然后编制程序框图,程序框图是人们用来描述算法步骤的形象化的方法.在程序框图中,每一个框都清楚地表示了这一步要做的事,框与框之间的箭头表示相邻两框所做事情的先后顺序,每一种不同形状的框表示不同的操作方法!若把程序框图画出来,对编者来说,思路清晰,逻辑关系一目了然,尤其是在一些较复杂的程序编制中更为实用.2.构成程序框图的图形符号及其作用通常,程序框图由程序框和流程线来组成.一个或几个程序框的组合表示算法的一个步骤;流程线是方向箭头,按照算法进行的顺序将程序框连接起来.程序框图表示算法用到的图形符号如下表:图形符号名称符号表示的意义起止框流程图的开始或者结束输入输出框数据的输入或者结果的输出处理框赋值、执行计算语句、结果传送判断框根据给定的条件判断流程线流程进行的方向连结点连接另一页或另一部分程序框图学法一得作程序框图的规则及注意点:(1)每一种程序框图的符号都有自己的意义,不能混用,符号一定要规范.起始框只有一条流出线,终止框只有一条流入线,输入输出框和处理框只有一条流入线和流出线.判断框有一条流入线和两条流出线(True,False).(2)流程图的画法是从上而下、从左而右的方向画.一个算法的步骤到另一个算法的步骤,要用流程线连接.流程线要带箭头,表明流程执行的次序.(3)起止框是任何程序框图必不可少的,表明程序的开始和结束.(4)算法中间要处理的数据,一般分别写在不同的处理框内.(5)当算法要对两个不同的结果进行判断时,判断条件写在判断框内.(6)程序框图符号框内的文字表述要简洁精炼.(7)一般情况下,我们先用自然语言编写算法,然后再画程序框图.3.程序框图的构成一个程序框图包括以下几部分:(1)实现不同算法功能的相对应的程序框图的图形符号;(2)带箭头的流程线;(3)程序框内必要的说明文字.五、顺序结构算法含有两大因素:一是操作,主要包括算术运算、逻辑运算、函数运算等;二是逻辑结构.逻辑结构控制着算法的各操作的执行顺序.我们写出的或画出的程序框图,一定要使大家看得清楚、明白、容易阅读.如果写的算法毫无头绪,就让人很难阅读和理解.这就要求算法要有一个良好的结构.通常一个算法只能由三种基本逻辑结构组成,算法的三种基本逻辑结构分别为:顺序结构、条件结构、循环结构.顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的.它是由若干个依次执行的步骤组成的,是任何一个算法都离不开的一种基本算法结构. 我们可以用图1-1-1表示,其中的A部分,B部分是依次执行的.只有在执行完A部分的操作后,才会顺次执行B部分的操作.图1-1-1深化升华顺序结构是从上而下依次执行命令,每步只执行一次,不会引起程序步骤的跳转.它只能解决一些简单的问题,步骤之间不能随便调换,调换会使算法不运行或出现错误.单独的顺序结构一般出现在这样几种题目中:根据公式求值、求一般函数(非分段函数)的函数值等;再者顺序结构是其他结构的基础,会出现在其他结构的运行的前后,是算法必需的一个基本结构.六、条件结构其实对于条件结构我们遇到的最早,我们遇到一个岔路口,你需要选择向哪走;“鱼和熊掌不能兼得”也只有一个选择;还有我们去坐出租车有3千米以内7元,3千米以外每千米3元的收费标准;等等.这些都是条件结构.显然,条件结构中有一个条件和两个分支,根据条件判断到底来选择哪个分支.在一个算法中,通常会遇到一些条件的判断,算法的流程根据条件是否成立有不同的流向,这种先根据条件判断,再决定执行哪一种操作的结构称为条件结构.图1-1-2所示的虚线框内是一种条件结构,此结构中包含一个判断框,根据给定的条件P 是否成立而选择A框或B框,请注意无论条件P是否成立,只能执行A框或B框之一,不可能既执行A框又执行B框,也不可能A框、B框都不执行,无论走哪一条路径,在执行完A或B 之后,脱离本条件结构.当然A或B两个框中可以有一个是空的,即不执行任何操作,如图1-1-3也是条件结构的一种.图1-1-2 图1-1-3辨析比较条件结构不同于顺序结构的地方是:它不是依次执行操作指令进行运算,而是依据条件作出逻辑判断,选择执行不同指令中的一个.一般地,这里的判断主要是判断“是”(即“Y”)或“否”(即“N”),即是否符合件的要求,因而它有一个入口和两个出口.七、循环结构在一些算法中,经常会出现从某处开始,按照一定的条件,反复执行某一处理步骤的情况,这就是循环结构.反复执行的处理步骤称为循环体.显然,循环结构中有关于条件的判断.因此,循环结构中必包含条件结构.我们先看一个小例子,比如我们要计算1×2×3×4×…×100,该怎么办呢?我们知道最直接的办法:图1-1-4只要一次一次地乘就是了,对我们来说这是一个烦琐而乏味的工作,可是计算机最适合这种工作了,因为计算机运算速度快,执行成千上万的重复操作只需要很短时间,却能保证每次的结果非常准确.首先我们知道一共要乘100次来设置一个变量i,它的用处是控制计算次数,我们要再设置一个变量m来积累一下我们前边得到的乘积的结果.算法如下: 第一步,首先对变量i赋值,i=1;第二步,对变量m赋值,m=1;第三步,让m累积,得到要求的值m=m×i;第四步,变量i增加1,i=i+1;第五步,判断一下,如果i>100则输出m,否则转至第三步.流程图如图1-1-4.我们来仔细地看一下这个例子的程序框图,重点看一下虚线框里面的部分(结合下面的解释):令i=1,m=1(注意不是0),赋完初值之后,循环就启动了.首先,m=1×1=1,然后i变为2,到判断框判断一下比100小,那么转回来再开始一遍刚才的过程.……直到循环到i=100时,m=1×2×3×4×…×100,到下一步时,i=100+1=101,此时i=101>100,便退出了循环结构.如果一个计算结构要重复一系列的计算步骤若干次,每次计算步骤完全相同,则这种算法结构叫做循环结构.可看出里面有几个比较重要的部分:类似于例子中的i用来控制循环次数的量称为循环变量(类似于例子中的m用来存储循环问题的结果的变量叫做累积变量).由于m=m+1这个语句在每次循环时都运行,我们把它叫做循环体.并且还有一个控制循环是否退出的判断框称为循环终止条件.这三部分构成了一个完整的循环结构.一个循环结构可如图1-1-5所示.图1-1-5学法一得写循环结构的步骤及应注意的问题:书写循环结构主要要找三个重点:①循环变量及初始值;②循环体的内容;③循环终止的条件,只要找到这些问题就好办了.书写一个循环结构要检查一下下面几个方面:(1)只有一个入口和一个出口(注意是看整个循环结构,不是看某一个部分);(2)结构的每一部分都可能被执行到(虽然每次只执行一条路线);(3)循环体内一定有一个选择结构来控制循环的流程;(4)结构体内的循环必须在有限次之内终止,不能出现死循环;(5)注意正确设置循环次数,不要多1或者少1.常见的循环结构有三种:计数型循环、当型循环和直到型循环.1.计数型循环结构一般用于预先知道重复的次数的循环结构.2.当型(While型)循环结构当型循环一般用于预先难以知道循环次数的循环结构,通过设置某个条件,当条件满足时就重复操作,当条件不满足时就退出循环.如图1-1-6所示,它的功能主要是当给定条件q成立时,执行A框操作,执行完A后,再判断条件q是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次条件不成立为止.此时不执行A框,从b点脱离循环结构.3.直到型(Until)循环结构直到型循环结构一般用于预先难以知道循环次数的循环结构,通过设置某个条件,当条件不满足时退出循环.如图1-1-7所示,它的功能是先执行A框,然后判断给定的条件q是否成立,如果条件q不成立,则执行A,然后再对条件q作判断,如果条件q仍然不成立,又执行A……如此反复执行A,直到给定的条件q成立为止,此时不再执行A,从b点脱离本循环结构.图1-1-6 图1-1-7辨析比较三种基本结构的关系如何?有哪些共同特点?顺序结构是最基本的也是最简单的控制结构;条件结构则是需要通过先判断,再决定执行哪个程序的控制结构;循环结构则是需要反复执行同一程序的控制结构,循环结构一定包含顺序结构和条件结构.顺序结构、条件结构、循环结构的共同特点是:(1)只有一个入口.(2)只有一个出口(实际运行的程序).请注意:一个菱形判断框有两个出口,而一个条件结构只有一个出口,不要将菱形框的出口和条件结构的出口混为一谈.(3)结构内的每一部分都有机会被执行到,也就是说对每一个框来说都应当有一条从入口到出口的路径通过它.像图1-1-8中的A,没有一条从入口到出口的路径通过它,是不符合要求的程序框图.(4)结构内不存在死循环,即无终止的循环,像图1-1-9就是一个死循环,在流程图中是不允许有死循环出现的.图1-1-8 图1-1-9八、计数变量与累加、累乘变量在有关累加、累乘问题的循环结构中一般都有一个计数变量和累加、累乘变量.计数变量用于记录循环次数,累加变量用于输出结果.计数变量和累加变量一般是同步执行的,累加或累乘一次,同时又计数一次.1.计数变量可以统计执行循环的次数,它控制着循环的开始和结束;算法未执行循环结构时,就赋予计数变量初始值,预示着循环开始,每执行一次循环结构,计数变量的值发生变化,并在每一次重复执行完循环体时(直到型)或重新开始执行循环体时(当型),要判断循环体的条件是否已达到终止循环的目的.2.累加变量,它是我们编写算法时至关重要的量,我们根据要求制定它的变化情况,通常情况下与计数变量有对应关系.每执行一次循环结构,累加变量的值变化一次,并在每一次重复执行完循环体时(直到型)或重新开始执行循环体时(当型),观察累加变量值的变化情况,并根据题意对累加变量设置使循环结构终止循环的条件.3.累乘变量同累加变量的设置目的一样,只不过分工不同.前者是用来计算很多项的和,后者是用来处理很多项的积.累加、累乘变量是为最终输出的结果服务的,通常累加变量用来处理有通项公式或递推公式的数列的前n项和,累乘变量用来处理像阶乘一样有通项公式或递推公式的数列的前n 项的积.深化升华在循环结构中,要求注意根据条件设计合理的计数变量、循环变量.特别要求条件的表述要恰当、精确.若求只含有一个关系式的解析式的函数值时,只用顺序结构就能解决;若是遇到分类讨论或执行时需要判断后才能执行后继步骤的,就必须引入条件结构;如果问题里涉及的运算进行了许多次重复,且每次重复时变量与变量之间有对应关系,就可引入变量,应用于循环结构.典题·热题知识点一算法设计例1 写出解方程x2-2x-3=0的一个算法.思路分析:本题考查一元二次方程的解法.对于本类题目关键是要先写出解方程或方程组的解题过程.解:算法一:第一步,移项,得x2-2x=3.①第二步,①式配方,得(x-1)2=4.②第三步,②式两边开方,得x-1=±2.③第四步,解③得x=3或x=-1.算法二:第一步,计算一元二次方程的判别式的值,并判断其符号.显然Δ=22+4×3=16>0.第二步,将a=1,b=-2,c=-3代入求根公式x1,2=a acb b24 2-±-,得x1=3,x2=-1.方法归纳1.该题用了两种方法求解,一种是分解因式法,另一种是求根公式法.对于问题的求解过程,我们需要既强调对“通法通解”的掌握,又强调对所学过的知识的灵活应用.2.传统的数学问题的求解过程就是一个具体的算法.例2 100个和尚吃100个馒头.大和尚一人吃3个,小和尚3人吃一个,求大、小和尚各多少个?试用算法来解本题.思路分析:本题考查二元一次方程组的解法.对于二元一次方程组,我们可以直接套用高斯消元法.解:设有x 个大和尚,y 个小和尚.算法如下:第一步,先列方程组⎪⎩⎪⎨⎧=+=+,100,10033y x y x 可得a 11=3,a 12=31,b 1=100,a 21=1,a 22=1,b 2=100. 第二步,令D=a 11a 22-a 21a 12=3-31≠0,方程组有解. 第三步,套用公式可求得x=Da b a b 122221-=25,y=D a b a b 211112-=75. 巧解提示 可以看出只需给出问题的初始值a 11=3,a 12=31,b 1=100,a 21=1,a 22=1,b 2=100,套用高斯消元法的算法,问题即可解决,并且步骤简洁,计算量少,且还可以看出该算法具有很强的普遍性.高斯消元法解一般的二元一次方程组⎩⎨⎧=+=+.,22221211221111b x a x a b x a x a 的算法如下:第一步,计算D=a 11a 22-a 21a 12;第二步,如果D=0,则原方程组无解或有无穷多组解;否则(D≠0),x 1=Da b a b 122221-,x 2=D a b a b 211112-; 第三步,输出计算结果x 1、x 2或者无法求解的信息.知识点二 顺序结构例3 f(x)=x 2-2x-3,求f(3)、f(5)、f(-5)并计算f(3)+f(5)+f(-5).设计一个解决该问题的算法,并画出流程图.思路分析:本题考查简单的求函数值的顺序结构的程序框图的作法.这是简单的求函数值问题,我们直接代入即可求得函数值.解:算法如下:第一步,输入x=3;第二步,输出y 1=x 2-2x-3;第三步,输入x=-5;第四步,输出y 2=x 2-2x-3;第五步,输入x=5;第六步,输出y 3=x 2-2x-3;第七步,输出y=y 1+y 2+y 3. 算法流程图如图1-1-10.图1-1-10方法归纳 本题不是很特殊,但说明了一般函数(非分段函数)的函数值的求法就是一个简单的顺序结构.但是要注意类似于拓展变式中关于迭代的函数思想的掌握.例4 求底面边长为24,侧棱长为5的正四棱锥的体积.给出解决该问题的一个算法.思路分析:本题考查的是几何中的体积计算问题,要用顺序结构来作程序框图.要求正四棱锥的体积,根据体积公式必须先求出底面面积及高,再利用体积公式求出体积.解:算法设计如下:第一步,取a=24,l=5;第二步,计算R=22a ∙; 第三步,计算h=22R l -;第四步,计算S=a 2;第五步,计算V=31Sh;第六步,输出计算结果. 算法流程图如图1-1-11.图1-1-11方法归纳 这个题目主要展现了如何来求一个锥体的体积的思维过程,体现了顺序的特点,依次先求高,再求底面积,最后求体积.此题比以前的题目更为抽象,体现了从特殊到一般的转化,也体现了对知识的概括能力.例5 用尺规作图,确定线段AB 的一个五等分点.思路分析:本题考查顺序结构作图的步骤及注意事项.确定线段AB 的五等分点,是指在线段AB 上确定一点M,使得AM=51AB. 解:算法如下:第一步,从A 点出发作一条与原直线不重合的射线.第二步,任取射线上一点C,并在射线上作线段AD,使AD=5AC.第三步,连结DB,并过C 点作BD 的平行线交AB 于M,M 就是要找的一个5等分点. 这个过程也需要一步一步来实现.作图步骤如下:1.从已知线段的左端点A 出发,作一条射线AP.2.在射线上任取一点C,得线段AC.3.在射线上作线段CE=AC.4.在射线上作线段EF=AC.5.在射线上作线段FG=AC.6.在射线上作线段GD=AC,那么线段AD=5AC.7.连结DB.8.过C作BD的平行线,交线段AB于M,这样点M就是线段AB的一个5等分点.图1-1-12方法归纳上面是解决这个作图问题的一个算法,我们只要依次执行这一系列步骤,就能确定线段的5等分点.这个算法具有一般性,对于任意自然数n,都可以按照这个算法的思想,设计出确定线段n等分点的步骤,得到解决这个问题的一般算法.知识点三条件结构例6 有4个数a,b,c,d,要求按由大到小的顺序输出.思路分析:本题考查排序问题中应用条件结构判断的问题.我们可以把a,b,c,d中最大的放在a 中,然后将余下的三个数中最大的放在b中,再找出余下的两个数中较大的放在c中,最后输出a,b,c,d.解:算法步骤如下:第一步,找出a和b中的大者放在a中,小者放在b中.第二步,找出c和d中的大者放在c中,小者放在d中.第三步,找出a和c中的大者放在a中,小者放在c中.第四步,找出b和c中的大者放在b中,小者放在c中.第五步,找出b和d中的大者放在b中,小者放在d中.第六步,找出c和d中的大者放在c中,小者放在d中.程序框图如图1-1-13所示.图1-1-13。
人教A版高二数学必修三第一章:1.1算法与程序框图
输出Sum
点
?
结束
i=i+1 Sum=Sum + i
当型结构
i<100? 是
否ቤተ መጻሕፍቲ ባይዱ
i=i+1
Sum=Sum + i
i=i+1
解决方法就是加上一个判断,判断 是否已经加到了100,如果加到了则
Sum=Sum + i
退出,否则继续加。
否 i>=100?
请填上判断的条件。
是
直到型结构
P11 练习1
开始
输入a
N
a ≥0
Y
输出 |a|=a
输出 |a|=-a
结束
练习2
开始 X1=1 X2=2
m=(x1+x2)/2 N
m*m -3<>0 y
(x1*x1 -3)*(m*m -3) >0
x1=m
x2=m
N |x1 -x2|<0.005 y
m=(x1+x2)/2
输出所求的近似值m 结束
▲下面是关于城市居民生活用水收费的问题
2、写出解不等式 x2 2x 3 0 的一个算法。
§1.1.2 程序框图
1城区一中学生数学模块学 分认定由模块成绩决定,模 块成绩由模块考试成绩和平 时成绩构成,各占50%,若 模块成绩大于或等于60分, 获得2学分,否则不能获得学 分(为0分),设计一算法, 通过考试成绩和平时成绩计 算学分,并画出程序框图
小结:算法具有以下特性:(1)有穷性 (2)确定性
(3)顺序性 (4)不唯一性 (5)普遍性
1
1.5
1.25
1.37 2
图1.1-1
表1-1
高中数学第一章算法初步1.1算法与程序框图1.1.2第1课时程序框图、顺序结构课件新人教A版必修3
答案:x=log232
归纳升华 顺序结构的应用方法
1.求用顺序结构表示的程序框图执行的结果时,只 需按顺序逐步执行即可.
2.已知程序框图运行的结果求程序框图中某步时, 可以根据结果逐步逆推得出答案.
解析:由于算法设计时要求返回执行的结果,故必须 要有输出框,对于变量的赋值可通过处理框完成,故算法 设计时不一定要有输入框,因此 B 错;一个判断框产生 的结果是唯一的,故 C 错;程序框图就是流程图,所以 D 错.故选 A.
答案:A
类型 2 用顺序结构表示算法 [典例 2] 已知点 P0(x0,y0)和直线 l:Ax+By+C=0, 写出求点 P0 到直线 l 的距离 d 的算法,并画出程序框图. 解:用数学语言描述算法: 第一步,输入点的横、纵坐标 x0,y0,输入直线方程的系数, 即常数 A,B,C.
第一章 算法初步
1.1 算法与程序框图 1.1.2 程序框图与算法的基本逻辑结构
第 1 课时 程序框图、顺序结构
[学习目标] 1.了解程序框图的构成(难点). 2.理解 顺序结构,会用顺序结构表示算法(重点).
1.程序框图 (1)定义:程序框图又称流程图,是一种用程序框、 流程线及文字说明来表示算法的图形.
A.处理框 B.输出框 C.起止框 D.判断框
答案:D
3.程序框图中矩形框的功能是( ) A.表示一个算法的起始和结束 B.表示一个算法输入和输出的信息 C.赋值、计算 D.判断某一条件是否成立 解析:矩形框即处理框,具有赋值、计算的功能.
答案:C
4.如图所示的程序框图,若输出的结果是 3,则输 入的 m=________.
高中数学必修3(人教A版)第一章算法初步1.1知识点总结含同步练习及答案
描述:例题:高中数学必修3(人教A版)知识点总结含同步练习题及答案第一章 算法初步 1.1 算法与程序框图一、学习任务1. 了解算法的含义,了解算法的基本思想,能用自然语言描述解决具体问题的算法.2. 了解设计程序框图表达解决问题的过程,了解算法和程序语言的区别;了解程序框图的三种基本逻辑结构,会用程序框图表示简单的常见问题的算法.二、知识清单算法 程序框图三、知识讲解1.算法算法(algorithm)是指按照一定规则解决某一类问题的明确和有限的步骤 .可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤,或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤或序列能够解决一类问题.描述算法可以有不同的方式.例如,可以用自然语言和数学语言加以描述,也可以借助形式语言(算法语言)给出精确的说明,也可以用框图直观地显示算法的全貌.算法的要求:(1)写出的算法,必须能解决一类问题,并且能重复使用;(2)算法过程要能一步一步执行,每一步执行的操作必须确切,不能含混不清,而且经过有限步后能得到结果.下列对算法的理解不正确的是( )A.一个算法应包含有限的步骤,而不能是无限的B.算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的C.算法中的每一个步骤都应当是有效地执行,并得到确定的结果D.一个问题只能设计出一种算法解:D算法的有限性是指包含的步骤是有限的,故 A 正确;算法的确定性是指每一步都是确定的,故 B正确;算法的每一步都是确定的,且每一步都应有确定的结果,故 C 正确;对于同一个问题可以有不同的算法,故 D 错误.下列叙述能称为算法的的个数为( )描述:2.程序框图程序框图简称框图,是一种用程序框、流程线及文字说明来表示算法的图形.其中,起、止框是任何流程不可少的,表明程序的开始和结束.输入和输出框可用在算法中任何需要输入、输出的位置.算法中间要处理数据或计算,可分别写在不同的处理框内.一个算法步骤到另一个算法步骤用流程线连接.如果一个框图需要分开来画,要在断开处画上连接点,并标出连接的号码.①植树需要运苗、挖坑、栽苗、浇水这些步骤;②依次进行下列运算:,,,,;③从枣庄乘火车到徐州,从徐州乘飞机到广州;④ ;⑤求所有能被 整除的正整数,即 .A. B. C. D.解:B①、②、③为算法.1+1=22+1=33+1=4⋯99+1=1003x >x +133,6,9,12,⋯2345写出解方程组的一个算法.解:方法一:代入消元法. 第一步,由 得 ;第二步,将 代入 ,得 ,解得 ;第三步,将 代入方程 ,得 ;第四步,得到方程组的解为 .方法二:加减消元法.第一步,方程 两边同乘以 ,得 ;第二步,将第一步所得的方程与方程 作差,消去 ,得 ,解得 ;第三步,将 代入方程 ,得 ,解得 ;第四步,得到方程组的解为 .{2x +y =74x +5y =112x +y =7y =7−2x y =7−2x 4x +5y =114x +5(7−2x )=11x =4x =4y =7−2x y =−1{x =4y =−12x +y =7510x +5y =354x +5y =11y 6x =24x =4x =42x +y =72×4+y =7y =−1{x =4y =−1例题:画程序框图的规则(1)使用标准的图形符号.(2)框图一般按从上到下、从左到右的方向画.(3)除判断框外,大多数流程图符号只有一个进入点和一个退出点.判断框是具有超过一个退出点的惟一符号.(4)判断框分两大类,一类判断框是“是”与“否”两分支的判断,而且有且仅有两个结果;另一类是多分支判断,有几种不同的结果.(5)在图形符号内描述的语言要非常简练清楚.算法的三种基本逻辑结构顺序结构:语句与语句之间,框与框之间按从上到下的顺序进行.条件分支结构:在一个算法中,经常会遇到一些条件的判断,算法的流程条件是否成立有不同的流向,条件结构就是处理这种过程的结构.循环结构:在一些算法中,经常会出现从某处开始,按照一定的条件反复执行某些步骤的情况,这就是循环结构.下列程序框图分别是解决什么问题的算法.解:(1)已知圆的半径,求圆的面积的算法.(2)求两个实数加法的算法.执行如图的程序框图,输出的 ______ .解:T =30四、课后作业 (查看更多本章节同步练习题,请到快乐学)某程序框图如图所示,若输出的 ,则判断框内为( )A. B. C. D.解:AS =57k >4?k >5?k >6?k >7?已知函数 ,对每次输入的一个值,都得到相应的函数值,画出程序框图.解:f (x )={2x +3,3−x ,x 2x ⩾0x <0x答案:1. 关于算法的说法中,正确的是 A .算法就是某个问题的解题过程B .算法执行后可以产生不确定的结果C .解决某类问题的算法不是唯一的D .算法可以无限地操作下去不停止C()答案:解析:2. 下列运算不属于我们所讨论算法范畴的是 A .已知圆的半径求圆的面积B .随意抽 张扑克牌算到二十四点的可能性C .已知坐标平面内两点求直线方程D .加减乘除法运算法则B注意算法需按照一定的顺序进行.()4答案:解析:3. 执行如图所示的程序框图,如果输入的 ,则输出的 属于 .A .B .C .D .D取 ,得输出的 ,即可判断.t ∈[−2,2]S ()[−6,−2][−5,−1][−4,5][−3,6]t =−2S =64. 某批发商按客户订单数额的大小分别给予不同的优惠折扣.计算客户应付货款的算法步骤如下: :输入订单数额 (单位:件);输入单价 (单位:元);:若 ,则折扣率 ;若 ,则折扣率 ;若 ,则折扣率 ;若 ,则折扣率 ;:计算应付货款 (单位:元);:输出应付货款 .S 1x A S 2x <250d =0250⩽x <500d =0.05500⩽x <1000d =0.10x ⩾1000d =0.15S 3T =Ax (1−d )S 4T。
高中数学人教A版必修三 第一章《算法初步》 1.1.1 算法与程序框图 算法的概念
第一章 1.1 算法与程序框图1.1.1算法的概念1.通过回顾二元一次方程组的求解过程,体会算法的基本思想.2.了解算法的含义和特征.3.会用自然语言描述简单的具体问题的算法.知识梳理自主学习题型探究重点突破当堂检测自查自纠知识梳理 自主学习 知识点一 算法的含义及特征1.算法的概念12世纪的算法是指用阿拉伯数字进行 的过程 数学中的算法 通常是指按照 解决某一类问题的 和 的步骤现代算法通常可以编成 ,让计算机执行并解决问题 一定规则 明确 有限算术运算 计算机程序2.算法的特征(1)有限性:一个算法的步骤序列是 的,必须在 的操作之后停止,不能是 的. (2)确定性:算法中的每一步应该是的,并且能有效地执行且得到的结果,而不应当模棱两可. (3)顺序性与正确性:算法从初始步骤开始,分为若干明确的步骤,每一个步骤只能有一个确定的后续步骤,前一步是后一步的前提,只有执行完前一步才能进行下一步,并且每一步都准确无误,才能完成问题.(4)不唯一性:求解某一问题的解法不一定是的,对于同一个问题可以有的算法. 有限 有限 无限 确定 确定 唯一 不同(5)普遍性:很多具体的问题,都可以设计合理的算法去解决,如心算、计算器计算都要经过有限、事先设计好的步骤加以解决.3.算法与计算机 计算机解决任何问题都要依赖于 .只有将解决问题的过程分解为若干个 ,即,并用计算机能够接受的“ ”准确地描述出来,计算机才能够解决问题.算法 明确的步骤 算法 语言知识点二算法的设计1.设计算法的目的设计算法的目的实际上是寻求一类问题的算法,它可以通过计算机来完成.设计算法的关键是把过程分解成若干个明确的步骤,然后用计算机能够接受的“语言”准确地描述出来,从而达到让计算机执行的目的.2.设计算法的要求(1)写出的算法必须能解决一类问题.(2)要使算法尽量简单、步骤尽量少.(3)要保证算法步骤有效,且计算机能够执行.思考一次青青草原园长包包大人带着灰太狼、懒羊羊和一捆青草过河.河边只有一条船,由于船太小,只能装下两样东西.在无人看管的情况下,灰太狼要吃懒羊羊,懒羊羊要吃青草,请问包包大人如何才能带着他们平安过河?题型探究重点突破题型一算法的概念例1下列关于算法的说法,正确的个数有()C①求解某一类问题的算法是唯一的;②算法必须在有限步操作之后停止;③算法的每一步操作必须是明确的,不能有歧义或模糊;④算法执行后一定产生确定的结果.A.1B.2C.3D.4解析由于算法具有有限性、确定性等特点,因而②③④正确,而解决某类问题的算法不一定唯一,从而①错.跟踪训练1 下列说法中是算法的有________(填序号).①从上海到拉萨旅游,先坐飞机,再坐客车;②解一元一次不等式的步骤是去分母、去括号、移项、合并同类项,系数化为1;③求以A (1,1),B (-1,-2)两点为端点的线段AB 的中垂线方程,可先求出AB 中点坐标,再求k AB 及中垂线的斜率,最后用点斜式方程求得线段AB 的中垂线方程;④求1×2×3×4的值,先计算1×2=2,再计算2×3=6,6×4=24,得最终结果为24; ⑤12x >2x +4.题型二算法的设计例2所谓正整数p为素数是指:p的所有约数只有1和p.例如,35不是素数,因为35的约数除了1,35外,还有5与7;29是素数,因为29的约数就只有1和29.试设计一个能够判断一个任意正整数n(n>1)是否为素数的算法.跟踪训练2判断一个大于2的整数是否为质数的算法步骤如何设计?解第一步,给定大于2的整数n.第二步,令i=2.第三步,用i除n,得到余数r.第四步,判断“r=0”是否成立.若是,则n不是质数,结束算法;否则,将i的值增加1,仍用i表示.第五步,判断“i>(n-1)”是否成立.若是,则n是质数,结束算法;否则,返回第三步.题型三算法的应用例3一位商人有9枚银元,其中有1枚略轻的是假银元,你能用天平(无砝码)将假银元找出来吗?跟踪训练3“韩信点兵”问题:韩信是汉高祖手下的大将,他英勇善战,谋略超群,为汉朝的建立立下了不朽功勋.据说他在一次点兵的时候,为保住军事秘密,不让敌人知道自己部队的军事实力,采用下述点兵方法:①先令士兵从1~3报数,结果最后一个士兵报2;②又令士兵从1~5报数,结果最后一个士兵报3;③又令士兵从1~7报数,结果最后一个士兵报4.这样韩信很快算出自己部队里士兵的总数.请设计一个算法,求出士兵至少有多少人.对算法的含义及特征的理解易错点例4计算下列各式中的S值,能设计算法求解的是________.(1)S=1+2+3+ (100)(2)S=1+2+3+…+100+…(3)S=1+2+3+…+n(n∈N*).当堂检测 1 2 3 4 51.下列关于算法的说法中正确的是()A.算法是某个具体的解题过程B.算法执行后可以不产生确定的结果C.解决某类问题的算法不是唯一的D.算法可以无限地操作下去不停止2.下列四种自然语言叙述中,能称为算法的是()BA.在家里一般是妈妈做饭B.做米饭需要刷锅、淘米、添水、加热这些步骤C.在野外做饭叫野炊D.做饭必须要有米解析算法是做一件事情或解决一个问题等的程序或步骤,故选B.3.在用二分法求方程零点的算法中,下列说法正确的是()DA.这个算法可以求所有的零点B.这个算法可以求任何方程的零点C.这个算法能求所有零点的近似解D.这个算法可以求变号零点近似解解析二分法的理论依据是函数的零点存在定理.它解决的是求变号零点的问题,并不能求所有零点的近似值.4.已知直角三角形两直角边长为a,b,求斜边长c的一个算法分下列三步:(1)计算c=a2+b2;(2)输入直角三角形两直角边长a,b的值;(3)输出斜边长c的值.其中正确的顺序是________.(2)(1)(3)解析算法的步骤是有先后顺序的,第一步是输入,最后一步是输出,中间的步骤是赋值、计算.5.下面是解决一个问题的算法:第一步:输入x.第二步:若x≥4,转到第三步;否则转到第四步.第三步:输出2x-1.第四步:输出x2-2x+3.当输入x的值为____时,输出的数值最小值为____.课堂小结1.算法的特点:有限性、确定性、顺序性与正确性、不唯一性、普遍性.2.算法设计的要求:(1)写出的算法必须能够解决一类问题,并且能够重复使用.(2)要使算法尽量简单,步骤尽量少.(3)要保证算法正确,且算法步骤能够一步一步执行,在有限步后能得到结果.返回本课结束。
人教A版必修三1.1算法与程序框图
顺序结构可以用程序 框图表示为
步骤n
步骤n+1
已知三角形三边长分别为a,b,c,则三角 形的面积为
S p( p a)( p b)( p c)
其中
p
a
b 2
c
这个公式被称为海伦—秦九韶公式.
例3、已知一个三角形的三边边长分别为2,3,4, 利用海伦-秦九韶公式设计一个算法,求出它的 面积,画出算法的程序框图. 算法分析: 第一步:计算p的值.
第三步:输出应交纳的水费y.
1.1.2 程序框图
学习目标:(1)在具体问题的解决过程中,掌握基本 的程序框图的画法,理解程序框图的三种基本逻辑 结构---顺序结构、条件结构、循环结构。
(2)通过模仿、操作、探索,经历通过设计程序框 图表达解决问题的算法的过程。
学习重点:通过模仿、操作、探索,经历通过设计 程序框图表达求解问题的过程,在具体问题解决 过程中,理解程序框图的三种基本逻辑结构.
算法学的发展
随着科学技术的日新月异,算法学也得到 了前所未有的发展,现在已经发展到了各个领 域.有遗传算法,排序算法,加密算法,蚁群算法 等,与生物学,计算机科学等有着很广泛的联系, 尤其是在现在的航空航天中,更是有着更广泛 的应用.
很多复杂的运算都是借助计算机和算法 来完成的,在高端科学技术中有着很重要的地 位.
i=i+1
i≥n或r=0?
是
r=0?
是
n不是质数
否 否
n是质数
循环结构 条件结构
结束
2、算法的基本逻辑结构:
程序框图的三种基本的逻辑结构
顺序结构 条件结构 循环结构
高中数学 程序框图课件 新人教A版必修3
i=1
sum=0 i=i+1 sum=sum+1 i≤100? 否 输出sum 输出 结束
是
练习2 练习 城区一中学生数学模块学分 认定由模块成绩决定, 认定由模块成绩决定,模块 成绩由模块考试成绩和平时 成绩构成,各占50%,若模 成绩构成,各占 , 块成绩大于或等于60分 块成绩大于或等于 分,获 学分, 得2学分,否则不能获得学分 学分 设计一算法, (为0分),设计一算法,通 分),设计一算法 过考试成绩和平时成绩计算 学分, 学分,并画出程序框图 开始 输入a,b 输入 S=(a+b)*0.5 否 S>=60? 是 credit=2 输出credit 输出 结束 credit=0
课堂作业P11
练习1
开始
输入a
N
a ≥0
Y
输出 |a|=a
输出 |a|=-a
结束
开始 X1=1
练习2
X2=2
m=(x1+x2)/2 N m*m -3<>0 y (x1*x1 -3)*(m*m -3) >0
x1=m N |x1 -x2|<0.005 y m=(x1+x2)/2
x2=m
输出所求的近似值m
条件结构: 条件结构:
满足条件? 满足条件? 是 步骤A 步骤
否
满足条件? 满足条件? 是
否
步骤B 步骤
步骤A 步骤
例3:设计求︱x︱的算法,并画出程序框图表示。 :设计求︱ ︱的算法,并画出程序框图表示。 算法分析: 算法分析: 第一步: 第一步:输入 x 第二步: 第二步:若x≥0,则 , ︱x︱= x ︱ 第三步: < , 第三步:若x<0,则 ︱x︱=-x ︱ 第四步:输出︱ ︱ 第四步:输出︱x︱的值
数学知识点人教A版高中数学必修三第一章算法初步《算法与程序框图》学习过程-总结
算法与程序框图学习过程知识点一:算法的概念算法(algorithm)一词源于算术(algorism),即算术方法,是指一个由已知推求未知的运算过程。
后来,人们把它推广到一般,把进行某一工作的方法和步骤称为算法。
广义地说,算法就是做某一件事的步骤或程序。
菜谱是做菜肴的算法,洗衣机的使用说明书是操作洗衣机的算法,歌谱是一首歌曲的算法。
在数学中,主要研究计算机能实现的算法,即按照某种机械程序步骤一定可以得到结果的解决问题的程序。
比如解方程的算法、函数求值的算法、作图的算法。
知识点二:程序框图基本概念1)程序构图的概念:程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形。
一个程序框图包括以下几部分:表示相应操作的程序框;带箭头的流程线;程序框外必要文字说明。
用程称表公式等分别写在不同的用以处理数学习这部分知识的时候,要掌握各个图形的形状、作用及使用规则,画程序框图的规则如下:1、使用标准的图形符号。
2、框图一般按从上到下、从左到右的方向画。
3、除判断框外,大多数流程图符号只有一个进入点和一个退出点。
判断框具有超过一个退出点的唯一符号。
4、判断框分两大类,一类判断框“是”与“否”两分支的判断,而且有且仅有两个结果;另一类是多分支判断,有几种不同的结果。
5、在图形符号内描述的语言要非常简练清楚。
(3)、算法的三种基本逻辑结构:顺序结构、条件结构、循环结构。
的,它是由若干个依次执行的处理步骤组顺序结构在程序框图中的体现就是用流程线将程序框自上而下地连接起来,按顺序执行算法步骤。
如在示意图中,A框和B框是依次执行的,只有在执行完A框指定的操作后,才能接着执行B框所指定的操作。
学习结论1.算法与一般的解决问题的过程有联系,但算法是“傻瓜化”的,即算法要“面面俱到”,不能省略任何一个细小步骤。
2.框图不仅是表达算法的重要工具,由于其直观,形象的特点,还经常用于表达一些具有过程性的特点的业务流程或者某一系统的结构关系,借助框图人们可以清晰而又条理的表达思想。
高中数学 算法与程序框图讲义 新人教A版必修3
算法与程序框图开篇语算法对我们来说并不陌生,早在初中我们就知道一元二次方程的解法,会求三角形的面积,在高中也学习了求方程近似根的二分法,利用公式计算的几何问题进行分步求解等等,这都是算法.在本章中,要在初步感受算法思想的基础上,结合对具体数学实例的分析,体验程序框图在解决问题中的作用;通过模仿、操作、探索,经历设计程序框图表达解决问题的过程;体会算法的基本思想以及算法的重要性和有效性,发展有条理地思考表达能力,提高逻辑思维能力.本讲的重点是算法的程序框图的三种逻辑结构:顺序结构、条件结构和循环结构.循环结构是重点和难点,针对循环结构,老师会隆重推出追踪变量的方法来解决难点.重难点易错点解析题一:下面的程序框图,如果输入三个实数a,b,c,要求输出这三个数中最大的数,那么在空白的判断框中,应该填入下面四个选项中的( ).A.c>x?B.x>c? C.c>b?D.b>c?题二:如图,若f(x)=x2,g(x)=log2x,输入x的值为0.25,则输出结果为( ).A.0.24 B.-2 C.2 D.-0.25题三:阅读下边的程序框图,运行相应的程序,则输出s的值为( ).A.-1 B.0 C.1 D.3金题精讲题一:如图所示的程序框图运行后输出结果为12,则输入的x 值为().A .-1B .22 C .12 D .-1或22题二:如果执行下面的程序框图,那么输出的S 为______.题三:程序框图(即算法流程图)如图所示,其输出结果是________.题四:下面的程序框图运行后,输出的S=( ).A.26 B.35 C.40 D.57题五:如图是求12+12+12+12+12+12的值的算法的程序框图,则图中判断框中应填入条件________.算法与程序框图讲义参考答案重难点易错点解析题一:A 题二:B 题三:B金题精讲题一:D 题二:30 题三:127题四:C 题五:i ≤5精美句子1、善思则能“从无字句处读书”。
高中数学算法与程序框图文字素材3新必修3
1.1.1算法的概念算法是指完成一个任务所需要的具体步骤和方法。
也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。
算法常常含有重复的步骤和一些比较或逻辑判断。
如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。
不同的算法可能用不同的时间、空间或效率来完成同样的任务。
一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
〖算法的历史〗“算法”(algorithm)来自于9世纪波斯数学家比阿勒·霍瓦里松的名字al-Khwarizmi,比阿勒·霍瓦里松在数学上提出了算法这个概念。
“算法”原为"algorism",意思是阿拉伯数字的运算法则,在18世纪演变为"algorithm"。
第一次编写算法是Ada Byron于1842年为巴贝奇分析机编写求解解伯努利方程的程序,因此Ada Byron被大多数人认为是世界上第一位程序员。
因为巴贝奇(Charles Babbage)未能完成他的巴贝奇分析机,这个算法未能在巴贝奇分析机上执行。
因为"well-defined procedure"缺少数学上精确的定义,19世纪和20世纪早期的数学家、逻辑学家在定义算法上出现了困难。
20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。
图灵机的出现解决了算法定义的难题,图灵的思想对算法的发展起到了重要的作用。
〖算法的特征〗一个算法应该具有以下五个重要的特征:有穷性:一个算法必须保证执行有限步之后结束;确切性:算法的每一步骤必须有确切的定义;输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。
没有输出的算法是毫无意义的;可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1.1算法的概念算法是指完成一个任务所需要的具体步骤和方法。
也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。
算法常常含有重复的步骤和一些比较或逻辑判断。
如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。
不同的算法可能用不同的时间、空间或效率来完成同样的任务。
一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
〖算法的历史〗“算法”(algorithm)来自于9世纪波斯数学家比阿勒·霍瓦里松的名字al-Khwarizmi,比阿勒·霍瓦里松在数学上提出了算法这个概念。
“算法”原为"algorism",意思是阿拉伯数字的运算法则,在18世纪演变为"algorithm"。
第一次编写算法是Ada Byron于1842年为巴贝奇分析机编写求解解伯努利方程的程序,因此Ada Byron被大多数人认为是世界上第一位程序员。
因为巴贝奇(Charles Babbage)未能完成他的巴贝奇分析机,这个算法未能在巴贝奇分析机上执行。
因为"well-defined procedure"缺少数学上精确的定义,19世纪和20世纪早期的数学家、逻辑学家在定义算法上出现了困难。
20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。
图灵机的出现解决了算法定义的难题,图灵的思想对算法的发展起到了重要的作用。
〖算法的特征〗一个算法应该具有以下五个重要的特征:有穷性:一个算法必须保证执行有限步之后结束;确切性:算法的每一步骤必须有确切的定义;输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。
没有输出的算法是毫无意义的;可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
〖形式化算法〗算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务,如计算职工的薪水或打印学生的成绩单。
一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。
〖算法的实现〗算法不单单可以用计算机程序来实现,也可以在神经网络、电路或者机械设备上实现。
·例子这是算法的一个简单的例子。
我们有一串随机数列。
我们的目的是找到这个数列中最大的数。
如果将数列中的每一个数字看成是一颗豆子的大小,可以将下面的算法形象地称为“捡豆子”:首先将第一颗豆子放入口袋中。
从第二颗豆子开始检查,直到最后一颗豆子。
如果正在检查的豆子比口袋中的还大,则将它捡起放入口袋中,同时丢掉原先口袋中的豆子。
最后口袋中的豆子就是所有的豆子中最大的一颗。
下面是一个形式算法,用近似于编程语言的伪代码表示给定:一个数列“list",以及数列的长度"length(list)"largest = list[1]for counter = 2 to length(list):if list[counter] > largest:largest = list[counter]print largest符号说明:= 用于表示赋值。
即:右边的值被赋予给左边的变量。
List[counter]用于表示数列中的第counter项。
例如:如果counter的值是5,那么List[counter]表示数列中的第5项。
<= 用于表示“小于或等于”。
==例子==求两个自然数的最大公约数设两个变量 M 和 N 1.如果 M < N,则交换 M 和 N 2.以 N 除以 M,得到余数 R 3.判断 R=0,正确则 N 即为“最大公约数”,否则下一步 4.将 N 赋值给 M,将 R 赋值给 N,重做第一步。
用“Basic 代码”表示--If M < N Then Swap M,N Do While R <> 0R = M Mod NM = NN = RLoop Print R〖算法设计和分析的基本方法〗分治法:字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……动态规划:动态规划在查找有很多重叠子问题的情况的最优解时有效。
它将问题重新组合成子问题。
为了避免多次解决这些子问题,它们的结果都逐渐被计算并被保存,从简单的问题直到整个问题都被解决。
因此,动态规划保存递归时的结果,因而不会在解决同样的问题时花费时间。
贪心法(亦作饕餮法):就是一种在每一步选择中都采取在当前状态下最好/优的选择,从而希望导致结果是最好/优的算法。
贪心法可以解决一些最优性问题,如:求图中的最小生成树、求哈夫曼编码……对于其他问题,贪心法一般不能得到我们所要求的答案。
一旦一个问题可以通过贪心法来解决,那么贪心法一般是解决这个问题的最好办法。
由于贪心法的高效性以及其所求得的答案比较接近最优结果,贪心法也可以用作辅助算法或者直接解决一些要求结果不特别精确的问题。
〖算法的分类〗·基本算法〔枚举搜索(深度优先搜索广度优先搜索启发式搜索遗传算法)〕·数据结构的算法·数论与代数算法·计算几何的算法(凸包算法)·图论的算法(哈夫曼编码树的遍历最短路径算法最小生成树算法最小树形图网络流算法匹配算法)· 动态规划·其他(数值分析加密算法排序算法检索算法随机化算法)还可以分成串行算法、并行算法。
〖算法的复杂性〗算法的复杂性是算法效率的度量,在评价算法性能时,复杂性是一个重要的依据。
算法的复杂性的程度与运行该算法所需要的计算机资源的多少有关,所需要的资源越多,表明该算法的复杂性越高;所需要的资源越少,表明该算法的复杂性越低。
计算机的资源,最重要的是运算所需的时间和存储程序和数据所需的空间资源,算法的复杂性有时间复杂性和空间复杂性之分。
算法在计算机上执行运算,需要一定的存储空间存放描述算法的程序和算法所需的数据,计算机完成运算任务需要一定的时间。
根据不同的算法写出的程序放在计算机上运算时,所需要的时间和空间是不同的,算法的复杂性是对算法运算所需时间和空间的一种度量。
不同的计算机其运算速度相差很大,在衡量一个算法的复杂性要注意到这一点。
对于任意给定的问题,设计出复杂性尽可能低的算法是在设计算法时考虑的一个重要目标。
另外,当给定的问题已有多种算法时,选择其中复杂性最低者,是在选用算法时应遵循的一个重要准则。
因此,算法的复杂性分析对算法的设计或选用有着重要的指导意义和实用价值。
在讨论算法的复杂性时,有两个问题要弄清楚:(1) 一个算法的复杂性用怎样的一个量来表达;(2) 怎样计算一个给定算法的复杂性。
找到求解一个问题的算法后,接着就是该算法的实现,至于是否可以找到实现的方法,取决于算法的可计算性和计算的复杂性,该问题是否存在求解算法,能否提供算法所需要的时间资源和空间资源。
筛选法求质数质数亦叫作素数,是大于1的自然数,并且除了该数本身和1以外没有其它的数能整除它,如2,3,5,7,11,13,…,质数有无穷多个。
(1)判断143是否为质数。
解:Step1:143÷2不为整数;Step2:143÷3不为整数;Step3:143÷4不为整数;Step4:143÷5不为整数;Step5:143÷6不为整数;Step6:143÷7不为整数;Step7:143÷8不为整数;Step8:143÷9不为整数;Step9:143÷10不为整数;Step10:143÷11=13,143能被11整除;Step11:结论:143不是质数。
(2)判断17是否为质数。
解:Step1:17÷2不为整数;Step2:17÷3不为整数;Step3:17÷4不为整数;Step4:17÷5不为整数;Step5:17÷6不为整数;Step6:17÷7不为整数;Step7:17÷8不为整数;Step8:17÷9不为整数;Step9:17÷10不为整数;Step10:17÷11不为整数;Step11:17÷12不为整数;Step12:17÷13不为整数;Step13:17÷14不为整数;Step14:17÷15不为整数;Step15:17÷16不为整数;Step16:结论:17是质数。
(3)判断216091是不是质数该题的计算量非常大,我们可以把算法编为程序,由计算机帮我们计算。
(4)设计一个算法,输入大于2的整数n,由计算机判断它是不是质数。
解:Step1:输入整数n;Step2:依次检验2~(n-1)是不是n的因数,若有这样的数,则n不是质数,否则,n为质数。
Step3:输出结果。
说明:其中第3步在计算机中可以通过一个循环来实现,今后会学到。