趙中堂 馬倩 劉寧
摘要:在C語言程序設(shè)計(jì)學(xué)習(xí)過程中,學(xué)生普遍存在入門難的問題。究其原因在于C語言知識(shí)點(diǎn)眾多,且依賴于以往所學(xué)知識(shí);而學(xué)生經(jīng)過高考到大學(xué)之間的間歇期,難免會(huì)對(duì)知識(shí)有所遺忘。為解決該問題,以學(xué)習(xí)遷移理論為指導(dǎo),對(duì)C語言知識(shí)點(diǎn)進(jìn)行了梳理,并總結(jié)了C程序設(shè)計(jì)學(xué)習(xí)遷移的內(nèi)容及效果,以期為一線授課教師和C程序設(shè)計(jì)學(xué)習(xí)者提供幫助。
關(guān)鍵詞關(guān)鍵詞:學(xué)習(xí)遷移;知識(shí)遷移;C程序設(shè)計(jì)
DOIDOI:10.11907/rjdk.1511262
中圖分類號(hào):G433文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2016)007019602
0引言
C語言程序設(shè)計(jì)能力是計(jì)算機(jī)專業(yè)學(xué)生必備技能,程序設(shè)計(jì)水平的高低在很大程度上影響了他們畢業(yè)后的人生走向。然而,在教學(xué)過程中,教師們發(fā)現(xiàn)學(xué)生在學(xué)習(xí)C語言程序設(shè)計(jì)時(shí)往往存在入門難的問題。據(jù)調(diào)查,計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)C語言時(shí),如果不能迅速入門,就容易產(chǎn)生畏懼心理,如此惡性循環(huán),從而影響后續(xù)課程學(xué)習(xí)。從考試結(jié)果來看,則表現(xiàn)為該課程的不及格率較高。如何促使學(xué)生快速入門,并提高C語言程序設(shè)計(jì)能力,值得廣大教育工作者去探究。通過總結(jié)多年教學(xué)經(jīng)驗(yàn)及廣泛調(diào)研發(fā)現(xiàn),學(xué)習(xí)遷移的理論和方法能夠有效指導(dǎo)該課題研究。1學(xué)習(xí)遷移概念
學(xué)習(xí)遷移思想經(jīng)過近百年的發(fā)展,已較為成熟,可作為實(shí)踐的指導(dǎo)理論。桑代克(Thorndike)和伍德沃思(Woodworth)在1901年提出了“學(xué)習(xí)遷移”的概念;帕金斯和所羅門于1992年詳細(xì)介紹了學(xué)習(xí)遷移的不同類型,描述了相關(guān)概念,以及正向遷移與負(fù)向遷移之間、近遷移與遠(yuǎn)遷移之間的區(qū)別。近年來,學(xué)習(xí)遷移又引起了廣泛關(guān)注和研究,許多研究人員和一線教師將其應(yīng)用于日常教學(xué)過程中\[14\],取得了良好效果。
學(xué)習(xí)遷移廣泛存在于人類活動(dòng)中,兩個(gè)不同的領(lǐng)域共享因素越多,學(xué)習(xí)遷移就越容易發(fā)生,否則就越困難,甚至出現(xiàn)“負(fù)遷移”,產(chǎn)生副作用。比如:一個(gè)人若學(xué)會(huì)了騎自行車,則他就能很容易學(xué)會(huì)駕駛摩托車;一個(gè)人若熟悉五子棋的下法,則他也可以輕松地將知識(shí)遷移到圍棋學(xué)習(xí)中。但有時(shí)看起來極為相似的事情,卻有可能產(chǎn)生“負(fù)遷移”。比如,學(xué)會(huì)騎自行車的人學(xué)習(xí)騎三輪車反而不適應(yīng),因?yàn)樗鼈兊闹匦奈恢貌煌?/p>
因此在學(xué)習(xí)C語言的過程中,如果能夠采用學(xué)習(xí)遷移的方法,理清學(xué)生以往學(xué)過的哪些知識(shí)對(duì)C語言學(xué)習(xí)有所幫助(即遷移什么),就能使學(xué)生感到已學(xué)知識(shí)不再是一個(gè)個(gè)孤島,而是互相聯(lián)系的一個(gè)整體。
2學(xué)習(xí)遷移內(nèi)容
不同課程之間,遷移的知識(shí)不同,必須因課程而異,逐個(gè)進(jìn)行探索、總結(jié)。在C語言程序設(shè)計(jì)課程教學(xué)組織過程中,對(duì)該課程可供遷移的知識(shí)進(jìn)行總結(jié)如下:2.1教材框架結(jié)構(gòu)知識(shí)遷移
教師在講解C程序構(gòu)成時(shí),可采用類比方法,將一部教材的框架結(jié)構(gòu)和C程序的要素對(duì)應(yīng)起來??梢园慈缦路椒ń忉屗鼈冎g的對(duì)應(yīng)關(guān)系:一本教材,可由多章內(nèi)容構(gòu)成;一個(gè)C程序可由多個(gè)源程序文件構(gòu)成。每一章內(nèi)容可由多個(gè)小節(jié)構(gòu)成;一個(gè)C程序源文件可由多個(gè)函數(shù)構(gòu)成(編譯預(yù)處理命令、全局變量聲明就好比每章開始的引言部分)。每個(gè)小節(jié)可由多個(gè)段落構(gòu)成,這些段落整體上構(gòu)成一個(gè)完整的情節(jié)或者形成一個(gè)完成的知識(shí)點(diǎn)描述;每個(gè)函數(shù)可由多種語法結(jié)構(gòu)構(gòu)成(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)),這些語法結(jié)構(gòu)整體上表達(dá)一個(gè)完備的功能(所以函數(shù)對(duì)應(yīng)的英文稱為Function)。每一個(gè)段落由多個(gè)基本句子構(gòu)成,每一個(gè)句子表達(dá)一定的意思;每一個(gè)語法結(jié)構(gòu)也是由更小的語句構(gòu)成(如定義語句、賦值語句、函數(shù)調(diào)用語句、分支語句、循環(huán)語句等等),每一個(gè)語句都有自己的含義。每個(gè)句子由字、詞、標(biāo)點(diǎn)符號(hào)構(gòu)成;每一條C語言語句由標(biāo)識(shí)符(相當(dāng)于字)、表達(dá)式(相當(dāng)于詞)、語句分隔符(相當(dāng)于標(biāo)點(diǎn)符號(hào))構(gòu)成。
上述講解方法是按照從上到下、從整體到部分的方式進(jìn)行,從而讓學(xué)生形成一個(gè)宏觀的印象。在教與學(xué)的過程中,卻是按照從下到上的順序完成,沒有底層知識(shí),上層知識(shí)就無法傳授和理解。
授課教師通過這種類比方法,利用教材框架結(jié)構(gòu)知識(shí),可以較直觀地向?qū)W生描述C語言程序的結(jié)構(gòu)。2.2數(shù)學(xué)知識(shí)遷移
縱觀各大高校采用的C語言程序設(shè)計(jì)教材,為了減少程序設(shè)計(jì)的枯燥性,增加其趣味性,很大篇幅都是在講解數(shù)值計(jì)算,其中用到許多數(shù)學(xué)方面的知識(shí)。比如素?cái)?shù)、合數(shù)、階乘、最大公約數(shù)、最小公倍數(shù)、三角函數(shù)、解方程、微積分、奇數(shù)、偶數(shù)、閏年、平年等。然而在多年的授課過程中,教師們普遍發(fā)現(xiàn),學(xué)生對(duì)于素?cái)?shù)判定、解方程、微積分、級(jí)數(shù)一直很難理解。也存在一部分學(xué)生,即使厘清了概念,能夠用正確的方法去解決具體的數(shù)學(xué)問題,但不會(huì)通過編程實(shí)現(xiàn)。通過觀察其編寫的程序,發(fā)現(xiàn)其“計(jì)算思維”邏輯比較混亂,編程方法仍然遵從自然語言邏輯,而不是去適應(yīng)計(jì)算機(jī)思維。因此,從數(shù)學(xué)算法到程序代碼翻譯過程中,需要有一個(gè)擔(dān)當(dāng)中間過渡作用的算法語言存在,而這一過程往往被大多數(shù)授課教師所忽略。其實(shí),C語言算法并不是大多教師所認(rèn)為的只是一些簡(jiǎn)單算法,它需要學(xué)生去學(xué)習(xí)一種新的表示形式。
中間表達(dá)形式有流程圖表示法、盒圖表示法、偽代碼表示法、自然語言表示法等。授課教師普遍提倡流程圖表示法和偽代碼表示法。在講述這些方法時(shí),必須突出每一步的可計(jì)算性,只有做到在中間表示形式上每一步都是可計(jì)算的,在向C語言翻譯過程中才不會(huì)出現(xiàn)大的問題。
2.3計(jì)算機(jī)基礎(chǔ)知識(shí)遷移
調(diào)查發(fā)現(xiàn),學(xué)生普遍對(duì)指針相關(guān)知識(shí)難以理解。要想將指針講清楚,首先必須讓學(xué)生有地址的概念,然后將內(nèi)存的編址方式及尋址方式(直接尋址、間接尋址)講清楚。這些概念也不是孤立存在的,它需要學(xué)生具備計(jì)算機(jī)軟硬件基本知識(shí),也即了解計(jì)算機(jī)的工作原理。學(xué)生掌握這些知識(shí),對(duì)深入理解計(jì)算機(jī)程序大有幫助。
非計(jì)算機(jī)專業(yè)的C語言課程有一門計(jì)算機(jī)應(yīng)用基礎(chǔ)先導(dǎo)課程,內(nèi)容包括計(jì)算機(jī)發(fā)展歷史、計(jì)算機(jī)特點(diǎn)、計(jì)算機(jī)硬件組成及工作原理、計(jì)算機(jī)操作系統(tǒng)、Office操作、計(jì)算機(jī)網(wǎng)絡(luò)等,雖然不太深入,但學(xué)生掌握這些知識(shí)能夠?yàn)樗麄儗W(xué)習(xí)C語言程序設(shè)計(jì)課程打下堅(jiān)實(shí)基礎(chǔ)。計(jì)算機(jī)專業(yè)的C語言程序設(shè)計(jì)課程有一門先導(dǎo)課程,即計(jì)算機(jī)科學(xué)基礎(chǔ),內(nèi)容包括計(jì)算機(jī)發(fā)展歷史、計(jì)算機(jī)特點(diǎn)、計(jì)算機(jī)典型應(yīng)用領(lǐng)域、計(jì)算機(jī)語言、計(jì)算機(jī)算法、計(jì)算機(jī)操作系統(tǒng)、計(jì)算機(jī)組成原理、數(shù)字邏輯、計(jì)算機(jī)網(wǎng)絡(luò)等。由于先導(dǎo)課程知識(shí)太零散,在學(xué)生初步接觸這些知識(shí)時(shí),容易形成知識(shí)孤島,也容易被遺忘,因而在學(xué)習(xí)C語言課程時(shí),對(duì)這些知識(shí)點(diǎn)印象并不深刻。因此,如何讓學(xué)生很好地理解并在腦海里牢固記憶先導(dǎo)課程中的計(jì)算機(jī)基礎(chǔ)知識(shí),并有效地遷移到C語言程序設(shè)計(jì)課程中,需進(jìn)一步研究。3遷移效果
學(xué)習(xí)遷移效果有兩種:正遷移和負(fù)遷移。正遷移是指知識(shí)遷移之后對(duì)新知識(shí)的學(xué)習(xí)起到積極的促進(jìn)作用。比如當(dāng)授課教師幫助學(xué)生從理論上證明了輾轉(zhuǎn)相除法的正確性后,大多數(shù)學(xué)生能很快地寫出對(duì)應(yīng)的C程序。負(fù)遷移是指知識(shí)遷移后對(duì)新知識(shí)的學(xué)習(xí)起干擾或抑制作用。比如:在先導(dǎo)課程中有教師講2^3表示23(因?yàn)樵赩isual Basic等語言中確實(shí)如此),有些學(xué)生就將它遷移到C語言學(xué)習(xí)中,結(jié)果是錯(cuò)誤的。
究竟是發(fā)生了正遷移還是負(fù)遷移,最直接的衡量方式就是考試。每次考試后,任課教師需要認(rèn)真總結(jié)學(xué)生在每個(gè)知識(shí)點(diǎn)上的得分情況,再分析哪些知識(shí)的遷移導(dǎo)致了正遷移,哪些導(dǎo)致了負(fù)遷移。
4結(jié)語
本文探討了如何將學(xué)習(xí)遷移的指導(dǎo)思想應(yīng)用于C語言程序設(shè)計(jì)課程中,并總結(jié)了C語言程序設(shè)計(jì)課程學(xué)習(xí)中可供遷移的知識(shí),讓學(xué)生明確哪些知識(shí)是先導(dǎo)課程中應(yīng)該重點(diǎn)強(qiáng)調(diào)的,以期通過這種學(xué)習(xí)遷移方法將相關(guān)課程形成一個(gè)完整體系,更好地促進(jìn)學(xué)生的學(xué)習(xí)并提高學(xué)生能力。參考文獻(xiàn):
楊陽.淺談古詩詞中的遷移學(xué)習(xí)[J].課外語文:教研版,2014(1):3637.
王燕.淺談農(nóng)村初中語文教學(xué)文言文遷移學(xué)習(xí)的困惑[J].小作家選刊:教學(xué)交流,2013(8):109