王國偉
摘要:針對C語言程序設(shè)計(jì)課程難學(xué)和難教的問題,在學(xué)生學(xué)習(xí)目的不明確和學(xué)習(xí)內(nèi)容不合理以及教學(xué)方式不完善三個(gè)方面存在問題的分析基礎(chǔ)上,對C語言教學(xué)活動(dòng)中的學(xué)習(xí)動(dòng)機(jī)、理論和實(shí)踐內(nèi)容安排以及教學(xué)方式進(jìn)行了分析,提出了激發(fā)學(xué)生學(xué)習(xí)興趣、調(diào)動(dòng)學(xué)生學(xué)習(xí)主動(dòng)性和培養(yǎng)學(xué)生解決實(shí)際問題能力三個(gè)解決方法,在教學(xué)和實(shí)踐中取得了良好的效果。
關(guān)鍵詞:C語言;理論教學(xué);實(shí)踐教學(xué)
中圖分類號:G642.0 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-9324(2012)07-0079-02
隨著計(jì)算機(jī)學(xué)科和其他學(xué)科交叉應(yīng)用的不斷深入,高校都開設(shè)了程序設(shè)計(jì)課程,培養(yǎng)學(xué)生掌握和利用計(jì)算機(jī)分析解決問題的能力,同時(shí)提高學(xué)生的邏輯思維能力。要進(jìn)行程序設(shè)計(jì),必須掌握一門計(jì)算機(jī)語言作為編程工具,由于C語言功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,它既有高級語言的優(yōu)點(diǎn),又有低級語言的許多特點(diǎn),通過該課程可以很好地提高學(xué)生的編程能力,進(jìn)一步為學(xué)習(xí)其他涉及到計(jì)算機(jī)知識的專業(yè)課程或者從事編程開發(fā)工作打下良好的基礎(chǔ),因此很多高校都把C語言程序設(shè)計(jì)作為一門基礎(chǔ)的必修課進(jìn)行開設(shè)[1]。然而通過調(diào)查發(fā)現(xiàn),在教學(xué)過程學(xué)生普遍反應(yīng)C語言難學(xué)而老師感覺難教,課程結(jié)束后很多學(xué)生對程序設(shè)計(jì)沒有清醒的認(rèn)識,更談不上進(jìn)行實(shí)際的應(yīng)用開發(fā)[2]。如何解決C語言程序設(shè)計(jì)課程教學(xué)中普遍存在的問題,讓學(xué)生對程序設(shè)計(jì)有一個(gè)完整的認(rèn)識,進(jìn)而培養(yǎng)和提高學(xué)生的綜合素質(zhì),是值得每一位從事程序設(shè)計(jì)語言教學(xué)的教師去認(rèn)真研究的課題。
一、存在的問題
高校C語言課程大都在一年級開設(shè),由于大多數(shù)學(xué)生在高中時(shí)接觸計(jì)算機(jī)編程較少,這就導(dǎo)致了學(xué)生在學(xué)習(xí)C語言的過程中,感覺其枯燥、抽象、難以掌握;對基本概念尚能理解,但當(dāng)實(shí)際編程時(shí),又感覺無從下手。這些問題跟教師講課過程中過多注重語法等理論知識,對學(xué)生學(xué)習(xí)興趣和解決實(shí)際問題的能力培養(yǎng)不夠有很大關(guān)系,主要原因體現(xiàn)在以下幾個(gè)方面。
(1)學(xué)習(xí)目的不明確。一些學(xué)生不清楚程序課程的學(xué)習(xí)目的和意義,認(rèn)為就是學(xué)習(xí)語法規(guī)則,學(xué)習(xí)內(nèi)容抽象并且晦澀難懂,沒有實(shí)用價(jià)值,學(xué)習(xí)只是為了考試及格,認(rèn)為大一開設(shè)的課程是基礎(chǔ)課,和專業(yè)課聯(lián)系不大,對自己的就業(yè)沒有影響。一些非計(jì)算機(jī)專業(yè)學(xué)生學(xué)習(xí)該課程目的甚至只是為能通過計(jì)算機(jī)等級考試拿到證書。
(2)學(xué)習(xí)內(nèi)容不合理。許多老師在講授課程內(nèi)容時(shí)往往都是先給出一般的語法格式,然后介紹語句的語法規(guī)則,最后講解語法要點(diǎn)和例題,沒有易于理解和能夠提高學(xué)習(xí)的案例,由于書本內(nèi)容死板枯燥且和實(shí)際問題脫節(jié),無法滿足學(xué)生的認(rèn)識水平,也不能調(diào)動(dòng)學(xué)生學(xué)習(xí)的興趣。在進(jìn)行上機(jī)實(shí)驗(yàn)時(shí),試驗(yàn)內(nèi)容往往是書本上的或是老師上課時(shí)所講的案例,由于內(nèi)容的選擇不恰當(dāng),上機(jī)實(shí)踐很大一部分情況下都變成了打字練習(xí),或者只會驗(yàn)證性地做一些修改對錯(cuò)、得出程序運(yùn)行結(jié)果的實(shí)驗(yàn),一旦要求功能改進(jìn),不能進(jìn)行算法和語法結(jié)構(gòu)的調(diào)整,最后學(xué)生總會覺得出C語言難學(xué)的結(jié)論[3]。
(3)教學(xué)方式不完善。部分老師的教學(xué)仍然采用理論講授在先、上機(jī)實(shí)驗(yàn)驗(yàn)證、最后布置作業(yè)鞏固的傳統(tǒng)教學(xué)模式,在教學(xué)過程中過多強(qiáng)調(diào)學(xué)習(xí)語法格式等理論知識,重點(diǎn)分析程序和算法的運(yùn)行過程,而不是講解根據(jù)問題如何分析和設(shè)計(jì)算法和程序,從而致使學(xué)生的程序設(shè)計(jì)能力不強(qiáng)。這種教學(xué)模式培養(yǎng)出的學(xué)生雖然理論知識學(xué)得很好,考試的時(shí)候也可以拿到高分,但在真正要求解決實(shí)際問題的時(shí)候,往往沒有編寫程序的思路,不知如何下手。由于經(jīng)常解決不了問題,不能體會到計(jì)算機(jī)編程在解決實(shí)際問題時(shí)帶來的便捷以及沒有編程的成就感,久而久之,學(xué)生也就失去了學(xué)習(xí)計(jì)算機(jī)編程的動(dòng)力。
二、解決方法
(1)激發(fā)學(xué)生學(xué)習(xí)興趣。興趣是最好的老師,能夠使人產(chǎn)生愉快的心理狀態(tài),并對學(xué)習(xí)過程產(chǎn)生積極的影響。研究證明學(xué)習(xí)者只要對學(xué)習(xí)有興趣,就可使人腦處于開放狀態(tài),學(xué)習(xí)者對于學(xué)習(xí)的興趣越濃,信息在傳輸過程中受到的干擾就越小,信息接受量就越大。從教育心理學(xué)的角度來說,興趣是一個(gè)人傾向于認(rèn)識研究獲得某種知識的心理特征,是推動(dòng)人們求知的一種內(nèi)在力量。人的注意力、觀察力、思維能力、記憶力乃至想象力都和興趣緊密相連,興趣能使人的認(rèn)識理解記憶處于最佳狀態(tài),思維能力最為主動(dòng)和活躍[4]。有了學(xué)習(xí)興趣,學(xué)生才有可能有意識地去思考和解決問題,因此在C語言教學(xué)的過程中要注重激發(fā)學(xué)生的學(xué)習(xí)興趣。
比如,在講解變量值交換時(shí),有位老師就問一個(gè)比較調(diào)皮的學(xué)生,如何把桌上的兩瓶水互換,這個(gè)學(xué)生不假思索地說,把一瓶水喝了,再把另一瓶水倒進(jìn)來,這時(shí)老師就問那個(gè)空瓶子的水呢,學(xué)生很不好意思,就說再吐出來,全班大笑。這時(shí),老師就因勢利導(dǎo)地說,對了,在變量值交換的時(shí)候,一定要記得找一個(gè)人來喝水,然后再吐出來,然后就講解變量值交換的過程。由于學(xué)生覺得當(dāng)時(shí)的情況十分有趣,因此對交換變量值的過程就記憶深刻。再比如,C語言中指針是非常抽象的概念,老師在講解的時(shí)候就問學(xué)生,如何讓某一個(gè)同學(xué)起立來回答問題,學(xué)生往往就會回答,叫他名字,老師又問如果不知道那個(gè)學(xué)生的名字呢?學(xué)生就會回答叫第幾排的第幾個(gè)同學(xué)。這時(shí),老師就講解假如學(xué)生的名字相當(dāng)于變量名,如果我要讓某個(gè)學(xué)生回答問題,叫名字就是通過變量名來訪問,叫第幾排的第幾個(gè)就是通過指針來訪問,這只是方式不一樣,但都是同一個(gè)人,教室有多少個(gè)座位相當(dāng)于計(jì)算機(jī)內(nèi)存有多大,第幾排第幾個(gè)相當(dāng)于座位編號就是指針變量的地址,這時(shí)學(xué)生就會很容易地理解變量、指針及其地址。
(2)調(diào)動(dòng)學(xué)生學(xué)習(xí)主動(dòng)性。人有一個(gè)特點(diǎn)就是希望做事情有成就感,能夠體現(xiàn)自我價(jià)值并受人尊重,當(dāng)其有成就感時(shí),往往能夠以更大的精力和主觀能動(dòng)性投入到工作中去。成就感是一種主觀感受,有兩方面的來源,一是自身的價(jià)值觀念,二是他人給予的肯定評價(jià)。一個(gè)人如果自身有一個(gè)價(jià)值判斷,而且能夠不管別人的看法,堅(jiān)持這個(gè)判斷,那么只要他自己認(rèn)為自己所做的事情是有價(jià)值的。當(dāng)他盡自己的努力,哪怕有一些錯(cuò)誤,卻有人關(guān)注,能夠?qū)λM(jìn)行好的評價(jià),他就能感受到成就感[5]。因此在C語言的教學(xué)過程中應(yīng)及時(shí)鼓勵(lì)學(xué)生表揚(yáng)其優(yōu)點(diǎn),使其有學(xué)習(xí)C語言的成就感,從而調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性。
比如在學(xué)習(xí)過程中對學(xué)生中出現(xiàn)的與眾不同的新穎的程序設(shè)計(jì)方法和思路要及時(shí)宣講并公開表揚(yáng),以鼓勵(lì)這種有創(chuàng)意的學(xué)風(fēng)[6];對編寫的程序不符合規(guī)范的學(xué)生,也要從中找出值得肯定的地方,不能因程序編寫中存在的問題而一概否定。在講授循環(huán)的教學(xué)環(huán)節(jié)中,有一個(gè)題目叫求水仙花數(shù),大部分同學(xué)根據(jù)教材思想從100開始到999單循環(huán),分別求出變量的個(gè)位數(shù)、十位數(shù)和百位數(shù),三次方后相加,如果求和與變量本身相等就輸出。有一個(gè)同學(xué)則是使用三重循環(huán),對三個(gè)循環(huán)變量進(jìn)行三次方后相加,如果求得的和與三個(gè)變量按順序組成的三位數(shù)相等則輸出。由于該同學(xué)使用了不同的算法思想,老師對其大加贊揚(yáng),結(jié)果該同學(xué)的學(xué)習(xí)主動(dòng)性空前提高,后來參加全國數(shù)學(xué)建模大賽并取得了很好的成績。
(3)培養(yǎng)學(xué)生解決實(shí)際問題能力。在理論與實(shí)踐的辯證關(guān)系中,實(shí)踐是理論的基礎(chǔ),又是理論的出發(fā)點(diǎn)和歸宿,實(shí)踐對理論起決定作用;理論必須與實(shí)踐緊密結(jié)合,接受實(shí)踐的檢驗(yàn),為實(shí)踐服務(wù),并隨著實(shí)踐的發(fā)展而發(fā)展。高等教育培養(yǎng)的人才,既要有用社會實(shí)踐指導(dǎo)的理論功底,又要有在實(shí)踐中運(yùn)用和發(fā)展理論知識的能力[7]。C語言課程的教學(xué)目的是要求學(xué)生熟練掌握程序設(shè)計(jì)的知識,為以后結(jié)合專業(yè)學(xué)習(xí)計(jì)算機(jī)技術(shù)以及進(jìn)行相關(guān)的專業(yè)“課程設(shè)計(jì)”和“畢業(yè)設(shè)計(jì)”打下良好的基礎(chǔ)。掌握基本語法和程序設(shè)計(jì)的基本思想、熟悉常用的算法與編程技巧,具備初步的編程解決實(shí)際問題的能力[8]。學(xué)生如果只會紙上談兵,沒有解決實(shí)際問題能力,也就失去了開設(shè)該課程的意義。因此在C語言的教學(xué)過程中,除了對基本的語法和語句等理論知識進(jìn)行傳授外,還應(yīng)該注重對算法的教學(xué),培養(yǎng)學(xué)生利用編程解決實(shí)際問題的能力。
比如,在講解輸入一個(gè)成績輸出其等級的問題時(shí)應(yīng)該有效性判斷,如果輸入的成績大于100或者小于0則為無效成績。教師在講授該環(huán)節(jié)時(shí)一般都會告訴學(xué)生,有效性判斷是為了防止輸入誤操作,在實(shí)際編程中要加上條件判斷語句,不滿足時(shí)要重新輸入。但是在實(shí)際應(yīng)用時(shí),卻并非如此,因?yàn)樵谳斎氲牟僮鬟^程中,很有可能第一次輸入錯(cuò)誤,第二次還是錯(cuò)誤,以此類推,因此采用條件判斷的分支語句在第二次輸入錯(cuò)誤時(shí)程序已不能運(yùn)行,根本不能解決實(shí)際問題。
三、結(jié)語
對于大學(xué)生來說,學(xué)習(xí)C語言程序設(shè)計(jì)的目的是在掌握理論的基礎(chǔ)上,通過實(shí)踐,培養(yǎng)使用計(jì)算機(jī)編程來解決各種實(shí)際問題的能力,達(dá)到學(xué)以致用。對教師而言則應(yīng)改進(jìn)教學(xué)方式,使學(xué)生在學(xué)習(xí)過程中體驗(yàn)快樂,提高學(xué)習(xí)的積極性和主動(dòng)性。課堂教學(xué)是一門藝術(shù),教學(xué)方法探討永無止境,只要能夠符合教學(xué)內(nèi)容,激發(fā)學(xué)生的學(xué)習(xí)熱情和興趣,就可以實(shí)現(xiàn)教學(xué)目標(biāo)。文中所述的問題以及解決方法是根據(jù)實(shí)際教學(xué)情況分析得出,并已在C語言課程教學(xué)和實(shí)踐中運(yùn)用,并取得了良好的教學(xué)效果。當(dāng)然,在具體的教學(xué)環(huán)節(jié)中,新問題層出不窮,需要我們不斷探索和改進(jìn),努力使C語言課程教學(xué)日趨完善,讓C語言程序設(shè)計(jì)真正成為學(xué)生喜歡的課程。
參考文獻(xiàn):
[1]陳一昌.C語言程序教學(xué)新探[J].科技經(jīng)濟(jì)市場,2011,(9):107.
[2]劉志宏,劉舟荷,張雯暉,等.項(xiàng)目教學(xué)法在C語言教學(xué)中的實(shí)踐與研究[J].中國成人教育,2010,(4):139.
[3]萬麗華,夏侯贇.C語言項(xiàng)目教學(xué)法在非計(jì)算機(jī)專業(yè)學(xué)生中的教學(xué)體會[J].電腦知識與技術(shù),2011,(7):5968-5969.
[4]常丁.程序設(shè)計(jì)教學(xué)中如何提問題[J].山西師大學(xué)報(bào)(社會科學(xué)版)研究生論文???,2010,(37):197.
[5]賴小科.關(guān)于“成就感”的思考[J].體驗(yàn),2010,(7):52.
[6]徐曉偉.《C語言程序設(shè)計(jì)》教學(xué)方法改革探析[J].軟件導(dǎo)刊,2008,(7):207-208.
[7]甄阜銘.理論教學(xué)與實(shí)踐教學(xué)的同構(gòu)關(guān)系[J].現(xiàn)代教育科學(xué),2011,(5):79.
[8]賈宗璞,許合利.C語言程序設(shè)計(jì)[M].北京:人民郵電出版社,2010.