詹重詠
【摘 要】 本文探討了C語言教學(xué)的特點(diǎn),研究學(xué)生學(xué)習(xí)面向過程語言的難點(diǎn)所在,給出了化繁為簡(jiǎn)的方法,達(dá)到了讓學(xué)習(xí)者能從多方面龜探面向過程語言程序內(nèi)部奧妙的目的。
【關(guān)鍵詞】 面向過程;程序設(shè)計(jì);教學(xué)方法;可視化
【中圖分類號(hào)】 G64.20 【文獻(xiàn)標(biāo)識(shí)碼】 A 【文章編號(hào)】 2095-3089(2017)13-00-01
一、引言
C語言作為面向過程語言中的代表,以其自身的突出特點(diǎn),幾十年來,一直被大多數(shù)大學(xué)理、工、農(nóng)科專業(yè)列入教學(xué)計(jì)劃中,同時(shí)它也是計(jì)算機(jī)專業(yè)作為學(xué)習(xí)計(jì)算機(jī)語言的入門和進(jìn)一步學(xué)習(xí)的首選語言。但由于C語言數(shù)據(jù)類型較多、語法結(jié)構(gòu)較復(fù)雜、過程處理抽象,學(xué)習(xí)者多無計(jì)算機(jī)語言或編程方面的知識(shí)或經(jīng)驗(yàn),從而使得它成為一門教師難教、學(xué)生難學(xué)的課程。對(duì)C語言的教學(xué)探討從未停止過。如何搞好此門語言的教學(xué),培養(yǎng)學(xué)生的學(xué)習(xí)興趣,激發(fā)學(xué)生的學(xué)習(xí)熱情,掌握面向過程語言的精華,一直是廣大一線教師孜孜探求的內(nèi)容。關(guān)于此方面的討論不絕如縷,但絕大多數(shù)文章多從課程設(shè)置、教學(xué)安排、教學(xué)重點(diǎn)(難點(diǎn))的處理等方面著手[1],或從待解決的事情本身的特征入手,進(jìn)行初步的研究,如斷點(diǎn)設(shè)置等[2]。少有從可視化的角度引導(dǎo)學(xué)生認(rèn)識(shí)問題、分析問題、解決問題的文章。本文試以C語言為例,用過程觀察者的角度,就面向過程的計(jì)算機(jī)語言教學(xué)、程序執(zhí)行過程的可視化問題進(jìn)行初步的探討。
二、面向過程的計(jì)算機(jī)語言程序執(zhí)行過程可視化的概念
近幾年來,可視化的計(jì)算機(jī)語言之所以倍受人們的青睞,而其最大的特點(diǎn)是學(xué)生或程序員在工作過程中的成果是可見的,這樣學(xué)生在開發(fā)的過程中就能感覺到自己工作的部分成果,看到程序執(zhí)行時(shí)的部分界面,從而提高增強(qiáng)學(xué)生的成就感,提高學(xué)生的學(xué)習(xí)興趣。更重要的是以此斷續(xù)的界面為出發(fā)點(diǎn),人們就可以通過自己的思維加工,將所有的情景貫穿起來,形成一個(gè)整體的、完整的事物。
C語言作為面向過程的語言,用它編寫的程序,一般情況下提供給人們可見的東西只是程序的執(zhí)行結(jié)果。但其結(jié)果為何如此?正確與否?多靠學(xué)生對(duì)程序規(guī)定的過程進(jìn)行分析、推演才能知曉,整個(gè)過程枯澀無趣。如何吸引學(xué)生、調(diào)動(dòng)學(xué)生興趣、加深學(xué)生應(yīng)象呢?常言說“百聞不如一見”。如果能夠像可視化的計(jì)算機(jī)語言一樣,讓學(xué)生親見、親歷程序的執(zhí)行過程,結(jié)果肯定是大不一樣的。但是,過程的親歷必須是在過程運(yùn)作執(zhí)行的時(shí)候,這樣就只能在程序運(yùn)行的時(shí)候來觀察程序的特征變化情況了。這一點(diǎn)上語言執(zhí)行過程的可視化與可視化的計(jì)算機(jī)語言及現(xiàn)在流行的科學(xué)計(jì)算可視化、數(shù)據(jù)可視化、信息可視化的概念不完全一致,前者是一個(gè)動(dòng)態(tài)的概念,而后者卻是一個(gè)靜態(tài)的概念;前者展現(xiàn)的是數(shù)據(jù)本身,面后者展現(xiàn)的卻是抽象數(shù)據(jù)的圖形式還原或表現(xiàn)。相比面向語言執(zhí)行過程的可視化與視頻的概念更接近一些,但前者多是指數(shù)據(jù)的可見,而后者卻是經(jīng)過圖形化處理的連續(xù)場(chǎng)景;前者處理的對(duì)角有限,而后者處理的是場(chǎng)景中的所有事物。
三、可視化的對(duì)象
總結(jié)面向C語言程序執(zhí)行過程,開發(fā)者常關(guān)心的對(duì)象主要有如下幾種:變量、數(shù)組、指針值、過程或函數(shù)。
1、變量、數(shù)組、指針值
程序中內(nèi)存變量的值及其地址、用內(nèi)存變量及其表達(dá)式組成的邏輯表達(dá),這些是初學(xué)C程序設(shè)計(jì)語言的學(xué)生感受到困惑、作模不定的地方,將其內(nèi)容展示在學(xué)生面前,對(duì)分析程序、理解程序大有裨益。
數(shù)組是C語言中常用的一種結(jié)構(gòu)形數(shù)據(jù),數(shù)組名、數(shù)組元素的值是多少,在內(nèi)存中的位置如何,對(duì)它的準(zhǔn)確掌握十分必要。
指針是C語言程序中最變幻莫測(cè)的一個(gè)概念[3],其地址、其值及其值的性質(zhì)或類型是初學(xué)者常常關(guān)心的東西,對(duì)這些內(nèi)容的展現(xiàn)將有助于掌握指針的實(shí)質(zhì)。
此外程序中的其它結(jié)構(gòu)形數(shù)據(jù)也是使用或?qū)W習(xí)它的人關(guān)心的內(nèi)容。
2、過程或函數(shù)
函數(shù)或過程是對(duì)面向過程的計(jì)算機(jī)語言程序的劃分,劃分的結(jié)果是使程序的可讀性增強(qiáng),復(fù)用性增加,程序的難點(diǎn)得以分解,使用好函數(shù)是十分重要的。對(duì)函數(shù)來說,函數(shù)名(函數(shù)地址)、函數(shù)內(nèi)定義的臨時(shí)變量、函數(shù)中使用的全局變量、函數(shù)的值、函數(shù)的退出點(diǎn)等都是學(xué)習(xí)或使用C語言的人關(guān)心的東西,也是可可視化的對(duì)象。
四、可視化的方法
針對(duì)關(guān)心的對(duì)象,教師可讓學(xué)習(xí)者采取如下方法將其可視化。
1、輸出函數(shù)法
用輸出函數(shù)(如C語言的printf()函數(shù))實(shí)現(xiàn)面向過程的計(jì)算機(jī)語言程序的可視化是一種有效的手段,以下以C語言為例簡(jiǎn)述之。
首先在程序的頭部定義變量DEBUG,如define DEBUG;其次定義好條件編譯語句:#ifdef DEBUG 輸出信息程序段 #endif,然后將條件編譯語句插入到程序中適當(dāng)?shù)牡胤剑詈笤谡Z句塊中放置printf()函數(shù)及需觀察的對(duì)象或?qū)ο蟮牡刂贰?/p>
2、用Keil μVision 4.0作學(xué)習(xí)平臺(tái)
目前C語言的學(xué)習(xí)多是以Turbo C 4.0或Visual C++作為常用平臺(tái),這種平臺(tái)的使用簡(jiǎn)單,初學(xué)者容易掌握,但不足之處是沒有變量窗口,學(xué)習(xí)或開發(fā)者在使用過程中觀察不到關(guān)注對(duì)象的變化。而Keil μVision平臺(tái)卻可以部分解決此類問題。具體方法是將C程序中的關(guān)注的對(duì)象的值或地址賦給某變量,而將此變量指定為一個(gè)寄存器。這樣就可以在Keil μVision 4.0平臺(tái)的寄存器窗口上觀察此變量了。
若要觀察程序編譯后的運(yùn)行碼,在內(nèi)存中存放的情況,可選取菜單View→Memory windows→Memory1,或按右下方的Memory1,然后點(diǎn)擊Addresss欄內(nèi)輸入0x800或0800h,則可在Memory1窗口查看[4]。
3、巧用Microsoft Office Excel
微軟公司的辦公自動(dòng)化軟件Excel是一項(xiàng)功能強(qiáng)大的實(shí)用軟件,其工作簿上的每一個(gè)單元格對(duì)象恰于一個(gè)電子細(xì)胞,將其組合在一起時(shí)其作用為可限量。利用Excel,將其列的單元格(或行的單元格)用作變量,設(shè)置好變量的步長,拖動(dòng)相應(yīng)區(qū)域,完成計(jì)算工作(模擬程序),在對(duì)應(yīng)的單元格中即可觀察到變量等運(yùn)行的結(jié)果,亦即可以實(shí)現(xiàn)單迭代程序的可視化。
計(jì)算機(jī)語言與其它課程相比,邏輯思維較強(qiáng),因此比較枯燥。要教好計(jì)算機(jī)語言,關(guān)鍵在于激發(fā)學(xué)生的學(xué)習(xí)興趣,將準(zhǔn)備學(xué)生感興趣的教學(xué)素材包括程序作為備課的一個(gè)重要內(nèi)容是激發(fā)學(xué)生學(xué)習(xí)興趣的重要環(huán)節(jié),在教學(xué)過程中要堅(jiān)持學(xué)生為主體、教師為主導(dǎo)的教學(xué)原則,充分利用各種不同的教學(xué)法和上機(jī)課,強(qiáng)化實(shí)踐,提高學(xué)生的思維和實(shí)踐能力,培養(yǎng)學(xué)生的興趣,讓學(xué)生主動(dòng)、愉快地學(xué)習(xí),才能取得良好的教學(xué)效果。
五、結(jié)語
上述討論的可視化對(duì)象,只是C程序設(shè)計(jì)和C語言教學(xué)中的部分內(nèi)容,所提供的可視化方法也只是引玉之磚。在課程教學(xué)過程中,只有通過不斷的分析、探索和研究才能找出更好的解決方案。
參考文獻(xiàn):
[1] 章英. 高等農(nóng)業(yè)院校《C語言語言程序設(shè)計(jì)》教學(xué)探討[J]. 電腦知識(shí)與技術(shù). 2008.5 910~912.
[2] 程霄, 張麗芬. “程序設(shè)計(jì)實(shí)習(xí)”課程教學(xué)研究與探索[J]. 教育與職業(yè), 2008.5.中 102~103.
[3] 張敏霞. 程序設(shè)計(jì)語言教學(xué)方法改革的探索與實(shí)踐[J]. 中國高教研究, 2004.2.
[4] 丁向榮, 陳崇輝, 姚永平. 單片機(jī)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2015.8