算法优化要“五问”
2011-12-29王保卫
中国教师 2011年8期
在《全日制义务教育数学课程标准》(实验稿)中输入关键词“多样化”进行搜索,其出现多达19处,其中有8处是直接或间接针对“算法”提出的。而搜索“算法优化”、“最优化”、“优化”等关键词,却是一无所获。从本人所涉猎的书籍、资料中也可以看出,对二者阐述的材料的数量是天壤之别。这说明我们的相关研究对算法多样化是偏爱有加的,却冷落了算法优化。
算法多样化和算法优化是一对“欢喜冤家”:它们一个重在“多”,是一个“散”的过程;另一个重在“优”,是一个“聚”的过程。同时,它们又是密不可分的,算法优化是算法多样化的继续,是算法多样化的最终归宿。因为学生的思维存在着差异性、层次性,有些算法不具有普遍性,有些算法操作繁琐,有些算法思维层次偏低,这就需要我们的教师对这些算法进行提升。正如叶澜教授所说:“没有聚焦的发散是没有价值的,聚焦的目的是为了促进学生发展。”但是,我们有些教师唯恐对算法进行优化会影响算法的多样化,会制约学生思维的发展,会被听课者定位于“穿新鞋走老路”,会和课标中的“应重视口算,加强估算,提倡算法多样化”[1]的观念相悖。于是,部分教师没有意识到算法优化的意义,没有理顺优化与多样化的辩证关系,没有掌握具体的优化策略,不考虑学生已有的知识水平和学生的切身感受,不让学生经历观察、思考、交流、选择、体验、再思考、再选择、最后感悟等几个渐进的层次而硬性地去优化,出现了算法优化的表面化、形式化的现象。更有甚者,个别教师“开门见山”,直接把“最优化”的算法呈现给学生,“亲自”帮助学生在多种算法中找出那些有助于提高学生的数学素养、促进学生学习可持续发展、接近数学本质的算法。本文仅把算法优化中五个常见现象及应对策略呈现给大家,请老师们在进行算法优化之前问问自己,是否思考了这样几个问题。
一问:是否关注学生已有的知识基础?
在算法优化的过程中,让每个学生掌握一种方法是优化的基础,让学生全身心地参与到优化过程中来是关键。但是,在实际的教学中,我们不难看到,仍有部分学生总是认为自己的算法是经过自己独立尝试、探索得来的,是自己劳动的“成果”,所以不愿意放弃自己最初的方法。
例如:一年级下册的“十几减9”。
在研究13-9=?的时候,由于教师给学生留足了探究的时间,学生们想出了数一数、破十、平十、想加算减和推理共五种方法,下面是一个教师进行算法优化的课堂简录(由于学生的回答太多,所以改成了叙述的形式):
教师安排四个同学为一学习小组,依照次序说一说五种方法的计算特点。然后指名进行全班汇报。
师:我们已经研究了这五种方法,你喜欢哪种方法?
学生们的意见很不统一,五种方法都有学生说喜欢。
师:如果让你重新选择一种方法计算,你会选哪一种?为什么要选这一种?
由于方法一需要学生数一数,比较费时;方法五的逻辑性太强,有些孩子不能从实质上进行理解;方法四是采用逆向思维来解决问题。所以,这三种方法学生选择的较少,而平十法和破十法却倍受孩子们的青睐,大多数的孩子都选择了这两种算法。
五种方法都有学生选择,只是选的人数多与少而已。教师似乎已经估计到会出现这种情况,于是不紧不慢的又抛出一个问题。
师:用你喜欢的方法再算一题17-9=?
评析:教师此举旨在通过让学生再做一道题目,一是让部分学生根据对五种方法研究和交流而调整自己的思路,放弃自己最初的方法而去重新选择;二是让部分学生比较前、后两种方法,通过两种方法的对比,感受到新选择方法的优势。但是,学生是否愿意买老师的“账”呢?看看学生的反馈情况就知道了。
第二次交流的时候,已经没有学生选择方法一和方法五了,仅有几个学生选择想加算减的方法,大部分的学生仍然选择平十法和破十法。这种情况好像出乎教师的预料。于是,教师只好再次引导:
师:方法二的13-9=10-9+3和方法三的13-9=13-3-6,它们都是几步计算?
生:两步。
师:而想加算减的方法,只要想9加几(4)等于13,然后直接写出13-9=4。你们比较一下,到底是哪种方法方便?
学生不语。
老师有些着急,又问了一次。
个别学生小声说:先减3再减6,好算。
还有的学生说:先用10减9,好减。
对于学生的“顽固不化”和“坚持到底”,老师只好来“硬”的了。
师:我们一定要掌握第四种算法,因为它对今后的学习很重要。
……
思考:学生为什么就是不“入套”、不“中招”呢?建构主义认为学生的学习是在已有知识和经验的基础上进行建构的,这就是说要实现算法最优化的建构,教师就要关注学生已有的知识基础[2]。“想加算减”这种方法对学生思维灵活性的训练和后续知识的学习都很有帮助,是我们这一节课优化的目标,比较省时、比较快捷,但是这种方法在五种方法中却是最困难的。因为,这种方法不仅需要学生有一定的推理能力,更需要学生有非常熟练的20以内加法的基础。换句话说,要让学生掌握“想加算减”这种方法,学生不仅要对20以内的加法达到脱口而出的熟练程度,还要会根据加法算式写出相应的减法算式,会熟练地求括号里的未知数,没有了这些基础,“想加算减”的方法就免谈。心理学家奥苏贝尔在他的代表性论著《教育心理学:一种认知观》一书的扉页中写到:“假如让我把全部教育心理学仅仅归结为一条原理的话,那么,我将一言以蔽之曰:影响学习的唯一最重要因素就是学习者已经知道了什么。要探明这一点,并应据此进行教学。”[3]所以,我们在优化算法的时候一定要思考:优化的目标距离学生有多远?新知识的生长点在哪里?新旧知识的“支架”在何处?怎样准确定位学生的最近发展区等问题。就本节课而言,教师只有在课前对学生的20以内加法的熟练程度和求括号中未知数的掌握情况进行了解,并有针对性地进行训练和铺垫,夯实优化的基础,才能顺利完成算法优化的目标。
二问:是否守住了学生的“底线”?
请看课例:教师出示挂图(一年级上册)。
师:我们先来仔细观察图,桃子是怎样摆的?
生:盒子里有9个,盒子外有4个。
师:要求一共有多少个桃,该怎样列式呢?
生:9+4=13
师:9+4=13,你是怎么想的?
生:拿一个桃子到盒子里,盒子里就有10个,10个再加上3个等于13个。
师:你用的见9找1变成10的方法。找到了10,算起来就很快了。简单地说,就是“凑十法”。你真棒!其他同学听懂了吗?
还没有等学生回答,教师就说:那么,我们就用他的方法摆一摆,移一移桃子图,算算结果,好吗?
……
这种模式在很多的课堂上都是习以为常的:老师写出算式或刚提出问题后,只要有学生举手,老师就立即让举手的孩子来回答,一个或几个优秀的学生与老师产生互动完成了教学任务。其实,举手的仅是一部分学生,多数还是优等生,还有相当多的中等及中等以下的学生没有举手或者还没有来得及举手。另外,这些举手的学生真的经过独立思考了吗?真的经过自主探索了吗?老师没有让学生探索出多种方法,并引导学生比较各种算法的特点,而是过早地对算法进行了评价[4],这样的教学,一是直接导致部分学生游离于教学活动之外;二是导致学生严重的“两极”分化,成绩稍差的学生没有机会品尝到成功的喜悦;三是忽略了每人至少掌握一种算法的基本要求。
每个学生至少掌握一种算法,这是算法优化的“底线”。因为,只有每个同学都有了自己的算法,才能构成算法的多样化;只有出现算法多样化的局面,才能进行算法的优化。鉴于此,教师一定要舍得放手,相信学生,故意放慢教学的进程。首先,面对数学问题,要给学生充分的独立思考的时间,并提出要求:每个同学至少要想出一种方法,并把这种方法在脑海中用自己的语言说一遍,完成后才可以去思考第二或第三种方法。这样一来,好的学生能想出几种方法,思维得到了全面的展开和激活,实现了“吃好”的目标;中下等的学生也能有一种方法“保底”,达到了“吃饱”的标准。其次,在小组交流的时候,教师要有意识地让那些学习困难的学生先发言,争取让每一个学生都能把自己的思维过程展示出来。这样的处理,使每个孩子都要认真思考,都能自主探索,都会积极参与到学习活动中来,“学困生”也能得到充分的展示,实现了好、中、差学生“同步走”的全面发展的目标,这才是“不同的人在数学上得到不同的发展”[5]的理念的具体体现。
三问:是否为了优化而故意多样化?
请看课例:二年级下册的“一位数乘两位数的笔算”。
老师出示情境图引导学生列出算式14×2后,安排学生自主探究解决的方法,然后组织全班交流。
生1:两个10是20,两个4是8,加起来是28。
生2:两个14加起来是28,所以14乘2是28。
生3:我是看图的,左面两个筐里是20个,右面筐里是8个,合起来是28个。
老师意犹未尽,继续问:除了乘法、加法、看图三种方法以外,还有别的解法吗?
等了半天,老师看见没有学生举手,唯恐“冷”了场,又抛出一个“技术性含量”很高的问题:刚才的三个学生非常聪明,能认真开动脑筋,想出了属于自己的解题方法,谁能超过他们?
过了一会,终于有学生举手了。
生4:14加10等