《巧解数学难题》由会员分享,可在线阅读,更多相关《巧解数学难题(9页珍藏版)》请在金锄头文库上搜索。
1、巧解数学难题一、教学设计思想实验教材程序部分与老教材相比有着较大的变化,其中最显著的变化就是体现在设计理念上。由过去的重技术、重软件本身转为重应用能力、重人文素养培养的课程目标上。课程重点也从计算机技术教育转向了信息素养培养,强调技术过程与日常生活一体化,重视技术思想与文化思想相融合的挖掘。运用计算机解决问题的方法有许多,程序设计便是其中的一种。所谓程序设计就是从遇到的问题出发,去分析问题,去发现问题的本质,从而选择并设计相应的算法,最后通过程序设计语言来编写程序,实现问题解决的最终目标。学习程序设计,首先要知道用计算机解决问题的步骤,然后还要学会分析问题、确定算法的方法,最后去体验编程求解等
2、用计算机解决问题的过程,这是学习程序的开始.。开好这一步,将为今后的进一步学习打下基础。二、教材分析:信息技术基础(选修)由广东教育出版社出版。教材一个最主要的特点就是整篇贯穿利用信息技术解决问题的基本思想和方法,根据问题进行需求分析,然后规划设计实现,最后评价并修改完善。计算机解决问题的过程是第一章第一节的内容,是全书的开篇和概述,它承接了必修模块第四章的内容,让学生再次经历使用计算机解决问题的基本过程。此节遵循从易到难、从浅到深的循序渐进的开放式课堂教学。课程目标是使学生在原有必修课程的基础上进一步体验算法思想,让学生了解程序设计在解决问题中的地位和作用。它要求学生掌握利用计算机进行问题处
3、理的基本方法及其一般过程。因此,在教学设计时选择一个恰当的案例是一个十分关键的问题。这里教师完全可以抛开教材,选择一个教师自认为是最恰当的问题作为教学的出发点。选择时既要考虑到学生起点水平及个性差异,又要考虑哪些案例(或话题)能更好的帮助学生了解和体验程序设计,适合教学内容,能够唤起学生兴趣并体验出编程的快乐。三、学情分析:教学对象为高一的学生。通过必修模块的学习,已经初步了解了计算机解决问题的基本过程,领略了计算机的神奇功能,对程序设计已经产生了一些兴趣。所以,这里如何根据算法来编写程序,是他们迫切需要解决的问题。但单纯讲解程序是十分枯燥和乏味的,只有让学生在理解的基础上的去编写程序,才能够
4、对程序真正有所理解。所以需要先从问题出发,围绕自然语言的算法分析进而把它翻译成计算机语言。虽然他们没有学过计算机语言结构,但对于有一定数学基础和英语能力的学生来说,for循环语句并不难以理解,只要掌握了for循环语句的语句格式、执行过程,并且通过确定循环次数事就能够很好地解决问题。四、教学目标:根据本节课教学内容以及学生的特点,结合学生现有知识水平,确定本节课教学目标如下:情感目标:培养学生互帮互助的团体精神。能力目标:培养学生的思维能力,以用分析问题、解决问题的能力认知目标:了解分析问题、设计算法、编写程序、调试程序等用计算机解决问题的基本过程。知识目标:: 1)掌握For循环语句和If选择
5、语句两种基本格式;2)理解For循环语句的执行过程;3)能用For循环语句编写简单的程序。五、教学重点及难点: 教学重点是从问题出发,亲历分析问题、确定算法、编程求解等用计算机解决问题的基本过程。教学中要尽可能的让学生体会到每一步骤的含义,掌握算法的基本概念,经历用自然语言、流程图等方法来描述算法的操作过程。从而进一步掌握程序与程序设计的基本概念,了解循环语句、选择语句的基本格式。教学难点:()用计算机解决问题的过程分析以及算法的设计。()正确的输入代码及调试程序。()程序、程序设计、程序设计语言基本概念。六、教学方法:采用问题教学法,通过讲解、探究、演示,任务驱动等多种方法,讲清概念,注重实
6、例分析,重点突出新知识点,注重分析,强调旧知识的复习和巩固。充分体现学生在教学活动中的主体地位,通过问题的引出,使得教学目标明确、学生态度积极,课堂气氛活跃,从而在问题中培养了学生掌握结构化程序设计思想。七、教学环境:多媒体网络教室八、教学策略设计:程序解决问题对学生来说是一种既陌生又新鲜问题。因此,怎样让学生轻松上手,提高其学习兴趣成为本节课首要解决的问题。在开始的时候,如何克服学生的畏难情绪也是一个关键问题,头开好了,也就为学生进一步学习程序起到良好的铺垫作用。在学习程序设计时,没有必要墨守成规地第一节课就向学生介绍什么叫“程序”?什么叫“程序设计?”、“程序”有什么作用?“程序设计”有哪
7、些结构?有哪些语言?Visual Basic是什么?其如何启动?其窗口界面如何?工程文件如何创建等,这些在教师做示范时略带而过即可。教材中从一个工厂生产方案选择开始,通过“用手工求解的优劣”的讨论,引出使用计算机解决问题的必要性。考虑到部分同学可能对工厂的情况较为陌生,为了更好的吸引学生的兴趣,这里就没有去引用,而是选取了一个学生可以独立分析的问题,学生虽然可以找到其数学表达式,但却无法通过初等数学方法来解决。教师抛出问题后并不急于答案,而是留下足够的时间让学生自己探究,然后引领学生经历分析问题、设计算法、编写程序、调试程序等用计算机解决问题的基本过程,最后进行总结和交流,了解使用计算机解决问
8、题的方法和步骤。实际上,只要激发起了学生强烈的学习兴趣,就完全可以起来事半功倍的效果,正所谓“磨刀不误砍材功”。经过一番讨论后,似乎山穷水尽了,这时教师再柳暗花明,利用计算机程序来解决它。经过这样的一个历程比直接介绍一些枯涩的语言效果要好得多。学生通过自己遇到到生活中烦琐的难题在陷入困境时,利用计算机可以来帮助,而且要快捷得多。所以,案例的选择是关键,教师应细致研究生活,精挑细选,在选取时要注意切合“展示用计算机解决问题的过程”这一主题。选取的原则就是就是要激发起学生兴趣、适合于学生、适合于教学内容。千万不要选择那些容易上手、甚至手工求解比用计算机求解更容易的问题。整个教学流程图如下。导入:提
9、出数学问题,激发学生兴趣制定竞赛小组探并分组回答,看谁答得全?展示及计算机解决问题的方案及结果用自然语言分析问题及其数学算法由自然语言过渡到计算机语言介绍循环和选择语句格式动手操作:输入代码,体验程序运行小组活动:评价检测循环结构是程序设计中的重点也是难点,仅靠一个例题往往并不能让学生真正掌握和理解。为此,可以增加一个与之相似的练习题,供学生改写程序使用。学生只要掌握了FOR循环语句的语句格式,理解了其执行过程,就能够去解决问题。九、教学过程1、 情境导入:教师:展示并讲述题目。我国数学家张丘建曾经提出了这样一个问题:“鸡翁一值钱5,鸡母一值钱3,鸡雏三值钱1,百鸡百钱,问鸡翁、鸡母、鸡雏各几
10、何?”。这是一个非常有趣的问题,人们又把它称作为“百元买百鸡问题”,曾经难倒过无数数学高手,但听说你们班的数学成绩特棒,这里我想检验一下是不是真的?下面同学们就开始通过心算,也可以通过列方程等方法计算来解得答案。2探究:把全班分成两个大组,每个大组的同学在一起探究、讨论,学生利用已学的数学知识找出题目已知条件,求什么?明确已知和求知的关系并试着写求解方程,当然也可以采用心算的方法。老师在这个过程中引导学生分析问题、写出求解步骤。(在这一过程中,老师一定要留出足够多的时间让学生来讨论、探究和实践,让学生先采用自然语言或数学语言来描述算法,可以会更接近学生的思维和表达习惯,使学生题更容易理解算法,
11、为下一步的计算机语言学习做好铺垫。)老师:经过一段时间的讨论(10分钟),有的同学已经算出来了,下面,我们就以刚才分组为单位,各组分别派代表说出答案。二个组的同学可能会得到不同的答案,也可能会得到相同的答案,但却没有一个组能把答案做全,甚至二个组在一起的答案也不是全面的。通过答案不是唯一的这一一现象,从而引出问题的复杂性。探究、分析(找出已知和未知、列出已知和未知的关系);设元可以买公鸡couknum只,母鸡hennum只,那么小鸡应该为只,那么,我们根据已学的数学知识可以得到以下方程:对于一个二元一次方程来说,从上列方程中显然很难求解。由此可见,对于一个较为复杂的问题,人工计算需要很长的时间
12、,而在科技发达的今天,同学们会想到用什么方法来解决呢,对!今天我们就来就计算机帮助解决这一难题。展示:用计算机解决问题。老师启动课前编好的Visual Basic工程,只需要单击按钮一次,程序即可在不到1秒内显示出求得的所有解,而且正确便捷,展示效果如图所示:“百元买百鸡问题”程序运行界面 程序运行求解结果一 程序运行求解结果二学生看得目瞪口呆:啊,这就是程序:迅速、便捷、准确。这时学生可能会认为程序设计一定很复杂,后台一定很庞大。所以,在知道了程序设计的作用和特点之后,让同学们知道“程序设计”并不难就是下一个教学任务的重点。 那么程序程序解决问题的奥妙在哪里?带着这样的疑问,教师适时打开这样
13、一段程序代码,目的就是让同学知道程序设计并不复杂,其实就几行字符而矣,如图所示:程序代码核心语句面对这样一段代码,学生也可能会感到茫然。为了消除这种情绪,教师并不急于解说程序,而是从学生熟悉的数学方法入手,从自然语言入手。计算机是怎么解决问题的呢?实际上,用计算机解决问题,同样也需要一个经过一个分析问题和设计算法的步骤。对于100元全买公鸡正好可以买20只,所以公鸡的数量应该是从0到20的问题并不难以理解;由此类推,母鸡的变化范围是0到33,在此范围内逐个搜索同时满足条件时,方程x,y就可以得出答案,数学方程式为:5X+3Y+(1/3)(100-X-Y)=100。而用计算机解题是不能输入用自然
14、语言描述的算法的。必须首先把它翻译成计算机语言,即程序设计语言。满足上述两个条件的范围的搜索正是通过计算机的语言循环语句for实现的,即由for 和next组成的配对语句。如图所示:在满足上述两个条件范围内,则对方程进行求解。(这样学生可以很容易理解程序的语句的意义,而不会陷入到复杂的结构分析中去。使得学生觉得程序并不是表面看起来的那么深奥,并且能够保持信心学下去。实际上整个程序代码也仅仅就是这么几条语句,学生可能还不懂什么叫“循环”?什么叫“循环嵌套”?,但先别管它。)对照料FOR循环格式,得到如下语句:“For cock = 0 to 20”,即设定鸡翁数为0到20,这条语句是整个程序循环
15、的开始,与后面的语句“ Next Cock”构成第一层循环,且这二句语句中间的所有语句都为其循环结构的循环体。循环变量Cock的初始值为0,循环体每循环一次其值增加1,直到Cock的值大于20则退出循环。同理,鸡母数也不可能超过33,于是我们又得到第二层循环: 在这个循环体里,使用了一个分支结构,分支结构语句如下:即程序在运行过程中根据设定的条件来选择相应的程序语句执行。通过If 语句,判断鸡翁、鸡母和鸡雏数分别为某一个值时,才能满足其价格正好为100钱,即:If Cock*5+Hen*3+1/3(100-Cock-Hen) =100then如果满足,则执行输出语句,即用消息模式来显示变量 :msgbox 变量这里的变量正是我们求得的解,如果把变量值设为qj,不难得出下列关系式:qj = 第 & ResultCount & 组: & 鸡翁 & CockNum & 只, & 鸡母 & HenNum & 只, & 鸡雏 & (100 - CockNum - HenNum) & 只 当然循环体的计数器是不可少的,定义变量的类型也必须事先进行声明。整个程序运行方框图如下:(1)、执行For 语句:直接进入循环,执行循环体。(2)、执行 If 语句:判断条件:如果条件满足,回到上面执行循环体,否则跳出循环,执行For