猴子下山取最值.docVIP

  • 2
  • 0
  • 约2.39千字
  • 约 6页
  • 2018-11-10 发布于河南
  • 举报
猴子下山取最值

“猴子下山”取最值 ----我的一堂冒泡算法教学案例 前些天,我给计算机专业高考班上C语言,知识点是冒泡算法。在以前的教学中,是我先讲思路,由同学们写流程图,再一起写出整个程序。但一般效果不好,一旦考试时,出现结果五花八门,让人哭笑不得。于是这次上课之前,我给学生讲了一个小故事: 小时我们听了《猴子下山》故事。今天我也给大家讲个《猴子下山》故事(学生听了有的无动于衷,有的呵呵笑)。有一天,小猴子妈妈要小猴子下山去玩,并告诉它:“回来后把你看到的最大数字告诉我”。小猴也听话,在途中特别注意一些数字,它依次遇到了30,43,21,1,56,34,8,这些数字。回到家后,妈妈问:“你遇到的最大数是多少呀?”,“56”,小猴子回答道。“那你今天遇到哪些数呀?”,“这个……,你不是只要我记最大数吗?我可没那么好记心”。“你不把其它数说出来,怎么知道你对了没?”,“妈,绝对没问题,虽然刚刚学数字,大小还是分得清的”。 接着我问:请把猴子记下56这个最大数的详细经过说一说。 学生哄堂大笑:“老师,你讲的是幼儿的故事,问的是幼儿问题,太小看我们了吧。” “是吗?同学们觉得太简单了是不?” “那当然。” 我板书了一道题:编程求出30,43,21,1,56,34,8,这些数中的最大值。并提示学生:“此程序设计流程就是这个小猴子的详细经过,你们既然知道了,请写流程图,编程,开始!”(学过了循环结构) “啊?”特别是那些女生。 10分钟过去了,当我在下面查看同学们结果时,5%基本上能写出下图差不多程序,但其余的就相差太远了。完全正确的没有一人。 Main() Main() {int a[7]={ 30,43,21,1,56,34,8},i,n; For(i=0,i7,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,i7,i++)改为了for(i=1,i7,i++),于是程序也水到渠成。同学们都开心笑了。 随后又布置作业:从键盘上输入10个数,求最大最小

文档评论(0)

1亿VIP精品文档

相关文档