资源描述
“猴子下山”取最值
----我的一堂冒泡算法教学案例
前些天,我给计算机专业高考班上C语言,知识点是冒泡算法。在以前的教学中,是我先讲思路,由同学们写流程图,再一起写出整个程序。但一般效果不好,一旦考试时,出现结果五花八门,让人哭笑不得。于是这次上课之前,我给学生讲了一个小故事:
小时我们听了《猴子下山》故事。今天我也给大家讲个《猴子下山》故事(学生听了有的无动于衷,有的呵呵笑)。有一天,小猴子妈妈要小猴子下山去玩,并告诉它:“回来后把你看到的最大数字告诉我”。小猴也听话,在途中特别注意一些数字,它依次遇到了30,43,21,1,56,34,8,这些数字。回到家后,妈妈问:“你遇到的最大数是多少呀?”,“56”,小猴子回答道。“那你今天遇到哪些数呀?”,“这个……,你不是只要我记最大数吗?我可没那么好记心”。“你不把其它数说出来,怎么知道你对了没?”,“妈,绝对没问题,虽然刚刚学数字,大小还是分得清的”。
接着我问:请把猴子记下56这个最大数的详细经过说一说。
学生哄堂大笑:“老师,你讲的是幼儿的故事,问的是幼儿问题,太小看我们了吧。”
“是吗?同学们觉得太简单了是不?”
“那当然。”
我板书了一道题:编程求出30,43,21,1,56,34,8,这些数中的最大值。并提示学生:“此程序设计流程就是这个小猴子的详细经过,你们既然知道了,请写流程图,编程,开始!”(学过了循环结构)
“啊?”特别是那些女生。
10分钟过去了,当我在下面查看同学们结果时,5%基本上能写出下图差不多程序,但其余的就相差太远了。完全正确的没有一人。
Main()
{int a[7]={ 30,43,21,1,56,34,8},i,n;
For(i=0,i<7,i++)
If (a[i]>n)
n=a[i];
Printf(“最大数是%d”,n);
}
我问:“行否?”
下面声音再也没有刚才那么自信的声音了,有的只有摇头。
“好,之所以写不出,是因为你们没有回答我的小儿科提问!”我不失时机的抛出了我的观点:“生活中越是看似容易的事情,往往蕴藏着许多哲理,许多规律。万有引力也只有牛顿从最平常的苹果下落才发现!细节决定成败。因为你们不愿去思考别人看似简单的过程,所以在亲力亲为是总是困难重重!故俗语云:‘事非经过不知难!’,下面我们还是去想想小猴子记数经过吧!”
同学们不好意思笑着点头。
问:“ 小猴子下山初次遇到了谁?”
答:“30”
问:“这个数要不要?”
答:“不要!”,还是那么自信
问:“到底要不要?”
答:“要”、“不要”。终于有了不一样的声音。
问:“请说‘不要’的理由”。
答:“因为30不是最大的”
问:“请说‘要’的理由”。
答:“没有30,哪来比30大的56呢,再者,如果后面遇到的全是比30小的,不就错了?”
“精彩,太精彩了,掌声在哪儿?”我对这个同学大加赞美道,“是的,30你不记下来,如果后面比30都小,怎么办,难道真的随便说个数去忽悠猴妈妈吗?”
哄堂大笑。
问:“30要记下来,记在哪?”
答:“小猴子脑子中”
问:“在程序中谁是小猴子呢”
答:“用个变量”略思考后,两三个同学回答。
“好的,在程序中我们也要有‘小猴子’的变量,不过习惯我们把最大值的变量叫‘max’,最小值叫‘min’”。我补充道。并将它们写在黑板上。
问:“接下来小猴子遇到谁?”
答:“43”
问:“要不要”
答:“要”
问:“比不比,和谁比”
答:“比,和‘猴子’比”(和‘30’比,和‘max’比)
我点点头:“猴子记下了‘43’,丢下了‘30’”又问:“接下来是’21’,要不要?”
答:“不要”
问:“比不比?和谁比”
答:“和‘max’”异口同声。
……
此时我知道,大多数同学真懂了。因为前面循环语句学的还行,编程问题不大了。
5分钟过后,许多同学都非常自信的把程序给我看,虽到处有些小问题,思路基本没问题了。只是有一个问题没解决:那就是max=a[0]这条语句应写在循环之前。(本人没有马上讲解)。先和大家一起在机器上验证了这个程序的正确性。
我问大家,“这个程序是否就非常严谨了呢?”
下面无声。于是我出了第二道题:求出此题中的最小值。并请一同学上机验证,结果是“0”
“怎么回事?”、“怪呀!”“程序写错了吧。”下面叽叽喳喳。
我又一次不失时机讲道:“程序没有写错,关键是我们写的这个程序不严谨的问题,也就是小猴子遇到第一个数时如何处理的问题。”
经我一点拔,马上有许多同学想到了:“是max的初值为0!”
“是的,如何改?”
这是许多人都如获至宝,自然在循环前加上了一条语句:max=a[0],随之把循环for(i=0,i<7,i++)改为了for(i=1,i<7,i++),于是程序也水到渠成。同学们都开心笑了。
随后又布置作业:从键盘上输入10个数,求最大最小值。
这堂课过后,那些对程序课有排斥的同学好像也有改变,积极性大有提高。以前从成绩差的学生身上,我看到的是失望,无助。而这次,他们脸上似乎有了新的希望,有了一些看自信了。同时,比起以前讲授法教学,我觉得这堂课我也特别轻松。
是的,在实际教学中,启发式教学用妙了,探究性学习用精了,于老师于学生都是一件愉悦的事。程序设计于中职学生来讲,还是特别难的,教师在教学中,不想些法子,课堂肯定枯燥,学生没了兴趣,专业技术水平再高的老师也无力回天。其实,做任何事情都离不开生活,教书也是如此。生活就是一个课堂,从生活中来,到生活中去。让课堂走进我们的生活,让生活中服务于我们的课堂,说难,那是要求我们为师者要做生活中的有心人,说易,那是只要有心,用心,你会觉得生活活中的点点滴滴对你的各种工作,特别是教学工作都是有用的,因为那样的话,你会让教学深入浅出,通欲易懂,教与学就水到渠成。
展开阅读全文