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