资源描述
2019-2020年高中数学 第一章 算法初步 教案新 新人教A版必修3教学内容:一、基本要求内容与要求1算法初步(约12课时)(1)算法的含义、程序框图通过对解决具体问题过程与步骤的分析(如二元一次方程组求解等问题),体会算法的思想,了解算法的含义。通过模仿、操作、探索,经历通过设计程序框图表达解决问题的过程。在具体问题的解决过程中(如三元一次方程组求解等问题),理解程序框图的三种基本逻辑结构:顺序、条件分支、循环。(2)基本算法语句经历将具体问题的程序框图转化为程序语句的过程,理解几种基本算法语句-输入语句、输出语句、赋值语句、条件语句、循环语句,进一步体会算法的基本思想。(3)通过阅读中国古代数学中的算法案例,体会中国古代数学对世界数学发展的贡献。何谓经历?了解经历理解掌握运用灵活运用说明与建议1算法是高中数学课程中新内容,其思想是非常重要的,但并不神秘。例如,运用消元法解二元一次方程组、求最大公因数等的过程就是算法。本模块中的算法内容是将数学中的算法与计算机技术建立联系,形式化地表示算法,在条件允许的学校,使其能在计算机上实现。为了有条理地、清晰地表达算法,往往需要将解决问题的过程整理成程序框图;为了能在计算机上实现,还需要将自然语言或程序框图翻译成计算机语言。本模块的主要目的是使学生体会算法的思想,提高逻辑思维能力。不要将此部分内容简单处理成程序语言的学习和程序设计。2算法教学必须通过实例进行,使学生在解决具体问题的过程中学习一些基本逻辑结构和语句。有条件的学校,应鼓励学生尽可能上机尝试。3算法除作为本模块的内容之外,其思想方法应渗透在高中数学课程其他有关内容中,鼓励学生尽可能地运用算法解决相关问题。不同的程序语言有不同的语言形式。教材A版中使用的是类语言。B版使用的是scilab语言。算法是数学及其应用的重要组成部分,是计算科学的重要基础。随着现代信息技术飞速发展,算法在科学技术、社会发展中发挥着越来越大的作用,并日益融入社会生活的许多方面,算法思想已经成为现代人应具备的一种数学素养。我们应该把握课程基本要求,不可求难,重在框图思想的理解和掌握,几个语句的使用。能用一种简单的计算机语言表达解决一些简单问题的算法。结合对具体数学实例的分析,体验程序框图在解决问题中的作用;通过模仿、操作、探索,学习设计程序框图表达解决问题的过程;体会算法的基本思想以及算法的重要性和有效性,发展有条理的思考与表达的能力,提高逻辑思维能力。实践经验表明,研究至少需要40以上学时大部分学生才能学会初步BASIC程序设计,80以上学时才能进行真正的程序设计(算法设计),这时候才能真正谈及能力的提高。二、具体内容讲解1.关于算法的含义广义的讲,为了处理一个问题而采取的方法和步骤,称为算法( )。也可以说算法是指完成一个任务所需要的具体步骤和方法的描述。狭义地讲,所谓算法,就是解题的具体方法和步骤。A版:算法通常是指可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。B版:算法可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤或序列能够解决一类问题。总之,算法是解决问题方法或步骤的精确而有序的描述。高等代数中都学习过典型的一个算法是欧几里德算法:2.算法的特性分析 算法过程要能一步一步执行,每一步执行的操作,必须确切,不能含混不清楚,而且经过有限步后能得出结果。具有下面几个特点:有穷性:步骤序列是有限的。确定性:算法能有效地执行,并能得到确定的结构。顺序性:算法从初始步骤开始,分为若干个明确具体的步骤,前一步骤是后一步骤的前提,后一步骤是前一步骤的后续,且除了最后一步外,每一个步骤只能有一个确定的后续。不唯一性:同一问题的解决算法一般是不唯一的。但是并不是所有问题都有算法,有些问题经研究可行,则相应有算法,但这并不是说问题就有结果。上述的“可行”,是指对算法的研究。3.算法的分类算法可以分为两类,一是针对某一具体问题而设计的算法,一是针对一类问题设计的算法,通常我们说算法能解决一类问题,并能重复使用,就是指的这类算法。我们不妨将第一类算法称为特殊算法,而第二中算法称为通用算法。例如:设计计算1+2+3+100的值的算法。设计计算1+2+3+n的值的算法。算法具有通性,所以,一般是先将数值(字母表示)输入进去,在程序执行过程中,这是待机等候输入具体数据阶段。然后给出计算公式似的运算式。4.算法的学习算法是一种不同于代数和几何的又一门新语言。学习它就好比当初学习几何学一样。是学生感到困难的内容。怎样表达一个算法有时是很难。处理算法的思维方式与解决通常的数学问题的思维方式不一样。尽管描述算法的方式有多种,可以用自然语言和数学语言叙述,也可以借助形式语言(算法语言)给出精确的说法,也可以用框图直观地显示。表达所用的知识就是几个语句。算法的学习要靠样例。通过阅读样例体会、理解,再通过模仿、亲自设计简单算法的练习,达到更深刻的理解,并获得简单的设计能力。告诉学生算法不要怕费事,不怕机械,算法设计很重要。巧思!思路要开阔,注意循环结构的运用。不能很好的设计算法很多时候是因为考虑不到循环结构。如一组数,给出一个求最大值的算法。STEP1先假设序列中 第一个整数为“最大值”S2将序列中的下一个整数值与“最大值”比较,如果它大于此“最大值”,就假定这个整数是“最大值”,否则不变。S3如果序列中还有其他整数,重复第二步。S4直到序列中没有可比的数为止,这时假定的“最大值”就是这个序列中的最大值。解决算法设计问题要想到几个基本语句和基本技巧的运用。如何从问题出发,构造求解问题的数据结构和算法是一个归纳抽象过程。在学习算法设计或程序设计中,学生往往感到难以掌握设计的技巧,这也许正是因为学生熟悉的数学方法大多是演绎方式的,而计算机求解问题的设计过程却基本是一种归纳抽象。应当在课堂教学中,向学生举例说明这一抽象过程。“设计”的方法是工程的方法。5.算法和算法语言目前,国际上有几百种算法语言,常用的有几十种。每种算法语言都有自己的适用领域。但不论学习哪种算法语言,其目的是一致的,都是利用它去设计计算机程序,解决各种实际问题。应该说,算法语言仅仅是一种工具,它不同于其他学科,没有繁琐、复杂的推理和概念。算法语言的表达方式是一种接近人们习惯的自然语言和数学语言。因此,人们很容易接受和掌握。另外,学习这种语言,不必深入了解计算机的内部结构和工作原理,只要按照解题的算法,用算法语言写出解题的过程,通过计算机编译后就能执行。程序设计的核心是算法设计, 有人说,数据结构算法程序。程序设计中除了设计算法,另一个重要环节是计算机如何实现算法,即如何用算法语言按照设计好的算法写出解题的全过程。由此可见,算法语言及程序设计是一门实用性很强的课。高中课程中不涉及到这个。但如何用数学语言或算法语言表达一个算法是一个很麻烦的事情,比当初学习几何证明时表述证明思想还感到难。因为那是线性逻辑的。而算法中间蕴涵着不是“因为所以”之类的逻辑。如求最大值的算法的表示:S1max=aS2如果bmax ,则max=bS3如果 cmax,则 max=c (这一行里的max可能是前面两个中的任一个)S4那么,max就是最大。(这一行里的max可能是前面三个中的任一个)(在这里,max不断在变。每一个算法思想需要学生去体会!想法的精巧!)直接的就是将一个问题先解决出来,在根据此设计算法。框图中的内容不拘泥,但是要尽量简练清楚。程序框图就是做一件事情的流程图,先做什么接着再做什么,等的一个程序。如举行婚礼的程序图。开始 结束 都要有。循环结构结是个难点。怎样办?程序设计的重要性还在于它是重要的实践环节。计算机学科归根结底是一门实践性科学。它的一切理论都要到计算机上去验证。培养学生的计算机实践能力,重要的是培养程序设计能力。这种能力是在掌握所要求的连贯而广泛的计算学科的知识的基础之上的。程序设计是对计算机能力的综合检验。程序设计课程教学应能使学生有能力应用其知识求解问题,并实现之。但高中课程中的重点不在实践层面上,而在算法思想的理解。课程标准也强调说明,不要把算法初步教成程序设计。1.1算法与程序框图1.1.1算法概念初步感受算法例1设计 解方程2x+6=0的算法分析:就是给出解这个方程的步骤解:算法1 S1 移项,将含未知数的项移到方程的左边,常数项移到右边,得2x=-6;S2 未知数的项的系数化为1,得x=-3.算法2 S1给出方程ax+b=0的解法公式x=-b/a;S2 将a=2,b=6代入上式,得x=-3.比较说明:算法1是特殊算法,算法2是通用算法。这也是所谓的一个公式就是一个算法。例2设计解方程ax2+bx+c=0( a0)的算法。分析:将通常的解二次方程的思维方法步骤写出来就是了。解:S1 计算=b2-4ac;S2 若0,则输出方程的根x1,2=.例3 设计一个求半径为一给定正实数的圆的面积的算法。分析:根据圆面积公式s=r2设计算法,取=3.1416解:S1将给定正实数r代入圆面积公式s=3.1416r2; S2 所得s的值就是所求圆的面积。说明:有了公式,算法设计很简单,就是代入公式。例4 任意给定一个大于1的正整数n,设计一个算法求出n的所有因数。分析:根据因数的定义,是能整除n的正整数,1和自身是其因数,可以先不考虑;其它的小于这个数,运用整除,一个一个的进行检验。解:S1 依次用2n-1做除数去除n,看余数是否为0。若是,则是n的因数;若不为0,则不是n的因数。S2 把1,n算在内;S3 将求出的所有的因数写出。例5 课本上的例1上述两个算法都涉及到了“遍历”算法思想。说明:在这节的内容中,可以使用输出、输入术语,尤其在写通用算法的时候,这样可能更容易向程序框图和算法语言过渡。如例1:1输入n;2判断n是否等于2。若等于2,则输出“n是质数”;若不等于2(其实就是大于2),则执行下一步。3依次检验从2(n-1)中的数是否有是n的因数,即是否有整除n的。若有这样的数,则输出结果“n不是质数”;若没有这样的数,则输出“n是质数”。解释:在这里,至于如何操作是否是因数,不用考虑,那是算法实现的问题。例6 某快递公司规定甲、乙两地之间物品的托运费用根据下面的方法计算:f= 0.53 , 当50,500.53+(-50) 0.85 , 当50;其中f(单位:元)为托运费,为托运物品的重量(单位:千克),试画出计算费用f的程序框图。自然语言是:第一步:输入物品重量;第二步:如果50,那么f=0.53 ,否则f=500.53+(-50) 0.85;第三步:输出物品重量和托运费f.例7 课本例2:设计用二分法求的近似值的算法。例8 设计求过点(a,b),(c,d)的直线斜率的算法。分析:根据斜率的定义和求法,设计如下。算法1 S1判断a,c是否相等。若相等,则斜率不存在;若不相等,则继续计算斜率。S2 计算k=(d-b)/(c-a) 算法2 S1输入 x1=a,x2=c,y1=b,y2=d;S2 判断x1、x2是否相等。若x1=x2,则斜率不存在;若不等,则进行下一步;S3 计算k=(y2-y1)/(x2-x1);S4 输出结果。说明:算法2是一通用算法。1.1.2程序框图1. 算法通常指解决某一类问题的程序或步骤,这些程序或步骤必须是明确的和有效的,而且能够在有限步之内完成。程序框图是一种用规定的图形、指向线及文字说明来准确、直观的表示算法的结构框图。优点;能使算法的程序或步骤更直观、清晰。表算法的框图与一般的框图不同:如下是一个一般框图,以问题“解方程”引起学生认知冲突探究函数零点的近似值师生交流归纳求函数零点的一般步骤求方程的近似解课堂练习课下作业而一个算法程序框图,是有严格规定要求的一种框图。其要求可以分为两个方面,一是框图格式外型要求:程序框根据框中内容的不同有不同的框形,也就是说不同的框形有不同的功能,画程序框图需要使用标准的框图符号;流程顺序一般是从上到下,从左到右。一是表达格式规则:一个框只有一个入口,在确定的条件下也只能有一个出口,故程序框图又称为流程图,即运行中间不能同时出现两个可行路线,即不能有两个出口(条件结构尽管有两个出口,但运行起来只能有一个出口可出,不能同时可以从两个出口出);框图与框图之间用方向箭头(称为流程线)连接。2. 算法的基本结构有三种:顺序结构、条件结构、循环结构,其中循环结构又分为当型结构和直到型结构两种。四种基本的程序框及其功能用法: 起止框 表示一个算法的开始和结束。框内填写开始、结束 输入、输出框 表示一个输入、输出步骤。可用在程序框图中的任何需要输入和输出的地方,框内填写输入、输出的字母、符号等 执行框(也叫处理框) 表示那些赋值、计算的步骤。算法中需要的算式、公式等要用执行框表示,对变量进行赋值也需要用该框。 判断框 判断某一条件是否成立,成立时的出口写“是”,不成立的出口处写“否”,也可用Y,N。当算法要求在不同的情况下执行不同的运算时,需要判断框。框内填写判断条件。 表示执行的顺序。程序框图三个常用的基本逻辑结构:顺序结构、条件结构、循环结构1教学时可以适当调整学习次序,先讲解三个基本结构,在给出课本5页上的复杂的程序框图。2重点注意:程序框图的程序性即按照方向箭头的执行性,而不是推导性,扭转数学中箭头常表示一种逻辑推出的含义;学会阅读、理解程序框图语言;注意基本技巧如累加变量、计数变量的使用方法和技巧、使用场合;3可以结合前面的简单的算法,边学习结构框图边改写前面的算法。顺序结构最基本、最简单的一种结构,表示若干个依次执行的处理步骤组成的。表现形式就是线性的结构,一个方向走下去,不拐弯。能够实现算法中语句与语句之间简单的线性联系。如上面的例3:例3 设计一个求半径为一给定正实数的圆的面积的算法。分析:根据圆面积公式s=r2设计算法,取=3.1416解:S1将给定正实数r代入圆面积公式s=3.1416r2; S2 所得s的值就是所求圆的面积。程序框图:开始输入正实数rs=3.1416r2输出s结束注意:在程序框图中,开始和结束框不可少。课本7页例3也是。我们可以改写为通用算法:只需要增加第二个步骤为输入a,b,c,并将2,3,4分别换为a,b,c即可。又如 换位算法。两个变量x=5,y=6,如何让它们交换数值?引进一个中间变量,起暂存作用。开始令x=5,y=6t=xx=yy=t N Y PAB输出x,y结束条件结构在一个算法中,当要根据不同情况做出不同选择时,如根据根的判别式情况确定是有解还是没有解,需要用条件结构。也就是这个过程“如果P,则A;如果非P,则B”要用条件结构表示。基本形如图:基本含义:根据给定的条件P是否成立,而选择执行框A或框B,执行了一个另一个也就越过去了,继续按方向箭头执行下去。例 设计一个求任意数的绝对值的算法,并画出程序框图。分析:根据绝对值的意义,如果数大于或等于零,则为自身;如果数小于零,则为相反数,故需要条件结构。算法:输入x;判断x是否小于0。若小于,则取其相反数;若不,则取其自身。输出结果。要想表示成算法程序框图,略微加工即可。 开始输入xx100 ? N Y 输出sum 结束与课本上的例5解答比较,会发现,这里,对控制循环体的条件进行判断,当条件不满足时,执行循环,而当满足时终止循环,进行下一步。这种循环结构叫直到型循环结构,意思是直到什么的时候就停止。当型循环结构:当条件满足时执行循环体直到型循环结构:当条件不满足是执行循环体,直到满足时终止当然,我们已经知道公式1+2+3+n=n(1+n)/2,我们也可以直接利用公式进行设计算法,只需要顺序结构形式就可以了。程序框图:开始n=100sum= n(1+n)/2输出sum结束例 设计计算1+3+5+7+99的值的算法,并画出程序框图。算法:S1 sum=0S2 i=1S3 sum=sum+iS4 i=i+2S5 判断i是否大于99。若不是,则返回从S3执行,若是,则执行S6S6 输出sum程序框图只需要将上述的框图中的第5步中的1改为2,第6步中的100改为99即可。变式:设计求满足不等式1+2+3+n100的最小的正整数n值。分析:与求和比较,判断条件改为和小于100,由其控制循环条件,并适当调整次序。算法:S1 sum=0S2 i=0S3 i=i+1S4 sum=sum+iS5 判断sum是否大于100。若不是,则返回从S3执行,若是,则执行S6S6输出i说明:这里的i就是第一个使和大于100的正整数,当然也就是最小的了。 开始 sum=0 i=0 i=i+1 sum=sum+i sum100? N Y 输出i 结束也可以用公式设计:开始n=1sum=n(n+1)/2 n=n+1sum100? N Y输出n结束直到型循环结构。(当什么时候循环,直到什么时候终止循环)例 设计计算的值的算法。算法:x=i=1x=i=i+1如果i7,则输出x,否则,返回第3步,重新执行3,4,5步。开始x=i=1x=i=i+1x7? N Y输出x结束三分段函数的函数值的求法的算法设计。函数y= 4x+5 当x6 x2-7 当x6,则令y=4x+5;否则,执行下一步。如果x6? N Y x6? Ny=4x+5 Y y= x2-7 y=29输出y结束解题规律设计算法要因题而宜,选择合适的算法也就是选择合适的结构。若求只含有一个关系式的函数的函数值时,只用顺序结构就够了。若上分段函数或执行时需要先判断后才能执行后续步骤的,就必须引入条件(选择)结构。如果问题的解决涉及的运算有许多重复的步骤,且参与运算的数有规律,就可引入计数变量,应用循环结构。注意:在判断框出口处不要漏掉标注“是”或“否”对于累计变量或计数变量,要仔细斟酌,不可大意。回头看课本图1.1-2(5页)
展开阅读全文