許淑華
摘 要: C++語言概念多,語法復雜,容易與C語言相關概念/語法混淆,為此,在C++程序設計課堂教學中提出“X+2”教學方法,并應用于教學過程中。實踐證明,應用該方法進行教學后,學生能夠更容易地掌握C++的語法,徹底弄清楚其與C語言相關概念/語法的區別,提高了學生學習C++程序設計課程的興趣,改善了課堂教學效果。
關鍵詞: “X+2”教學方法; C++程序設計; 課堂教學; 探討
中圖分類號:G642 文獻標志碼:A 文章編號:1006-8228(2014)06-63-03
0 引言
C++語言是在C語言的基礎上擴充了面向對象的概念及相應的處理機制而形成的一種混合型程序設計語言[1]。我院信息與計算科學專業課程安排是,先C語言程序設計,再C++面向對象程序設計。很多在C語言中出現的概念或原理在C++語言中又有新的相應的處理機制,但是以往的教學經驗表明,很多學生學完C++語言中相關概念之后并沒有徹底分清兩套機制的區別,不能將C++相關處理機制與C語言中的相應處理機制相聯系,所以為了讓學生不混淆這些相關概念及相應的處理機制,本文提出了“X+2”教學方法。
1 “X+2”方法
“X+2”方法中的“X”方法指的是根據不同的知識點使用不同的方法。例如類比法、事例法、編程舉例法、項目驅動法、擴充法等。該方法中的“2”指的是問題教學法和歸納演繹教學法。問題教學法,就是在教學過程中教師根據相關內容創設問題情境,把問題作為載體,貫穿整個課堂教學過程,讓學生主動參加其中,提出解決這些問題方法的一種教學方法。由于C++的概念多,語法比較復雜,內容十分廣泛,在教學過程中,問題教學法可以提高學生上課的注意力和集中力,活躍課堂氣氛,能使學生求知欲由潛伏狀態轉入活躍狀態,有力地調動其思維的積極性和主動性,是開啟學生思維器官的鑰匙,充分體現其主體地位。問題教學法可以使用課堂提問的方法;或者使用激情的方法,激發學生保持探求問題的熱情,課后思考問題給出答案;或者使用演示的方法,使學生因為驚嘆結果的微妙而去推論問題的原因;或者使用故意改錯的方法,讓學生在笑過之后再反思其中的問題等等。
學習有兩種過程,一個是歸納過程,即同學們應用新的觀察結果來推導出規則與理論;另一個是演繹過程,即從這些推導出的規則與理論得出推論,靈活地應用并且以實驗來驗證這些推論與應用,從而檢驗前面歸納出的規則與理論。這就是歸納演繹教學法。如果教的得法,就可幫助學生學會做好這兩個過程。因此我們說到歸納演繹教學法時,并非完全排除講課,完全靠學生自己來發現問題,而是采用一種先進行歸納再演繹的教學方法。我們很贊成布蘭斯福德(Bransford)所說的:“有時候,通常是在人們先已靠自己抓住了問題關鍵之后再直接點破要教的東西,會取得極佳的效果[2]。”
歸納演繹法可以讓學生掌握概念和語法的核心內容,加深他們對繁多復雜的概念和語法的理解,并能將其應用于編程,不至于像以往編程時遇到語法錯誤就產生畏懼的心理,出錯時可能會因為錯誤信息是英文的而看不懂;或者即使看懂了,但錯誤產生的原因并非如此,機器只會給出大概出錯的原因,如果語法概念掌握得牢固,就可以使學生避免畏懼心理,正確處理編程中的語法錯誤。
下面通過舉例來講解“X+2”方法的應用。
2 應用舉例
2.1 動態內存的申請與釋放
⑴ “X”方法
在講解該知識點時,“X”方法使用類比法、編程舉例法[3]。由于C語言中也出現過“動態內存的申請與釋放”,首先讓學生思考C語言中是如何實現該原理的,然后提問,讓一個學生來回答,得出C語言中使用兩個函數malloc和free來實現該機制,引出C++語言除了繼承C語言的這套機制外,本身又有自己的一套機制:new和delete,接著編寫兩個程序實現相同的功能,即基本數據類型動態內存的申請與釋放。
2.2 引用
⑴ “X”方法
在講解“引用”這個知識點時,如果就理論講理論,照本宣科,只會使學生厭倦疲勞,昏昏欲睡,他們不但記不住,還會產生逆反心理,所以講解“引用”時“X”方法采用事例法、類比法、擴充法、編程舉例法等。由于“引用”概念在C語言中沒有出現過,學生第一次接觸該概念,授課時應盡量用他們能夠理解并且熟悉的事例來解釋,這樣可以使學生快速并且牢固地掌握抽象概念本質及其現實意義。首先詢問哪些同學有別名,別名和姓名都表示自身,而編程操作對象即變量名也可以有別名嗎?結論是可以,這樣學生就明白了“引用”就是C++語言的一個特殊的數據類型描述,用于在程序的不同部分使用兩個以上的變量名指向同一地址,使得對其中任一個變量的操作實際上都是對同一地址單元進行的操作。在兩個以上變量名的關系上,被聲明為引用類型的變量名則是實際變量名的別名。
⑵ 提問
⑶ 歸納
2.3 數組引用
⑴ “X”方法
此知識點的“X”方法使用擴充法,把引用運用于數組中,對書本知識進行擴充。由于引用不是變量,所以不能說明引用的引用,也不能說明數組元素的類型為引用,或指向引用的指針,例如:
⑵ 提問
請學生再看看這段程序:
3 結束語
在面向對象程序設計語言的教學過程中,為了使學生掌握繁雜的語法概念,并與面向過程設計語言相關概念區分開,在實際教學過程中,提出了“X+2”方法,經過前三輪的教學,C++的省二級考試通過率明顯高于課程改革前的通過率,實踐證明,教學達到了預期的目標。
參考文獻:
[1] 溫秀梅.Visual C++面向對象程序設計教程與實驗(第二版)[M].清華大學出版社,2009.
[2] [美]邁克爾J.普林斯,理查德M.菲爾德,王立人譯.歸納式教學法的定義、比較與研究基礎(上)[J].高等工程教育研究,2009.3:15-28
[3] [美]邁克爾J.普林斯,理查德M.菲爾德,王立人譯. 歸納式教學法的定義、比較與研究 基礎(下)[J].高等工程教育研究,2009.4:13-18
[4] 段珊珊.“C++程序設計”課程教學方法研究[J].職業教育研究,2014.1:119-121
[5] 吳粉俠.讓趣味教學進駐C++課堂[J].時代教育,2014.3:32-35