摘要:文章針對“C++語言程序設計”課程內容自身的特點,提出在教學中采用案例教學法,并探討了案例教學法中教學案例的選擇、組織實施以及在教學中應注意的問題,使得學生在解決問題的過程中,逐步形成程序設計思維,從而提高學習興趣,增強教學效果。
關鍵詞:案例;案例教學;C++語言程序設計
“C++語言程序設計”作為計算機應用及相關專業的重要基礎課程,具有較強的理論性、實踐性和創造性,它是在C語言的基礎上發展演變而來的一種面向對象程序設計語言,提供了面向對象程序設計風格,更接近于目前常用軟件開發平臺的軟件開發思想,從而成為當今計算機教學的核心內容。由于C++牽涉到的概念比較復雜,規則繁多,使用靈活但容易出錯,長期以來,C++語言被認為是較難學習的專業開發語言,如果采用傳統的課堂講授教學法,則教學內容仍然是理論與實踐相脫節,使課堂教學顯得空洞、呆板,缺乏學習興趣,束縛了學生的思維發展且不能考核出學生的實際操作水平、綜合分析能力及創新能力。經過多年的教學實踐和不斷探索,筆者認為案例教學法能彌補傳統教學法在講授“C++語言程序設計”時的不足,也是提高學生學習興趣的有效手段之一。那么,如何在對高職院校專科生進行C++語言的教學中,使學生能夠了解C++語言程序設計的基本概念和方法,進而領會程序設計的奧秘,掌握C++語言的編程技巧,提高該課程的教學效果,是每一位計算機教師在教學中應該努力探討的問題。
1案例教學法的基本思想
案例教學法是一種生動、靈活、多樣化的教學方法,由于它自身的特點,同時經過長期的教學實踐,已經形成了獨具特色的教學方法,更確切地說,它已成為一種重要的教學形式,是教育者本著理論與實際有機整合的宗旨,遵循教學目的要求,以案例為基本素材,將學習者引入一個特定的真實情境中,通過師生、生生之間雙向和多向互動,積極參與,平等對話和研討,重點培養學習者的批判反思意識及團體合作能力,并促使學習者充分理解問題之復雜性、變化性、多樣性等屬性的重要教學形式[1]。它在非計算機專業學科教學中采用較多,由于它的獨特魅力,現在已被應用到很多學科的教學當中,而關于案例教學在“C++語言程序設計”教學中進行運用的理論性研究相對來說目前并不多,所以如何更好地發揮案例教學在教學中的作用值得探討。程序設計教學的最終目的是要讓學生學會進行軟件設計及軟件開發,培養學生的實際動手能力和探究、創新能力,所以在案例的選取方面要精,要有代表性和典型性,同時要考慮到學生的認知特點。
2案例教學法中的案例選擇
案例教學法的成功取決于:(1)教師的素質和教師在教學過程中角色的合理定位。在案例教學中,教師不是主角,他只起一個引導和啟發的作用。(2)學生的角色定位。學生是主角,積極主動地參與到案例教學過程中,他們之間可以開展討論,甚至辯論,其目的就是要把問題分析透徹,最后解決問題。(3)選擇案例的質量。案例的選擇是“C++語言程序設計”課程案例教學法的重要環節,直接影響教學效果,應依據專業方向的培養目標,課程內容,教學目的以及課程特點來進行案例的選擇,在課程的案例選擇中一般應注意以下幾個方面的內容。
2.1實用性
將案例引入教學的目的在于理論聯系實際以促進教學。學習C++后要求學生能系統地進行程序設計,而不是學會一些語句及簡單地計算機操作,所以,從教學內容和教學要求上看,在教學中舉出一些實用的案例是很有必要的,通過案例,學生從知其局部到知其全面,從知其然到知其所以然,使學生通過具體的實例有“身臨其境”的感覺,以某個系統設計員的角度考慮問題,這樣做能啟發學生把具體案例與C++語言聯系起來,彼此貫通。
2.2趣味性
俗話說,興趣是最好和老師,如果選擇時鐘這樣傳統的案例,學生初學時很難認可它的價值,不知學它何用,學習缺乏目的性,激不起學生學習的興趣,這就需要教師在選擇案例時要充分考慮其趣味性,讓學生產生興趣,從而有效調動學生的學習熱情。
2.3綜合性
C++是適合于編寫大型復雜程序的語言,在編寫小的程序時根本顯現不出它的魅力,所以選擇的案例要具有一定的難度,深度和綜合性,不應過于簡單,這樣可以吸引學生對案例去反復琢磨、推敲,激勵學生去系統地研究、分析,加深對難點、重點問題的認識和掌握,從而取得較好的整體教學效果。
2.4挑戰性
“C++語言程序設計”是一門實踐性很強的課程,而運用案例進行教學又是編程中不可缺少的一種方法,但是多數情況下,教師習慣采用正面實例進行對比分析,其實,反面實例往往比正面更能加深學生對問題的認識和理解。因此,在教學中可以采用一些反面實例,引導學生深思,鼓勵學生運用所學知識完善實例,這是具有挑戰性的環節,一般改別人的程序要比自己編程還難。
3實施案例教學的方法及策略
在程序設計教學中實施案例教學基本上分為兩類方法:一是案例講解法,二是案例分析法[2]。案例講解法主要用于課堂教學中那些應用性很強的案例,放棄邏輯講授而直接用案例講解來教學,這里主要強調教師的講解作用。案例分析法也叫案例討論法,這里主要強調學生的參與性,主要培養學生創造性思維和解決問題的能力,通過討論和分析來培養學生解決問題的思維方法和能力。
對于案例而言,由于它并不能包含某一種程序設計語言課程的全部內容,特別是一些原理性、概念性相對比較強的內容,雖然案例教學在實用性和重應用性方面有很大的優勢,但在知識的系統性、連貫性上不如傳統教學有優勢。所以,要根據課程內容的性質尋找這兩方面的接觸點和相互之間的聯系,將傳統教學與案例教學有機地結合起來[3]。對于案例教學在“C++語言程序設計”教學實施中的具體教學流程如圖1所示。

