算法和算法的描述(教学案例)教材分析:这节课内容主要是一些概念和理论,而算法的概念和理论都太抽象,讲起来非常的枯燥乏味,那么就要把这些抽象的东西变得通俗易懂,使学生能轻松而又愉快的接受并理解。
学生分析:学生基本上没有接触过编程,那么在高中阶段初步接触编程,学生首先会感到很深奥,看到书中的程序语句,尤其是看到后面的长一点的程序语句更是觉得可怕,那教师必须要考虑在授课中如何正确引导,以什么样的方式进行。
学生有没有兴趣学,往往看这个课是不是有意思,难不难学,一看难学又乏味,就开始产生厌学的情绪。
教学目标:引导学生对编程的兴趣,理解算法的概念和如何科学合理的选择和设计算法,为程序设计打好基础。
教学重点:算法的概念、算法的设计和选择。
教学难点:如何科学合理的选择和设计算法。
教学方法:与学生进行互动探讨式教学,以趣味智力题激发学生探索解决问题的兴趣,以故事事例和具体的程序运行对比,引导学生一步步的思考,从而总结出算法的概念,以及如何设计和选择算法,充分调动学生的主观能动性和探究学习能力。
教学过程:1、引导学生对编程的兴趣(1)教师:同学们喜欢玩电脑游戏吗?(2)学生:喜欢!(说到游戏学生总是表现出很浓的兴趣。
)(3)教师:在上机练习课的时候,总发现有个别同学偷偷的玩游戏,其实你们喜欢,老师也很喜欢,那么同学们想不想自己编个游戏来玩呀?(4)学生:会不会很麻烦!(学生表现出好奇,又对编程心里还没有底。
)(5)教师:不用担心,编程并不像你们所想像的那样难,很快你们就会编一些小游戏程序了。
其实编程是件非常有意思的事情,在以后的学习中你会发现自己越来越喜欢编程,甚至会着迷的。
2、算法的概念(1)教师:幻灯片出示一个经典的趣味性例子,有一个牧羊人带着一头羊,一只狼和一颗大白菜准备过河,他找到一只很小的船,每次只能带一样东西过去,可是如果让狼与羊单独在一起,狼会吃羊,让羊与白菜单独在一起,羊会吃白菜,牧羊人应如何过河?(2)教师:分组讨论,前后四个同学为一组,把你们的橡皮擦放到一块,分别写上狼、羊、白菜,你们自己是牧羊人,现在请同学们来设计一个方案,把3样东西安然无恙的带过河。
我们来比一比看哪组同学最快完成。
课堂立即活跃起来,同学们把它当作一种游戏全都投入进去了,积极思考起来。
(3)很快就有学生举手回答。
过河的方案:第一步:人和羊过河,人返回,留下羊;第二步:人和狼过河,人和羊返回,留下狼;第三步:人和菜过河,人返回,留下菜;第四步:人和羊过河。
(4)教师:同学们这个方案行不行?(5)学生:行。
(6)教师:还有没有其它方案?(7)学生:还可以在第二步时,人和菜先过河,人羊返回,留下菜;第三步,带狼过河。
(8)教师:刚才同学们把第二步和第三步可以改变先后顺序,其它顺序还能不能颠倒,比如说:第一步先过狼?(9)学生:不能。
(10)教师总结出算法的概念:同学们说的不错。
那什么是算法呢?这个过河的方案就是这道趣味题的算法。
请同学们记住一句话:算法就是解决问题的方法和步骤。
在以后的编程中也要记住了,有些步骤是可以颠倒的,不影响程序的结果;但是有些一但颠倒了那最终的结果也就全变了。
3、用流程图来描述算法(1)教师:幻灯片放映,出示例题:某商场为了对苹果进行促销,规定购买2千克以上可以在原价每千克1.5元的基础上打8折。
请同学们告诉我该怎么计算应付款?(2)学生:首先称好苹果,超过2千克,应付款为:苹果重量*1.5*0.8 ;如没超过,应付款为:苹果重量*1.5(3)教师:放幻灯片,演示流程图。
好,这个同学刚才给出了算法。
现在我用一个图来把这个过程描述一下。
(4)教师:解释这个图的执行过程。
问:同学们,告诉我这是什么图啊?(5)学生:流程图。
(6)教师:幻灯片出示:流程图的基本图形及其功能(7)教师:我知道大家在数学课程里,学习过用流程图来描述算法。
有了你们数学课的一点基础,那么我们现在学习起来就比较容易。
流程图是描述算法常用的工具,容易表达,结构清晰简洁,有利于不同环境的程序设计。
在以后的学习中,我们还会充分利用流程图来帮我们分析问题。
4、算法的设计与选择(1)教师:大家在做题时,是不是有时候一道题有多种解法?(2)学生:是。
(3)教师:我给大家讲个故事:200年前的一天,一位数学教师走进课堂,也许是想清静一个小时,给四年级的学生们布置了一道题:从1加到100。
5分钟后,一个学生走到他跟前,交上了正确答案,这时他是多么吃惊呀!这怎么可能呢?这个孩子一定是个天才。
(4)教师:请大家告诉我1加到100等于多少?、(5)学生:5050(6)教师:你们是用什么方法计算的?(7)学生:首尾相加后,再乘以100,即(100+1)*50=5050(8)教师:这无疑是一种很好的算法,既简单实用,效率也高。
1+2+3…+100最终也能加到结果,但是计算的过程大家可想而知。
解决问题的方法,也许有很多种,但是运用不同的方法却会产生不同的效果。
我们编写程序也是一样,你使用不同的算法,也会产生不同的效果。
说归说,我们再来看一个例子。
幻灯片出示:求9147485和5147480两个数的最大公约数。
(9)同学们你们是怎么计算的?(10)学生:用“辗转相除法”计算。
(11)教师:好,请你们来计算一下。
(12)学生:数这么大很难算啊!(13)教师:同学们别着急,有两个同学已经编写了解决这个问题的程序。
大家一起来看一下。
(幻灯片出示)(14)教师:同学甲编写的程序用的算法是“辗转相除法”;同学乙用的算法是“穷举法”,从5147480开始,每次减1,一个个的进行判断,直到找到为止。
好,我们分别来运行一下,请同学们注意观察。
教师:启动VB,运行同学甲的程序:第1次运行输入:9147485和5147480 , 结果:5第2次运行输入:45684和58460 , 结果:4第3次运行输入:8654726和675942 , 结果:2运行同学乙的程序:第1次运行,大约5秒钟后显示结果:5第2次运行,大约5秒钟后显示结果:5(15)教师:请学生回答观察到的现象。
(16)学生:甲的运行速度快一些,还可以求其它组数的最大公约数,而乙只能计算这一组。
(17)教师:同学们观察得很好!那你们认为那个算法好一些呢?(18)学生:甲。
(19)教师:对。
算法的设计,直接影响着程序的通用性和解决问题的效率,总的来说,一个好的算法,应该是科学而又合理的算法。
实践练习:一天,小猴子从树上摘下若干个桃子,当即吃了一半,觉得不过瘾,又吃了一个。
第二天小猴子接着吃剩下的一半,还觉得不过瘾,又吃了一个。
以后每天都是吃前一天剩下的一半后,就再多吃了一个。
到第四天,只剩下一下桃子。
试设计一个算法流程图,求小猴子第一天摘下了多少个桃子。
教学评价:1、贯彻新课标的理念,进行探究式教学,提出问题、进行探究、注重实践、互动交流,充分发挥学生的主观能动性。
2、举例简单明了,容易理解,学生学习起来兴趣浓厚。
3、课堂气氛活跃,生动有趣,不枯燥乏味,学生在轻松愉快的过程中较好的掌握了算法的概念,理解算法的设计和优劣的选择。
教学反思:学生初步接触编程,他们会觉得编程很难学,但同时又处于一种观望的状态,到底这个好不好学,有没有意思啊?学生虽然是学习的主体,但教师如何设计好这堂课的内容,往往对学生在以后的编程学习有无兴趣继续学起关键作用。
用趣味性的例子,提起学生探索和解决问题的兴趣,总结出算法的概念;以故事形式和具体的程序对比,与学生一起探讨,理解如何科学合理的选择算法。
教学中如何因材施教,充分调动起学生积极的学习态度,主动地去思考,参与到课堂中的讨论中来,教师应多想些办法。
对于有些同学的“两耳不闻课堂事”,我想不仅有其自身的原因(如不重视等),也有老师的责任(如教的内容学生不感兴趣等)。
毕竟问题是两方面的,只有两方面都解决好了,才能上出一堂高质量的课来!点评:1、贯彻新课标的理念,开展师生互动探究式教学,首先要激发起学生的学习兴趣,“兴趣是最好的老师”。
学生愿意学,才会认真听课;学生肯学,才有继续学下去的动力。
张老师这节课从激发学生兴趣开始,无疑是开局的妙着。
2、通过游戏、故事引入新课,学生容易进入角色。
让学生在轻松愉快的过程中学习新课内容,既完成了教学任务,又令学生觉得意犹未尽,还想再学。
学生不再把上课当成负担,而是一种享受,那教师不是更快乐吗?张老师这节课,学生一定喜欢,效果也肯定会好。
3、案例中4、算法的设计与选择(13)教师演示VB程序,此时学生还不懂VB程序的语句及编程方法,看不懂演示出来的程序,也无从判断它的算法,更不会去比较其优劣了。
这里可否改为用流程图加上教师通俗的讲解来让学生理解算法的选择优劣,直接影响到程序的通用性和有效性,影响到问题解决的效率。
在这里要注意“循序渐进”的教学原则,不然学生就会卡壳在这一个环节上,便影响了后续的学习。
4、要上好《信息技术》课,还需我们不断的改革和努力!高考不考这门课,学校不会重视,学生也不当它一回事。
如果我们《信息技术》课教师也不多想办法,那就更加恶性循环,肯定上不好了!我们要用不懈的努力去争取这门课的地位,“孱弱就要挨打”,国与国之间是如此,学校科与科之间又何尚不是如此?。