首页 > 范文大全 > 正文

《算法与程序设计》典型算法的教学模式初探

开篇:润墨网以专业的文秘视角,为您筛选了一篇《算法与程序设计》典型算法的教学模式初探范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

一、教学中出现的问题

新学期开始,同学们对《算法程序设计》模块充满好奇,有同学扬言:我要设计个小游戏!当课程的慢慢深入,发现部分学生对于学习VB出现了乏味现象,甚至倍感痛苦。

“老师,这和数学一样啊。”

“老师,我英语很差,程序里又都是英语单词,太难了。”

这是在后面的教学过程中经常出现的情景。对于学生来说,程序设计的思维逻辑思维方式和概念都是全新的,还要学习语法、语义、程序及其他一些规定,特别是教材的第二、五章的内容,学生接受起来比较困难。如何找到一个比较有效的教学模式,使学生通过学习既掌握高级编程语言的知识、又能灵活运用高级语言进行程序设计,提高分析问题、解决问题能力和创新能力。根据本人教学经验,总结出了以算法分析、界面设计、代码讲解、功能变化4个方面组成的典型算法教学模式

二、教学模式初探

以“解析算法及其程序实现”为例进行说明。

1.算法分析

程序设计的关键在于找到解决问题的方法,即算法。本课程第二章 “算法实例”,内容包括:枚举算法、解析算法、排序、查找等四个算法思想,是整个课程的难点和重点。有一句话说得好“思想才是最重要的”。我们有些教师在教学过程中只注重对语句、语法的教学,并不注重算法教学,其实我们应该将两者有机结合起来。对部分学生来说,编写程序很枯燥。单纯的程序编写的确有些枯燥,特别是编那些纯数学的循环、排序,非常枯燥。但如果让枯燥的程序算法转变为贴近生活、有趣味性的实际中来则效果就大不一样。因为鲜明的问题情境有利于唤起学生已有的知识经验,激发学生寻求多样化的解题方法。

在上“解析算法”这课时,本人运用了一个相对简单又贴近生活的例子:“出租车计价器”。首先给出问题:今天早上老师从家里到某地,如果自己开车,已知老师的汽车油耗是v元/公里,总的路程大致有s公里,请问老师的车子开单趟的费用f是多少?

当我们拿到一个任务时,首先应将这个问题自顶而下逐步细化,逐层向下分解,直到满足每一个要求。由于初涉问题相对简单,学生很容易从我们通常解题的步骤来分析,得到问题的前提条件v、s与所求结果f关系的数学表达式:f = v * s。

该算法分析如下:在text1和text2中分别输入v,s的值,通过表达式计算,在text3中输出f的值。让学生用流程图描述该算法如下:

图1

随即引出新问题:老师的车子出了故障,所以早上老师坐出租车,现在请同学们制作一个计价器来帮助老师算一下出租车的资费。(请参照出租车资费细则:出租车的起步价为5元,起步里程为2公里,超过起步里程后至8公里内,每公里运价为2元,8公里以上加收40%的回空补贴费,即每公里2.80元。)

“出租车计价器”的算法明显和第一个算法是不一样的,需要根据S的值进行分段计算。引导学生得出流程图如下:

图2

流程图是连接抽象算法和具体实现的桥梁,对于各种算法的流程图教师要进行详尽的讲解,使学生真正了解程序的算法,这对接下来书写程序代码是非常重要的。

2.界面设计

对于VB程序界面的设计应采用先易后难、循环渐进的方法,由于未涉及程序代码的编写,学生容易入门,不会感到有非常大的困难,容易产生满足感、成就感,以此激发学生进一步学习的热情。

对于界面的描述,本人采用给出界面图和相关属性列表来帮助学生完成界面的方法。尽管界面图提供了很多界面信息,但每个对象的一些具体属性,不能完全体现。“属性列表”可以简洁地表示每个对象的具体属性,帮助学生区别每个属性,两者相配合就比较全面的描述了整个界面。

图3

当然,这是在初次接触VB程序设计的情况下,教师可以给出相应的界面模板供参考,防止学生一开始就在界面设计上无从下手,影响后面的程序设计;根据学生不同的程度,也可以鼓励学生自己设计界面,放手让学生做,通过自己的摸索,可以对VB各控件及相关属性更了解。

3.代码讲解

