謝水連
摘要:《C語言程序設(shè)計(jì)》是地方高校非計(jì)算機(jī)類專業(yè)學(xué)生很重要的一門專業(yè)基礎(chǔ)課程。該課程可以使學(xué)生具備當(dāng)今社會(huì)所需的基本計(jì)算機(jī)編程能力,培養(yǎng)學(xué)生思維能力,提高學(xué)生綜合素質(zhì)。然而,目前地方院校的《C語言程序設(shè)計(jì)》教學(xué)存在諸如教學(xué)效果低下,學(xué)生興趣不高等種種問題。本文結(jié)合地方院校特點(diǎn),嘗試從教學(xué)方式,評(píng)價(jià)手段等角度對(duì)該課程教學(xué)改革提出一些建議。
關(guān)鍵詞:C語言;教學(xué)方式;評(píng)價(jià)手段
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2017)05-0199-02
當(dāng)今社會(huì)是信息社會(huì)。社會(huì)發(fā)展的需求,使得計(jì)算機(jī)成為當(dāng)代眾多新型技術(shù)中發(fā)展最快、應(yīng)用最廣的一項(xiàng)技術(shù)。經(jīng)過幾十年的發(fā)展,計(jì)算機(jī)已經(jīng)逐步深入到社會(huì)的方方面面,改變了人們的生產(chǎn)方式、工作方式以及娛樂方式等。對(duì)當(dāng)代大學(xué)生而言除了掌握基本的計(jì)算機(jī)基礎(chǔ)知識(shí)及各種辦公軟件,如word,ppt,excel外,掌握一門高級(jí)程序編程語言也是至關(guān)重要的。所以許多地方院校理工類的學(xué)生除了學(xué)習(xí)計(jì)算機(jī)基礎(chǔ)知識(shí)外,都再選修一門程序設(shè)計(jì)。程序設(shè)計(jì)的語言種類很多,如visual foxpro,visual basic等。但各高校一般選擇的是更為基礎(chǔ)的C語言程序設(shè)計(jì)。C語言具有許多其他程序語言無可比擬的優(yōu)點(diǎn),其語法結(jié)構(gòu)簡(jiǎn)潔精妙,寫出的程序性能高效,算法描述通用直觀。C語言如果能夠?qū)W好,對(duì)掌握其他語言的基本思想,編程理念,算法設(shè)計(jì)都有非常大的幫助。另外,雖然C語言是面向過程的高級(jí)程序語言,但是對(duì)于它的掌握也有助于學(xué)習(xí)各種面向?qū)ο蟪绦蛟O(shè)計(jì)語言,如當(dāng)今流行的C++,Java等新型語言。對(duì)于某些衍生自C語言的程序語言,只需簡(jiǎn)單學(xué)習(xí)相應(yīng)語法即可迅速上手,如大型科學(xué)計(jì)算語言,Matlab。雖然各地方院校和學(xué)生對(duì)這門課普遍重視,但是該課程教學(xué)仍然存在很多問題,直接表現(xiàn)為教學(xué)效率低下,學(xué)生興趣不高。
一、存在的問題
筆者多年從事C語言程序設(shè)計(jì)的教學(xué),發(fā)現(xiàn)在教學(xué)過程存在如下一些問題。
1.理論性強(qiáng),枯燥無味。C語言程序設(shè)計(jì)課程理論性、實(shí)踐性和應(yīng)用性很強(qiáng),其數(shù)據(jù)結(jié)構(gòu)復(fù)雜,知識(shí)點(diǎn)繁多,內(nèi)容本身枯燥無趣。對(duì)于絕大多數(shù)非計(jì)算機(jī)專業(yè)學(xué)生而言,C語言程序設(shè)計(jì)只是一門了解程序設(shè)計(jì)基本原理、編程基本步驟、算法設(shè)計(jì)基本思想的一門公共基礎(chǔ)課。所以很多老師對(duì)這門課的教學(xué)也主要從語法出發(fā)做理論介紹。然而近年來大學(xué)的大規(guī)模擴(kuò)招,地方院校的很多學(xué)生基礎(chǔ)較為薄弱,尤其是有些學(xué)生連基本的計(jì)算機(jī)知識(shí)都沒有。教師雖然很用心,花上整堂課講授各種數(shù)據(jù)類型的語法、表達(dá)式以及函數(shù)等知識(shí),但是學(xué)生幾乎對(duì)這些標(biāo)識(shí)符和概念完全沒有感覺,不知道這些符號(hào)的意義,更談不上思考如何應(yīng)用于編程過程,因此很容易對(duì)這門課產(chǎn)生厭學(xué)的心理。另外,部分專業(yè)老師仍然采用講數(shù)學(xué)課的方式教授程序設(shè)計(jì)。數(shù)學(xué)課的教學(xué)方式與計(jì)算機(jī)課的思維理念十分不同。數(shù)學(xué)課有一些直觀的例子可以想象,只是介紹數(shù)學(xué)定理和概念,學(xué)生依然可以想象理解所學(xué)的內(nèi)容。然而計(jì)算機(jī)課就不一樣,以教數(shù)學(xué)的方式教計(jì)算機(jī)學(xué)生只會(huì)聽的云里霧里,疲于記住各種定義,語法,卻又無法真正有體會(huì)理解。
2.輕視實(shí)踐,偏重驗(yàn)證。理論部分投入過多的時(shí)間,在有限的課時(shí)下,不可避免地壓縮實(shí)踐課時(shí)的時(shí)間。對(duì)于這樣一門極其偏重應(yīng)用的課程,如此方式的教學(xué)意義幾乎不大。C語言程序設(shè)計(jì)必須是通過大量的調(diào)試,犯錯(cuò),改錯(cuò)才能夠?qū)δ切┗菊Z法有深刻的理解。以嘉應(yīng)學(xué)院應(yīng)用數(shù)學(xué)專業(yè)的C語言教學(xué)為例,該專業(yè)是師范專業(yè),C語言課時(shí)較少,平均每周三節(jié)。上課方式采取2+1的方式,即每周一次理論課,兩周一次上機(jī)課。老師講得較多,所演示的案例往往也是與教學(xué)相關(guān)的典型案例。然而學(xué)生缺乏大量時(shí)間去動(dòng)手練習(xí),雖然學(xué)習(xí)了基本語法,但是卻未學(xué)到編寫程序的基本思維,根本無法編寫程序解決實(shí)際問題,學(xué)習(xí)效果不佳。在最后的學(xué)生評(píng)價(jià)環(huán)節(jié)也往往通過一個(gè)期末筆試決定學(xué)生最終的成績(jī)。這種考核方式的弊端在于試卷中有大量的選擇和填空,少部分編程。對(duì)于那些成績(jī)優(yōu)異的學(xué)生,可能他們只對(duì)基本概念了解透徹,并不能反映他們真正掌握了C語言的內(nèi)涵。實(shí)踐和編程才是這門課的根本。
二、教學(xué)改革措施
基于以上教學(xué)過程中的種種問題,我們可以從以下幾個(gè)角度對(duì)地方院校的C語言課程進(jìn)行教學(xué)改革。
1.教學(xué)內(nèi)容和方式。在理論教學(xué)方面。C語言教學(xué)內(nèi)容大致包括數(shù)據(jù)類型,表達(dá)式,基本輸入輸出,分支選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),函數(shù),數(shù)組,指針等??紤]到師范專業(yè)一般這門課的學(xué)時(shí)較少,在上課的時(shí)候無需追求大而全?,F(xiàn)在各所高校一般選用譚浩強(qiáng)的《C程序設(shè)計(jì)》這本公認(rèn)的學(xué)習(xí)C語言程序設(shè)計(jì)的經(jīng)典教材。但是對(duì)于初步掌握編程基本思想而言,無需把整本內(nèi)容講完,事實(shí)上講到數(shù)組就差不多夠用了。應(yīng)該花大量時(shí)間介紹基本語法、算法設(shè)計(jì)以及具體的實(shí)現(xiàn)。在講授每一個(gè)章節(jié)時(shí),可以聯(lián)系其他學(xué)科,尤其是在數(shù)學(xué)中的應(yīng)用。比如在講數(shù)組時(shí),可以聯(lián)系數(shù)學(xué)中的矩陣相關(guān)計(jì)算。在講循環(huán)結(jié)構(gòu)的過程中,也可以引導(dǎo)學(xué)生用C語言去解決簡(jiǎn)單的數(shù)值計(jì)算方法中的計(jì)算,如Jacobi迭代,Gauss-Seidel迭代求線性方程組等。
在實(shí)踐環(huán)節(jié)方面。傳統(tǒng)的上機(jī)實(shí)踐教學(xué)模式中,教師一般會(huì)給出一個(gè)上機(jī)實(shí)驗(yàn)內(nèi)容,通過講解、示范、演示后再讓學(xué)生操作一遍。這種方式學(xué)生不易犯“錯(cuò)誤”,但限制了學(xué)生對(duì)問題的思考。而程序設(shè)計(jì)就是要發(fā)現(xiàn)、總結(jié)大量錯(cuò)誤,提高經(jīng)驗(yàn)值,才能在未來的編程道路上得心應(yīng)手。因此應(yīng)該盡可能總結(jié)歷年的學(xué)生實(shí)驗(yàn)情況,以及各種計(jì)算機(jī)等級(jí)考試常見的學(xué)生語法錯(cuò)誤,有針對(duì)性地設(shè)計(jì)實(shí)驗(yàn)內(nèi)容讓學(xué)生動(dòng)手操作。引導(dǎo)學(xué)生修改程序,讀懂程序錯(cuò)誤提示,提高學(xué)生實(shí)踐水平以及動(dòng)手能力。加強(qiáng)學(xué)生舉一反三的能力培訓(xùn),讓實(shí)踐教學(xué)反哺理論教學(xué),使學(xué)生對(duì)理論有更深層次的理解,并能夠自己學(xué)習(xí)后續(xù)章節(jié)。進(jìn)一步,使學(xué)生能夠閱讀程序理解程序所表達(dá)的意義。培養(yǎng)學(xué)生良好的程序編寫習(xí)慣和風(fēng)格,注重程序注解的說明。
2.教學(xué)評(píng)價(jià)方面。現(xiàn)在一考定成績(jī)的方式,常使學(xué)生產(chǎn)生學(xué)習(xí)過程、知識(shí)理解不重要,把基本語法背下來即可蒙混過關(guān)的思想。于是將所有精力放在了最后幾周集中學(xué)習(xí)。這就導(dǎo)致了在學(xué)期開始一些基本的語法錯(cuò)誤,老師上課講過多遍學(xué)生一直無法接受。而一旦前面基礎(chǔ)沒有打好,后面的程序語言幾乎無法進(jìn)行,這使得教師的教學(xué)過程難度加大。所以要針對(duì)教學(xué)成績(jī)?cè)u(píng)定方式進(jìn)行改革,扭轉(zhuǎn)學(xué)生錯(cuò)誤觀念,例如,將成績(jī)?cè)u(píng)定方式定為考試與考察相結(jié)合、開卷與閉卷相結(jié)合,除傳統(tǒng)期末考外,尤其要重視平時(shí)隨堂小測(cè)驗(yàn)在最后總成績(jī)中的比重。另外加大實(shí)踐環(huán)節(jié)的成績(jī)比重??梢砸詫?shí)際問題為背景,在學(xué)期末設(shè)置一個(gè)稍微大型的綜合性實(shí)驗(yàn)。例如學(xué)生信息管理系統(tǒng),學(xué)生成績(jī)管理系統(tǒng),圖書館圖書管理系統(tǒng)等。這些系統(tǒng)幾乎會(huì)適用到整個(gè)C程序各種變量的定義,函數(shù)的應(yīng)用以及子函數(shù)的調(diào)用等。另外還可以培養(yǎng)學(xué)生初步的算法設(shè)計(jì)的思想。將這種稍微大型問題拆分為若干小問題,引導(dǎo)學(xué)生在課后通過小組研究、網(wǎng)上或圖書館搜索資料、軟件構(gòu)建模型等途徑解決,自己獨(dú)立編寫小模塊,使學(xué)生在探索實(shí)踐的過程中學(xué)會(huì)C程序基本知識(shí)及應(yīng)用,這也是教學(xué)改革的最終目的。這種方式也有助于培養(yǎng)學(xué)生團(tuán)結(jié)合作的品格。不同的學(xué)生所設(shè)計(jì)的系統(tǒng)可能功能差不多,但程序的可讀性、穩(wěn)健性、可用性、友好性都有差別,可以使學(xué)生互相學(xué)習(xí)提高。
三、結(jié)論
通過上述討論可以發(fā)現(xiàn),傳統(tǒng)的C語言程序設(shè)計(jì)教學(xué)形式已經(jīng)不能夠滿足現(xiàn)階段教學(xué)實(shí)際要求,在當(dāng)今各高等院校普遍注重實(shí)踐型和應(yīng)用型教育的背景下,對(duì)其進(jìn)行教學(xué)改革是時(shí)代進(jìn)步和學(xué)科發(fā)展的必然選擇。編程理念是授課和學(xué)習(xí)的最終目的,所以教學(xué)改革也應(yīng)以此為目標(biāo),從課堂教學(xué)、實(shí)踐課程及成績(jī)?cè)u(píng)定等角度進(jìn)行針對(duì)性的完善和改革,以此提升課堂教學(xué)效率。
參考文獻(xiàn):
[1]蔡曉麗.陳舜青,丁志云,計(jì)算機(jī)C語言實(shí)驗(yàn)教學(xué)改革探討[J].電腦知識(shí)與技術(shù),2010,(5):4191-4192.
[2]余冬梅.基于C語言的計(jì)算機(jī)語言類課程的教學(xué)方法研究與實(shí)踐[J].現(xiàn)代計(jì)算機(jī),2010,(8):67-69.
[3]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2014.
[4]譚浩強(qiáng).C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)[M].北京:清華大學(xué)出版社,2005.