高中《算法与程序设计》教学中的探索与思考
2016-05-14杨树秀
杨树秀
【摘 要】算法与程序设计是高中信息技术课程中的选修一模块,本模块是在必修模块“信息加工与表达”基础上的继续深入。通过本模块的学习,使学生进一步体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法,解决问题。
【关键词】算法与程序设计;Visual Basic;探索;整合;创新思维
“万事开头难”,程序设计尤其如此。首先,对于几乎没有相关知识背景的高一学生而言,编制一个完整的程序必须先了解程序的基本结构,掌握常量、变量和表达式等概念,学会输入、输出、赋值等语句的格式,这些内容枯燥而难以记忆。其次,由于计算机在计算方面的独特优势,使计算机解决问题的技术思维方式和学生一向习惯的数理逻辑思维方式有所不同,这也给学生的学习带来了困扰。
针对上述问题,笔者做了如下尝试:
一、大胆处理教材,整合课本知识,激发学生的学习兴趣
笔者所在地区信息技术学科使用粤教版教材,高中《算法与程序设计》选修模块中选用Visual Basic语言描述算法。VB中的对象主要用于构建界面,而具体程序功能的实现则要编写代码行,因此任何一个完整的应用程序都不可能只用对象或只用语法。教材中第二章《程序设计基础》讲述VB语言基础知识和程序的基本结构及相关语句的格式。第三章《可视化编程》讲述VB中对象的使用。笔者认为在讲授时不宜将两者分开,要把VB面向对象的程序设计方法,事件驱动的编程机制贯穿于整个教学过程中。将这两块内容有机结合起来展开教学。在教学过程中,笔者始终坚持以学生已有的知识为基础,打破以课本知识的逻辑结构为顺序组织课堂教学的模式,先不讲基本概念,改用从简单的实例人手,通过让学生观看、模仿,在实际操作中去探究和领悟这些概念,并适时地加以归纳总结,让学生在轻松愉快的气氛中接受新知识。比如,在讲到循环结构中DO——LOOP语句和FOR——NEXT语句的用法时,我用DO——LOOP语句的4种形式和FOR——NEXT语句实现求解N!的过程,让学生去观察、领悟它们的异同。
二、重视实践活动环节,通过实例教学法训练学生的创新思维,培养学生的创新能力
创新思维是指人们在提出问题和解决问题的过程中,能够产生新成果的思维活动。发散思维、类推思维、求异思维等都是行之有效的创新思维形式。
VB 是一门实践性很强的课程,实例教学法是笔者在本模块教学中的常用方法。以教学的内容为依据,选择一些接近学生的生活,有趣的、有实际意义的小程序为实例。通过对实例进行理论分析,指导学生模仿,通过知识再现达到在实践中领悟知识,开拓设计程序的思路。在V B编程中,循环结构是程序设计中学起来很费劲但不可或缺,对于多重循环更不容易弄清其流程。这时可以在课堂上以现实中的问题为例子向学生提问,例如:时针每走过一格,分针将会走过多少格?秒针又会走过多少格?根据日常生活中的情况,可以形象地把分针、秒针和时针的运动打比方,这就是三重循环嵌套。
教师鼓励学生针对实例独立思考解决问题的算法,逐步引导他们改变以往单一的、逻辑的、线性的思维方式,多角度、多侧面、多方位地考察问题,并在实践活动中,借助程序的编译反馈信息检验思维成果。通过设计程序解决问题是培养学生的创新思维的途径之一。例如:在排序算法一节的教学过程中,就可以让学生思考对一组数据进行排序的多种方法(冒泡排序,选择排序,快速排序等等)从而训练学生的创新思维,培养学生的创新能力。程序设计算法中的枚举法、分治法、递推法、递归、动态规划法等等,都是对学生创新思维的有效的训练方法。
三、采用小组互助的学习方式,培养团队精神,提高协作能力
将学生分为若干组,安排一些小组的任务,让多人在一起协商、协作来完成任务,学会团队协作、集体决策,不仅适用于《算法与程序设计》的学习,还适用于日常后生活与其他学科的学习。组织学生进行研讨,在思想的碰撞中往往会产生智慧的火花。
如:学习过程的定义与调用:
教师在上机课时采用小组互助的学习方式,让组内同学互相帮助,共同提高。
教师给出上课时的教学任务:编写一个判断素数的公有过程,调用素数过程,实现①产生一个三位随机素数数组x(10);②验证一个大于2的偶数可以表示为两个素数之和;③找到四位正整数中的超级素数。
这些任务数量较多而互相有关联,小组成员内部分工,每两位同学至少独立完成其中一个小任务,然后小组成员将小任务汇总,积极讨论难点,共同攻克,使得大家不断提高能力与学习效率。
基本流程:
(1)教师下达任务后,学生完成组内分工。
(2)学生6-8人一组,每位学生首先完成所自己所分配到的任务,如组内成员遇到难点,要求组内其他同学相互协作,提供必要的帮助,如果互相讨论之后还是无法解决,则应由组长请教老师,再由组长教给其他组员。
(3)各小组成员经过任务汇总,完成整个教学任务。
(4)各小组推选代表展示成果。
(5)课后小组成员可以继续深入讨论学习。
采用小组互助式教学,营造出自由宽松的氛围,学生拥有高度的参与性、自主性,激发了学生的学习兴趣,调动了学习积极性。小组成员互相学习、互相沟通、互相帮助、互相督促。让学生在学习中学会了怎样与人交往;学会正确认识自我,尊重关心他人;学会取人之长,补己之短;学会宽容、忍让、分享。能做到倾听别人的正确见解,并予以采纳;能了解别人的困难所在,并给予帮助;能发现别人的优点,并不吝赞赏。学生在学习过程中提高了人际交往能力。
高中程序设计教学的主要目标是为了使同学们了解现代程序设计理论中的面向对象编程和结构化程序设计等基本思想,培养现代程序设计过程中所需要的一些基本能力。教学有法,教无定法,只要教学得法。在保护同学学习积极性的前提下,按照同学们的认知规律组织教学,合理运用多种教学方法,灵活地、创造性地掌握教学过程,激发学生的兴趣,培养学生的逻辑推理思维能力和创造性思维能力。