李果
[摘 要]在向應(yīng)用型本科轉(zhuǎn)型背景下,計(jì)算機(jī)基礎(chǔ)課程教學(xué)課時(shí)大幅降低,C語言的教學(xué)面臨課時(shí)短和內(nèi)容多的矛盾,通過優(yōu)化教學(xué)流程、突出程序教學(xué)關(guān)鍵點(diǎn)、以項(xiàng)目編程收尾等方式改進(jìn)C語言教學(xué),幫助學(xué)生掌握編程通識(shí),提升編程能力。
[關(guān)鍵詞]應(yīng)用型人才;C語言;少學(xué)時(shí);教學(xué)實(shí)踐
[中圖分類號(hào)]G642 [文獻(xiàn)標(biāo)識(shí)碼]A
C語言誕生于上世紀(jì)70年代初,是一門久遠(yuǎn)但富有生命力的計(jì)算機(jī)語言,長期高居編程語言排行榜前三。在中國眾多高校,C語言一直是理工科專業(yè)大學(xué)計(jì)算機(jī)基礎(chǔ)教學(xué)的首選語言。近年來,隨著普通本科教育向應(yīng)用型本科教育轉(zhuǎn)型發(fā)展,大學(xué)課程建設(shè)也要緊緊圍繞這一主題。以我校為例,C語言作為大學(xué)計(jì)算機(jī)基礎(chǔ)課,面向的是大一非計(jì)算機(jī)專業(yè)理工科學(xué)生,大多數(shù)沒有計(jì)算機(jī)編程經(jīng)驗(yàn)甚至計(jì)算機(jī)基本操作都不熟練。我校C語言理論課時(shí)為26學(xué)時(shí),分13次進(jìn)行,要在較短學(xué)時(shí)前提下,完成C語言完整的知識(shí)傳授并為今后拓展學(xué)習(xí)打下良好基礎(chǔ),這對(duì)課堂教學(xué)是個(gè)挑戰(zhàn)。本文從近年來教學(xué)實(shí)踐中總結(jié)出少學(xué)時(shí)前提下一些有效教學(xué)的經(jīng)驗(yàn)。
1 教學(xué)實(shí)踐
1.1 優(yōu)化教學(xué)流程
譚浩強(qiáng)先生的《C語言程序設(shè)計(jì)》是我國高校中使用最廣泛的C語言教材,2017年第五版發(fā)行已超1400萬冊(cè),對(duì)同類教材編寫和高校C語言教學(xué)影響深遠(yuǎn)。教材前六章按照C語言簡介、算法簡介、順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組的順序編排,直到第七章才正式介紹C程序基本的組成模塊——函數(shù)。教材編排直接影響到課堂教學(xué)的進(jìn)度安排,參考該教材順序開展教學(xué)的話,需要先花十幾個(gè)學(xué)時(shí)在C語言基本語法細(xì)節(jié)上,比如常量和變量、數(shù)據(jù)類型、各種運(yùn)算符的使用等。過于追究語法細(xì)節(jié),花了大量時(shí)間到頭來仍搞不清程序基本構(gòu)造,學(xué)生學(xué)習(xí)熱情受挫、學(xué)習(xí)動(dòng)力不足。一個(gè)較好的教學(xué)實(shí)踐是以函數(shù)作為教學(xué)的起點(diǎn),讓學(xué)生從宏觀角度把握C程序的基本構(gòu)造,掌握模塊化編程的思想,即C程序都是由函數(shù)構(gòu)成的:一是作為程序“司令官”的獨(dú)一無二的main函數(shù);二是前人造好的“輪子”庫函數(shù);三是我們?yōu)閷?shí)現(xiàn)特定功能編寫的自定義函數(shù)。任何函數(shù)都具有相同的結(jié)構(gòu),獨(dú)占一行的函數(shù)頭以及由大括號(hào)包圍的函數(shù)體。通過對(duì)函數(shù)類型的介紹以及函數(shù)結(jié)構(gòu)的分析,理解模塊化編程思想,無論長短的C程序,在讀程序時(shí)都能清晰識(shí)別其結(jié)構(gòu)。
1.2 程序教學(xué)關(guān)鍵點(diǎn)
通過函數(shù)的教學(xué)讓學(xué)生從宏觀角度快速掌握C程序的基本結(jié)構(gòu),之后便可在教學(xué)中完善計(jì)算機(jī)語言通用語法知識(shí)。從教學(xué)實(shí)踐看,有兩個(gè)關(guān)鍵知識(shí)點(diǎn)需要突出:一是關(guān)于變量,程序編寫必然涉及大量數(shù)據(jù),變量是不可或缺的。同時(shí)變量關(guān)聯(lián)的知識(shí)極廣,從為變量賦值、變量類型、變量運(yùn)算到指針的運(yùn)用。然而多數(shù)教材對(duì)C語言中的變量著墨不多,比如譚版C停留在變量是值可以改變的量這一抽象層面。必須指出變量本質(zhì)是關(guān)聯(lián)的存儲(chǔ)單元,若存儲(chǔ)器是大廈,變量便是大廈的房間,由此關(guān)于變量關(guān)聯(lián)的知識(shí)便引刃而解,比如變量有不同規(guī)格、變量中的值可以修改、變量的地址即指針。二是簡單程序的編寫方法,即DIPO方法。對(duì)于C語言初學(xué)者,面對(duì)簡單問題寫程序卻不知如何下手,其實(shí)這些問題大都有固定的編程模式。第一步,D即define,首先定義程序需要使用的變量,遵循變量先定義后使用的原則。第二步,I即input,對(duì)程序中的變量進(jìn)行初始化或者手工輸入賦值。第三步,P即process,根據(jù)問題進(jìn)行相應(yīng)計(jì)算或其他處理。第四步,O即output,輸出程序運(yùn)行結(jié)果。理解了變量和DIPO方法,也就消除了通用簡單程序設(shè)計(jì)的基本障礙。
1.3 以項(xiàng)目收尾
當(dāng)前多數(shù)C程序設(shè)計(jì)教材,編程練習(xí)以數(shù)值計(jì)算問題為主,難度不大,結(jié)構(gòu)簡單,實(shí)現(xiàn)代碼短,但對(duì)學(xué)生代碼能力鍛煉不夠。在教學(xué)的收尾階段,宜通過小型項(xiàng)目形式串聯(lián)起所學(xué)全部知識(shí),如簡單動(dòng)畫、小游戲和小型信息管理系統(tǒng)等,單項(xiàng)目代碼量數(shù)百行。但要指出的是,C語言目前主要活躍于系統(tǒng)軟件和嵌入式軟件開發(fā),脫離具體場景很難談實(shí)際應(yīng)用,而這些光靠C語言一門課程是難以實(shí)現(xiàn)的,還需要后續(xù)配套課程的跟進(jìn)。
2 結(jié)語
在C語言教學(xué)中,通過優(yōu)化教學(xué)流程、突出教學(xué)關(guān)鍵點(diǎn)和以項(xiàng)目結(jié)束教學(xué),在短學(xué)時(shí)教學(xué)中取得了一定的教學(xué)效果,多數(shù)學(xué)生能在全程保持較高的學(xué)習(xí)熱情,對(duì)程序設(shè)計(jì)基本通識(shí)掌握較好。但作為非計(jì)算機(jī)專業(yè)的大學(xué)計(jì)算機(jī)基礎(chǔ)課程,C語言作為貼近硬件并廣泛使用的系統(tǒng)語言難以滿足普遍的興趣和需求,畢竟在C語言誕生的年代,互聯(lián)網(wǎng)、移動(dòng)應(yīng)用等都還沒出現(xiàn)。2017年,Python語言進(jìn)入浙江省信息技術(shù)教材,同時(shí)成為全國計(jì)算機(jī)等級(jí)考試新增科目,并成為IEEE計(jì)算機(jī)編程語言排行榜第一名。簡單易學(xué)、擁有豐富數(shù)據(jù)結(jié)構(gòu)、代碼規(guī)范且深受人工智能算法青睞的Python語言也許代表今后計(jì)算機(jī)基礎(chǔ)教學(xué)改革的方向。
[參考文獻(xiàn)]
[1] 譚浩強(qiáng).C程序設(shè)計(jì)(第5版)[M].北京:清華大學(xué)出版社,2017.
[2] 車萬翔,蘇小紅,袁永峰,等.計(jì)算機(jī)專業(yè)高級(jí)語言程序設(shè)計(jì)課程改革探索[J].計(jì)算機(jī)教育,2014(13).