郭樹強(qiáng),沈嫻
(1.河北司法警官職業(yè)學(xué)院 石家莊校區(qū),河北 石家莊 050000;2.河北工程技術(shù)學(xué)院,河北 石家莊 050000)
計(jì)算機(jī)的語言分為機(jī)器語言,匯編語言和高級(jí)語言。在高級(jí)語言中C語言可以說算的上是一門兼顧了低級(jí)語言和高級(jí)語言優(yōu)點(diǎn)的編程語言,也可以說是目前世界上生命力最旺盛的程序設(shè)計(jì)語言;它是一種結(jié)構(gòu)化程序設(shè)計(jì)語言,有較為豐富的數(shù)據(jù)類型、運(yùn)算符和函數(shù)供設(shè)計(jì)者使用,此外它還具有可直接訪問物理地址,對(duì)硬件進(jìn)行操作的功能。其實(shí),很多大型的應(yīng)用軟件都是用C語言編寫而成,這也是C語言經(jīng)久不衰的一個(gè)重要原因。也正是基于其強(qiáng)大的實(shí)用性和重要性,國內(nèi)很多高職院校把C語言程序設(shè)計(jì)作為計(jì)算機(jī)專業(yè)學(xué)生程序設(shè)計(jì)入門的首選課程;而本科類高校更是把《C語言程序設(shè)計(jì)》作為本校專接本考試的專業(yè)課程[1];在全國計(jì)算機(jī)等級(jí)考試中也有專門針對(duì)C語言程序設(shè)計(jì)的考核等級(jí)。
現(xiàn)在很多公司流行使用C#、C++等語言,幾乎都用不到C語言,于是就有人產(chǎn)生了疑問:為什么還要開始C語言呢?這不是一種過時(shí)的語言嗎?我認(rèn)為這種想法是錯(cuò)誤的。
C語言是一種計(jì)算機(jī)程序設(shè)計(jì)語言,屬于高級(jí)語言的范疇。它兼容了高級(jí)語言和匯編語言的特點(diǎn),既可以作為工作系統(tǒng)的設(shè)計(jì)語言,也可以編寫系統(tǒng)的應(yīng)用程序,同時(shí)還可以作為應(yīng)用程序設(shè)計(jì)語言,編寫出不依賴于計(jì)算機(jī)硬件的應(yīng)用程序,具有代碼清洗簡(jiǎn)潔,設(shè)計(jì)靈活的特性。其實(shí)在生活中,我們使用的很多操作系統(tǒng)中都是用C語言編寫的,它又被人們成為其他編程語言的母語。如果學(xué)過C語言,再去接觸其他語言的時(shí)候,會(huì)感到很輕松,在很多程序中都會(huì)出現(xiàn)似曾相識(shí)的語法結(jié)構(gòu),這也是其他語言無法比擬的。如果掌握好了C語言的程序設(shè)計(jì),特別是編程思想,對(duì)于今后學(xué)習(xí)C#、C++,甚至Java和PHP等語言的時(shí)候也不會(huì)感到困難,毫不夸張的來講,C語言是編程語言的基礎(chǔ)。
高校之所以開始C語言程序設(shè)計(jì),正是基于C語言的編程語言基礎(chǔ)。由于C語言的語法結(jié)構(gòu)簡(jiǎn)潔精妙,通過C語言編寫出來的程序高校實(shí)用;同時(shí)C語言也是一個(gè)深入系統(tǒng)底層的語言,對(duì)于未來研究操作系統(tǒng)的人員而言,也是一個(gè)重要的基礎(chǔ)知識(shí);此外目前社會(huì)上很多流行的語言也是由C語言衍生出來的。高校開設(shè)C語言程序設(shè)計(jì)課程,其目的就是讓學(xué)生更加深入的了解計(jì)算機(jī)的相關(guān)知識(shí)[2],為今后學(xué)習(xí)其他計(jì)算機(jī)語言打下良好的基礎(chǔ)。
就C語言而言,其本身語法結(jié)構(gòu)較為復(fù)雜,數(shù)據(jù)類型多樣,表達(dá)式豐富,編寫規(guī)則要求較多,初學(xué)者往往很難入手。況且很多高職院校將C語言的學(xué)習(xí)放在了大一的第一學(xué)期。對(duì)于剛剛進(jìn)入大學(xué)的學(xué)生而言,大學(xué)的學(xué)習(xí)和生活還處于一個(gè)適應(yīng)階段,絕大部分同學(xué)從未接觸過程序設(shè)計(jì)方面的知識(shí)。而C語言又恰好是一門本身數(shù)據(jù)類型偏多,運(yùn)算符豐富且語法結(jié)構(gòu)多變的課程。真正要實(shí)現(xiàn)一個(gè)C程序的運(yùn)行結(jié)果,需要花大量的時(shí)間上機(jī)調(diào)試,有很多技巧需要在不斷的調(diào)試中進(jìn)行穿插式教學(xué),這些都需要學(xué)生一點(diǎn)點(diǎn)地積累。在教學(xué)過程中,很多學(xué)生會(huì)感到枯燥,力不從心,從而覺得C語言很難學(xué)會(huì);并因此產(chǎn)生了厭學(xué)情緒,從內(nèi)心抵觸課程的學(xué)習(xí)。
高職類院校的人才培養(yǎng)方式和本科院校也存在一定的差別。教學(xué)計(jì)劃往往在新生入學(xué)前就已經(jīng)制定完成,很多高職院校把C語言的教學(xué)任務(wù)放在第一學(xué)期,卻未曾考慮到新生入學(xué)后首先面臨的是新生軍訓(xùn),時(shí)間長(zhǎng)的甚至達(dá)一個(gè)月;此外下半年的假期過于集中,使得教學(xué)課時(shí)量無法保證。為了完成教學(xué)任務(wù),在教學(xué)過程中很多老師不得不對(duì)C語言的相關(guān)章節(jié)進(jìn)行刪減,將教學(xué)的重點(diǎn)側(cè)重于基礎(chǔ)理論的學(xué)習(xí),特別是前幾章中的基礎(chǔ)知識(shí)點(diǎn),而對(duì)于指針、枚舉、結(jié)構(gòu)體和共同體部分的知識(shí)講解往往是一帶而過,甚至在時(shí)間不夠的情況下,忽略掉這部分知識(shí),給學(xué)生造成一種C語言的學(xué)習(xí)內(nèi)容就是前幾章,卻不知道后面的指針和文件其實(shí)也是一個(gè)很重要的知識(shí)點(diǎn)。
在授課過程中,教師往往注重理論知識(shí)的講解,基本都是以語法為主線,內(nèi)容相對(duì)枯燥,很難吸引學(xué)生的學(xué)習(xí)興趣;學(xué)生在初學(xué)時(shí)不能及時(shí)掌握相關(guān)算法的思維特點(diǎn),在上機(jī)實(shí)踐環(huán)節(jié)往往是照本宣科的抄寫課本上的案例,缺乏主觀能動(dòng)性,總是被動(dòng)的去編寫程序。這樣就失去了上機(jī)實(shí)踐的真正意義所在,也無法調(diào)動(dòng)起學(xué)生對(duì)C語言程序編譯和調(diào)試的學(xué)習(xí)興趣,最終未能達(dá)到上機(jī)實(shí)訓(xùn)的根本目的。而傳統(tǒng)的教學(xué)對(duì)實(shí)踐的要求也不是很高,如果教師再不加以督促,一旦學(xué)生在編譯中出現(xiàn)問題而無法解決,就會(huì)產(chǎn)生厭煩情緒,對(duì)編程產(chǎn)生懼怕心里,進(jìn)而造成不愛聽課,遇到問題就輕易放棄的局面,從而形成惡性循環(huán),無法真正認(rèn)識(shí)到C語言的實(shí)用性。
對(duì)于剛剛步入大學(xué)的學(xué)生而言,計(jì)算機(jī)并不是什么新鮮事物,但利用計(jì)算機(jī)編寫一個(gè)程序并運(yùn)行成功是一個(gè)相對(duì)陌生的事情[3]。因此我們?cè)诘谝淮紊险n的時(shí)候,可以采用引導(dǎo)式教學(xué),將一個(gè)簡(jiǎn)單的小程序制作成較為生動(dòng)的PPT課件,通過動(dòng)畫的方式展示給學(xué)生,吸引學(xué)生的學(xué)習(xí)興趣;然后介紹一些關(guān)于C語言的相關(guān)知識(shí)及其與相關(guān)專業(yè)課程之間的關(guān)系,因勢(shì)利導(dǎo)的引導(dǎo)學(xué)生來了解學(xué)習(xí)C語言的重要意義,讓學(xué)生對(duì)C語言產(chǎn)生濃厚的興趣;同時(shí)在學(xué)生中展開討論,就程序設(shè)計(jì)中經(jīng)典的編程案例進(jìn)行互動(dòng)討論,引導(dǎo)學(xué)生積極主動(dòng)地思考,在條件成熟的情況下,并讓學(xué)生親身體會(huì)用C語言解決問題的趣味性,為今后的教學(xué)做好鋪墊[4]。
調(diào)整教學(xué)計(jì)劃,合理分配學(xué)時(shí)。本人建議將C語言的課程設(shè)置為兩個(gè)學(xué)期,第一學(xué)期以基礎(chǔ)知識(shí)和三大語法結(jié)構(gòu)為主,上機(jī)為輔,給學(xué)生打下一個(gè)堅(jiān)實(shí)的基礎(chǔ),同時(shí)培養(yǎng)學(xué)生獨(dú)立編寫程序和調(diào)試程序的能力;將函數(shù)、指針、結(jié)構(gòu)體和共同體、文件等知識(shí)安排在第二學(xué)期,此外在第二學(xué)期中加大上機(jī)實(shí)訓(xùn)環(huán)節(jié)的課時(shí)。這樣做的好處在于,經(jīng)過第一學(xué)期的基礎(chǔ)性學(xué)習(xí),學(xué)生基本具備了程序編譯的能力,同時(shí)對(duì)于程序編譯過程中的一些常見問題的解決也了如指掌,對(duì)于一些較大型程序的編譯和調(diào)試奠定基礎(chǔ),在進(jìn)行函數(shù)、指針等較為復(fù)雜的程序編譯時(shí),能夠自己解決一些常見問題。而上機(jī)實(shí)訓(xùn)課時(shí)的加大,可以大大提高學(xué)生進(jìn)行完整程序的編譯和調(diào)試。
改變傳統(tǒng)的教學(xué)模式,將傳統(tǒng)教學(xué)中的先理論后實(shí)踐,改為案例和任務(wù)驅(qū)動(dòng)的教學(xué)模式,讓學(xué)生由被動(dòng)變主動(dòng)。將知識(shí)點(diǎn)以任務(wù)的方式下發(fā)給學(xué)生,在程序設(shè)計(jì)和編譯中穿插講解相關(guān)的知識(shí)點(diǎn)。當(dāng)學(xué)生在編譯過程中出現(xiàn)較為集中的問題時(shí),將問題拿出來全班討論并提出修正的方案。這樣,既可以了解學(xué)生對(duì)知識(shí)點(diǎn)的掌握程度,也訓(xùn)練了學(xué)生的思維能力,調(diào)動(dòng)起學(xué)生主動(dòng)學(xué)習(xí)的積極性。又或者模擬軟件公司的項(xiàng)目開發(fā)方式,分組進(jìn)行設(shè)計(jì),協(xié)同合作來完成某一個(gè)程序的編譯問題,培養(yǎng)學(xué)生團(tuán)隊(duì)協(xié)作的能力,激發(fā)學(xué)生對(duì)項(xiàng)目設(shè)計(jì)的興趣,培養(yǎng)學(xué)生的自學(xué)能力。教師要鼓勵(lì)學(xué)生對(duì)程序的改進(jìn),在遇到問題的時(shí)候,及時(shí)引導(dǎo)和解決,增加課程設(shè)計(jì)的趣味性[5]。
對(duì)于一個(gè)優(yōu)秀的程序員而言,在學(xué)習(xí)程序設(shè)計(jì)之初,最好的學(xué)習(xí)方式就是大量的閱讀程序,分析現(xiàn)有的經(jīng)典案例,培養(yǎng)自己閱讀程序和分析程序的能力,從而達(dá)到自己獨(dú)立完成程序的設(shè)計(jì)和編譯[6]??涩F(xiàn)實(shí)生活中,各大高職院校中的C語言考核仍然采用以筆試為主,包括專接本考核,這在一定程度上制約了學(xué)生的主觀能動(dòng)性和獨(dú)立設(shè)計(jì)程序及分析程序的能力,但因此而剔除掉筆試考核也不是一個(gè)明智的選擇。因?yàn)?,就C語言的基本知識(shí)而言,必要的理論知識(shí)也是需要熟記于心的[7]。本人認(rèn)為,我們?cè)诖笠坏谝粚W(xué)期的考核不妨采用閉卷考核的方式進(jìn)行,主要檢查學(xué)生對(duì)于C語言基礎(chǔ)知識(shí)點(diǎn)的掌握程度,而第二學(xué)期的考核,可以采用上機(jī)考核或課程設(shè)計(jì)的方式,檢查學(xué)生對(duì)于程序編譯的綜合應(yīng)用能力。通過理論考核、上機(jī)考核或課程設(shè)計(jì)方式來檢查學(xué)生對(duì)于語法的掌握程度,對(duì)學(xué)生分析和閱讀程序的能力、獨(dú)立編寫程序及調(diào)試程序的能力、團(tuán)隊(duì)協(xié)作和整體開發(fā)能力有一個(gè)更加全面客觀的認(rèn)識(shí)[8]。
“工欲善其事,必先利其器”。學(xué)習(xí)C語言程序設(shè)計(jì),其實(shí)是為了掌握計(jì)算機(jī)思維打基礎(chǔ)。毫不夸張的講,掌握了C語言程序設(shè)計(jì),就等同于你已經(jīng)掌握了很多門程序設(shè)計(jì)語言[9]。在經(jīng)過了系統(tǒng)的學(xué)習(xí)之后,學(xué)生不僅掌握了程序設(shè)計(jì)的基本語法,也熟悉了程序編譯的相關(guān)流程,即使再接觸新的程序設(shè)計(jì)語言,也不會(huì)像初次接觸語言那樣懵懂,可以很快速的熟悉甚至掌握新的程序設(shè)計(jì)語言,種種跡象表明C語言是程序設(shè)計(jì)的重要基礎(chǔ)[10-11]。C語言的教學(xué)不僅僅是為了讓學(xué)生明白程序設(shè)計(jì)的基本知識(shí),熟悉程序設(shè)計(jì)的基本流程,掌握程序編譯的技能,同時(shí)也是專接本考核的重要內(nèi)容。只要了解了學(xué)生的心理,在教學(xué)過程中,因材施教,多激發(fā)學(xué)生的學(xué)習(xí)興趣,調(diào)動(dòng)學(xué)生的主觀能動(dòng)性,C語言的學(xué)習(xí)其實(shí)還是能夠收到良好的教學(xué)效果的。
參考文獻(xiàn):
[1]胡宏智著.C語言程序設(shè)計(jì)[M].北京:中國水利水電出版社,2010.
[2]陳一飛.關(guān)于C語言教學(xué)改革的探討[M].北京:中國電力出版社,2012.
[3]李國楨著.理念·思路·特色 高職院校教學(xué)改革的探索與實(shí)踐[M].天津:天津科學(xué)技術(shù)出版社,2008.
[4]吳龍川,陳國欽主編.交通高職院校教育教學(xué)改革與實(shí)踐[M].長(zhǎng)春:吉林大學(xué)出版社,2007.
[5]陳紅. 翻轉(zhuǎn)課堂在高職院校非計(jì)算機(jī)專業(yè)C語言教學(xué)改革中的應(yīng)用與實(shí)踐[J]. 電腦知識(shí)與技術(shù),2016,12(05):114-115.
[6]李志芳,孫輝,李淑娣. C語言在高職院校計(jì)算機(jī)專業(yè)的教學(xué)改革[J]. 信息與電腦(理論版),2010,(10):101.
[7]張靜,羅大暉. 高職院校C語言教學(xué)改革探索[J]. 常州信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2009,8(04):70-72.
[8]方少卿. 《C語言程序設(shè)計(jì)》課程教學(xué)探索[J]. 安慶師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2013,19(02):112-115.
[9]沈建國. 淺談高職院校C語言課程的教學(xué)改革[J]. 無錫商業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2008,(03):77-78+84.
[10]梁英堅(jiān). 高職院校工學(xué)結(jié)合在C語言程序設(shè)計(jì)課程教學(xué)改革的探索[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2013,16(08):220+222.
[11]焦華. 從C編程到C#控制臺(tái)編程及窗體編程的教學(xué)實(shí)踐研究[J].軟件,2017,38(03):42-47.