【摘要】 針對應用型本科生的特點,介紹了偏重實踐的“C/C++程序設(shè)計”教材的建設(shè)過程,以調(diào)動學生的主觀能動性,加強編程、上機實踐,提高學生發(fā)現(xiàn)問題、解決問題的實際動手能力。教材以非傳統(tǒng)的組織結(jié)構(gòu)和組織方式為主要創(chuàng)新點,以全程伴隨并強化上機實踐為主要特色,簡潔、通俗、直觀、易懂地講述C/C++程序設(shè)計?;A(chǔ)知識部分以上機由易而難為順序,逐漸展開,并介紹相關(guān)算法。對于C/C++中繁難的內(nèi)容進行系統(tǒng)化總結(jié),創(chuàng)新性地提出函數(shù)和類三部曲的概念,構(gòu)造類型從數(shù)組引出結(jié)構(gòu)體,進而引出類,C++其他內(nèi)容按面向?qū)ο蟮娜筇匦越M織,這些處理使繁雜的內(nèi)容變得條理清晰,易于學習。
【關(guān)鍵字】 C/C++ 實踐教學 創(chuàng)新教材 上機實踐
一、引言
“C/C++程序設(shè)計”是理工科非計算機專業(yè)本科學生計算機系列課程的核心課程。內(nèi)容抽象,概念和語法規(guī)則較多,要求學生能夠編制有一定難度的實用程序,具有較高的上機實踐能力和水平。高校的教學不能停留在高中那樣以背誦為主的教學方式,應該想辦法提高學生的思考能力、動手能力、上機實踐能力。這對于剛從高中升到大學的大一學生,是一個艱巨的挑戰(zhàn)。對于該課程的任課教師,要求有更好的應對思考與實踐。長期以來,很多高校都在不斷地探索和實踐關(guān)于“C/C++程序設(shè)計”課程的教學改革,但仍然存在很多問題。以注重實踐教學,更好地提高學生的動手能力、編程能力為出發(fā)點,對傳統(tǒng)教材內(nèi)容進行了重新組織,由易而難,盡最大努力幫助學生在上機實踐中逐漸學習計算機編程的基本概念和方法,培養(yǎng)和提高編程實踐能力?!癈/C++程序設(shè)計”教材正是在此理念基礎(chǔ)上編寫而成。
二、教材建設(shè)的思考與實現(xiàn)
應用型本科生的C語言教學,要注重學生的上機實踐能力的培養(yǎng),培養(yǎng)學生腳踏實地、嚴格細致的工作作風、嚴密的邏輯思維能力,分析問題、解決問題的能力。作為學習效果的檢驗,多數(shù)高校要求學生參加全國高校計算機水平考試并獲得通過,很多學校將水平考試的分數(shù)與學生最終的本科學位掛鉤。全國高校計算機水平考試是由各省市教育廳組織的計算機證書考試。廣東省每年舉行兩次,實行機考,概念部分只有四選一選擇題,占20分,編程部分為4-5題的編程題,占80分。從考試形式和分值比例就可以看出,水平考試很好地考核了學生們的實際動手能力,突破了中國學生一貫死記硬背的應試考試模式,具有非常重要的意義。廣東省的二級計算機水平考試只有C++,沒有C語言。為了兼顧C語言教學和計算機二級水平考試的要求,我們編寫了“C/C++程序設(shè)計”教材,已經(jīng)由清華大學出版社出版。
2.1 合理取舍教材內(nèi)容
C/C++語言的內(nèi)容非常繁雜,而作為學生來說能夠抓住主要問題,解決絕大部分問題,在獲得基礎(chǔ)知識和解決問題的基本能力之后,再深入細致地學習就容易得多。所以教材避開了一些偏和難的內(nèi)容。
輸入輸出方面,在比較了C的printf、scanf函數(shù)和C++的cin、cout對象的使用特點后,選擇了cin、cout來輸入輸出數(shù)據(jù),簡化了輸入輸出格式,避免學生們在輸入輸出格式方面花費太多的時間,影響基礎(chǔ)知識的學習,這也滿足C++編程的需求。教材的所有例題和習題也采用cin、cout輸入輸出格式。
指針是C語言區(qū)別于其他高級語言的重要特色,教材介紹了指針的基本特性、與一般變量的區(qū)別和在數(shù)組、函數(shù)中的應用后,沒有像一般教材那樣介紹鏈的概念、鏈的建立和刪除等應用。一般來說這部分內(nèi)容屬于較復雜的編程應用,在掌握了指針基本知識基礎(chǔ)后,再深入學習也不難。
從C的結(jié)構(gòu)體(適當簡化了結(jié)構(gòu)體的內(nèi)容)出發(fā),通過類比的方法引入C++的類的概念,然后用眾多具體例題講述了面向?qū)ο蟪绦蛟O(shè)計的封裝性、繼承性和多態(tài)性,建立起C++編程的基本概念。
2.2 循序漸進安排教學內(nèi)容
教材以非傳統(tǒng)的組織結(jié)構(gòu)為創(chuàng)新點,以全程伴隨上機實踐為特色,簡潔、通俗、直觀、易懂地講述C/C++程序設(shè)計。
C語言的基礎(chǔ)知識,包括數(shù)據(jù)類型、變量、表達式以及順序、分支、循環(huán)三大結(jié)構(gòu)語句及其編程[1-3]。這部分內(nèi)容是C/C++程序設(shè)計的基礎(chǔ)內(nèi)容,不打好這個基礎(chǔ),后面的學習幾乎無從談起。因此這部分內(nèi)容的掌握是非常重要的[1-3]。
教材在基礎(chǔ)知識內(nèi)容介紹方面打破傳統(tǒng)的內(nèi)容安排順序,以“C/C++語言概述”、“編程基礎(chǔ)Ⅰ”、“C語言基礎(chǔ)知識”、“編程基礎(chǔ)Ⅱ”和“編程進階”五章,從簡到難,循序漸進地增加學習難度,從一開始學習就可以輔以上機練習,使計算機——這個程序設(shè)計最好的老師全程伴隨學習者,發(fā)揮最大的作用。既最大化地調(diào)動學生上機操作的積極性,又有助于各知識點的掌握以及學習興趣的培養(yǎng)和良好的學習習慣的養(yǎng)成。
內(nèi)容安排由簡到難,逐步深入,免得學習者失去學習信心。一開始就使學習者可以上機實踐,之后全程理論和實踐互補學習,利于掌握程序設(shè)計的技巧,提高編程能力。
6-9章介紹C語言的重點部分,包括數(shù)組、函數(shù)和指針。10-12章是提高部分,包括結(jié)構(gòu)體、類、文件系統(tǒng)等。
在引入類的概念之前,先講解了結(jié)構(gòu)數(shù)據(jù)類型的定義和使用,然后在結(jié)構(gòu)體的基礎(chǔ)上,引入類的概念,并仿照函數(shù)的三部曲講解類的三部曲,進而介紹C++中面向?qū)ο蟪绦蛟O(shè)計的基本知識。
2.3 各部分知識點的系統(tǒng)化、條理化
知識點的適當總結(jié)有利于學生們的理解、記憶和應用,比如簡單程序結(jié)構(gòu)三步驟、循環(huán)結(jié)構(gòu)三種形式、變量使用三步驟、函數(shù)三部曲、指針四大功能、類三部曲、面向?qū)ο蟪绦蛟O(shè)計的三大特性。將相關(guān)知識點的特征與數(shù)字聯(lián)系起來,學生們能夠記憶、聯(lián)想相關(guān)內(nèi)容。
每章也對本章的知識點進行了總結(jié),并列表指出經(jīng)常容易犯的錯誤,對上機實踐很有幫助,全書最后還對各種數(shù)據(jù)類型和各種編程語言進行了對比總結(jié)。
2.4 注重程序的動態(tài)調(diào)試
學習基礎(chǔ)知識,學習編程,從程序運行細節(jié)到程序結(jié)構(gòu)的理解,都離不開對程序每一步運行情況的了解。因此,學會動態(tài)調(diào)試是學習C語言程序設(shè)計的重要手段。教材在第5章學習完基礎(chǔ)知識和第8章又學完數(shù)組和函數(shù)后,兩處增加了動態(tài)調(diào)試的方法和多個實例。
動態(tài)調(diào)試是綜合訓練學生動心、動腦、動手的一個過程,能夠真正調(diào)動學生學習的主觀能動性,提高發(fā)現(xiàn)問題、解決問題的實踐能力。
2.5 適應學生的閱讀習慣
現(xiàn)在的年輕人,已經(jīng)是“讀圖”一代了。他們對于傳統(tǒng)教材的大段文字描述沒有多少耐心,故而我們在內(nèi)容上盡量減少大段的文字描述,對重點內(nèi)容加了陰影和警示,適時提出問題,講究版面編排,盡量將程序、運行結(jié)果和相關(guān)解釋組織在一起,增加重點概念的圖解,更好地幫助學生們做最基本的實踐——讀書。
2.6 啟發(fā)學生學會編程
在學習基本編程知識后,進行具體編程實踐是學習C/C++程序設(shè)計的重要任務,而學習編程的過程,是從模仿開始到獨立完成程序設(shè)計[6]。教材增加了大量例題,引導學生自己學會如何編程,并且兩次集中講解和總結(jié)典型題目和經(jīng)典難題。第一次,在三大結(jié)構(gòu)講完后,講解了有關(guān)算法類程序設(shè)計,總結(jié)一般編程方法和技巧;第二次,在數(shù)組、函數(shù)講完后,專設(shè)了第8章,本著“授人以魚、不如授人以漁”的思想,形象地稱之為“三根魚竿兒”。
第一根魚竿兒——順竿兒爬,主要講解編程思想,對一些感到無從下手的編程題,如何去思考?如何按照題目的敘述,把題目的敘述過程變換成程序的實現(xiàn)過程。
第二根魚竿兒——一節(jié)節(jié)加長,主要講解復雜程序的結(jié)構(gòu)化實現(xiàn),大程序的逐步完善猶如魚竿,要一節(jié)節(jié)加長,逐步完善程序代碼,化繁為簡,逐步完成復雜題目的編程。
第三根魚竿兒——盲人用桿兒步步試探,程序設(shè)計一般都要經(jīng)過動態(tài)調(diào)試,檢查邏輯錯誤,修改程序,完善程序,這樣才可以編制出好的程序。
2.7 配套的Flash動畫設(shè)計
針對教材中學生們比較難以理解的概念,我們還采用Flash動畫的方式進行更為細致和形象的描述,比如三大循環(huán)結(jié)構(gòu)、函數(shù)、數(shù)組、指針和類等。通過幽默的動畫表達晦澀的概念,增強學生們的記憶,同時活躍了課堂氣氛,提高了學生們的學習興趣。
三、結(jié)束語
《C/C++程序設(shè)計》凝聚了作者多年的教學實踐經(jīng)驗,在注重培養(yǎng)學生編程能力方面進行了有益的嘗試,通過我校兩屆學生的使用,基本上實現(xiàn)了我們編寫教材的目的,學生們的編程能力有了明顯的提高,計算機水平考試成績也有較大的進步。教材建設(shè)要結(jié)合學生的特點,讓學生能看書、愛看書、看懂書,另外程序設(shè)計是一門實踐性很強的課程,不要忘了“計算機”,這個默默無聞、無所不能的老師。本書試圖讓學生最大程度的受益于計算機這個老師。使計算機——這個程序設(shè)計最好的老師全程伴隨學習者,發(fā)揮最大的作用。希望教材能使更多的老師和學生從中受益,有利于C/C++的教和學。
參 考 文 獻
[1]譚浩強.《程序設(shè)計》(第四版)[M],北京:清華大學出版社,2010.
[2]王敬華.《C語言程序設(shè)計教程》(第二版)[M],北京:清華大學出版社,2010.
[3]王麗娟,榮政等.《C程序設(shè)計》[M],西安:西安電子科技大學出版社,2000.
[4]張正明,盧晶琦,王麗娟等.《C/C++程序設(shè)計》[M],北京:清華大學出版社,2013.
[5]謝竟博. “C語言程序設(shè)計教學中的問題及改革建議”[J]. 重慶:重慶郵電大學學報: 社會科學版, 2008, 20(2): 137-140.
[6]魯紅英,肖思和,孫淑霞. “C/C++語言程序設(shè)計”課程教學改革與實踐[J].北京:計算機教育. 2013(7) 95-98.