裴大容
摘要:該文針對目前C++程序設計教學中學生感覺內(nèi)容多、難而零亂,實際編程應用能力差等問題進行思考,并結(jié)合自己的教學經(jīng)驗在教學內(nèi)容、教學思路、教學手段、實驗實訓等方面提出了建議。
關鍵詞:C++程序設計;教學建議
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2012)29-7028-02
1 目前存在的問題
C++程序設計語言因為其語言簡潔、緊湊,語法靈活,語言表達能力強,代碼容易維護、可移植性強、執(zhí)行效率高,支持數(shù)據(jù)抽象、支持面向?qū)ο蟪绦蛟O計和泛型程序設計等優(yōu)點而被廣泛應用,成為當今軟件開發(fā)的主流語言之一,也逐漸成為許多高校計算機專業(yè)程序設計基礎編程語言的首選。。但由于C++語言本身是從C過渡來的一個面向?qū)ο蟮某绦蛟O計語言,所以C++即支持c的面向過程的編程又支持面向?qū)ο蟮木幊虘茫虼薈++教學內(nèi)容非常多,知識點多,語法多,并且C++中有很多比較難的知識點,比如指針、多繼承等,而教學課時一般都比較少,理論加實踐72學時左右安排在一學期上完??傮w導致的結(jié)果就是,本課程學完后,學生感覺學習內(nèi)容多而且零亂,沒有系統(tǒng)性,一旦遇到實際面向?qū)ο缶幊虘脝栴}時感覺無從下手,無法編程。針對這些現(xiàn)象進行思考后,結(jié)合自己的教學經(jīng)驗提出了一些教學建議。
2 教學中的建議
2.1 教學內(nèi)容的裁剪
總體思路是突出重點,適當降低難度;把面向?qū)ο箨P鍵性技術的知識點盡量前提,增加學習熟悉、使用和掌握的機會。
在面向過程內(nèi)容學習中重點為:基礎數(shù)據(jù)類型、常量變量、控制結(jié)構(gòu)、數(shù)組、指針、函數(shù)、結(jié)構(gòu);在面向?qū)ο髮W習中重點:類、對象、封裝、繼承、多態(tài)和輸入輸出流。
數(shù)組雖然是重點,但教學中只以一維數(shù)組和字符數(shù)組為重點平時也應用最多,而對于二維數(shù)組及多維數(shù)組只需弄清楚其含義就可以了,到具體要應用時補充再自學。對于指針既是一個重點又是一個難點:雖然指針是C++一個最重要的特性,它的靈活性、方便性和快捷性令其他語言望塵莫及,但同時也帶來了不安全性的隱患和學習的難度。但現(xiàn)在C++中又引入很多技術代替指針的很多功能。比如C++中的引用,其功能可以代替指針實現(xiàn)間接訪問,但比指針安全也比指針的使用簡單,另外成員函數(shù)可以取代函數(shù)指針等等。因此在講解指針內(nèi)容時,我們可以適當?shù)慕档碗y度,簡化內(nèi)容。重點是要弄清指針的含義,指針對一維數(shù)組的引用就可以了。
對于面向?qū)ο蟛糠值膬?nèi)容我們可以適當弱化語法方面的問題,而重點強調(diào)面向?qū)ο蟪绦蛟O計方法,語法方面的問題主要在應用中進一步強化和鞏固。
對于面向?qū)ο蟮年P鍵性技術我們可以盡量讓學生提早接觸,比如多態(tài),我們在講解函數(shù)時,就可把函數(shù)重載和函數(shù)模板提前到這部分講解,讓學生無意中先接觸和使用多態(tài)技術,到后面真正講解面向?qū)ο蟮倪@部分內(nèi)容時,學生實際上早已熟悉相關知識,只是加強理解和應用而已。
2.2 教學思路
C++的內(nèi)容,從總體上而言由2部分構(gòu)成:面向過程和面向?qū)ο?;在這2個部分的教學及銜接中要各有側(cè)重點,良好過渡;
在面向過程教學中主要強調(diào)算法、流程圖和程序跟蹤調(diào)試的學習;在從面向過程向面向?qū)ο蟮倪^渡過程中,把面向過程與面向?qū)ο笾g的內(nèi)在關系凸顯出來(見圖1和圖2),讓學生意思到面向?qū)ο蟪绦蛟O計包含面向過程程序設計,是面向過程程序設計的發(fā)展??梢赃@么理解,面向?qū)ο蟪绦蛟O計主要勾勒出了程序的整體框架,體現(xiàn)程序各部分及各層次之間的內(nèi)在關系,而面向過程的程序設計方法可用在面向?qū)ο蟮牡讓娱_發(fā)中,即對象內(nèi)部(或者說類內(nèi)部)的算法實現(xiàn)中。不然學生會覺得2者之間很突兀,不能銜接起來,有一種抵觸或覺得難以接受的思想。而在面向?qū)ο蟮慕虒W中,重點突出面向?qū)ο蟪绦蛟O計的方法。如何針對具體的問題進行對象的劃分和對象設計的過程。
由圖2中的框出部分能很容易看出,對象內(nèi)部的算法實現(xiàn)部分依然要用面向過程的方法設計。
2.3 教學手段
綜合利用多種教學手段:多媒體+板書+網(wǎng)絡;以多媒體為主,板書為輔,同時課外充分利用網(wǎng)絡進行交流等多種教學手段;因為利用多媒體講課可以圖文并茂、形象生動、同時交互性好、信息量大等特點。對課程中難以理解的一些比較抽象的內(nèi)容,可以給予直觀展示和動態(tài)模擬,起到事半功倍的效果。比較在講到指針變量概念時,說指針變量是指向同類型變量的變量,這個概念聽起來很饒口,并且不好懂。通過多媒體講解時,在給出一個指針變量賦值語句之后,緊接著用一個圖形動態(tài)表明這個指針變量的內(nèi)容和所賦值的那個變量之間內(nèi)存地址的關系,然后用一個箭頭動態(tài)表示出這種指向,學生很快就可以清楚明白的理解指針變量的含義了。傳統(tǒng)的板書教學雖然速度有些慢,但是在講解一些難點時,卻可以作為必要的輔助手段。比如講解算法的設計過程,由于放慢了講解速度,正好可以方便學生理解和回味。另外由于課堂上時間總是有限的,當課余學生想和老師探討問題時,就可以充分發(fā)揮網(wǎng)絡的便利。學生可以利用電子郵件或QQ等給老師提問或留言,老師可以很方便及時的答疑解惑,這樣也進一步促進和提高了學生學習的興趣和積極性,加強了師生互動。
2.4 實驗實訓
現(xiàn)在一般學校都由于學時緊張,安排的實驗課課時很有限,在這些規(guī)定的課時中只能針對所學的知識點進行相應復習、鞏固和應用,而不能將相應知識點連貫起來,所以所有知識點都是孤立的,感覺很零碎。因此當他們遇到一個綜合性應用或稍微復雜一點的問題時,就感覺無從下手。因此非常有必要在本課程學習完后,利用假期時間增加一個為期2周的小型綜合應用項目的課程設計,比如圖書管理系統(tǒng)或者成績管理系統(tǒng)等。讓學生把面向?qū)ο蟪绦蛟O計從分析、設計、實現(xiàn)到測試這個完整的流程走一遍,將所有的知識點綜合起來形成一個系統(tǒng)性的知識結(jié)構(gòu)。雖然是小型應用項目,但麻雀雖小五臟具全,使得學生有了一個整體設計的概念后,就不至于以后在工作中遇到一個實際應用的編程時毫無頭緒。注意在實訓過程中老師要給予必要的指導,但主要依靠學生自己完成。
2.5 學習習慣
凡是程序設計語言課,要想學好都無一例外的要求:多想、多寫、多上機調(diào)試。因此從學生開始實習時多就要求他們養(yǎng)成這些好習慣。另外編程時,為了增加程序的可讀性,為以后工作打下良好的基礎,在書寫程序時要求有良好的編程習慣。比如代碼的縮進、必要的空格空格和空行;標識符的命名最好做到見名知義、簡潔、易區(qū)分;變量名小寫,宏和常量大寫。對代碼進行必要的注釋等。這些看起來很簡單的一些編程習慣,對增強程序的可讀性有非常大的作用,但是平時學生為了圖省事或方便都不愿意堅持這樣做。因此在學習編程初期老師要堅持不懈的多強調(diào)這些問題。
3 結(jié)束語
針對目前學生學習C++程序設計教學中遇到的一些問題,進行思考和總結(jié)后提出了自己的建議。把這些建議的內(nèi)容在近2屆學生中貫徹和執(zhí)行后,發(fā)現(xiàn)學生編程應用能力有較大的提高,學習積極性和主動性也比以前強。
參考文獻:
[1] 溫秀梅,丁學鈞,李建華.C++語言程序設計教程與實驗(第三版)[M].北京:清華大學出版社, 2012.
[2] 衛(wèi)春芳.“C++程序設計”課程改革[J].計算機教育,2009(23).
[3] 李琳,徐雨明,王櫻.淺談C++課程教學方法的研究與應用[J].科技信息,2009(16).