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