李夏君
编写程序和调试程序是计算机专业学生必须掌握的两种能力。然而,大部分学生认为调试程序比编写程序更为困难,即使经过一个学期时间的学习,能力没有提高,对调试程序不感兴趣。另一方面,作为计算机专业程序的教师,如果在课程前期没有夯实调试程序的基础,没有培养好调试程序的兴趣,到了课程后期,讲课会事倍功半,无法顺利进展下去。笔者是一位计算机专业传授程序课的教师,在第一线工作多年,下文笔者从实际出发,通过对编程语言C#、中职学生特征和调试程序现状的分析,使用培养兴趣、明确规范、将错误分类和营造气氛、潜移默化的方法,以提高中职计算机专业学生的程序调试能力。
一、编程语言的特点
C#是微软公司发布的一种面向对象的、运行于NET Framework 之上的高级程序语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性,例如没有宏以及不允许多重继承。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。为了让学生进入编程世界,熟悉编程的环境,我们采用C#语言来进行教学。教学目的是通过C#的学习,让学生掌握程序编写和调试的基本步骤,提高学生编写和调试程序的能力。
二、中职学生特征
中职学生来自全省各个地区的初中应届或往届毕业生,学生生理特征是处于青春期,情绪不稳定,情感波动大。学习特征是知识基础薄弱,逻辑思维弱,缺乏学习动机,没有系统的学习习惯和学习方法。人际特征是各自为政,团队合作意愿不强,缺乏团队合作精神。能力特征是解决问题意愿不高,解决问题能力不足。
三、计算机学生调试程序现状
1.缺乏调试程序的兴趣,采用应付了事的敷衍态度
由于数学和英语基础不扎实,学生对调试程序不感兴趣,具体表现在:不愿意思考,作业直接抄写教案上的代码;程序调试遇到问题,不主动解决,先寻找老师和同学帮忙。这样的后果是:无法吃透知识,甚至连数据库、表、和基本的变量名称没有改为自己所创建的对象名称,知识只是重复的操作,而无法形成有效的积累。同时,由于大量抄袭老师的代码,在调试过程中容易出现这类名称转换错误。这样不但打击学生学习的兴趣,无助于学生的学习,也占用老师上课时间,增加老师上课的劳动量。根据笔者的调查问卷和平时的课堂观察,这样的错误占40%。
2.没有良好的程序调试习惯
例如,没有使用对齐和缩进,体现程序逻辑结构和层次;对语句和函数,不会使用注释,这样作者意图不明;不会用断点;变量命名只求简单,忽略意义,如a=b+c和sum=score_b+score_c相比,明显后者比前者更能顾名思义;遇到问题,没有由大化小,把程序分为一个个函数来调试,这样一团乱麻,难以解决。这种情况发生的前提是课时紧张,同时大部分教师缺乏一线工作经验,课堂重在知识传授和技能训练,而忽略调试规范的引入和强化。学生没有规范意识,没有合理的格式,代码容易打错而不容易发现。由于没有良好的编程习惯而出现的错误,占全部错误的20~30%。
3.独立完成和解决问题的能力不强
由于存在懒惰和畏难的情绪,学生在有问题的时候,除了询问教师和同学,没有查书或者上网查资料习惯。导致教师课堂上一人要面对数十人学生,既要讲课又要辅导,力不从心。由于时间紧张和心力交瘁,教师无法做好调试错误的整理、归纳和分类,学生一而再,再而三在错误代码的漩涡打转,无法突破,最后不得不放弃学习。
四、解决问题思路和方法分析
众所周知,调试程序比编写程序难度还要大。面对错综复杂的代码,优秀程序员要善于从中找到错误并改正。对教学而言,调试程序不但让学生掌握编程知识和技能,还可以培养学生的观察力和专注力,提高学生解决问题的能力。教师可以从学生和课程特点来锻炼学生调试程序的能力。
1.兴趣是最好的老师
我国教育学家孔子曾经说过,“知之者不如好之者,好之者不如乐之者”。当我们对一门科目产生了兴趣之后,自然会学得有动力。根据调查,学生对网上购物非常感兴趣,经常利用手机或电脑登陆网上商城购物。因此,课程第一节课,笔者以一个自己开发网上商城网站为例子,给学生展示网上商城货物的增加、删除和修改,意在培养学生兴趣。设置程序改错积分卡,积分高者可以免考,促使学习从量变到质变。设置程序纠错问答环节,以游戏方式让学生体会学习的乐趣。
2.讲课前期强调编程规范,打好基础
正所谓“磨刀不误砍柴工”,良好的习惯和规范有利于我们长期的学习。因此,以下是笔者归纳出来必须要传授的三类编程规范:
第一类规范:环境设置,包括粘贴时调整缩进、将类型的左大括号置于新行、将方法的左大括号置于新行、将匿名方法的左大括号置于新行、将控制块的左大括号置于新行、将“else”置于新行、将“catch”置于新行、将“finally”置于新行、复选框去掉。
第二类规范:命名规范。要注意通用性,同时变量命名,包括全局变量、静态变量、常量、函数和控件,还有表字段和Web文件目录结构命名。变量名必须以字母开头,只能由字母、数字和下划线组成,而不能包含空格、标点符号、运算符等其它符号;不能与C#中的关键字名称相同;不能与C#中的库函数名称相同。
第三类规范:注释规范。重点是(1)在文件的头部标明文件的作者,完成时间,它所完成的主要功能。(2)程序有过改动后,要写上修改人、时间、简单原因说明列表。
3.将常见的错误归纳分类,进行讲解
第一种分类方法:将错误产生结果展示,可以分为:数据库链接出错、变量赋值有错、sql语句有错、公共标签有错漏等,从结果回溯原因,引起学生的反思。
第二种分类方法:将错误产生原因展示,可以分为:标点符号未配对和错漏、变量名与值没有配对、命令执行场合不对,从行为导出结果,直截了当。
无论是哪种方法,目的都是通过练习提高学生调试程序能力,增强学生学习信心,减轻学生学习畏难心理。
4.营造气氛,潜移默化,让学生从适应调试到爱上调试
编写程序是世界发展的趋势,连美国总统奥巴马都曾宣称世界上的所有人都应该学习编程,而他自己以身作则,成为美国首位编写计算机程序的总统。互联网发展至今,已经在各行各业发挥着作用。未来世界需要大量编程人员,同时,编程也成为未来人类的基本能力之一。老師在课堂上慢慢渗透,让学生慢慢体会生活中的编程。同时,改变教学方式,教学流程不单单是老师—学生的单线操作,可以让学习好的学生担任老师小助手,帮助和带动同学进行学习。这样,减轻老师负担之余,还可以增强学生的责任感和团伙合作能力。
五、总结
只要编程,程序难免有错,就需要去调试。调试的时间有时数倍于程序编写的时间。程序调试是一个有序的过程,需要很多技巧。只要掌握调试技巧,最终可以使程序正常运行,得到正确的结果。
责任编辑 何丽华