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