改善程序设计教学效果的方法探索.docx
《改善程序设计教学效果的方法探索.docx》由会员分享,可在线阅读,更多相关《改善程序设计教学效果的方法探索.docx(5页珍藏版)》请在冰豆网上搜索。
改善程序设计教学效果的方法探索
改善程序设计教学效果的方法探索
摘要:
程序设计相对于网页制作等操作性的内容,显得更枯燥、更难理解,学生往往不愿意学。
如何做才能改变学生这种不愿学的状况呢?
本文提出了四种应用于程序设计教学中的方法,在实践中取得了良好的效果。
四种方法具体是:
由浅入深法、分层简化法、指引诱导法、联系实际法。
关键词程序设计 教学 在高中信息科技教学内容中,程序设计也许是学生最不愿意学的部分了,因为程序设计相对于网页制作等操作性的内容,显得更枯燥、更难理解。
作为教师,如何做才能改变学生这种不愿学的状况呢?
究其根本,就是要把程序设计课程由难变易,由枯燥变有趣。
经过多年的实践,笔者总结出一些自己的方法,具体有:
由浅入深法、分层简化法、指引诱导法、联系实际法。
一、由浅入深法 由浅入深法是指由简单的问题入手,引导学生逐步深入、循序渐进地解决问题的方法。
这种方法的作用有两点:
1.有助于学生理解问题,巩固掌握所学的基础知识和基本技能,为解决复杂问题打好基础;2.有利于实现分层教学。
浅显的内容使基础较差的学生“吃得进,消得了”,较难的内容使较好的学生“跳一跳,摘得到”。
具体作法是:
把复杂问题分解成几个难易不同的小问题,每个问题都是解决下一个较难问题的基础,从而使学生能循序渐进、逐层深入地解决问题。
案例1:
通过例题练习,巩固程序设计的基础知识,掌握程序设计的基本结构。
例题:
设计一个算法,计算某班每位学生语数外三门课的总分。
。
笔者将这道题设计成循序渐进的三个小问题 1)设计一个算法,用于计算自己在本次月考中语数外三门课的总分; 2)在上题的基础上,设计一个算法,要求可以计算输出班上所有人三门课的总分; 3)修改第2小问的算法,使算法可以适用于人数不同的各个班级。
上述第一问只需计算一个人的总分,用一个简单的顺序结构即可实现,学生基本上都做出来了;第二问要计算50个人的总分,也就是把第一问的顺序结构重复执行50次,这要用到计数控制的循环结构,在复习了循环结构的结构示意图后,多数学生也基本可以做出来;第三问则是把第二问中用来作计数控制的常量50用变量N来代替,N则由用户输入。
对于第三问,反应快的学生很快就能做出来,而其他学生在经过讲解后也都有茅塞顿开的感觉。
在使用由浅入深法前,把这种类型的题目讲解给学生听,学生比较难理解接受,而且印象不深,下次做到此类型题目时还是要想半天。
在使用了由浅入深法后,学生再做同类型的题目时就不再有困难了,而且对循环结构的使用也加深了理解。
由浅入深法适宜于为学生打基础、巩固所学知识时使用。
特别是对于基础较差的学生,由浅入深法能给他们的理解创造一个台阶式的过程,便于他们对问题的理解和技能的掌握。
但对于较好的学生,就不能一味地使用由浅入深法,否则他们的思维永远都是跟着老师的思路走,没有自己的创新。
对于基础扎实的学生,教师就应使用下面的方法:
分层简化法。
二、分层简化法 分层简化法就是把复杂问题简单化,并且分成难易不同的几个层次,在解题时,就按由易向难的层次逐层解答,最终把问题解决。
听起来,这种方法似乎和由浅入深法差不多。
其实最关键的区别是,分层简化的工作不再由老师来做,而是由学生自己完成。
教师要做的是教会学生如何去简化问题。
这种方法提高了学生用算法解决问题的能力,有利于他们对程序设计的理解。
案例2:
解决千锁问题。
学校有1000把锁和1000名学生。
开学时学生在大楼外集合,并一致同意下列计划:
第一名学生进入大楼后打开所有的锁;然后第二名学生进入大楼并且锁上编号为偶数的锁;第三名学生又改变所有编号为3的倍数的锁的状态;第四名学生再改变所有编号为4的倍数的锁的状态……如此等等。
直到1000名学生全都进入了大楼并且改变了相应的锁的状态。
试问哪些锁最后还开着?
学生乍一看这道题时,很容易发懵,这时教师可引导他们将问题进行简化。
师:
同学们能不能用一句话来说说,这道题说了一件什么事呢?
生:
就是一千个学生开一千把锁的问题。
师:
很好,你说的基本正确,但是看清楚题目,只是开锁吗?
生:
把开着的锁锁上,锁着的锁打开。
师:
对了,也就是把锁的状态改变。
那我们再用更正确的一句话说说这是一件什么事?
生:
一千个学生改变一千把锁的状态这件事。
师:
一千个学生改变一千把锁的状态,锁的状态变来变去,变得太多,实在太复杂了。
我们可不可以把这个问题简单化啊?
生甲:
一百个学生改变一百把锁的状态,就简单多了。
生乙:
那还不如十个学生改变十把锁的状态,不是更简单?
师:
某某说的肯定要比某某说的简单,但最简单的情况是什么呢?
生甲:
那就是一个学生改变一把锁了。
师:
对。
我们在思考复杂问题时,首先可以把这个复杂问题简化到不能再简化的地步为止,然后看看最简单的状态我们能不能解决。
好,下面就请同学们画出一个学生改变一把锁状态的流程图。
经过这样的引导,原先复杂的题目简化成了只需要简单的顺序结构就可以解决的问题。
经过教师的提示、引导,学生很容易就画出了这简单题目的流程 做完了第一步,再往下继续引导 师:
同学们看到了,如果把千人变千锁的问题最简化,变成一人变一锁就很容易解决了。
现在我们把这个问题的难度稍微加大一点,你们想想看,应该怎么变呢?
生:
一个学生改变十把锁的状态。
师:
对,很好。
这下问题就稍微变难了一点,那在上一题的基础上,我们如何用算法解决这个问题呢?
生:
只要加一个计数控制循环就可以了。
师:
非常好,这下问题又进一步解决了。
接下来,我们要做的事就是把问题逐步的加大难度,直到解决这个千锁问题。
下面各小组讨论,看看每一级的难度应该怎么加,就可以使得在前一难度的基础上只要稍加变化就可以解决问题。
生:
经过讨论,最后得出了以下分层方案。
分层方案:
1.一人变一锁; 2.一人变十锁; 3.十人变十锁; 4.第n个学生改变n倍数锁的状态; 5.将十改为千,从而解决千锁问题。
对上述方案的各层进行分析,可以看出,各层的关系是由简到难的。
一人变一锁:
用最简单的顺序结构就可以解决问题。
判断锁数是否是学生数的倍数,是,则改变状态:
在顺序结构的基础上加一个判断,即用分支结构来解决。
一人变十锁:
将上面改变锁状态的算法做循环体,加一个计数器即可实现。
这里用到的是循环结构; 十人变十锁:
在前面循环的基础上,再外加一个大循环,即采用嵌套循环解决问题。
结构示意图表示 经过这样的分层简化后,学生对如何解决千锁问题,基本上就比较清楚了,剩下来的事就是按着层次,由简渐难,逐层设计算法。
每一层的算法都可在前一层的基础上完成。
最后完成的流程图)
经过上述案例的教学,学生克服了对难题的恐惧心理,在遇到一些复杂问题的时候,也会自觉地运用各种方法去分析、解决。
有些学生甚至还把这种方法用于数学、物理等其他学科中,收到良好效果。
分层简化法适宜于学生对基础知识已有了较好的掌握时使用,有利于学生进一步开拓思路,发展思维,提高分析、解决问题的能力。
在具体使用时,和教师的循循善诱还是分不开的。
三、指引诱导法 指引诱导法是指在学生解决问题的过程中,教师给予适当的点拨,引导学生解决问题的方法。
这种方法助于突破学生的思维瓶颈,开拓思路,使学生的思维有充分发挥的空间,同时也感受到解决难题带来的成就感。
案例3:
学生讨论,有几种方法可以实现两个变量值的交换?
学生已经想出了用一个中间变量来实现交换的方法。
这时,思维出现瓶颈,无法跳出用中间变量实现交换的苑囿。
师:
如果不用中间变量,只是用a,b两个变量来表示,可以实现交换吗?
生:
生甲:
是不是a=b,b=a呢?
师:
经过a=b后,a变量的内容还存在吗?
生乙:
不存在了,a的内容被b的内容覆盖了。
这种方法肯定不行的。
师:
你们可以想想,数学中的等式和计算机中的赋值语句形式上一样,但含义是不一样的。
生丙:
计算机中等号两边的相同变量是不能对消的。
生乙:
是不是可以a乘b后再除以b来得到a呢?
也就是a=/b。
生甲:
那有什么用?
左右两边的a是一样的,没什么意义。
生乙:
我想到了,我可以先a=a*b,然后再a=a/b。
生丙:
那a中得到的还是a,没什么意义。
生甲:
咦,那可以b=a/b呀,那b中得到的就是原先a的值了。
生乙:
对对,最后再a=a/b,就可以把原先b中的值赋给a了。
生丙:
我来整理一下。
a=a*b,b=a/b,a=a/b。
不错,这样就可以实现两个变量值的交换了。
咦,好象不对,a、b不能为零啊。
生:
师:
你们主要是运用了两个实现相反运算的运算符,这种方法很好,但不能为零,有了局限性。
那你们是不是可以考虑另一对实现相反运算的运算符呢?
生乙:
对啊,我们可以用加、减法。
学生经过讨论,很快就得出用加减法交换两变量值的方法:
a=a+b,b=a-b,a=a-b。
上例的讨论中,主要都是学生在进行讨论,他们的思想在进行碰撞,生出火花,教师只是在适当的时候提点一下。
通过指引诱导法的使用,学生的思维得到了充分发挥的空间,得出的方法以后也不容易忘记,同时他们也感受到解决难题带来的快感和成就感,增强了学习程序设计的信心,提高了学习积极性。
具体操作时需要注意的是,教师的身份是引导者,而不是答案的给出者,而且教师点拨的尺度深浅,要根据学生的基础来看,学生基础差的就需要更多的点拨。
四、联系实际法 联系实际法是指通过在教学中紧密联系学生的生活实际和他们所熟悉的社会实践,来解决实际问题的一种方法。
“学生对学习的热情和积极性,一定程度上取决于他们对学习素材的感受与兴趣。
现实的、有趣的教学情境,容易激活学生已有的生活经验和知识,使学生在创设的情境中产生联想和情感共鸣,从而更好地领悟学习内容,达到融会贯通的教学效果。
”而联系实际法把教学与学生的实际生活相联系,将抽象化为具体,容易创设与学生产生共鸣的情境,使枯燥的课堂教学变得生动有趣,对提高学生的学习兴趣有很大的帮助。
同时,联系实际法也有利于发展学生思维,培养学生解决实际问题的能力。
具体操作如下。
1.了解学生生活实际情况,结合教学目标,设计符合学生实际生活的问题。
2.设置情境,提出问题,激发学生兴趣。
3.引导学生通过解决问题较好地掌握知识技能。
案例4:
循环结构的学习。
师:
听说你们班下周要进行班干部换届选举了,是吗?
生:
是。
师:
投票时都应该有几个统计票数的人,你们定好了是谁吗?
生:
还没有,选举时再定吧。
师:
老师给你们推荐一个计票员,可以吗?
生:
是谁啊?
师:
老师推荐的计票员就是:
计算机。
生:
计算机?
师:
是啊,就是计算机。
今天我们来编写一个统计票数的程序,计算机有了这个程序,就会统计票数了。
本节课的教学目标是学生学会循环结构的使用。
结合学生的实际情况,笔者设计出统计票数这样的引入方式,一下子就吸引了学生的注意力,使学生产生了疑问:
如何使计算机统计票数呢?
进而使学生产生了学下去的兴趣,使后面循环结构的学习,达到事半功倍的效果。
需要注意的是,联系实际法引用的例子要适当,使用要合理,符合学生的实际需要,这样才能真正引起学生的兴趣,收到良好的效果。
程序设计是计算机学习中非常重要的部分,对于提高学生解决问题的能力,发展学生的思维能力、创新能力都具有很重要的意义。
通过上述四种方法的运用,学生学习程序设计的兴趣有了极大的提高,积极发言、积极思考的学生越来越多,课堂不再枯燥无味。
“教学有法,但无定法,贵在得法”,每一位教师的每一堂课都是千变万化的,作为教师,应该在教学中不断地总结经验,归纳方法,使学生不仅不再排斥程序设计这门课,甚至喜欢上这门课,使程序设计的课堂变得生动有趣,真正成为信息课程学习的乐园。
参考文献 [1]上海市教育委员会,《上海市中小学信息科技课程标准》[M]上海教育出版社,2004。
上海市中学课程改革委员会,《上海市中小学信息科技课程标准解读》[M]华东师范大学出版社,2006。
佐藤学着,李季湄译,《静悄悄地革命──创造活动的、合作的、反思的综合学习课程》[M]长春出版社,2005。
方国才主编,《新课程:
怎样教得精彩──100个优秀教师教学心得》[M]中国科学技术出版社,2006。
南京师范大学教育系,《教育学》[M]人民教育出版社,2000。
潘菽,《教育心理学》[M]人民教育出版社,2000。