陳海蕊 郝世選
摘要:文中從主函數(shù)、類與結(jié)構(gòu)、模板與宏三方面闡述了C/C++之間的聯(lián)系。從編程思想。關(guān)鍵宇和語法格式三方面論述了二者的區(qū)別。最后給出培養(yǎng)學生編程思路這一教學原則。
關(guān)鍵詞:c/c++;程序設(shè)計;編程思想
1引言
“c語言程序設(shè)計”課程是高校計算機及相關(guān)專業(yè)的傳統(tǒng)課程,近年來該課程卻逐漸向“C/C++程序設(shè)計”過渡,更有甚者干脆摒棄C語言課程直接開設(shè)C++課程,這一現(xiàn)象值得我們反思,究竟如何在C與C++之間取舍,二者有何聯(lián)系與區(qū)別?下面分別從三方面進行闡述。
2聯(lián)系
C++是以G語言為基礎(chǔ)增加新內(nèi)容發(fā)展而來,是C語言的推廣和延伸。絕大部分C語言中正確的語句在C十十中也可以使用,C語言是C++的子集。
2.1 main函數(shù)
c++與c語言中都有main函數(shù),main函數(shù)在兩種語言中都起著不可或缺的作用,擔當重要作用即程序的入口。簡單的不帶類的c++程序中的主函數(shù)除了輸入輸出(Gout/cin)與G語言不同。別的二者非常類似。
2.2類與結(jié)構(gòu)
類是面向?qū)ο蟪绦蛟O(shè)計中最基本的概念,是實現(xiàn)面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)與核心。類是將不同類型的數(shù)據(jù)和與數(shù)據(jù)相關(guān)的操作封裝在一起的集合體,是對要處理問題的抽象描述。定義了抽象類之后可利用該類定義其實體即該類的對象。結(jié)構(gòu)是c語言中很有用的一種數(shù)據(jù)類型,是以后學習c++中“類”的基礎(chǔ)。結(jié)構(gòu)體成員組合在一起形成一個整體,其成員可為不同的類型。定義結(jié)構(gòu)體之后可用該結(jié)構(gòu)體類型定義結(jié)構(gòu)體變量。c中的結(jié)構(gòu)可以說是c++中類的雛形,但其區(qū)別也是顯而易見的,結(jié)構(gòu)中只是有數(shù)據(jù)成員沒有成員函數(shù);結(jié)構(gòu)中也沒有public和private關(guān)鍵字,其中的數(shù)據(jù)成員默認都是公有的,一般函數(shù)都可以訪問,而C++的類中的數(shù)據(jù)成員默認情況下都是私有的,只有類對象中的成員函數(shù)和友元函數(shù)能夠訪問,這樣極大地提高了數(shù)據(jù)的安全性。
2.3模板與宏
模板是c++程序設(shè)計中的重要機制,可以節(jié)約程序代碼,提高面向?qū)ο蟪绦蛟O(shè)計的可重用性和可維護性。模板把函數(shù)或類要處理的數(shù)據(jù)類型參數(shù)化,表現(xiàn)為參數(shù)的多態(tài)性,從而有效實現(xiàn)了程序設(shè)計中的代碼重用。c語言中的宏定義是一種預(yù)處理方式??筛倪M程序設(shè)計環(huán)境,提高編程效率。其中帶參數(shù)的宏定義方式不只是簡單的字符串替換,還要進行參數(shù)替換,為日后學習面向?qū)ο蟪绦蛟O(shè)計中的函數(shù)模板奠定基礎(chǔ)。
3區(qū)別
C是一種結(jié)構(gòu)化語言,其重點在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序設(shè)計首要考慮如何通過一個過程,對輸入或環(huán)境條件進行運算處理得到輸出或?qū)崿F(xiàn)過程控制,而c++首要考慮如何構(gòu)造一個對象模型,讓這個模型能契合與之對應(yīng)的問題域,這樣就可通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程控制。
3.1編程思想
c++與C語言最大的區(qū)別在于編程思想的截然不同,前者是面向?qū)ο蟮木幊陶Z言,后者則是面向過程的結(jié)構(gòu)化的編程語言。面向?qū)ο蟪绦蛘Z言將程序設(shè)計領(lǐng)域與日常生活拉得更近,面向過程的C語言強調(diào)程序的功能,以函數(shù)為中心,c++在C語言這一強大巨人的肩膀上發(fā)展,通過C語言強大的軟硬件控制功能,融入面向?qū)ο蟮木幊趟枷?。強調(diào)程序的分層。分類,以抽象的類為基礎(chǔ),進行對象的定義與展示,使應(yīng)用程序具有封裝性、繼承性和多態(tài)性。
3.2關(guān)鍵字
c語言中的關(guān)鍵字幾乎都可以在C++中使用,但c++中增加了一些C語言中所不支持的關(guān)鍵字,這些關(guān)鍵字能夠作為函數(shù)和變量的標識符在c程序中使用,盡管C++包含了所有的c,很顯然沒有任何e++編譯器能夠編譯這樣的c程序。例如c++中的new和delete取代了C中的malloc和free,C++中還增加了public、private、try catch。throw等很多關(guān)鍵字。
3.3語法格式
c++和c語言在語法格式上也有很大的不同。c程序員可以省略函數(shù)的返回類型,C++卻不可以,即使無返回也應(yīng)加上void類型。注釋的格式:c語言只支持**。C++還支持//在C語言中輸入輸出是使用scanf和printf函數(shù)來實現(xiàn)的,而e++是使用類來實現(xiàn)的,C++中用于控制1/O的iostream類庫替代了C語言中的stdio函數(shù)庫。C++中的try/oatch/thrOw異常處理機制取代了C中的setjmp和Iongjmp函數(shù)。C++中的引用簡化了c語言中過于繁雜的指針。
4結(jié)語
C++雖然是由C語言發(fā)展而來的。二者在程序設(shè)計上卻有著本質(zhì)的不同。c的輕便靈活與C++的詳盡完善形成了鮮明的對比。在計算機專業(yè)的C/C++課程設(shè)計中,究竟開設(shè)c語言好還是c++更好呢?筆者認為兩門課程都很重要,面向過程的和面向?qū)ο蟮膬煞N思想都應(yīng)該引導學生學習,若受課時所限老師不必面面偎到,但應(yīng)引領(lǐng)學生掌握C/c+十中的核心內(nèi)容。至于教學方法筆者認為應(yīng)把握一個原則即不能一味講解語法,應(yīng)教會學生思考程序的設(shè)計方法,類似的問題學會舉一反三,培養(yǎng)自己的編程思路。畢竟授之以魚不如授之以漁。