摘 要:針對“c語言程序設計”課程的實際情況,根據(jù)高等教育的基本教學原則,對“c語言程序設計”課程的教學原則進行了探索,以達到激發(fā)學生的學習積極性,增強其實際編程能力,提高教學效果的目的。
關鍵詞:C語言程序設計教學原則 編程能力 教學改革
中圖分類號:G642.0 文獻標識碼:A
一、引言
C語言是計算機語言中的一種基本語言,是流行的程序設計語言之一。可作為學習其他語言的基礎,能夠為今后學習其他的高級語言,例如C++、Java等做好鋪墊。目前許多大學的程序設計課程都采用c語言來進行教授。
但是傳統(tǒng)的c語言程序設計課程在教學模式上,過于注重語句、語法和一些細節(jié),基本上是以c語言自身的體系為脈絡展開的,沒有把邏輯與編程解題思路放在主體地位上。如何分析問題和解決問題的思路講的很少,對學生編程的能力,上機解題的能力訓練不夠,更談不上在教學中引導學生研究和探索了。很多學生在學習這門課時感到枯燥難學,學過之后,又不能用之解決問題。
因此如何克服C語言教學中遇到的問題,指導學生學習好這門課程是任教老師的一個重要課題。筆者在教學實踐中,根據(jù)高等教育的教學原則,進行了若干探索。
二、正確的教育理念
要搞好教學必須有正確的教育理念和指導思想。在新世紀,高等教育必須培養(yǎng)人的自我發(fā)展的能力,而不是培養(yǎng)人們?nèi)ミm應傳統(tǒng)世界;重要的是要喚醒學生的力量,培養(yǎng)其自我性、主動性、抽象的歸納力和理解力。
教育的目的是強調(diào)要將知識、能力、素質(zhì)融會貫通于教育的全過程。能力培養(yǎng)與素質(zhì)教育要部分地通過知識的傳授來實施;能力與素質(zhì)在許多場合下是通過知識表現(xiàn)出來的。對理工科的大學生,能力是技能化知識的綜合體現(xiàn)。培養(yǎng)能力,要把知識運用的綜合性、靈活性與探索性作為重要內(nèi)容。因此本課程教學的目的是如何通過教學的各個環(huán)節(jié)培養(yǎng)學生的創(chuàng)造性思維,提高學生分析問題和解決問題的能力。對于非計算機專業(yè)的學生而言,更應明確強調(diào)學生不能滿足于一般知識的掌握,重點應貼近實際應用,以應用為目的,以應用為出發(fā),以提高編程能力為宗旨。例如,借助C語言程序設計的知識載體,傳授基本問題的求解過程和基本思路。同時建立算法意識,培養(yǎng)良好的思維習慣。運用編程的手段培養(yǎng)分析問題和解決問題的能力。
三、教與學
在教學中解決好教與學的關系。教師服務于學生,教師是主導,學生是主體。在大學的教學活動中,教師的主導作用主要是通過引導和點撥等方式發(fā)揮的;學生的主動性、積極性主要是通過獨立地、自主地、帶有探索性地學習來實現(xiàn)的。教師在教學中要注意學生興趣的培養(yǎng),注重激發(fā)學生學習的熱情和積極性。
c語言程序設計對大多數(shù)學生來說是第一次接觸程序設計的概念,肯定覺得新奇。所以要抓住這一點,使他們產(chǎn)生興趣。但作為大學本科生的第一門程序設計課程來說,由于c語言結構較復雜,邏輯性較強,而語法使用上又很靈活,使學生的理解與掌握有一定的難度,所以教師在講授的過程中應突出重點,深入淺出。教學的重點應放在解決問題的思路、算法、編程構思和程序實現(xiàn)上,對具體的語法作為表達工具只講一些主要的內(nèi)容,可忽略一些不常用,關系不大的內(nèi)容。例如對于c語言中的保留關鍵字,逗號表達式,條件表達式,got0語句和標號,編譯預處理等內(nèi)容,是C語言的語法成分,但對于編程而言并不是必不可少的,完全可以使用其它更容易學習的語法方式來實現(xiàn)。而且其作為c語言中特有的語法現(xiàn)象,對學習其它編程語言并沒有作用,所以可以在教學過程中僅作簡單介紹,讓學生了解c語言中有這些現(xiàn)象,而不必深入講解,增加學生學習的難度。同時對于結構化編程,數(shù)組、指針、模塊化程序設計等教學內(nèi)容要做重點的講授,并在講授中穿插常用算法,如冒泡法排序、選擇法排序、順序查找、折半查找等。這樣通過課堂上的案例,課后的練習,上機的實踐,讓學生能切實掌握這些對編程具有重要作用的核心知識,增強學生對算法的理解,提高學生的實際編程能力。
授課過程可以通過相關案例程序引導學生如何將零散的計算機語言要素組裝成程序,借助模仿手段掌握編程技巧、提高編程能力。例如根據(jù)教學知識點,本著“簡潔實用、生動有趣、富有啟發(fā)性和引導性”的基本原則,提出了一個“學生成績管理系統(tǒng)”的案例。這個案例覆蓋了c語言中多數(shù)的重點內(nèi)容,從在選擇結構中簡單判斷輸入學生成績是否合格,講授多分支時將百分制和等級制之間成績的相互轉化,循環(huán)結構時可以用學生成績平均分的計算為例,數(shù)組時講授學生成績的排序,二維數(shù)組時的多科成績計算平均分,在結構體時可以提出完整的包括學生姓名、學號、各科成績的數(shù)據(jù)結構,直到文件時可以講授保存和從文件輸入已有檔案,最終形成一個較為完善的學生成績檔案管理系統(tǒng),在完成教學內(nèi)容的同時也結束了一個具有實際意義的案例。
另一方面提高學生學習的主動性,讓學生在親身學習、實踐中品嘗艱辛和樂趣,這樣才能使得教與學兩方面配合默契,改善效果教學效果。可以說調(diào)動學生的學習主動性,是學生能學好C語言的前提。例如上機實驗是c語言程序設計課程中必不可少的環(huán)節(jié)。學生可以通過上機實踐操作,來進一步理解和掌握知識。所以在實踐課中,教師要充分調(diào)動學生的積極性和主動性,讓學生學會如何將所學的c語言理論變成一個個實實在在的程序,把學習的主動權還給學生,讓其真正地當學習的主人。當然,主動權交給了學生并不等于削弱了教師的主導作用。教師要根據(jù)學生的學習情況規(guī)定不同的C語言題目,使所有的學生都能通過編程進一步提高對知識的掌握。教師在這個實踐的環(huán)節(jié)中一定要讓所有的學生都能夠自己獨立地進行編程,哪怕是最簡單的,也要讓學生體會到編程的樂趣,產(chǎn)生學習的積極性和主動性,這樣能夠才能為理論教學打下良好的基礎。
四、強化實踐
教學方式上,強調(diào)實踐環(huán)節(jié)。學生能力的培養(yǎng)依賴于實踐。除了布置適當?shù)恼n后作業(yè)鞏固所學,激發(fā)學生的思考以外,還將實踐上機編程作為重要的切入點。讓學生動手動腦,更多地上機實踐才會真正地掌握編程的思路,和獨立解決問題的方法。例如在有關數(shù)組和指針的上機實驗中,采用了分糖果問題。這一問題并不復雜,解決它可以利用數(shù)組或指針,根據(jù)題意的描述,直接按照分糖果的過程來處理即可。解決這樣的問題,不僅使學生加深對數(shù)組及指針的掌握,也使得他們能夠進一步了解采用編程來處理實際問題的方法。
最后課程設計則可以擴展學生的知識面,增強學生編程的自信心,進一步提高學生分析問題,解決問題的能力。為此在課程設計中選擇多個難易不同,具有典型意義,并能引起學生興趣的題目讓學生自行選擇。由于在設計中學生是根據(jù)自己對c語言掌握的程度和愛好來選題,能激發(fā)他學習的主動性和積極性,通過課程設計的實踐真正熟練地掌握和運用c語言的編程技巧。以學生通訊錄管理軟件的編寫為例。一方面這一題目具有一定的現(xiàn)實意義,在生活中都可以使用,能夠引起學生的興趣;另一方面通過編寫這個題目的軟件,學生可以更深刻地理解結構體、數(shù)組和指針、文件等方面的知識,更熟練地運用排序、查詢、插入等算法,并能了解實際信息管理系統(tǒng)的開發(fā)流程,為今后作軟件開發(fā)打下了一定的基礎。
可見從課后練習、上機實驗到課程設計,整個的實踐環(huán)節(jié)使學生不是機械地學習了語法現(xiàn)象,而是掌握了編程的方法,達到了培養(yǎng)學生分析問題、解決問題能力的目的。
五、結論
傳統(tǒng)的C語言教學存在著不足,針對這樣的情況,根據(jù)高等教育的教學原則,對C語言教學中的教育目的和教育理念、教與學的關系、實踐環(huán)節(jié)培養(yǎng)能力等方面的教學原則進行了探索和實踐,獲得了更好的教學效果。
經(jīng)過教學實踐,筆者感到在教學中還存在不少問題,例如如何建立一個因材施教的機制,創(chuàng)造條件,讓每個學生都有更廣闊的發(fā)展空間;怎樣建立良好的督促機制,使每個學生都能真正落實動手實踐。教學改革的探索是沒有止境的,今后仍需不斷努力,使得C語言程序設計的課程教學更上一層樓。
參考文獻
[1]譚浩強,c程序設計教程[M].北京:清華大學出版社,2007.2—5
[2]stephen Prata,c Primer PJus(第五版)[M].云巔工作室,譯,北京:人民郵電出版社,2005,1—14
[3]賴曉晨,程序設計課程創(chuàng)新教學模式探索[J].中國大學教學,2008(7):42—44
(文字編輯、責任校對:王麗華)