段學慶
摘要:C語言是一門出色的程序設計語言,應用越來越廣,它注重培養學生解決實際問題的編程能力和邏輯思維能力。本文以目前C語言教學中存在的問題為切入點,就筆者在C語言教學過程中教學方式的改變提出了一些心得,以期對提高教師教學水平、調動學生的學習主動性有積極作用。
關鍵詞:C語言;教學方法;程序設計
中圖分類號:G642.41 文獻標志碼:A 文章編號:1674-9324(2017)23-0263-02
C語言作為國內各高等院校普遍開設的計算機程序設計類語言課程,一直深受專業人士的認可,這與C語言的特點是分不開的。C語言不僅適于編寫系統軟件,又能方便地用來編寫應用軟件,并且它的功能豐富、表達能力強、使用靈活方便、應用面廣、可移植性好,兼有高級語言的優點和低級語言的許多特點,使其在工科教學中的生命力也越來越強。C語言教學旨在培養學生的邏輯思維能力和創新實踐能力,為后續專業課程的學習奠定良好的基礎。筆者作為獨立院校的一線授課教師,深切體會到學生在學習C語言過程中遇到的困難。因此,筆者欲通過多年的實踐,以現身說法的方式總結了以下幾點C語言教學方式的粗淺看法,以期拋磚引玉,共同為提高獨立院校的教學成果而努力。
一、目前教學中存在的問題
1.學生普遍感覺C語言的內容枯燥、語法錯綜復雜,既難懂又無實用價值。有的學生認為自己畢業后不會從事軟件開發的工作,有的認為C語言已經過時,在當今軟件領域中已無用武之地,應該學習所謂更高級、更智能、最新最熱門的語言,這些錯誤認識使得學生對待C語言學習持有無所謂的態度。
2.課后缺少實際練習與實踐,未能鞏固所學知識,僅能在課堂上理解對單獨的語句語法,但隨著學習內容的加深,前面已學的基礎知識容易遺忘,致使后面的知識連接不上,更談不上融會貫通。這樣就導致了畏難情緒、煩躁情緒,再加之不能及時調整,進而影響學習效果。
3.C語言是實踐性很強的課程,僅僅滿足于死記硬背,即“知”的層面是遠遠不夠的。有的學生雖能聽懂課堂所講的知識點,但不能在上機過程中予以實施,也不能從編譯工具的錯誤提示中找到問題所在并加以解決。若將題目稍微變通一下,學生便找不到解題的思路,不注意方法的積累與運用[1]。
4.雖然多媒體技術的使用是對以往教學方式的很大改善,但其“填鴨式”的教學實質并未改變,仍然以傳授知識為主,重結果、輕過程,重知識理論傳講、輕實際應用操作實踐,學生通過死記硬背、做大量的題目,以期在考試中取得好成績。這樣的教與學扼殺了學生的興趣。
5.學生的課后練習完成情況缺乏有效監督,未能對學生的學習發揮應有的督促作用。學生忙于應付差事,僅就當前知識點進行了練習和鞏固,但卻對其原理、過程、機制等一無所知。
二、具體改進措施
1.聯系生活場景講解知識點,激發學生的學習興趣和熱情。西方有句諺語:“你要切切保守你心,因為一生的果效是由心發出。”一切被外在強大壓力驅使、逼迫著學習的形態都是不健康和無長久效果的,即使發生了“立竿見影”的現象,學生也會隨著考試結束而將其拋在腦后,只落得竹籃打水一場空。只有讓學生感受到C語言離自己切身生活并非遙不可及,并不是什么“高大上”、玄妙莫測的玩意,幫助學生消除抵觸情緒和距離感,才能真正調動其學習的積極性,由“要我學”變為“我要學”[2]。這就需要教師真正聯系生活實際講解C語言知識點,并將其融會貫通,用來解決現實生活的實際問題。教師需要用心觀察生活,引導學生從身邊實際遇到的情形中抽象出C語言涉及的概念,建立與之對應的數學模型,并利用計算機知識去解決它。揭開了C語言的神秘面紗,學生體驗到了“成功”的樂趣,更會主動地探索其他未知領域,與之做朋友,用心熱愛它,發現利用它能為人們解決很多問題,以提高學生的學習效率。
2.注重表象與內涵間的聯系,做到知其然和知其所以然。筆者在從事高等院校C語言課程的教學工作中,親身感受到初學者在學習過程中遇到的各種困難,其中一項關鍵因素是不能理解程序代碼與內存存儲狀態之間的聯系,抽象概念與具象事物之間不能建立有效的關聯,難以做到知其然,更不用說知其所以然了。這是因為C語言高度抽象,更加接近人類所理解的自然語言,往往一條C語言邏輯語句對應著多條以0、1為標志的機器代碼,調用CPU、內存等資源完成多個連續的動作[3]。因此,教師在講解知識點的過程中,對于每一條C語言語句不僅要講解其具體的含義、運行機理,還要用圖形的方式將其在內存的變化過程表現出來,使學生具有直觀的感性認識,建立C語言執行語句與內部存儲間的條件反射式聯系。學生只有深刻了解C語言的語句在內存中的變化及執行過程,才能真正靈活自如地運用它。
3.強化基本概念認知,夯實程序編程基礎。端正了學習態度,要想學好C語言,學習方法也非常重要。“千里之行始于足下”、“不積跬步,無以至千里”,任何一件事情的成功,都是從一點一滴慢慢積累的。忽視了根基性的基礎,就相當于建造空中樓閣。與其將時髦的技術掛在嘴邊,還不如把過時的技術記在心里。學習C語言也是如此,必須從最基本的概念學習,且深刻理解基本概念的含義,并舉一反三。例如在學習函數的遞歸調用時,學生往往因弄不清楚當前是第幾層遞歸而弄錯程序運行結果。因此,教師必須鞏固每一個知識點,不能因為它是常用概念而想當然地認為學生自然就掌握了。此外,講解過程要深入淺出,學生應在理解的基礎上記憶,并通過適當的練習題鞏固學習效果。
4.樹立遠大美好愿景,堅定自我學習信念。“天助自助者”,世上無難事,只怕有心人。常常有同學覺得C語言枯燥、難懂,一堂課聽不懂便自我放棄了,覺得自己可能永遠都學不好C語言。教師應幫助學生消除這種消極、頹廢的精神面貌,鼓勵其多嘗試、多花時間上機實踐,助其樹立遠大的理想,堅信道路是曲折的,前途是光明的。同時讓學生知道,不管是從實際專業畢業的要求和將來從事IT行業所必備的技能,還是從培養解決實際問題的邏輯抽象思維能力方面,鑄造攻克艱難、鍥而不舍的精神,樹立必勝的信念,學習并掌握C語言都是一項大有裨益的嘗試[4]。
5.加強理論與實踐相結合,學以致用、用以促學。對于課堂上學習和掌握的知識點,學生若不通過上機實際操作進行深化,那仍然是淺嘗輒止,常落入“一看就會,一做就錯”的尷尬境況[5]。為避免這種眼高手低的情形,理論結合實踐是非常重要的。因此,課下應配以適當的練習及時鞏固知識點,并配以精選的上機實例檢驗所學成果,用理論指導實踐,在實踐中檢驗理論:一方面,課堂中所學的理論需要在實踐中進行檢驗,將其內化為自己的知識結構;另一方面,上機實踐也能幫助自己更深地理解課堂中所學的理論,及時修正理解上的偏差。這兩者是相輔相成,相互促進的。學習C語言最重要的就是應用,即利用它解決實際問題,大幅度提高人們的工作效率,單單停留在理論和理解層面是遠遠不夠的,必須能夠熟練應用在實際生活中。
6.積極擴展知識面,廣泛涉獵其他領域。C語言在實際應用中除了簡單的信息顯示和字符處理外,其中一個重要的應用方面就是財務、金融領域,說直白一點就是跟錢打交道。因此,學生必須掌握基本的財務相關知識,這樣對理解相關業務流程具有極大的幫助,否則在實際工作中很難準確把握用戶的需求,導致理解上的偏差,進而使得辛辛苦苦做出來的產品不能滿足用戶的要求[6]。因此,教師應積極引導學生有意識地學習財務相關的知識,廣泛涉獵其他領域,深入理解國家金融政策和相關業務流程,為畢業后的實際工作打下良好的基礎。這些雖然起不到立竿見影的效果,卻能幫助學生快人一步。學生在學習過程中也會有諸多困難,但教師還是應該鼓勵學生知難而進,擠出時間為自己充電,為以后的工作奠定良好的基礎。
參考文獻:
[1]雷學生,胡多.C語言程序設計教學方法探討[J].計算機教育,2006,(6):41-43.
[2]劉建華,劉穎.C語言程序設計學習指導與練習提高[M].鎮江:江蘇大學出版社,2011.
[3]謝競博.C語言程序設計教學中的問題及改革建議[J].重慶郵電大學學報(社會科學版),2008,20(2):137-140.
[4]秦玉平,馬靖善.“C語言程序設計”課程教材建設與教學方法研究[J].計算機教育,2010,(4):157-160.
[5]湯可宗,舒云.淺談C語言的學習方法和技巧[J].科技信息,2013,(9):183.
[6]劉華艷,張雯雰.高校計算機教育改革探討[J].計算機教學與教育信息化,2010,6(8):30-31.
Initial Analysis of C Language Teaching Methods
DUAN Xue-qing
(Jingjiang College,Jiangsu University,Zhenjiang,Jiangsu 212013,China)
Abstract:C language is an excellent programming language,used more and more widely,it focuses on training students to solve practical problems programming ability and logical thinking ability.This paper regard the existing problems of C language teaching as the breakthrough point,the author puts forward some ideas on the teaching in C language teaching in the process of changing the way,in order to improve the teaching level of teachers,to arouse students' learning initiative.
Key words:C language;teaching methods;programming