当前位置:首页 > 教学设计 > [程序设计教学中学生思维能力的培养]中学生思维能力的培养
 

[程序设计教学中学生思维能力的培养]中学生思维能力的培养

发布时间:2019-01-27 04:03:58 影响了:

  随着信息学奥林匹克竞赛、机器人竞赛等活动在初中的深入开展,面向初中生的程序设计教学在信息技术教学中所处的地位已越来越重要。程序设计教学不仅会让学生掌握程序设计的基本知识和基本技能,而且还能培养学生的思维能力。因此,在程序设计教学中必须更新观念、开拓思路,尤其要重视对学生思维能力的培养。那么,如何有效地提升学生的思维能力呢?我在初中程序设计教学中进行了一些实践和探索。
  一、创设问题情境激活学生思维
  亚里士多德曾指出:“思维从对问题的惊讶开始。”学生的创新思维往往来自于对问题的兴趣和好奇心,而兴趣和好奇心又往往来自于教师创设的问题情境。在程序设计教学中,教师如能精心设计适宜的教学情境,可使学生随着情境的推进,自然而然地进入角色,体验情境,从而唤醒积极思维、主动学习的欲望。
  【案例】在学习“递推算法的应用”时,我创设了这样的问题情境:为了给同学们营造一个良好的学习环境,学校打算重建校园的围墙。许多建筑公司得知这个消息后,纷纷来学校推荐自己的公司。学校决定通过竞标来确定把这个项目交给哪家公司。这次竞标不但注重公司的建筑实力,还要看公司能否通过学校领导的智力考核。领导说:“我校准备建设一面2米高、N米长的围墙。为了美观,围墙建好后,墙外要贴上有图案的瓷砖。目前市面上用的最大瓷砖是宽1米、长2米的。如果就用这种瓷砖来贴,共有多少种不同的贴法呢?”亲爱的同学,如果你是建筑公司的老板,你能编程解决这个问题吗?
  课堂上,我呈现设计的问题情境后,学生即表现出解决问题的浓厚兴趣,并积极尝试运用所学的知识来解决这个问题。几分钟后,就有学生想到了可用斐波拉契数列来解决这个问题,并提交了程序(如图1)。
  面对学生提交的程序,我先是肯定了他的思路,并进行了表扬,接着我建议他输入n=60,70,观察输出结果。一会儿,这位学生就得出了输出结果:n=60时是764848393;n=70时是696897233。这时,我问:“这个结果正确吗?”“没问题啊,我也是这样的结果。”学生们都忙着调试自己的程序。“好像是错了,n=70时输出的值怎么会比n=60时输出的值小呢?”有一个学生发现了问题。“对,肯定出问题了,问题出在哪儿呢?”我继续问。在我的追问下,学生们的学习热情更高了,大家认真展开了讨论,并最终得出了结论:这个程序只能解决小规模问题,当N较大时,应当加上高精度运算。
  【分析】在上例中,教师创设的问题情境结合学生的实际生活,起到了关键性的作用。正是在它的刺激下,学生们参与探索的热情高涨,思维处于亢奋状态。当学生得出初步的程序后,教师顺势又创设了第二个问题情境,使学生处于更急切的求知状态中,思维活动走向深入。由此可见,学习的过程就是不断发现问题、解决问题的过程。问题从何而来?可来源于教师有效的情境创设。只有新的、有价值的问题在课堂上出现了,学生的思维才会活跃起来,才会去主动研讨。
  二、注重体验学习突破思维困惑
  体验是指通过实践来认识周围的事物的过程。体验学习是中国传统的教学思想,中国古训中就有“纸上得来终觉浅,绝知此事要躬行”之说。程序设计教学中的许多内容源于现实,其本质是如何将“现实世界”转化成“计算机世界”,将人们解决问题的方法抽象表示为计算机能接受的算法,这是一个复杂的抽象思维过程。因此,在程序设计教学中应强调“做中学”的体验式学习,尽可能把抽象的知识还原成事实,让学生获得充分的感性认识,从而加深对知识的理解和掌握,顺利地走出困惑与不解,使学习过程变得轻松与愉快。
  【案例】在教学“八皇后问题”时,我利用“皇后问题”游戏软件(如图2),通过让学生在游戏中亲身体验摆放八皇后的过程,引导学生讨论出一个普遍可行的方法,即“当前格子能放则放,不能放则换下一个格子再试,没有下一个格子时则退回到上一个皇后再重复前面步骤”,这就是回溯法的实质。紧接着,我又引导学生讨论回溯法在编程中的实现方法,总结出“它实质上就是在一定范围内的一组数据中,将满足一定条件的匹配数据留下,而将不满足条件的舍去”。接下来,我又带领学生进一步讨论回溯法的应用。由于掌握了回溯法的实质,学生可以将回溯法的思想广泛应用到各种各样的问题中去。经过思考,学生应用这一方法较顺利地解决了“走迷宫问题”、“全排列问题”、“地图四色问题”以及“跳马问题”等。通过这次体验学习,学生从这一道“八皇后问题”的求解中,找到了解决这一类问题的普遍方法,分析问题、解决问题的能力有了较大提高。
  【分析】回溯法是学生普遍感觉难以理解的算法,不少学生觉得“上课听得明明白白,但真正面对问题时又不知如何下手”。上例中,教师利用游戏软件让学生体验回溯法的实质,提高了学生学习的积极性,让学生能顺利突破思维节点,从而使学习过程变得开心、愉快,在不知不觉中建构自己的知识。在程序设计教学中,教师应尽可能地为学生提供可听、可看、可触摸、可经历、可操作的机会,使学生完全地参与学习过程,真正成为课堂的主角,在亲身体验的过程中掌握知识、开拓思维。
  三、培养质疑能力开发创造潜能
  古人云:“学贵有疑,小疑则小进,大疑则大进。”疑问是思维的火花,有疑问者才有思维,经过思考才能辨疑解难,有所进步,有所创新。在程序设计教学中,教师应注重培养学生的质疑能力,通过精心设置疑难,引导学生打破惯性思维,促使他们养成积极思考、大胆质疑、认真深思、反复多思的好习惯。
  【案例】在教学“判断数P是否素数”的问题时,学生们想到的全是传统算法。他们从素数的定义入手进行分析,确定判定素数的条件是:P不能被2、3、……P-1之间的数整除,即:对任何一个整数P,必须保证P对i取余数不为0(i=2、3……P-1),P才是素数。“这个算法有什么缺陷呢?大家可以上机调试一下。”这时,我引导学生对上述算法进行质疑。过了一会儿,有学生说:“当P值较大时,求P以内的所有素数会超时。”“是的,这个同学说得很对,这个算法的效率不高,那么有没有更优的算法呢?”我问。学生们默不做声。接下来,我引导学生对算法进行优化:若P不是素数,则P必定能表示成两数之积,即P=i*j,其中,i=sqrt(p)。据此,判断素数的条件可进行怎样的简化呢?在教师的启发下,不少学生找到了简化后的判定条件:只要判断P能否被2、3……sqrt(p)之间的数整除就行了。“同学们的想法很好,当P值较大时,这样做可以大大减少循环次数,使程序运行更快。那么,能不能再优化呢?”对于学生们的探究成果,我及时进行了鼓励,并提出了更高的要求。此时,学生们也表现出更高的兴致,通过讨论、争论、交流……学生的创新思维在宽松、和谐的氛围中得到了充分发挥,并且用较快的速度找到了优化方案:考虑到除2外的偶数一定不是素数,我们只需对奇数进行判断,而奇数一定不能被偶数整除。因此,判断条件可进一步简化为“判断P是否能被2及3……sqrt(p)之间的奇数整除”。
  【分析】上面的案例展示了教师引导学生对判断素数的传统算法进行质疑、优化、再质疑、再优化的探索过程。质疑常常是培养创新思维的突破口。在质疑的状态下,学生们表现出很强的求知欲,他们的创造潜能得到了有效的开发。从上面的案例中我们还可以发现,程序设计教学不能只讲题海战术,而是要进行不断深入的探索,最终得出一个最优化的解决方案。在指导学生探索时,教师可先引导学生根据题意,引入最常规、最易想到的算法,再在此基础上不断质疑深入,直至最终完善程序。
  四、引导一题多解训练发散思维
  思维定势是妨碍学生创造性地解决问题的最大障碍。为了克服思维定势,教师在程序设计教学中应重视发散思维,提倡学生用不同的思路和方法解决同类型的问题,培养学生思维的灵活性。程序设计具有灵活多变的特点,教学中引导学生一题多解、一题多变是培养他们发散性思维的一种好方法。
  【案例】在学习经典“汉诺塔”(如图3)问题后,我进一步要求学生求出问题中盘子的最少移动次数。经过讨论,大家一致认为可以用递推法来求解。接着,学生从小规模问题开始进行探究,并顺利地得出了当盘子数量为1、2、3、4、5时,最少移动次数分别为1、3、7、15、31。不少学生经过分析、归纳后甚至还得出了F(n)= 2×F(n-1)+1的递推公式,初始状态为F(1)=1。经验证,这个递推公式是完全正确的。这时,我说:“请同学们继续思考,看看这个整数序列还有没有其他的递推公式?”听完我的话,学生们劲头又高涨了起来,立即进入“研究”状态,一些学生很快又有了新的递推公式:F(n)=F(n-1)+2n-1,他们沉浸在胜利的喜悦中。
  这时,我进一步指出:“在上面的两个算法中,递推过程中的某个状态只与前面的一个状态有关,如果考虑在递推中的某个状态与前面的两个状态有关,那么我们可以得出怎样的递推公式呢?”“还会有其他的公式吗”,有人小声地在说,我听到了,此时我相信学生们的探究热情更高了。果然不出我所料,没过几分钟,又有人提出了新的递推公式:F(n)=3×F(n-1)-2×F(n-2),初始状态为F(1)=1、F(2)=3。“还有其他的公式吗?”其实,这时我心里也没底了。“我有!我的递推公式是F(n)=4×[F(n-1)-F(n-2)]-1。”教室里响起了掌声。此情此景令我十分震撼,我由衷地佩服学生们的创造能力。
  本来,关于这个问题的探究到此可以圆满地结束了。但面对学生们如此高涨的探究热情,我也灵机一动,随堂产生了一个变式,使问题变得复杂。我说:“在经典‘汉诺塔’问题中,每一层盘子的数量只有一只,如果每一层有大小相同的两只盘子,那么你还能得出相应的……”“懂了!”我的话还没完,学生们就迫不及待地投入到新的探究之中。此时,他们的思路更广阔了。几分钟后,学生们抢着回答问题,一下子说出了四个正确的递推公式:F(n)=2×F(n-1)+2,F(n)=F(n-1)+2n,F(n)=3×F(n-1)-2×F(n-2),F(n)=4×[F(n-1)-F(n-2)]-2。更让我感动的是,胡磊同学经过自己的分析、归纳之后总结出了一条规律:双塔问题的最少移动次数应当是单塔问题的两倍。这样,问题的本质特征通过学生亲自参与和实践悟出,既夯实了基础,又提高了学生的创新意识。这可是一个意想不到的收获。
  【分析】在上面的教学实践中,教师引导学生从多方面探索可能的答案,学生个个浮想联翩,思维不断向外围扩散,他们头脑中的知识不断拓宽,掌握的方法逐渐增加。在此基础上,教师又把这些知识和方法展开到较复杂的问题中去,从而产生知识的纵向深入,使学生能够举一反三、触类旁通。另外,教学中教师不仅要引导学生一题多解、一题多变,更要鼓励学生敢于摆脱传统习惯的束缚和原有知识的羁绊,提出大胆的设想和独特的见解。当学生的思路与常规思路不同时,尤其是当学生有标新立异的构思时,教师要给予保护,鼓励他们创新,让他们沿着自己的道路走下去,并引导他们探索出新的解题思路。
  以上思考与其说是一些方法,不如说是一种启发与思路:新课程理念下的程序设计教学应注重思维教学,它以学生思维能力的充分发展为终极追求。苏霍姆林斯基也曾说过:“一个人到学校里来上学,不仅是为了取得一份知识的行囊,而主要的还是要变得更聪明。因此,他的主要智慧和努力就不应当用到记忆上去,而应用到思考上去。”让我们在程序设计教学中不断探索,吸引学生去思考、摸索、探究、创新,使每个学生的思维能力都得到有效的开发。
  (作者单位:浙江绍兴县华舍实验学校)

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3