浅谈C++程序设计语言教学与专业应用的结合

时间:2022-10-29 07:45:03

浅谈C++程序设计语言教学与专业应用的结合

摘要:目前,高校学生大都只是孤立的知道C++语法,而程序设计能力不强,对课程兴趣度也不高。鉴于此,笔者提出了将C++程序语言教学与工科非电类专业相结合,让学生在了解专业的同时,也增添对编程的兴趣。

关键词:C++;程序设计语言;专业应用

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2014)30-0239-02

一、前言

1.C++程序设计语言的发展和优点。计算机程序语言是不断演变的。C++语言是由贝尔实验室Bjarne Stroustrup博士及其同事开发的,他们在C语言的基础上逐步发展C++并将其完善。C语言是一种实用性很强的语言,它具有语言简介、灵活方便、可移植性好等优点。C++语言不仅继承了C语言的这些优点,还克服C语言自身的缺点,在其功能上做了本质性的革新,即面向对象的机制,有助于程序员开发软件的高效性和灵活性。目前C++程序设计语言已在众多领域得到广泛应用,从而成为高校很多专业(尤其是工科专业)的一门重要基础课程。

2.C++程序语言的教学现状。C++程序设计语言在给软件开发带来效率和增加代码灵活性的同时,也增加了学习的难度。Scott Meyers指出C++是一个难学易用的语言,它的难学不仅表现在广博的语法、语法背后的语义、语义背后的深层思维,以及深层思维背后的对象模型;还在于它提供了四种不同而又相辅相成的编程范型:基于过程(procedual-based)、基于对象(object-based)、面向对象(object-oriental)和泛型(generics)[1]。目前,大多数高校的教学方式仍然是以讲授语法概念为主,学生们只是孤立的知道语法,而C++程序设计的能力不足,出现“高分低能”的现象,即使考试成绩很高的学生,对语法很清楚,但是让他们设计简单算法,例如,工科专业处理数据时经常用到的拟合算法,会出现无从下手的局面。这种教学方式导致了学生对程序语言语法十分熟练,而程序设计能力很弱的现状。为了改善这种现状,一些高校提出了项目或任务驱动式或是以案例为主的教学方式,这种教学方式是让学生在一个个典型的编程“项目”的驱动下展开教学活动,让学生通过自主学习和相互合作,完成教师布置的任务,建构真正属于自己的知识与技能[2]。C++是一门实践性很强、极富创造性特点的课程,项目驱动方式,确实能够更好的将教学重点从老师单纯地教语法知识点,到学生主动地参与到编程和学的过程中。但是目前的项目驱动方式仍存有问题,例如,项目的题目学生不感兴趣,学生认为一些项目和他们的关系不大,甚至认为C++的学习对专业应用没有用,从而导致有些组完成的项目不理想。

鉴于此,本文提出将C++程序设计语言的教学与专业应用相结合,让学生充分认识到C++程序设计语言是解决专业问题的一种重要工具。

二、C++程序设计语言与专业知识的关系

C++程序设计语言与专业知识是密切相关的,它为后续相关课程的学习提供了基础,为解决专业问题提供了一种有效的工具,同时专业常识可以辅助学生在C++语言学习中加深对概念的理解。

1.C++程序设计语言为解决专业问题提供了一种工具。C++程序设计语言工具的作用主要表现在它能解决一些专业问题,例如,机械工程专业和自动化专业的单片机设计课程,单片机功能的实现离不开编程,while、for循环语句及不带参数函数十分常用;或是金融专业中投资组合优化,为了得到最优的投资方式,根据数据得到投资组合模型,采用C++编写投资组合模型,从而通过计算机分析出最优的投资方式;或是化学专业中,为了分析两种分子结构的相似度,从而寻找最大公共子图。众所周知,最大公共子图问题是NP完全问题,靠人力分析太慢,可以应用C++编程,让计算机代替求解;或是医学专业中,研究新药的开发,分析新药在小白鼠上的反应得到的数据需要分析,分析过程中设计到拟合算法和精度分析等,用C++编程会大大简化实验员的工作量。尽管C++程序设计语言对于专业的学习十分重要,但是专业课老师反映多数学生对于C++程序设计语言的掌握不牢固,即使当时得分很高的学生,也不能顺利而高效地设计出算法。原因之一是学生学习计算机语言的时候只是专注于语法的学习,而不专注于程序语法背后的语义、以及语义背后的深层思维、深层思维背后的对象模型的学习,而且计算机程序语言的教学脱离了应用,不能让学生真正体会到计算机编程语言是一种工具。

