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