艾鴻 劉躍軍
摘 要:C語言程序設(shè)計(jì)是高等院校非計(jì)算機(jī)專業(yè)的一門必修基礎(chǔ)課程,文章針對(duì)教學(xué)過程中出現(xiàn)的問題進(jìn)行討論和分析,對(duì)教學(xué)方法、思維培養(yǎng)、實(shí)踐教學(xué)、考核方式等方面提出建議和思考。
關(guān)鍵詞:非計(jì)算機(jī)專業(yè);C語言程序設(shè)計(jì);教學(xué)探索
一、 引言
C語言憑借功能豐富、應(yīng)用廣泛、可移植性好的特點(diǎn),成為非計(jì)算機(jī)專業(yè)學(xué)生的首選入門的編程課程。該課程目的是使學(xué)生掌握程序設(shè)計(jì)的基本方法并逐步形成正確的程序設(shè)計(jì)思想。但相對(duì)專業(yè)學(xué)生扎實(shí)的知識(shí)基礎(chǔ)和較長(zhǎng)的課時(shí)安排,非計(jì)算機(jī)專業(yè)教學(xué)安排存在課時(shí)比計(jì)算機(jī)專業(yè)的少,任務(wù)重,在教學(xué)實(shí)踐中產(chǎn)生教與學(xué)的沖突。
二、 C語言程序設(shè)計(jì)教學(xué)存在的問題
(一) 課程知識(shí)點(diǎn)多且零散
C語言語法知識(shí)點(diǎn)多,內(nèi)容分散、理論性強(qiáng)。學(xué)生能夠編寫出正確的程序,需要對(duì)語法知識(shí)進(jìn)行全面的掌握,并具有流暢的思路。但教學(xué)中,按照教材順序逐章節(jié)講解教學(xué)模式,導(dǎo)致學(xué)生多關(guān)注細(xì)節(jié)而忽略的程序設(shè)計(jì)的本質(zhì),最終影響教學(xué)效果。
(二) 實(shí)踐教學(xué)環(huán)節(jié)薄弱
C語言具有較強(qiáng)的實(shí)踐性,由于課時(shí)的局限,非計(jì)算機(jī)專業(yè)學(xué)生缺少充足的設(shè)計(jì)型和創(chuàng)新型實(shí)驗(yàn),使綜合性實(shí)驗(yàn)很難和實(shí)際問題緊密結(jié)合,學(xué)生無法將所學(xué)的知識(shí)應(yīng)用到實(shí)際中去,導(dǎo)致學(xué)生失去學(xué)習(xí)的興趣,創(chuàng)新能力和學(xué)以致用的綜合能力的受到限制。
(三) 學(xué)生基礎(chǔ)差異大,缺乏深入思考
由于高校各個(gè)專業(yè)學(xué)生的知識(shí)背景不同,在理解及應(yīng)用計(jì)算機(jī)編程知識(shí)方面存在較大的差異。部分學(xué)生只會(huì)驗(yàn)證教材例題正確性,做不到對(duì)問題深入思考,舉一反三。對(duì)編程思想理解不透,而C語言編程需要非常強(qiáng)的邏輯思維能力,隨著學(xué)習(xí)的深入,學(xué)習(xí)難度增強(qiáng),導(dǎo)致在其他專業(yè)課、課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)要用到時(shí)無法獨(dú)立編程。
(四) 學(xué)生重視度較低,學(xué)習(xí)興趣不高
部分非計(jì)算機(jī)專業(yè)的學(xué)生認(rèn)為,C語言程序設(shè)計(jì)是計(jì)算機(jī)公共基礎(chǔ)課與他們所學(xué)的專業(yè)無關(guān),學(xué)習(xí)積極性不高,重視度不夠,缺乏學(xué)習(xí)興趣。還有部分愛好計(jì)算機(jī)的學(xué)生感覺C語言程序設(shè)計(jì)編程直觀性沒有Java、C++、C#等相關(guān)程序設(shè)計(jì)語言好,學(xué)習(xí)過程需要識(shí)記的內(nèi)容多,無法產(chǎn)生學(xué)習(xí)興趣。
三、 教學(xué)探索與實(shí)踐
(一) 培養(yǎng)程序思維
C語言的教學(xué)目的是讓學(xué)生掌握高級(jí)語言的編程的基本概念,建立計(jì)算思維,在面對(duì)實(shí)際問題是學(xué)會(huì)利用邏輯思維解決問題。計(jì)算思維的本質(zhì)來源于對(duì)工程建設(shè)和數(shù)學(xué)科學(xué)的理性思考,語言編程問題并不單純歸結(jié)于模型的思考過程,應(yīng)以人腦思維為邏輯起點(diǎn),抽象出計(jì)算思維,上升為C語言程序設(shè)計(jì)思維。C語言程序設(shè)計(jì)中的思維主要體現(xiàn)在抽象和自動(dòng)化。
抽象包括使用函數(shù)、常量、變量、數(shù)組、鏈表等元素表達(dá)實(shí)際問題中的系統(tǒng)、功能等特征。自動(dòng)化表現(xiàn)為通過設(shè)計(jì)函數(shù)功能實(shí)現(xiàn)函數(shù)的自動(dòng)跳轉(zhuǎn)和調(diào)用,最終實(shí)現(xiàn)系統(tǒng)功能。
因此教學(xué)中依據(jù)C語言的抽象和自動(dòng)化的特點(diǎn)進(jìn)行教學(xué),淡化語法上的細(xì)節(jié)部分,按照“人腦思維—計(jì)算思維—C語言程序設(shè)計(jì)思維”的順序完成例題演示、習(xí)題講解,努力將計(jì)算思維融入C語言建構(gòu)中,使學(xué)生的思維能力得到鍛煉。
(二) 改進(jìn)教學(xué)模式
C語言教材一般在章節(jié)安排上先介紹數(shù)據(jù)類型、表達(dá)式、運(yùn)算符后開始程序編寫。若按部就班地進(jìn)行教學(xué)內(nèi)容的講解,教學(xué)效果較差。因此在教學(xué)中微調(diào)教學(xué)安排,調(diào)整部分章節(jié)的順序,部分基礎(chǔ)內(nèi)容開始講解時(shí)做了取舍。
如對(duì)基本的數(shù)據(jù)類型中整型和浮點(diǎn)型、輸入輸出格式“%d”,“%f”以及算術(shù)運(yùn)算和賦值語句進(jìn)行介紹后,就進(jìn)行可以簡(jiǎn)單計(jì)算器的程序編寫,不必要對(duì)大量數(shù)據(jù)類型、表達(dá)式以及運(yùn)算符進(jìn)行講解,讓學(xué)生嘗試程序編寫、編譯和調(diào)試,讓學(xué)生先建立學(xué)習(xí)的信心和成就感。在后續(xù)的章節(jié)中再慢慢地滲透其他內(nèi)容。
針對(duì)學(xué)生一聽就懂,一編就亂這一現(xiàn)象,提出驗(yàn)證—修改—?jiǎng)?chuàng)新的實(shí)踐教學(xué)方式。
驗(yàn)證主要是檢驗(yàn)教材或老師給的程序結(jié)果。在這個(gè)看似簡(jiǎn)單的過程可能存在符號(hào)輸入錯(cuò)誤、保留字拼寫錯(cuò)誤、0誤以為o、變量沒有定義或變量重復(fù)定義,缺少語句結(jié)束符分號(hào)等。通過這個(gè)過程使學(xué)生可以總結(jié)問題,快速地找到程序中出現(xiàn)的語法錯(cuò)誤、連接錯(cuò)誤和功能錯(cuò)誤。
修改是經(jīng)過驗(yàn)證性的編寫程序后,根據(jù)要求對(duì)程序進(jìn)行適當(dāng)?shù)男薷模^察輸出結(jié)果的變化,并將修改后的程序與原來的程序進(jìn)行比較,鼓勵(lì)學(xué)生分析修改部分對(duì)運(yùn)行結(jié)果的影響。
創(chuàng)新是解決實(shí)際問題實(shí)現(xiàn)新功能。將實(shí)際問題抽象-提取特征-設(shè)計(jì)程序,是學(xué)生綜合能力的培養(yǎng)。
例如:循環(huán)結(jié)構(gòu)累和內(nèi)容采用求1+2+…+100和的例題講解要求學(xué)生驗(yàn)證程序;擴(kuò)展1+2+…+n的和與1*2*…10!階乘的積求解要求學(xué)生考慮修改的內(nèi)容并與原來程序?qū)Ρ日页鰠^(qū)別與聯(lián)系;拓展訓(xùn)練求1+2!+…+n!學(xué)生通過例題—擴(kuò)展—拓展訓(xùn)練理解這部分內(nèi)容,就能更好的應(yīng)用和創(chuàng)新。
(三) 合理的考核方式
考核是對(duì)學(xué)生的學(xué)習(xí)情況進(jìn)行檢測(cè)的重要過程。在C語言程序設(shè)計(jì)教學(xué)過程中,對(duì)傳統(tǒng)的考核方式進(jìn)行改變和創(chuàng)新,突出學(xué)生的實(shí)踐能力的考核,不斷提高學(xué)生的實(shí)踐能力的水平。教學(xué)過程中并非依靠最后的期末考試來確定學(xué)生的成績(jī),而是將課程的考核貫穿整個(gè)學(xué)期。
考核采用總成績(jī)=期末成績(jī)40%+階段考試成績(jī)20%+綜合實(shí)驗(yàn)成績(jī)20%+平時(shí)成績(jī)20%;期末考試、階段考試均采取機(jī)考的方式實(shí)施教考分離,考核能較客觀地反映出學(xué)生的綜合能力,促進(jìn)學(xué)生學(xué)習(xí)的主動(dòng)性;平時(shí)成績(jī)由課堂表現(xiàn)、實(shí)驗(yàn)成績(jī)組成??偝煽?jī)中實(shí)踐環(huán)節(jié)所占比重較大,在一定程度上提高教師和學(xué)生對(duì)實(shí)踐的重視。
(四) 開展編程競(jìng)賽
競(jìng)賽對(duì)學(xué)生設(shè)計(jì)能力、實(shí)踐能力、心理素質(zhì)都有較高的要求。競(jìng)賽不但全面考核學(xué)生綜合能力而且能夠鍛煉學(xué)生的實(shí)際動(dòng)手能力,使學(xué)生真正能利用C語言完成程序設(shè)計(jì),解決實(shí)際問題。
在教學(xué)過程中引入競(jìng)賽的趣味程序,讓學(xué)生對(duì)競(jìng)賽有所了解,鼓勵(lì)學(xué)生多參加學(xué)校開展各種計(jì)算機(jī)競(jìng)賽,同時(shí)鼓勵(lì)學(xué)生參加全國性程序大賽,比如:藍(lán)橋杯、天梯賽等。以競(jìng)賽調(diào)動(dòng)學(xué)生的學(xué)習(xí)熱情,使學(xué)生勇于思考,敢于創(chuàng)新,提高學(xué)生學(xué)習(xí)的內(nèi)動(dòng)力。指導(dǎo)的學(xué)生參加競(jìng)賽取得成績(jī)后,學(xué)生在后續(xù)的課程和創(chuàng)新項(xiàng)目中保持良好的學(xué)習(xí)動(dòng)力和專業(yè)素養(yǎng),為學(xué)生學(xué)業(yè)規(guī)劃和職業(yè)規(guī)劃夯實(shí)基礎(chǔ)。
四、 結(jié)語
C語言程序設(shè)計(jì)的教學(xué)不僅培養(yǎng)學(xué)生分析問題、解決問題、編寫程序的能力,而且使學(xué)生掌握程序設(shè)計(jì)的方法。結(jié)合2015-2018年期間具體教學(xué)實(shí)踐表明,適量的減少理論課講授,加大實(shí)踐環(huán)節(jié)的力度,完善考核方式的舉措比較符合當(dāng)前非計(jì)算機(jī)專業(yè)學(xué)生實(shí)際情況,具有較好的可操作性,收到較好的教學(xué)效果。
其中參加藍(lán)橋杯的非計(jì)算機(jī)專業(yè)學(xué)生通過課程的學(xué)習(xí)打下基礎(chǔ),經(jīng)過集訓(xùn)取得很好的成績(jī),有些學(xué)生甚至考研轉(zhuǎn)到計(jì)算機(jī)方向。可見學(xué)生在學(xué)習(xí)過程中通過調(diào)動(dòng)學(xué)習(xí)的積極性,提高學(xué)習(xí)興趣,提升編程能力,培養(yǎng)程序設(shè)計(jì)的思維的重要性。在未來的教學(xué)中,還需不斷地改進(jìn)教學(xué)方法,真正做到以學(xué)生為主,以學(xué)為主;使C語言和學(xué)生的專業(yè)更加緊密地結(jié)合起來,使學(xué)生學(xué)有所用,為后續(xù)的學(xué)習(xí)奠定良好的基礎(chǔ)。
參考文獻(xiàn):
[1]徐寶文,李志譯.(美)Brian W. Kernighan/(美)Dennis M. Ritchie. C程序設(shè)計(jì)語言第2版[M].北京:機(jī)械工業(yè)出版社,2004.
[2]譚浩強(qiáng).C程序設(shè)計(jì)第4版[M].北京:清華大學(xué)出版社,2010.
[3]徐新愛.基于學(xué)科競(jìng)賽的《C語言程序設(shè)計(jì)》課程教學(xué)改革研究[J].西南師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,40(9):224-228.
作者簡(jiǎn)介:艾鴻,上海市,上海海洋大學(xué)信息學(xué)院;
劉躍軍,上海市,上海大學(xué)計(jì)算機(jī)工程與科學(xué)學(xué)院。