[摘 " " " " "要] "本文對項目式教學在《C語言程序設計》課程中的實踐進行分析,通過實施一個個完整的項目來組織教學活動,在課堂教學中注重將理論和實踐有機結合起來,改變“教師講,學生聽”的被動教學模式,創新學生主動參與、自主協作、探索創新的新型教學模式,充分挖掘學生的創造潛能,提高學生解決實際問題的綜合能力,進一步提升教學效果。
[關 " 鍵 " "詞] "程序設計;項目式教學;實踐能力
[中圖分類號] "G424.1 " " " " " "[文獻標志碼] "A [文章編號] "2096-0603(2015)02-0046-03
《C語言程序設計》是計算機專業及相關專業重要的專業基礎課,其目的是培養學生的程序設計理念、掌握程序設計的基本方法,為后續課程(數據結構、面向對象程序設計、操作系統、編譯原理和軟件工程等)打下堅實的基礎。該課程是一個實踐性、就業導向性明顯的學科,與實踐結合較強,要求學生具有較好的思考和動手能力。
一、采用項目式教學的初衷
在傳統的教學模式中,教學方法相對單一,雖然有部分實驗環節,學生能掌握其中的知識和技能,但這些分立、不連續的教學過程,對學生的應變能力、創新能力、綜合能力的培養難以提供一個理想的時空。而這些練習與實踐,由于大多數只做模仿性的學習,并不能讓學生真正理解并運用所學知識去解決實際問題,因此也難以使學生得到職業能力的鍛煉,遠遠不能達到社會對人才的要求,學校的教學與社會生產實踐往往出現脫軌現象。
在《C語言程序設計》課程中引入項目式教學,以學習任務為核心、工作過程為主線,在課程教學中選擇一個核心課題,并為學生設計一個或多個實際工作項目,組織學生圍繞項目展開學習,從而讓學生在該過程中不僅掌握了課程所要求的知識和技能,而且鍛煉并培養了學生分析問題、解決問題的能力。將學習過程與工作過程統一起來,徹底改變了以往“教師講,學生練”的傳統計算機課教學模式。整個教學過程教師和學生共同參與,學生活動由教師全程指導,教師從知識的傳遞者轉變成了學生學習的促進者、組織者和引導者,有利于培養學生的實踐能力。此外,學生在完成項目的過程中要解決如何完成項目的問題,必然要研究理論知識,結合理論分析項目的實現過程和方法,從而達到了理論和實踐的有機結合。
二、精心設計的項目實例
結合高職學生的特點,將項目式教學恰當應用于課堂,從而有效地發揮學生的創造性,更好地將已學到的知識應用于實際工作中,培養學生的實際操作技能,從而達到教學目的。經過多年的教學實踐,筆者將本課程劃分為六個項目:
項目一涉及知識點:1.C程序的結構;2.C的基本數據類型;3.常量的類型,能判斷正確性;4.變量的命名規則,能對變量正確定義;5.C程序的工作環境的使用;6.算術表達式、賦值表達式、逗號表達式;7標準輸入函數和標準輸出函數;8.順序結構程序的設計。
項目二涉及知識點:1.關系表達式、邏輯表達式、條件表達式;2.if語句的不同形式;3.if語句的嵌套;4.switch語句;5.選擇結構程序的設計。
項目三涉及知識點:1.while語句;2.do-while語句;3.for語句;4.循環的嵌套;5.break語句和continue語句在循環中的作用;6.單層循環結構程序的設計。
項目四涉及知識點:1.一維數組的概念、定義、初始化、引用;2.二維數組的概念、定義、初始化、引用;3.字符數組的概念、定義、初始化;4.一維數組的設計。
項目五涉及知識點:1.函數的定義方式;2.函數參數和函數的值;3.函數的調用。
項目六處理一些綜合問題:1.百雞問題;2.漢諾塔問題;3.迷宮問題;4.貪吃蛇游戲;5.掃地雷游戲。
三、認真組織的項目教學過程
整個教學過程遵循以下步驟:【任務要求】→【觀察認識】→【預備知識】→【任務解決】→【中期檢查】→【成果展示】→【任務拓展】。接下來筆者以項目三中《任務一:求1+2+…+10》為例來展示一下項目教學過程。
【任務要求】
任務一:求1+2+…+10。
【觀察認識】
#include "“stdio.h”
main( )
{ "int sum;
sum=0;
sum=1+2+3+4+5+6+7+8+9+10;
printf(“%d”,sum);
}
學生觀察:發現利用已有知識可以完成這個任務。
教師提問:如果將10改為100,怎么辦?
學生思考:sum=1+2+3+4+5+6+7+8+9+10+…+99+100,太多了,寫不完。
教師引入新知識點。
【預備知識】1.教師講授:while語句、do-while語句、for語句三種循環結構的一般形式、特點及應用場合。2.學生聽講:不需立即掌握,只需認清三種語句的格式及應用場合。
【任務解決】
1.教師與學生共同分析
S0:sum=0,i=1
S1:sum=sum+i,i=i+1
S2:sum=sum+i,i=i+1
S3:sum=sum+i,i=i+1
…
S9:sum=sum+i,i=i+1
說明:每一步都是兩個數相加,加數總是比上一步加數增加1后參與本次加法運算,被加數總是上一步加法運算的和。用一個變量i存放加數,一個變量sum存放上一步的和。即:每一步都是sum=sum+i。也就是說sum既代表被加數又代表和。
設計如下:
sum=0,i=1(循環初值)
sum=sum+i,i=i+1(循環體)
如果i小于或等于10,重復執行循環體,最后sum中的值就是1+2+…+10的值。
2.得出結論:循環語句的執行過程:(1)定義變量:i:加數(自增) "sum:被加數、求和的結果;(2)設定初值;(3)求和;(4)輸出結果。
3.學生組合程序
采用三類語句分別實現1+2+3+4+5+…+10(由于篇幅有限,程序略)。在學生編寫過程中,教師巡回觀察,個別學生出現問題,由小組討論解決,小組不能解決的,由教師引導,學生討論解決。
【中期檢查】
中期檢查是制作項目的重要組成部分,一方面可以激勵學生,增強學生的自信心,另一方面可以及時發現學生操作上的失誤,及時糾正,以免學生走歪路,耽誤學習進程。中期檢查主要分為以下三個方面:1.學生自查:學生上機調試程序,通過編譯來檢查語法問題,通過連接和運行來檢查程序運行結果。2.小組互查:小組成員相互檢查,指出問題。3.教師活動:將學生在任務實施過程中出現的問題歸納整理,在課堂上與學生共同討論。
【成果展示】
任務完成之后,學生根據評價表上的評價指標,進行組內自評與互評,各組推出一個代表作品在班內進行展示。其他小組派代表進行評價。同時,教師對各組情況進行總評,指出亮點和不足。通過三維評價,不僅讓學生體驗成功的自豪感,還鍛煉了學生的口頭表達能力。
【任務拓展】
1.若省去i++;語句,會怎樣?2.求10!3.求1+2+3+4+…+n,n由鍵盤輸入。通過任務拓展,既讓學生對所學內容進行鞏固,更是對知識點吸收內化的過程。
四、教學反思
1.在《C語言程序設計》教學中,依托原教材的基礎知識、結合學生的實際情況,制訂合適的教學目標,提出符合學生水平的實際項目。以項目任務為教學單元,根據教學內容,打破原有界限,將各個知識點進行分解、組合,這樣更容易激發學生的學習積極性。2.在教學實施過程中,發揮學生的主體作用、教師的指導作用。通過分組合作的方式,學生消除了畏難情緒,培養了學生的團隊協作精神。3.采用項目式教學法,將分散的知識點綜合起來,整個學習過程就不再是不假思索地照搬照抄程序,而是對知識的深入理解,并根據實際項目靈活使用知識,從而提高了學生分析問題和解決問題的能力,最終實現了提高學生實踐能力的目標。
參考文獻:
[1]譚浩強.C語言程序設計:第三版[M].清華大學出版社,2005.
[2]王春燕.項目式教學的研究與應用[J].計算機教育,2007(09):10-11.