摘要:本文在比較分析了當前大學計算機專業C與C++程序設計語言的開設現狀,以及C與C++語言異同的基礎上,提出在大學計算機專業程序設計語言課程設置中直接開設C++的觀點。并給出直接開設C++語言時的教學內容設置、教材選擇參考和開設時間建議。
關鍵詞:C語言;C++語言;程序設計
中圖分類號:G642文獻標識碼:B
文章編號:1672-5913(2007)14-0022-02
1引言
大學計算機科學專業的程序設計語言課程,一般分為必修和選修兩種。C和C++都作為必修課;而VB和Java等一般作為選修課?,F在大多數高校計算機科學專業開設程序設計語言課程的順序都是,先開C語言,再開C++語言。然而,我們在教學實踐中發現,學生學習C語言程序設計,接受了“自頂向下,逐步求精”的模塊化程序設計思想,在學習C++語言時,對C++語言的特色:類和模板所提供和支持的“自底向上”的面向對象程序設計思想,很難適應、理解、接受和掌握。同時,由于課時的壓縮,兩門語言都要開設,學時更顯不足,致使學生兩門語言課程都沒有充分的時間學通、學透;更有甚者,正常的教學內容不能完成,學生一知半解、似懂非懂,課程的難點知識沒有時間講和學。這種結果直接影響后續課程(比如,數據結構)的學習;同時學生動手開發軟件的能力也將受到影響。
本文在分析比較C和C++程序設計語言異同的基礎上,結合多年的教學實踐經驗,提出在大學計算機科學專業中,直接開設C++程序設計語言,不再開設C語言的觀點。并根據作者的教學實踐經驗,給出直接開設C++時,教學內容、教材選擇和開設時間的建議。
2程序設計語言C與C++的比較
2.1C與C++的共性
C++是C的增強版,是在C的基礎上增加了數據抽象和面性對象的程序設計這些新特點,很自然C++擁有C語言的基本功能。它支持結構化的程序設計,任何用C寫的程序都可以在C++環境下運行。
在C和C++語言中,標識符、變量、常量、基本數據類型、指針、表達式、運算符的優先級等的規定都相同。枚舉類型和結構體類型的定義方法也相同。關系和邏輯運算、條件語句、循環語句這些控制流語句的定義和使用也都相同。C和C++中數組的定義和使用相同。函數的定義與調用基本相同,只是C++引入了引用參數。也正是由于引用參數的引入,使得C++的使用比C更方便。關于動、靜態變量及其范圍的規定在C和C++中相同。因此??梢哉f,C語言所擁有的功能,C++都有,而且也是C++的基本部分。但是,C++比C具有更強的功能,具有C所沒有的特性——數據的抽象和支持面向對象的程序設計。同時,關于枚舉變量,結構體變量的聲明C++的語法約定更簡潔方便。
2.2C與C++的不同
C與C++在程序設計的思想與規模、動態存儲管理、文件使用、枚舉和結構體類型、輸入和輸出,以及程序注釋等方面存在差異。C++不僅具有C的所有功能,可以實現所有C語言所能實現的功能,而且C++的功能更強大,使用更簡潔方便。因此,使用C語言設計程序所能解決的實際問題,使用C++語言設計程序也一定能夠解決,而且實現起來更方便。
2.3C++的特色
C++最大的特色是提供了數據的抽象和實現數據抽象類型的機制——類,以及支持面向對象程序設計的封裝、繼承和多態等特性。由于類的出現,使得C++中的數據類型不再局限于系統所提供的固有類型,用戶可以根據自己的實際需要設計創建新的數據類型。同時,由于類的使用,使得數據和操作被封裝在具體的類中,實現了信息的隱藏。C++提供了兩種構造新類的方法:繼承和構成。這兩種構造方法使得C++具有面向對象程序設計的特性。C++還提供了虛函數機制,這使得類的操作可以實現動態邦定。C++中的重載機制使得C++的使用更方便快捷和人性化。C++的模板使得C++具有多態特性。另外,C++的異常處理機制使得程序的調試變得容易和方便。還有C++的虛基類,使得它非常適合用來開發面向對象的程序。
C++中的引用類型,使得函數的參數可以采用引用參數,避免了C語言中函數參數的單向值傳遞所帶來的弊端。而且使用起來非常方便。
C++還提供了作用域限定運算符(::),該運算符可用于解決名稱沖突。還可用于指定標識符的有效范圍,如名稱空間中標識符的使用。
標準C++還支持名稱空間[3~5],除了系統提供的標準名稱空間std外,用戶還可以定義自己的名稱空間。名稱空間的使用給程序設計帶來了很大的方便。
C++的上述諸特色,顯示了C++不僅能實現C程序設計語言所支持的結構化程序設計,而且還支持面向對象的程序設計。可以開發出更大更復雜的應用軟件。
以上C與C++的比較可見,C++的基本部分與C語言基本相同,而且C++的語法相對于C語言的語法更簡潔方便易使用。因此,C++完全可代替C來完成程序設計,完全可以在大學計算機科學專業的本科生中直接開設C++程序設計語言課程,而不用先開設C語言,再開C++。這樣,可以將節省出一部分學時分給C++課程,使得C++的學時更充足些,學生也掌握地更好些。
3程序設計語言C與C++開設建議
通過以上的分析比較,可見在高校計算機科學專業程序設計語言課程的開設中,可以不用開設C程序設計語言,而直接開設C++語言程序設計。
C++的教學內容應該包括:基本知識部分:程序設計與問題解決概述;C++語法、語義以及程序開發過程;數值類型、表達式與輸出;程序輸入與軟件設計過程;條件、邏輯表達式與選擇控制;循環;函數;作用域和生命期;高級控制結構;固有數據類型和用戶定義的簡單數據類型。C++高級知識部分:結構體、數據抽象和類;數組;基于數組的表;面向對象的軟件開發;指針、動態數據和引用類型;鏈結構;模板與異常;遞歸。
C++課程開設時間放在一年級第二學期比較適宜。因為學生在第一學期已經學習了一些關于計算機的入門知識,對計算機科學有了一定的了解,這時開設C++程序設計語言,學生接受起來比較自然。而且直接學習C++語言,沒有別的計算機語言的影響,學習起來更易于接受。C++的課時建議為周學時4,以保證學生有足夠的學習、吸收和消化知識的時間。另外,這個學期開設C++可為學生后續專業課程(如,數據結構)的學習做鋪墊。更重要的是作為計算機科學專業的本科生,在當前的形勢下掌握C++這一通用的編成語言,不僅為將來的發展奠定良好基礎;也為今后參與社會競爭打下堅實基礎。
以上觀點的有效實施依賴于C++程序設計語言教材的選擇。在選擇教材時,必須選擇適宜作為入門語言學習的C++教材。在此建議采用參考文獻[3]中的教材——美國Jones and Bartlett Publishers出版的原版教材“Programming and Problem Solving with C++ (Third Edition/Fourth Edition)”。該教材知識講述邏輯性強,內容安排循序漸進,講解非常透徹清晰,是國內許多中文教材無法媲美的;而且沒有任何先驅課程要求,學生學習起來很容易理解和接受,該教材是美國大學計算機及相關專業程序設計語言的入門教材,是美國最暢銷的計算機科學教材,也是教育部推薦使用的計算機專業類影印版教材。作者在過去4年中使用該教材對計算機科學專業的學生講授C++程序設計(雙語教學)。4年以前作者曾多次講授C語言程序設計。結合多年的教學實踐,作者提出在大學計算機專業的程序設計語言課程設置中,直接開設C++程序設計語言的觀點。關于教材的選擇,也可選用其他一些翻譯過來的國外優秀教材,如參參考文獻[5]中的《C++大學教程》(第五版),該書是針對一學期的課程設置的,英文版在國外也是作為計算機專業的大學一年級教材;或者考文獻[4]中的《C++核心思想》。作者的經驗是最好選用國外原版教材,而且以參考文獻[3]為最好。
參考文獻:
[1] 譚浩強. C程序設計(第二版)[M]. 北京: 清華大學出版社, 1997.
[2] 龔杰民, 金益民, 殷勇. 標準C語言程序設計及應用[M]. 西安電子科技大學出版, 1995.
[3] Nell Dale, Chip Weems, Mark Heading. Programming and Problem Solving with C++(Third Edition)[M]. 美國: Jones and Bartlett Publishers, 2003.
[4] [美]Cay Horstmann著, 晏海華等譯. C++核心思想(第三版)[M]. 北京: 電子工業出版社, 2004.
[5] [美]戴特爾等著, 張引等譯. C++大學教程(第五版)[M]. 北京: 電子工業出版社. 2006.
作者簡介:謝娟英(1971-),女,陜西西安人,副教授,主要從事智能信息處理方面的應用研究。
通信地址:陜西師范大學98# 郵編710062
Tel: 029-85307830(home),13088965815
E-mail: xiejuany@snnu.edu.cn
資助項目:陜西師范大學“C++程序設計雙語教學的研究與實踐”評建項目(項目編號:992398)資助.