摘要:C語言程序設計是計算機專業必修的一門非常重要的專業基礎課。也是一門實踐性很強的課。通過這門課程的學習,不僅培養了學生用編程解決實際問題的能力和設計算法的能力,也為學生的后續課程打下基礎。本文詳細分析了在實際教學過程中存在的一些問題,并從幾個方面提出了一些可行的改進方法和建議。
關鍵詞:C語言 教學改革 改革建議
1、引言
C語言程序設計是很多理工科專業。尤其是計算機專業學生必修的一門非常重要的專業基礎課。目前全世界的學術界和工業界都在廣泛使用C語言編程,大部分的高等教育機構也在使用,C語言也是程序設計類課程的首選語言和用于計算機教育的主要語言。學生通過這門課程,可以掌握程序設計的基本方法。并逐步形成正確的編程思想,能夠掌握C語言的編程技巧并具備一定的程序調試能力,這些都可以讓學生畢業后很快地投入實際的工作,并為學習C++語言和其他面向對象語言打下扎實的基礎。所以如何完善C語言程序設計的教學體系、改進教學方法、保證和提高教學質量和教學效果都是值得我們深入探討和研究的問題。
2、C語言教學現狀分析
C語言程序設計的教學目標是全面系統地介紹C語言的基本語法、掌握C語言程序設計的主要過程和方法,同時對C語言中的數組、函數和指針的使用有一個深刻的認識,能開發具有特定功能的程序,解決一些實際的問題。但大部分的高校C語言程序設計課程的教學效果都不盡如人意。主要存在以下幾個方面的問題:
(1)不具備相關的專業基礎。由于C語言程序設計是針對低年級學生的一門專業基礎課,學生們普遍認為這門課程難度大。聽不懂,尤其是剛入學的新生,很多人對最基本的電腦操作都很陌生,對C語言程序設計的學習就更困難了。由于沒有一些最基本的專業思想。學生對地址、內存等基本概念的理解不深刻,從而導致了對數組、指針、結構體這三種數據類型的認識和理解困難較大,就是理解了也不能充分應用到編寫實際的程序當中:對函數、函數的參數、函數的返回值、函數的調用和遞歸調用等理解也很吃力。盡管教師費盡唇舌,學生仍然理解得不透徹。致使教學效果不理想。這樣無疑對學生后續專業課程的學習設置了一道屏障,不僅對C語言程序設計課程的學習興趣大大減弱了。同時也對自己能否學好所在專業也產生了懷疑。
(2)實驗方面,實驗機會少,導致動手能力差。受現有教材的影響,在該課程的前幾次課,教師一直在講純粹的語法知識,學生看不到一個完整的程序,也不了解這些語法和編程有什么關系,逐漸就喪失了學習興趣。最終導致學生不愛學,更學不好;同時由于很多學校的學時設置存在理論課時多,實驗課時少的情況。不僅不能滿足培養學生動手能力的需要,而且會導致理論和實驗的嚴重脫節。無法讓學生學以致用,極大地限制了學生編程思維的形成和編程能力的提高,所學習到的知識也不能轉化為實際的操作能力。
(3)學生的學習風氣和習慣方面,整體學風較差。學習習慣不良。現在學生學習的積極性普遍不高,學習目標和學習動機不明確。尤其是低年級的學生。學習的主動性不高,同時也不知道該怎樣自學,怎樣通過查閱資料的形式進行課下學習。由于課時的限制,教師課堂上所講的內容畢竟有限,不可能面面俱到,尤其是上機實驗更不可能每個學生都照顧到,這就要求學生課下能積極主動地學習和上機實驗,但很少學生能做到。這就導致了學生學習效率和效果低下。
3、改進的方法和建議
針對以上現狀和實際教學中存在的問題,我們必須對C語言程序設計的教學進行有效改進。在理論教學、實驗教學、樹立學生良好的學習習慣等方面提出可行的、更加科學更加有利于學生課程學習的方法和建議。
(1)補充介紹涉及到的基本概念。對于剛入學就學習C語言程序設計的新生或低年級的學生而言。他們的專業知識較薄弱。或者說不具備什么專業知識。這就要求教師在上課的時候要充分考慮到這種情況,對于你認為很容易理解的知識和概念也要進行詳細的介紹,而且針對涉及到的一些地址、內存、變量名稱、變量值等基本概念要結合具體的實例或者是生活中存在的實例進行詳細介紹,這樣形象化的實例對于學生理解抽象的專業概念具有很好的教學效果。
在實際的教學過程中,大多數的學校都會運用多媒體課件進行輔助教學,多媒體輔助教學不僅僅是板書和課本概念的另一種展示形式,更可以通過多媒體來演示C程序運行的過程,教師可以在課堂上通過單步調試程序或在程序執行的過程中設置斷點來加強學生對函數、函數的參數和函數的調用等抽象概念的理解。通過一步一步演示程序的執行過程和觀看執行結果,不僅可以加深學生對概念理解的深度,而且可以充分調動學生學習興趣和學習積極性。
(2)加強學生的實驗。任何一門編程課,離開了實驗操作就無從談起,即使語句寫得再嚴謹,算法設計得再巧妙。沒有上機的調試和運行。所有的一切都是“紙上談兵”。針對實驗的重要性,我們可以合理調整實驗課的課時量。并且讓實驗課和理論課的授課時間盡量達到同步,這樣有利于學生在學習理論知識的同時,通過實際操作來消化和運用所學到的知識,并且極大提高學生調試程序的能力和實際應用能力。
當然,我們還可以考慮嘗試新的實驗教學方式:
實驗分組制
傳統的實驗課一般是學生單獨完成實驗,這種實驗機制多少會對基礎差的、實際操作能力弱的學生造成一種緊張和排斥的心理,而對基礎較好和實際操作能力強的學生造成一種優越和驕傲的心理。針對這種情況,教師可以根據學生的實際情況,按組劃分,有針對性地分別設計和布置不同的實驗內容,學生可以根據學習程度的好壞,有選擇地做實驗。同時每組安排一個操作能力強的學生作為組長,予以幫助。通過這種協作學習的方式,學生為了達到小組學習目標,組員之間通過對話、討論等形式對問題進行討論和解決,以期獲得最好的學習效果。這種學習方式不僅能夠提高學生對實驗課的積極性,增加學生的學習興趣。而且可以加強學生之間的交流溝通能力和團隊合作精神,而這種能力和精神對于軟件開發行業來說是一個非常重要的職業素養。
實驗內容的多樣化。
對于初學者來說,還沒有建立起編程的思維,編寫的程序可能會出現較多的錯誤,當一個簡單的程序屢次調試不通的時候,難免會打擊學生的積極性,增加學生的挫敗感。如果教師能在實驗的初期改變傳統的從頭到尾編程的這種實驗題型,改為先給出程序的開頭和結尾,讓學生填寫程序的主體部分;或者讓學生填寫一個For循環當中最關鍵的部分以完善整個程序的功能,這樣逐漸地培養學生的編程思想和編程能力,對于學生循序漸進地學習第一門編程語言是非常有好處的。
(3)改善教學方法、培養學生的學習習慣。傳統的授課方式一般只注重知識的傳授,沒有強調學生的學習主動性和積極性,而學習的主動性、積極性和自學能力對于大學生來說是非常重要的。所以教師在C語言程序設計的教學過程中,是否能夠充分發揮和調動學生的積極性和主動性是一個非常重要的教學環節。在初學時,教師可以在授課結束時針對本次授課內容提出一些思考題,讓學生利用課余時間去思考和討論,也可以通過查閱資料的方式,尋找答案。教師在下次課堂中抽出幾分鐘組織學生發言和討論,這種方式不僅可以讓學生獲得很多的課外知識,而且可以充分調動學生的學習熱情和學習積極性,培養學生的自學能力,尤其對于學有余力的學生,要提供高于課堂學習難度的擴展空間,鼓勵他們進行自學,并給予方向性指導,讓他們超前學習。
(4)重視算法和編程思想的建立。在教學過程中,我們發現學生在學習C語言的過程中,經常出現能夠理解書上的例題,教師的課堂講授也很清楚,但面對具體的編程題目就感到無從下手的問題。這些都是學生沒有掌握如何分析問題和設計算法的能力,同時對于初學者來說閱讀的代碼量也較少,沒有建立起編程的思想。因此在教學過程中應著重對算法進行多方面的講解。尤其是對于一些經典的算法要加以總結和歸納,讓學生進行重點學習和記憶。學生在掌握這些算法的基礎上,進行一些有針對的實驗練習,并在此基礎上加以延伸和擴展,就可以逐漸地培養起一種編程的思維。
同時,要想較快地提高編程能力、培養編程思想,讀程序也是一種有效的學習途徑,學生對于每章的所有例程,都仔細地研讀,直到每一行都理解了。然后找幾個相關的編程題目,自己試著寫出這段已經讀懂的程序,如果寫不出,再回頭繼續研究例程,如此反復。直到面對相同類型的題目,都能很快地給出代碼。
4、結語
C語言程序設計的教學目的。不僅僅是要掌握C語言的基本規則和語法,更要幫助學生建立起編程的思維,提高他們用編程解決實際問題的能力和設計算法的能力。對于C語言程序設計這樣一門專業的基礎骨干課,它的課程教學的討論還將繼續。作者只是根據自己的教學經驗和體會,提出了實際存在的問題和改進辦法,并在實際的教學過程中得到了驗證,不足之處還會繼續探討研究。