黃國輝
摘 要 C++語言是計算機相關專業的重要課程,具有較高的理論性和較強的實踐操作性,如何提高該課程的教學質量一直是一線教師十分關心的問題。文章介紹了在C++語言教學中存在的主要問題,結合自己的思考、體會與實踐,就如何改進教學手段與教學方法、突出實踐動手能力與改革考核方式等方面提出了自己的觀點。
關鍵詞 教學改革 C++語言 動手能力
中圖分類號:G642.3 文獻標識碼:A
1 C++語言課程概述
C++語言課程是我院信息管理與信息系統專業的一門專業選修課程。主要講述面向對象程序設計的思想和方法,由淺入深的指導學生了解和掌握如何利用C++程序設計語言進行程序設計,提高學生的動手能力,做到理論和實踐相結合,培養學生理解、分析程序、編寫、調試程序的能力,使之能把程序設計應用到今后的專業學習和工作中。
2 C++語言教學中存在的主要問題
2.1 C++語言本身的特征給學生的學習帶來難度
C++既可用于面向過程的結構化程序設計, 又可用于面向對象的程序設計, 是一種功能強大的混合型的程序設計語言,由于我院通常是在大一開設C語言來作為學生的第一門入門語言,而C++語言是作為大三學生對面向對象程序設計進行學習的一門選修課,面向過程和面向對象教學時間跨度大,不利于學生掌握C++的面向對象程序設計思想。
2.2學生抽象思維能力差,對C++面向對象程序設計的理論理解困難
C++語言課程中的兩個主要概念是類和對象,需要學生掌握的基本技能之一就是按照對象的特征進行數據抽象和功能抽象,而學生的思維停留在以前學習過的C語言中面向過程的程序設計,對C++中類和對象的抽象,類和對象的關系理解不夠透徹。
2.3 C++語言的結課考核方式仍然以試卷的理論考試為主,導致學生實踐能力差
一直以來,我院的C++語言的期末考試是以試卷形式來考核。作為一門實踐編程語言,考試時理論知識考得多,動手能力考的少,而學生學習一般都為了應付考試,這就使得大多數學生不注重實踐動手能力的培養,而僅僅是靠做題和背題來通過考試,殊不知動手能力才是第一位的,也是以后就業的保障,只有在實際的編程鍛煉中,才能更好地掌握C++語言。
3 C++語言教學改革與實踐的幾點建議
3.1針對重點、難點的概念進行過渡對比式教學
類的概念很重要,類跟C語言中的結構體有些相識的地方,實際上可以看做類是結構體的擴充,因此在教授C++語言中的類的定義時,可以先以結構體的定義作為入口。從C過渡到C++,從結構體過渡到類。
結構體是一個簡單的封裝,可以認為結構體中只是封裝了對象的數據,沒有封裝對象的操作,而類不僅封裝了對象的數據,還封裝了對對象的操作。教師可以在介紹類的定義是,先讓學生回憶在C語言中,結構體的定義語法為:
struct 結構體名
{
數據成員;
}
而在C++中,類的定義語法為:
class 類名
{
private:
//私有類型數據成員和成員函數說明
protected:
//保護類型數據成員和成員函數說明
public:
//公有數據類型成員和成員函數說明
};
從中可以讓學生體會到語法的不同在于如下方面:
(1)類語法中類體中包含兩部分成分:數據成員和成員函數。
(2)類中的成員可以指定三種權限,而結構體中沒有權限的指定,可以推出其為public權限,從而進一步闡釋權限的作用,以及C++中引入權限的目的和意義。
(3)結構體只是一種相關數據的組合體,類才是體現了真正的封裝,能保證數據的安全。
3.2從C++語言本身的內在需求來解釋一些相關的概念
程序設計語言的教學過程中大多時間是說明它有什么規則,并且向學生解釋為什么提供這項規則的說明,這種對語言本身需求的說明在課程全程中無處不在。例如:類將數據和動作捆綁在一起使得數據變成聰明的數據,不同的對象各自悠閑地行動;友元是通往私有數據的后門,為密切相關者提供方便;引用是形神兼備繼而在函數通信中大顯身手;虛基類是解決多繼承引起的二義性問題等等。在此,強調一下往往被忽視的有關多態性的需求說明:繼承呼喚多態。
虛函數的定義語法和調用規則要求都很好理解,難以理解的是為什么要做這件事。說明這個問題首先要從賦值兼容規則開始:派生類的對象可以賦值給基類對象;派生類對象的地址可以賦值給基類指針;派生類的對象可以初始化基類的引用。接下來進行同化效應的說明,即基類對象、指針和引用是可以接納派生類對象,然而賦值之后派生類的特征就完全消失了。以如下代碼及運行結果進行說明。
#include
using namespace std;
class Base
{public:
void show()
{ cout<<" Base \n"; }
};
class Derived :public Base
{public:
void show()
{ cout<<" Derived \n"; }
};
void fun(Base& x){x.show();}
int main()
{ Base b, *pb;
Derived d;
fun(d);
pb=&d;
pb->show();
b=d;
b.show();
return 0;
}
執行結果為:
Base
Base
Base
解釋語言本身的內在需求一方面有助于提高學生們的學習興趣,他們不再有莫名其妙的困惑;另一方面,由于了解需求的同時也清楚了該語法規則的應用場合,有助于在他們碰到類似的實際問題時能用相應的方法來解決。
3.3建立完善的課程學習交流平臺
學生的學習任務重,接受能力有限,因此課后交流就顯得尤為重要,但下課后老師就離開了,有問題想找老師交流的話存在很大的不便,慢慢的愿意跟老師進行課間和課后交流的學生的人越來越少了。建立一個快捷,方便,界面友好的課后交流平臺就十分必要了。
我校建設了網絡教學綜合平臺,通過該平臺上教師可以把教師的個人信息,課程的介紹,教學大綱、教學日歷,教學課件以及課程相關的一些資料等上傳,學生可以瀏覽和下載這些相關的資料,在最重要的師生互動方面,平臺提供了發布課程通知,答疑討論區,課程問卷,布置作業以及在線測試等,通過該課程平臺,彌補了教師和學生在課堂以及課間不能很好交流互動的不足。
3.4改革課程的考核方式,增加實踐動手能力的考核
本課程的學習不僅僅是為了讓學生掌握C++編程的語法知識,更重要的是培養學生利用C++語言編程解決實際問題的能力。為了更客觀全面地反映學生的學習情況,更合理地對學生的學習效果進行評價,真正發揮“以考促學”的作用,本課程考核采用了“平時成績+課程結課報告”相結合的考核模式,課程的最終成績由平時成績和課程結課報告成績共同決定。平時成績包括課堂考勤、上課提問、作業以及實驗考勤、實驗報告等,課程結課報告包含兩方面的內容,一方面是學生對該課程學習后內容和知識的理解、體會等;另一方面是學生對該課程做的一個課后程序報告,類似于課程設計報告,按照軟件工程的流程完成一個小型項目,且以答辯驗收的方式來評價學習效果,考核學生的綜合應用能力。該方式重視對學生學習過程及實際動手能力的考核,側重考核學生對知識的融會貫通和靈活運用能力。
4結語
本文對在C++語言教學過程中遇到的問題進行思考與分析,從教學方式和方法、課后交流和考核方式等多方面入手,提出了一些教學方法。C++語言課程的教學涉及諸多方面的因素,需要我們在今后的教學過程中不斷進行探索與實踐,改進教學思路與教學方法,更好地促進該課程教學質量的提高。
參考文獻
[1] 錢能. C++程序設計教程(第二版)[M].北京:清華大學出版社,2005.
[2] 孫偉峰,王艷.高校C++程序設計教學探討[J]科教導刊,2012(05):109-110.
[3] 熊啟軍,寧彬,屈俊峰,曹文平. C++面向對象程序設計教學探討[J].電腦知識與技術,2014,10(13):3037-3039.
[4] 龍滿生.C++面向對象程序設計課程教學改革與實踐[J].中國電力教育,2011(28):84-85.endprint