2.专业常识辅助C++程序设计语言中抽象概念的理解。C++程序设计语言中的一些概念是比较抽象的,例如类的概念,学生刚开始学习的时候不能很好地掌握类的概念,也不能明确地区别类和对象,而专业常识可以辅助抽象概念的理解。例如,机械专业中螺母可以看成一个类,这个类有规格、牙距、最大外径、高度等属性。有一个规格是2.5,牙距0.45mm,最大外径6.4mm,高度2mm的六角螺母,这个螺母就对应于对象,从而向学生们解释了类和对象是抽象和具体的关系,同时机械专业的学生也知道了螺母的属性有哪些。

因此,专业知识和C++程序设计语言是相辅相成的,可以将这两者结合起来,从而达到让学生们增加对C++程序设计语言的兴趣,同时也对专业知识有所了解,深刻理解C++程序设计语言对于专业学习是一个重要工具。

三、C++程序语言与专业知识的结合

既然专业知识和C++语言之间相辅相成,在教学活动中应将两者结合,从而使学生对C++学习提高兴趣,同时也了解了专业知识。两者之间的结合点主要表现在教学过程中概念的讲解和项目的选取。

1.概念的讲解。C++的概念相对于C比较多,为了让学生能更好地掌握这些概念,可以结合具体事例,尤其是专业相关的实例。例如:类的继承性是面向对象编程的一个重要性质,在讲解继承性的时候,可以结合专业背景知识来说明继承性的好处;机械专业中,零件的设计过程中设计新零件是基于旧的零件的基础上改进,可以看成新零件继承了旧零件的特征,而添加了一些新特征,从而省去了大量重复的工作,C++的继承性同样具有这种优点。C++的继承性是指在一个基类上定义了一个派生类,派生类继承了基类所有属性和操作,同时增加了其他新的属性和操作,这些新属性和操作是基类不具备的。这样就可将专业常识和类的继承性结合起来,有助于C++概念的理解。

2.与专业背景有关的项目。项目驱动教学方式使得学生主动地参与到编程的学习过程中,但是项目的选取十分重要,如果应用背景学生不了解,使其对于项目的完成形成一定的障碍,因此项目的选取与专业应用相结合有助于学生了解项目的要求,提升对项目的兴趣。目前,很多高校采用拟合算法的实现作为一个典型项目,但是单纯地讲拟合算法,没有专业应用背景,学生觉得很枯燥,可以将拟合算法和专业背景结合起来,比如面向机械专业的学生,可以以逆向工程为例。教师在介绍项目的时候可以简单介绍一下逆向工程的技术背景。逆向工程是一种能根据现有的物理部件通过CAD、CAM、CAE或其他软件构筑3D虚拟模型的方法。逆向工程的过程采用了通过丈量实际物体的尺寸并将其制作成3D模型的方法,真实的对象可以通过如CMMs、激光扫描仪、结构光源转换仪或者X射线断层成像这些3D扫描技术进行尺寸测量。这些测量数据通常被认作是点集,缺乏拓扑信息,并且通常会被制作成更有用的格式,例如多边形网格、NURBS曲线或者CAD模型。由此,学生知道逆向工程的定义、内容和过程,而拟合算法是逆向工程中常用的一种方法。介绍项目时,将逆向工程的实际问题进行简化,比如实现一个旋转面的三维数据点,并重构出这个旋转面,并给出旋转面的母线和旋转轴。面向医学专业学生,可以以实验数据分析为例,例如放射后细胞存活的实验,教师先介绍一些放射治疗的背景、效用和副作用等,并指出细胞存活实验的重要性。介绍细胞存活实验的实验,通过实验得到一组数据,并通过C++程序设计语言,得到放射后细胞存活量的变化曲线图。由上面可知,同样一个算法,在不同的专业中应用是不一样的,如果在说明拟合算法时,向机械专业学生介绍放射后细胞存活的实验,或是向医学专业的学生介绍逆向工程,他们更加难理解项目,项目的完成效果也不佳,因此项目的选取应与专业应用结合。

四、结论

将计算机程序语言的教学与专业相结合,让学生了解自己的专业是什么,计算机程序语言能解决什么样的专业问题。计算机编程语言一般是大一、二的基础课,很多新生都不了解自己的专业究竟做什么,因此,这种结合更有助于学生尽早了解自己的专业,也有助于他们将C++程序设计语言应用于专业的学习和实际问题解决中。

参考文献:

[1]侯捷.改善程序与设计的55个具体的做法[M].北京:电子工业出版社,2007.

[2]陈帼鸾.“项目驱动”教学法在C++教学中的应用[J].科技教育创新,2009,(7).

基金项目:东南大学机械工程学院教学改革项目JG2013-003。

作者简介:罗晨(1980-),女,江苏扬州人,博士,讲师,研究方向:先进制造技术。

上一篇:浅谈全日制石油与天然气工程专业学位研究生的... 下一篇:高等学校模具课程教学改革的探索与实践