魏書堤,趙輝煌,鄧紅衛(wèi)
(衡陽(yáng)師范學(xué)院 計(jì)算機(jī)科學(xué)系,湖南 衡陽(yáng)421008)
C 語(yǔ)言介于高級(jí)語(yǔ)言與低級(jí)語(yǔ)言之間[1],是大學(xué)理工類必修的計(jì)算機(jī)語(yǔ)言類課程,也是數(shù)據(jù)結(jié)構(gòu)等課程的前趨課程。由于C 語(yǔ)言涉及的概念規(guī)則很多,且使用形式靈活,很容易出錯(cuò)。教學(xué)實(shí)踐表明:初學(xué)者對(duì)教材前面的語(yǔ)句語(yǔ)法、變量表的學(xué)習(xí)還能跟得上,但一旦講解比較復(fù)雜的章節(jié)時(shí)就困難重重,甚至有的學(xué)生學(xué)完了C 語(yǔ)言,考試成績(jī)也很好,但是讓其用C 語(yǔ)言去解決一個(gè)實(shí)際問(wèn)題時(shí),就無(wú)從下手,沒(méi)有清晰的思路和合理的解決方案。為了使學(xué)生能更好地掌握C 語(yǔ)言解決一些實(shí)際問(wèn)題,教師要從實(shí)際生活中去挖掘一些較好的案例,對(duì)教學(xué)中的問(wèn)題進(jìn)行分析并將教學(xué)的案例設(shè)計(jì)與計(jì)算思維培養(yǎng)結(jié)合起來(lái),以提高C 語(yǔ)言的教學(xué)質(zhì)量。
隨著各專業(yè)人才培養(yǎng)方案的修改,作為公共基礎(chǔ)課程的C 語(yǔ)言教學(xué)課時(shí)被壓縮,很多任課教師未能對(duì)教學(xué)內(nèi)容進(jìn)行整合優(yōu)化,上課時(shí)仍然按部就班講解C 語(yǔ)言,比較復(fù)雜的教學(xué)內(nèi)容講解不透,沒(méi)有結(jié)合生活工作實(shí)際來(lái)設(shè)計(jì)合理的案例,把知識(shí)融入到案例中去,忽視了學(xué)生計(jì)算思維的培養(yǎng),而計(jì)算思維恰恰又是對(duì)問(wèn)題抽象的基礎(chǔ)。
根據(jù)我們對(duì)學(xué)生的調(diào)查與了解,很多老師布置的課外作業(yè)都流于書本之上,很少根據(jù)自己的教學(xué)設(shè)計(jì),有針對(duì)性布置一些思維性強(qiáng)的課外作業(yè),這樣學(xué)生一上機(jī)實(shí)驗(yàn)都在驗(yàn)證一些書上已經(jīng)有的程序,而且象這些程序早已經(jīng)過(guò)教材編寫者調(diào)試,學(xué)生在調(diào)試時(shí)很少出現(xiàn)一些意想不到的錯(cuò)誤,很難分析錯(cuò)誤產(chǎn)生的原因,在解決實(shí)際問(wèn)題時(shí),很難進(jìn)行戰(zhàn)術(shù)方面的思維,也就是說(shuō)有了抽象方法以后,也難有成功的程序。
老師在進(jìn)行教學(xué)案例設(shè)計(jì)時(shí),不僅要把握知識(shí)的易理解性,而且要把握思維規(guī)律,漸進(jìn)式地演繹分析實(shí)際問(wèn)題,找出其中內(nèi)在規(guī)律,抽象出基礎(chǔ)模型算法,講解時(shí)可以用形象類比等方法進(jìn)行啟發(fā)性教學(xué)。
老師應(yīng)認(rèn)真分析教材和學(xué)生的實(shí)際情況,精心組織教學(xué)內(nèi)容,設(shè)計(jì)合理的教學(xué)案例來(lái)實(shí)施教學(xué)。在實(shí)施教學(xué)過(guò)程中,應(yīng)從實(shí)際問(wèn)題引入教學(xué),通過(guò)對(duì)實(shí)際問(wèn)題的抽象來(lái)啟發(fā)學(xué)生的思維,通過(guò)問(wèn)題-算法-程序這一系列的過(guò)渡對(duì)實(shí)際問(wèn)題進(jìn)行解決,從而達(dá)到對(duì)知識(shí)理論的掌握和運(yùn)用。學(xué)生在學(xué)習(xí)C 語(yǔ)言程序設(shè)計(jì)時(shí),不外乎2 個(gè)方面的學(xué)習(xí),一方面是對(duì)C 語(yǔ)言課程知識(shí)的理解,另一方面是專業(yè)知識(shí)的靈活運(yùn)用,所以老師們的教學(xué)重點(diǎn)應(yīng)放在對(duì)學(xué)生思維能力的培養(yǎng)和思維習(xí)慣的養(yǎng)成上。
C 語(yǔ)言實(shí)際上是一門實(shí)踐性非常強(qiáng)的課程,老師在進(jìn)行案例設(shè)計(jì)時(shí),要堅(jiān)持以培養(yǎng)學(xué)生的學(xué)習(xí)理解能力、計(jì)算思維能力和創(chuàng)新能力為目的[2],案例內(nèi)容要能有利于激發(fā)學(xué)生的學(xué)習(xí)興趣,能引導(dǎo)學(xué)生積極進(jìn)行多種抽象思維并最終解決實(shí)際問(wèn)題。老師在課堂微觀教學(xué)上采用案例遞進(jìn)驅(qū)動(dòng)教學(xué)法[3],改變滿堂灌的做法,充分調(diào)動(dòng)學(xué)生的積極性,活躍學(xué)生的計(jì)算機(jī)思維。精心設(shè)計(jì)實(shí)例,給學(xué)生一個(gè)比較實(shí)際的切入點(diǎn),通過(guò)老師的講解和演示使學(xué)生有直觀感覺(jué)和理性思維,然后再通過(guò)將此實(shí)例不斷修改、擴(kuò)充,引導(dǎo)學(xué)生參與到程序的編制過(guò)程中。在這個(gè)過(guò)程中,學(xué)生展示所編制的程序,老師評(píng)判優(yōu)劣并講解理由和規(guī)律,吸收優(yōu)點(diǎn),修改錯(cuò)誤,引導(dǎo)學(xué)生進(jìn)行優(yōu)化。在這樣的案例教學(xué)中,因?yàn)橛刑岢鰡?wèn)題、解決問(wèn)題、擴(kuò)展問(wèn)題、再解決問(wèn)題、對(duì)解決問(wèn)題的方法評(píng)價(jià)、優(yōu)化設(shè)計(jì)等幾個(gè)環(huán)節(jié),實(shí)際上是一個(gè)螺旋式滾動(dòng)向前的過(guò)程。在這個(gè)螺旋式不斷向前的過(guò)程中,能夠很好地調(diào)動(dòng)學(xué)生的參與,而且通過(guò)問(wèn)題的不斷擴(kuò)展和一個(gè)問(wèn)題多種解決方法,能有效拓展學(xué)生的計(jì)算思維,使得學(xué)生在課堂上真正成為“主體”,教師只扮演“主導(dǎo)”角色[4-5]。通過(guò)老師的講解調(diào)試和演示,使學(xué)生有直觀的感覺(jué),從而引導(dǎo)學(xué)生的思維與老師教學(xué)達(dá)成一致產(chǎn)生共鳴,達(dá)到理想的教學(xué)效果。這樣通過(guò)一個(gè)程序?qū)嵗?,引入課程內(nèi)容,使得學(xué)生的每一步學(xué)習(xí)都有基礎(chǔ),是循序漸進(jìn),螺旋式上升的過(guò)程。
在設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目的過(guò)程中,要采取循序漸進(jìn)思路。首先要讓學(xué)生做最基礎(chǔ)的理解性實(shí)驗(yàn),通過(guò)這種理解性的實(shí)驗(yàn)來(lái)理解課堂上的理論知識(shí);然后要通過(guò)驗(yàn)證實(shí)驗(yàn),把書上例題和老師講解的例題進(jìn)行系統(tǒng)對(duì)比驗(yàn)證,從而達(dá)到理解和掌握程序設(shè)計(jì)的關(guān)鍵步驟,達(dá)到自己可以靈活設(shè)計(jì)習(xí)題程序的目的;最后設(shè)計(jì)一個(gè)把過(guò)程設(shè)計(jì)和算法設(shè)計(jì)整合在一起的實(shí)驗(yàn),逐漸地提高學(xué)生實(shí)踐和應(yīng)用能力,另外實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)還要具有一定的趣味性。在實(shí)驗(yàn)設(shè)計(jì)案例時(shí)應(yīng)將知識(shí)點(diǎn)融入進(jìn)去,讓學(xué)生在實(shí)踐中鍛煉自己的思維,在對(duì)問(wèn)題思索中形成習(xí)慣和興趣。
設(shè)計(jì)程序打印輸出如下螺旋方陣(見(jiàn)圖1)。
圖1 打印輸出螺旋方陣
由上例直觀可知,以順時(shí)針?lè)较驈耐鈬_(kāi)始遞增的填充矩陣,每填充一個(gè)外圍,問(wèn)題即被分解為與此相同更小的問(wèn)題,重復(fù)地從外圍填充相應(yīng)子矩陣,即可完成。
設(shè)原問(wèn)題為N 階的螺旋方陣,起始值為ns,終止值為N* N,則矩陣也為N 階的矩陣,起始行為rows,起始列為cols.
遞歸開(kāi)始:
第一步:從映射矩陣的第一行開(kāi)始開(kāi)始向右填充n 個(gè)螺旋方陣中的值(從傳入的起始值開(kāi)始,值遞增變化)。
第二步:從映射矩陣的最后一列第二行開(kāi)始向下填充n -1 個(gè)螺旋方陣中的值(值遞增變化)。
第三步:從映射矩陣的最后一行最后一列開(kāi)始向左填充n -1 個(gè)螺旋方陣中的值(值遞增變化)。
第四步:從映射矩陣的倒數(shù)第二行第一列開(kāi)始向左填充n -2 個(gè)螺旋方陣中的值(值遞增變化)。
此時(shí)矩陣的最外圍被填充完畢,原問(wèn)題轉(zhuǎn)化為n - 2階的螺旋方陣,最小值為ns(一直遞增變化),最大值為N* N,則映射矩陣也為n -2 階的矩陣,起始行為rows +1,起始列為cols +1 的子問(wèn)題,遞歸地解決子問(wèn)題,直到傳入的螺旋矩陣起始值大于或者等于終止值時(shí),遞歸調(diào)用結(jié)束,函數(shù)退出,問(wèn)題解決。過(guò)程如下圖2 所示。
圖2 遞歸步驟圖
上面案例的圖案非常有趣,教師可以引導(dǎo)學(xué)生進(jìn)行抽象思維,很容易理解螺旋矩陣算法,代碼實(shí)現(xiàn)將數(shù)組、函數(shù)、數(shù)組做函數(shù)參數(shù)、循環(huán)、條件語(yǔ)句、及遞歸有機(jī)地結(jié)合起來(lái)。在布置實(shí)驗(yàn)時(shí),可以讓學(xué)生進(jìn)行反螺旋輸出如下圖案(見(jiàn)圖3),這樣可以讓學(xué)生舉一反三,提高對(duì)實(shí)際問(wèn)題的解決能力。
圖3 輸出結(jié)果圖
如何提高學(xué)生利用c 語(yǔ)言解決實(shí)際問(wèn)題的能力,使學(xué)生的計(jì)算思維得到有效的培養(yǎng),是擺在我們大多數(shù)計(jì)算機(jī)C 語(yǔ)言教學(xué)老師面前的一大難題。我們認(rèn)為教師只有根據(jù)教材、課時(shí)及教學(xué)計(jì)劃精心設(shè)計(jì)有趣的教學(xué)案例,將書本上的知識(shí)點(diǎn),融于實(shí)例之間,并進(jìn)行啟發(fā)式教學(xué),才能激發(fā)學(xué)生的學(xué)習(xí)興趣,潛移默化地誘導(dǎo)學(xué)生進(jìn)行思維訓(xùn)練,提高學(xué)生對(duì)實(shí)際問(wèn)題的抽象能力。
[1]譚浩強(qiáng).C 程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2001.
[2]邱建林,王 波.計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言教學(xué)的探索[J].牡丹江大學(xué)學(xué)報(bào),2001(4):14 -15.
[3]胡 楓.C 語(yǔ)言程序設(shè)計(jì)6 的案例式教學(xué)的設(shè)計(jì)[J].青海師范大學(xué)學(xué)報(bào)(自然科學(xué)),2012(4):48 -51.
[4]高 紅.開(kāi)設(shè)自主性實(shí)驗(yàn) 培養(yǎng)學(xué)生的創(chuàng)新意識(shí)和創(chuàng)新能力[J].實(shí)驗(yàn)技術(shù)與管理,2001(12):60 -62.
[5]耿國(guó)華.程序設(shè)計(jì)能力培養(yǎng)模式的探索與實(shí)踐[J].中國(guó)大學(xué)教學(xué),2009(3):30 -32.