本科计算机专业C++程序设计教学的不足及对策

2012-03-19 14:58王艳会钟诚秦斌
网络安全技术与应用 2012年12期
关键词:程序设计编程语法

王艳会 钟诚 秦斌

1中国人民解放军镇江船艇学院 江苏 212003

2江苏科技大学 江苏 212003

0 前言

多年来,很多工作在C++教学一线的教育工作者在教学实践中就提高课程授课效果、注重专业素质教育等方面提出了很多好的教学改进方法,使我国高校的计算机教育水平得到了很大程度的提高。然而,当今国内C++课程的教学方法远非完美。本文就目前国内C++教学的现状,提出几点当前C++教学中的不足,并给出若干改进的建议。

1 目前教学中存在的不足

1.1 教学内容和教学工具陈旧

对于C++程序设计课程,C++语法和编程思维是教学内容,教学中所使用的具体的C++编译器和集成开发环境(Integrated Development Environment,IDE)是教学工具。教学工具的陈旧必将导致教学内容的陈旧。目前国内高校C++程序设计课程多采用Visual C++ 6.0(VC6.0)。VC6.0是Microsoft公司于1998年推出的可视化集成开发环境,至今已有14年的历史,是一种比较老旧的C++开发环境。由于目前C++标准、IDE技术和软件科学的飞速发展,VC6.0作为教学和开发工具有着下列难以弥补的缺陷。

(1) 在易用性方面落后。VC6.0易用性差。与Visual C++.Net 2005相比,VC6.0很多功能的使用很不方便,如断点的设置、控件的使用以及MFC类的完善程度,等等。笔者在教学中发现,由于VC6.0在使用上的不便和界面的不友好,使学生容易产生实践中的挫折感和对C++的畏惧心理,在该门课程结束后不愿继续使用C++。

(2) 在IDE软件兼容性方面,VC6.0面临着越来越严重的兼容性问题。VC6.0在Windows XP中可以很好的安装和运行,但是对于正逐步取代Windows XP的Windows 7以及更新版本,VC6.0有着很多兼容性的问题。随着Windows XP在软件市场的退出,VC6.0亦将退出,到时候曾在大学中学习VC6.0的学生将面临熟悉的IDE无法找到合适的计算机来安装的问题。因此,VC6.0已经不再适合作为教学工具,否则将对学生以后的学习和工作产生不利影响。

1.2 授课方向的偏执

有些不切实用和怪异的内容和思想在课程中被反复强调、重点考察。有些内容在当今的软件开发中已经不常使用,但在C++课堂上却作为授课重点。如iostream流类以及其中的输出控制符在可视化开发工具大行其道的今天已经极少使用,却被作为课堂讲授和考试考察的重点内容。有些钻牛角尖的题目常被用来作为课堂例题和练习题,如“int i=5;bool j=true;求i&&j”之类的题目带有并非提倡的编程风格。又如自增/自减运算符的问题“int a=3,b=5,c;c=a*b+++b;cout<

1.3 实验的欠缺

多数学生在课程实验中没有得到足够的锻炼。实验环节中,实验题目难度水平单一,学生各自单打独斗,都不利于学生对于语法知识的巩固和编程能力的提高。对于计算机类专业学生而言,编程技能是最为重要的专业基础,编程能力的强弱直接关系到后续专业课程的学习,编程能力强则后续课程的学习扎实,且能够将所学内容付诸实践,反之则在后续课程的学习中屡屡遇到实质性的困难,最终仅能学到理论,而无法实现。而实验环节的教学效果直接影响到学生编程能力的强弱。在实验过程中,实验题目多为单打独斗的“个人英雄主义”题目,即每个学生独自完成的题目。适当比重的个人单独完成的题目可以巩固学生理论课所学的语法知识,锻炼学生的基本程序设计能力,但不利于培养学生的模块化设计观念和团队合作意识,也会使学生在编程风格方面过于随意。

1.4 后期锻炼的缺乏

很多学生的C++程序设计生涯仅维持于C++程序设计课程开设时间内,在后续课程中,如数据库、操作系统、计算方法等专业主干课和数字图像处理、模式识别等专业方向课中不再使用。这当中有C#、Java和matlab等使用更加方便的编程语言的影响,也有学生对于自己C++程序设计能力不自信的因素。

2 改进的建议

上述是目前C++课程授课中普遍存在的问题。这些问题不可避免的影响了学生对C++语言的掌握和程序设计能力的提高。针对上述不足,笔者建议采取下列措施。

2.1 更新集成开发环境

目前已有的C++标准有非官方的VC6.0标准、国际标准组织C++标准委员会制定的1998标准、2003标准和新近推出的2011标准。对于VC6.0标准,由于年代久远,对应的IDE——Visual C++ 6.0已经被淘汰,因此可以不向学生介绍;1998标准与2003标准基本没有太大区别,且为目前流行的各种主流的C++集成开发环境所遵守,可以作为课堂讲授的语法依据;2011标准为新近推出,尚无编译器支持,且与2003标准有较大区别,为了避免学生在语法学习过程中混淆不清,可不在具体章节中介绍,仅在最后单独作为一节——C++语法展望,向学生简要提及。

对于集成开发环境,推荐使用Microsoft公司的Visual C++.Net 2010或CodeGear公司(前Borland公司子公司)的C++ Builder 2009。这些IDE不仅对C++的较新标准支持较好,而且使用方便。

2.2 锻炼编程思维

不纠结于无用的语法细节和题目。对于基本的语法,务必介绍全面,并采用具体的简单应用作为例题帮助学生掌握,不使用偏、怪、不符合编程习惯的题目讲解语法。对语法的掌握的要求,只需达到会用、能用即可。