根据前面的算法分析,我们可以开始程序代码的讲解。在这里本人觉得通过多媒体课件演示将流程图和代码一一对应展示的方法比较不错,这样可以帮助学生看懂流程图,也可以帮助学生提高代码书写能力,使学生在写代码的时候有依据。“出租车计价器”代码如下:

图4

在讲授程序代码编写时,一定先要根据功能的要求,给出每部分的大体框架,然后再细化讲解相对应的程序代码。

根据新课标要求,高中信息技术重点要求掌握四种算法:即枚举算法、解析算法、排序算法和查找算法。针对不同的算法,在实际教学过程中我们还可以运用“半成品加工”策略,即提供一个相对完整的程序,只是对教学的内容这部分“留白”。由于学生刚接触算法与程序设计,他们还没有完全掌握程序的语句和语法,编写程序能力有限,同时,学生的打字错误会影响程序的运行。在教学中提供半成品程序给学生,学生经过修改、补充快速地调试出一个完整的程序。这样可以排除上述因素的影响,降低学生学习程序设计的门槛。

根据以往的教学经验和通过与学生的交流,得知部分学生上课时都能听懂讲解,可在涉及到具体的编程及上机操作时,往往会出现没有思路、无从下手、或错误百出,不会调试程序等各种情况,学生的编程往往只停留在依教师的例题“画瓢”的水平,一旦稍有改变,便出现举步维艰的困惑。因此,对于初学者来说,我们教学的关键任务就是如何提高学生的程序阅读能力和代码书写能力,如何明确解决问题的思路和方法、编程思想。

4.功能变化

苏霍姆林斯基说过:“使你的学生看出和感到有不理解的东西,使他们直接面临着问题。如果你能够做到这一点,你就成功了一半。”因此,教师应在营造学生置疑的氛围上多下功夫,正确地运用问题材料,以利于学生思维活动的积极开展,最大限度的拓展学生潜能。通过问题来学习,把问题看成是学习的动力把学习过程看成是发现问题、提出问题、分析问题和解决问题的过程。

例如在上述代码完成后,我又抛出一个新问题:按规定,余杭出租车营运中因路阻或因乘客要求临时停车,每5分钟按1公里计收。若老师的车程是16公里,在途中停留了6分钟,应付金额是多少?请在原程序的基础上做修改,实现该功能。以下是针对该环节的师生交流:

教师:那么要实现这个功能首先要做何修改?

学生:添加一个变量t?

教师:很好,那么要怎么处理这个t呢?

思考……

学生:读取时间t

学生:把时间t计入里程s

教师:非常好,把你们刚才的分析写入程序吧!

在代码编写的过程中又遇到这样一个问题:把时间t计入里程s,是“s = s + t \5”还是“s = s + t /5”?根据实际情况,应该选择整除符号“\”,在这个过程中又加深了对实数除法和整数除法区别的理解,学生能提出这个质疑也是非常不错的。

经修改后,程序界面和代码如下:

图5

大家都知道实际生活中出租车费用都是精确到元的,我随即抛出第二个问题:出租车司机不可能准备大量的角和分来找零,所以计费一般按照四舍五入保留到元。请各位同学思考怎样实现?一个新的问题马上使课堂再次沸腾,学生纷纷跃跃欲试,顺利地进入分析环节,得到了立竿见影的效果。可见,良好的问题情境在激发学生思考,引起认知需要,促进思维发展方面有着十分重要的作用。同学们很快想到了fix和int函数,但是表达式该怎么写呢?学生给出了不同的答案,我没有直接评判对或错,而是让学生自己动手上机操作,看是否能实现。

在程序功能完善的过程中学生对程序有进一步的感性认识。在日常教学过程中,教师还要注意鼓励学生大胆探索新,对在已学的界面、程序段上进行修改从而解决相似的问题。

三、结束语

在《算法与程序设计》模块教学过程中,教师首先要创设有效的教学情景,激发学生的学习兴趣,让学生在每一个环节中都有收获的喜悦感,能真实地体会到“我也能设计小程序” 的成功感。以算法分析、界面设计、代码讲解、功能变化4个方面组成的教学模式一直应用于本人在第二章和第五章的教学中,取得了良好的教学效果。根据教学内容不同,还可以做些改进,比如在算法分析前可先展示预先做好的程序,让学生根据程序功能自己分析算法,然后再进入下面的环节。总之,在教学过程中必然会存在许多问题,需要我们不断的改革、创新,总结,来提高程序设计课程的教学质量。