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