从过程控制语句部分开始,着重锻炼学生的编程思维,对函数、类等内容的讲解不可仅停留在语法层面上,更要让学生明白为何使用这些方法,让学生掌握如何使用这些方法,并锻炼学生使用这些方法创造性的解决问题的能力。可以将尚未开设的课程中涉及的一些算法,如计算方法中的线性方程组数值解法、模式识别中的K均值聚类,在不涉及课程理论的前提下作为锻炼编程思维的题目向学生提供并指导设计思路,让学生体会C++在实践中该如何使用、编程思路该如何整理。从根本上说,一个学生的C++课程学的好不好,不在于该生掌握了多少语法,而在于该生能不能将一个实际的问题分解为多个易于使用编程解决的算法模块,而这正是锻炼学生编程思维和能力的目标。

2.3 拓展课程内容

C++程序设计课程的直接目的是学习基本的语法和锻炼编程思维,而最终目的则是使学生能够使用C++做各方面的软件产品的研发。要从事软件产品的研发,就需要涉及基于对话框的应用程序的编写。从C++基本语法到基于对话框的应用程序跨度极大。这类直接用于开发的程序框架和风格与C++课程的教学风格有很大差距,仅靠学生自己摸索有很大难度,但是一但向学生讲明其中的联系,并对使用方法做简要介绍,就不仅能够消除学生对基于对话框的应用程序的陌生感,更能对前面所讲授的函数和类等内容产生难以替代的巩固作用!这是由于学生在该课程学习过程中难以接触到C++的实际应用,对指针、函数和类等关键内容的作用并没有深刻认识,而只有在他们看到真正的C++开发模式时,才能对这些内容的使用方法和习惯心中有数,在日后的学习中对C++课程所学内容的运用也更为成熟和自信。真实的C++产品开发环境对于本科生的重要性,就如同真实的战场经历对于一个操练已久的新兵的重要性。当然,如果学校开设的后续课程中有.Net(C++),这部分内容可以不介绍。

对于基于对话框的应用程序框架的介绍,可以采用CodeGear公司的C++ Builder 2007/2009或Microsoft公司的Visual C++ 2005/2008/2010。相比之下,前者较简单,后者较复杂。如果采用后者,则需要介绍Win32 API函数和Microsoft MFC。

2.4 选取不同难度级别的实验题目

单一的实验题目很可能使部分学生因为无法完成而产生挫折感,而这会导致学生对编程丧失兴趣和信心,终将导致学生学习不积极和更强的挫折感、失落感,最终形成恶性循环。对于每个实验给出多个难度不同的题目供学生选做,不仅使处于不同水平的学生都能得到锻,而且可以让学生获得成就感,增强他们使用编程解决问题的信心。对于编程类的课程,让学生怀着“人有多大胆,地有多大产”的信心是至关重要的。

另外,对于函数、类等内容,给出分组合作题目也很重要。初学者往往为自己能够单独完成一小段程序而沾沾自喜,对程序的易用性和易读性并没有追求,甚至将程序的晦涩、复杂作为自己的成绩。而实际上,晦涩、复杂的程序是不能被别人使用的,仅能称为“垃圾”。通过团队合作,让每个学生认识到,自己为整个团队提供的程序不仅要是可用的程序,更需要是易用、易读、健康的高质量代码。这样更利于学生养成良好的编程习惯。

在后续开设的能够使用C++的课程(如操作系统、计算方法、数字图像处理等)实验中,为学生提供完成实验的基本程序框架,引导学生通过C++程序设计解决这些课程中的问题,进而在C++课程结束后进一步锻炼学生的C++程序设计能力和思维。

2.5 优化考试题型

课程考试题型是对学生学习方式的导向。对于C++课程考试,填空和选择题型侧重考察语法,程序设计题不仅考察语法,更考察学生的C++程序设计能力和思维。显然后者的考察范围更为广泛,考察方面更为重要。如果考试卷中的填空题和选择题过多,将很容易导致学生产生应试心理,重语法、轻能力,这是我们最不愿看到的。因此,考试题中要最大限度降低填空题和选择题所占的比重,甚至不考这两种题型。对于程序设计题,为了能够确切反映学生的真实水平,对同一知识点的考察可以出多道难度不同(当然分值也不同)的题目供学生选做。这样可以避免考试对学生C++学习方向的误导。

3 总结

本文阐述了计算机类专业C++程序设计课程教学中常见的不足之处,并给出了自己在教学实践中得出的改进方法,这些方法对于非计算机类专业的C++教学也具有参考意义。针对目前计算机类本科生动手能力有待提高的现状,C++程序设计课程的教学方法仍需改进。更新教学工具和内容、重视编程思维的培养、良好编程习惯的养成和贴近实战的教学模式将是进一步提高该课程教学效果的方向。

[1] 李骏扬,陈汉武.工科专业C++语言教学目标与方法的探讨[J].计算机教育.2007.

[2] 何灵敏,许翔,陆慧娟,等.C++教学中编程习惯的养成[J].计算机教育.2011.

[3] 陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学.2011.

[4] 秦斌,王艳会.关于计算机专业“密码学”课程教学内容和教学方法的探讨[J].计算机教育.2009.

[5] 马洪霞.“C++程序设计”课程教学与创新型人才培养[J].电气电子教学学报.2011.

猜你喜欢
程序设计编程语法
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
跟踪导练(二)4
Book 5 Unit 1~Unit 3语法巩固练习
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用