同時,教師在實施案例教學的過程中要進行不斷地反思,進而改進教學策略來適應不斷變化的課堂和學生的需求。
4 “C++語言程序設計”教學案例分析
以下通過一個案例在“C++語言程序設計”教學中的運用來更好地說明如何運用案例教學。
4.1案例選編
在案例的選編上,遵循案例選取的原則,選擇一個大家比較容易理解的數制轉換案例,該案例是計算器中的一個功能,比較有實用性,并且覆蓋了C++語言中的數據類型定義、程序的流程控制、數組、函數調用和結構等內容,在設計上充分了體現程序開發的基本思路,既符合所需掌握知識的特點,又能讓學生感興趣[4],在完成了十以下進制的數制轉換之后,還可在此基礎上進行擴充,如增加十六進制轉換和小數部分的轉換等。
4.2案例的實施
(1) 在案例實施前,要運用傳統的講授法對C++語言的數據類型定義、程序的流程控制、數組、函數調用和結構等內容作一下簡要的、系統的復習。讓學生對這門語言有一個總的認識和總的把握,對在程序設計中所用到的堆棧結構和一些重要的概念進行了簡要的介紹,因為這些概念相對來說比較難理解,主要是讓學生在案例學習當中以及自己在實踐操作中去慢慢接受和理解。
(2) 對案例進行講解和分析。將十進制數N轉換成r進制的數學模型如下。
N=(N div r)*r+ N mod r
計算過程:首先用十進制整數N除以基數r,得到的余數是r進制y的最低位y0,接著以x除以r的整數商作為被除數,用它除以r得到的整余數是y的最低位y1,依次類推,直到商為0時得到的整余數y的最高位ym,假定y共有m+1位。這樣得到的y與N等值,y的按權展開式為:
y=y0+y1.r+y2.r2+...+ym.rm
算法思想:將計算過程的r進制數逐位進棧,然后逐個出棧[5]。
例如,若十進制整數為3929,把它轉換為八進制數的過程如圖2所示。

(3) 根據高職學生的特點和水平,給出案例的設計流程及部分參考程序。
//打開相關的頭文件
const int StackMaxSize=30; //定義數組的最大長度
typedef int ElemType; //定義元素類型為整型
struct Stack
{
ElemType stack[StackMaxSize];
int top;
}; //定義一個棧結構
//定義棧操作的相關函數
//把一個長整型數num轉換為一個r進制數輸入
void Transform(long num,int r)
{
Stack a;//利用棧a存儲轉換后得到的每一位數字
InitStack(a);//初始化棧
while(num!=0)//由低到高求出r進制的每一位并入棧
{
int k=num%r;
Push(a,k);
num/=r;
}
while(!StackEmpty(a))//由高到低輸出r進制數的每一位
cout< cout< } //主函數 運行結果如圖3所示。 (4) 教學過程交流互動。案例教學過程中一個重要環節是學生參與問題的討論,討論案例旨在分析問題,提出解決問題的算法,使學生能夠主動參與學習活動,教師和學生能夠相互交流。學生學習由被動變為主動,主動提出問題、思考問題。教師作為案例討論的組織者,要能夠駕馭課堂討論的進度和氛圍。教師作為案例討論的引導者,要創造寬松的氛圍。對同一案例允許學生提出不同的分析結果和實現方法,如本案例可以用老師的給出方法來實現,也可以用學生自己的方法來實現,老師幫助學生分析算法的優劣,讓學生真正成為學習的主體。 (5) 案例評述。案例評述是案例教學中極其重要的一個環節,通過評述可以發現算法中的漏缺,將各知識點有機地串連起來,便于知識的融會貫通,保證知識的完整性。為了便于加強對所學的重要知識點的鞏固和對新知識的學習,提高學生的學習積極性和綜合應用所學知識解決實際問題的能力,讓學生對本案例的算法進一步完善。如:如何解決十六進制的轉換和小數部分的轉換等問題。 5結語 教學實踐表明,通過案例教學在“C++語言程序設計”教學中的實施,能夠激發學生創造性思維,充分調動學生學習的積極性,提高了學生分析問題和解決問題的能力,所以在教學中合理、有效地使用案例教學,容易使教學過程充滿挑戰性、趣味性,很好地解決傳統教學中遇到的問題。 參考文獻: [1] 張新平. 案例教學的內涵[J]. 云南教育,2002(32):6. [2] 張繼學. 案例教學及其在國內的發展研究[J]. 職業教育研究,2004(11):60-61. [3] 龔沛曾,楊志強,陸慰民,等. 案例教學法在“Visual Basic程序設計”課程中的應用[J]. 計算機教育,2004(5):62-63. [4] 李寧. C++語言程序設計[M]. 北京:中央廣播電視大學出版社,2000:1-8. [5] 許卓群. 數據結構(C++語言描述)[M]. 北京:中央廣播電視大學出版社,2001:129-130 Application of Case-based Teaching Method in the C + + Programming Language XIAO Ming (Guangzhou Light Industry Technician Institute, Guangzhou 510220,China) Abstract: According to the C + + Language Programming courses in its own characteristics, the case-based teaching method is put forward, choice and organization of the teaching case are probed ,and problems in teaching should be paid attention to. Design ability is being formed gradually by solving the problem of the process of study, so the learning interest is improved and the teaching effect is enhanced. Key words: case; case-based teaching; C + + Programming Language (編輯:彭遠紅)