2 案例教學法在C語言教學中的應用
案例教學的一般過程是“提出案例-案例分析-要點講解-知識點導入-模仿-應用-拓展”。
2.1 通過案例上好第一次課
C語言教材的第一章是C語言概述,主要講述其發展曆史、特點、應用領域、程序結構、上機操作步驟等。在講授這部分內容時,不需要按部就班,因為計算機語言的發展曆史、特點是純文字的、抽象的、枯燥的,即使演講得天花亂墜,在現階段也是不能被學生所理解的,還可能讓學生產生厭惡、畏懼的情緒。
第一節課就通過案例直接切入主題:讓學生了解計算機解題的步驟、程序的基本組成和框架。
通過簡單的算術運算導入計算機如何解題。譬如計算圓的麵積。先用口頭語言或文字進行描述:先需要給定圓周率、指定半徑;然後才是根據固定的計算公式進行計算;最後是顯示結果。這種一目了然的計算步驟,既展示了解題的算法,又體現了順序程序的基本結構,符合人的思維習慣,是容易被理解和接受的,在此基礎上,現場敲入代碼,添加頭文件、主函數,再進行編譯和運行。以這個實例為基礎,再去認識常量、變量、輸入輸出函數、主函數、語句等。這樣,圍繞一個簡單的例子,既演示了解題算法、也講述了程序的基本框架。上好第一節課,盡早將學生引入編程世界、盡早讓學生開始模仿編程、盡早讓學生建立程序框架的概念是可行的,也是必須的。
2.2 通過案例完成教學內容取舍和組合
以教材和教學內容為基礎,對教學內容進行適當的取舍和組合,起到降低難度、分散難點的作用。
⑴ 單純的語法教學向實用型教學轉變。C語言的語法規則繁多且複雜,初學者很難理解、記憶、明晰和掌握。在講述時可以化繁為簡,隻講授最簡潔、常用的格式,且嵌入到實際的例子之中,而不是單獨去說教。譬如“輸入輸出的格式控製”,在教學中追求簡單和實用,暫時剔除複雜和靈活方麵的內容。即化語法教學向實用化教學方向轉變。
⑵ 及早引入函數的概念和使用簡單的函數。將庫函數、自定義函數與數學上的函數進行類比,譬如“求平方根的函數sqrt”,明晰使用函數的原因和目標,再循序漸進地講述函數的名稱、參數和返回值等專業術語。
⑶ 及早引入指針和地址的概念。指針既是C語言的難點,也是其亮點,更是重點,及早建立指針和地址的概念和關係,了解指針最基本的用法,加強練習分散難點[4]。
⑷ 循環結構的程序設計是教學的重點和難點,必須列舉大量的案例,花大量的時間進行講授和練習。在講授和練習過程中,務必采用手工執行循環體的方式,寫下每次執行時循環變量、中間變量的結果,將循環體執行3到5次,循環體的功能自然能清晰明了。在這項技能掌握熟練之後,再講述單步跟蹤調試。學習過程中切忌“隻動眼不動手”。攻克了循環結構,特別是多重循環這個難關,後續的函數、數組的教學就簡單多了。
2.3 通過案例逐步建立計算思維的思想
求和、乘積,是講述循環時的常例,求和時一般設置和的初值為0,乘積初值為1。必須將這個基本規律傳授給學生,並加以靈活使用。
計算機解題的算法雖然來源於數學,但更是數學知識應用的升華。
例如:如何將一個二進製數字串轉化成十進製數。可以這樣引入:一個5位十進製整數12048如何用數學式子表示?數學上可以這樣寫:1*104+2*103+0*102+4*101+8*100,這要進行多少次乘法和加法(禁止使用pow指數函數進行運算);如果寫成(((1*10+2)*10+0)*10+4)*10+8,需要進行多少次乘法和加法,誰的效率更高呢?由此再過渡到使用數組實現一個二進製數字串轉化成十進製數。