張念魯 青島遠洋船員職業學院
C語言程序設計是一門計算機專業重要專業基礎課程,但讓學生真正掌握這門語言卻一直是一個教學難題。本人多年來從事C語言程序設計課教學工作,有一定的體會,現將較為成功的教學方法總結如下,與同行切磋。
C語言里有很多內容孤立講解不易理解,結合與之相關聯的內容則有利接受。相當一部分教學內容,需結合計算機工作原理才能讓學生清楚C語言的處理細節。為此,要考慮到內容關聯性,授課中穿插講解。例如:在講授變量定義,要同時講解內存單元和地址知識,指出變量定義的本質就是分配內存單元,并畫出內存分配示意圖。讓學生清楚不同類型變量所占內存單元字節數不同,并說明計算機對內存單元訪問根據地址進行。變量名記錄著分配給它的存儲單元地址,且可以通過&操作符取出,同時結合實例說明地址就是指針。有了這些知識準備,學生在學習指針內容時就會更好理解和接受。
C語言內涵主要是程序設計思想。因此當學生掌握了C語言基本語法知識后,從順序程序設計開始,所有內容講解和引出可采用“任務驅動”法。即每單元知識點都以實例引入。首先分析列出解決問題的思路即算法,對于算法的每一步都用相應的語句實現,若用現有知識不能解決,便引入新的知識點并結合實例講解相關內容,直至整個程序的全面實現。相應實例的選用基本是生活中能夠實際用到或與課程設計相關的問題。第三、解決問題要用到輸出和輸入語句是新內容,分別進行講解,最后給學生講清楚交換的思想后就可以寫出完整程序,新知識學習變成一個很自然的過程。又如對結構體內容的教學,首先是提出任務,處理學生綜合測評信息;然后分析任務,需要存放學生信息引入構造結構體定義;其次分析算法后講解結構體的處理方法。這樣,在解決問題過程中就已經融入了結構體部分所有知識點,并且引入typedef的內容。
在教學中,學生思維方法的培養最為關鍵。C語言解決的問題種類并不太多,常用的算法也限,故掌握不同類型問題的解決方法尤為重要。如,很多程序都要求一批數的和,這類問題就兩種循環算法:一是先產生一個加數項,累加到累加器中;另一種是先累加一個加數項,再產生下一個加數項,并通過1+2+3+4+…+100經過多次修改變換,最終變成求∏=(1-1/3+1/5-1/7+…)/4的題目。算法相同,程序也是稍做修改而得,學生解決這類問題就變得相對簡單。又如,講解對數組的處理問題時,采用畫內存單元分配圖的方法,讓學生了解到算法如何貼近生活、并非是憑空想象。
教學生使用通用函數設計,建立自己的庫函數,節省編程時間。講解數組部分內容時,大量題目需要講解,例題講解采用自編通用數組輸入和輸出,程序全部采用函數實現以節省時間。這樣主程序就成為輸入數組、輸出數組、處理數組、輸出數組的樣式。每一題目只需要編寫處理數組的部分,節省出大量時間用于分析算法。
有些學生接受能力較強,對本課程學習很有興趣,這些同學會起到了很好的示范作用。對這些同學給予單獨指導,讓他們跟著老師做指導幫助其他同學。他們意識到幫同學和自己對本課程學習相得益彰,積極性得以充分調動。發揮他們的作用可幫助其他同學解決很多本課程的學習問題。
抓好實踐教學環節。學習C語言,上機調試實驗最為重要。所有的編程題目都要求學生通過上機調試后才以作業形式上交。教學中所使用的實驗指導書不含參考程序,實驗題目全部和課堂所講例題相似,學生找不到參考答案,必須自己編寫。每次上機時都抽查題目準備和完成情況并做記錄。所以每次實驗學生都會精心準備、認真調試,學習效果自然提升。
考核辦法要確保學生重視每個環節。本課程考核采取形成性考核方式,課程設計成績單列,分數比例為:課程總評成績 =平時考試(30%)+期末考試成績(70% ),平時成績由平時表現、作業和上機實驗構成;期末成績由理論和編程構成,采用上機考試方式 。形成性考核具體內容及評分標準為:平時學習表現和期末考試按比例生成。
加分項目:正確回答問題一次加 2分,主動回答問題一次加5分,在課堂上能起積極引導作用加5分,主動演示程序加5分。
作業( 100分):作業保質保量完成滿分,缺一次作業扣6分,出現拼寫等粗心導致的錯誤每個扣一分,出現語法錯誤每個扣2分。
上機實驗( 100分):( 1)準備題目得20分,上機前認真準備題目,缺一次扣2分;(2)按題目單要求,完成一題目得 2分,所有程序全部調試通過、功能實現得60分;(3)實驗報告完整規范得20分;報告中有源程序清單的15分,說明在程序編制中的難點及解決辦法得5分。
C語言教學必須做到因材施教,本文探討的教學方法均來自于本人教學實踐,在針對本院學生的教學中取得了顯著的教學效果。
[1]陳廣紅.C語言程序設計[M].武漢大學出版社,2014
[2]Peter Van Der Linden著.徐波譯.C專家編程[M].人民郵電出版社,2002