摘要:函數在C程序設計課程中占有非常重要的地位,但對于初學者來說,這部分內容很難理解。本文從函數這部分內容自身的特點及學生的學習狀況出發,探討了使用點面結合的方法,突破函數教學過程中的重難點。
關鍵詞:C程序設計;函數;重難點;突破;點面結合
中圖分類號:G642文獻標識碼:B
1函數的教學現狀
C程序設計這門課程是學生進入大學后的第一門專業課,而函數這一章是安排在基本的數據類型、3種基本的程序結構和數組之后。這些章節的內容是層層遞進的,學生學習過程中雖然存在很多疑惑,但在學習程序結構時會進一步理解數據類型中相關的知識,學習數組時又會對循環、選擇結構有進一步的認識。因此在學習函數之前,學生已經具備了初步的編寫函數的能力。但學生對C程序整個函數的參數、函數的返回值、函數的調用在前面章節都沒有接觸到,在教學過程中可以利用學生已具備的相關知識引出函數這一章的重難點。
2重難點分析
函數這一章的教學目標是讓學生理解C程序中函數的相關機制,能夠編寫出正確的函數,并靈活地使用函數編寫出模塊化的程序設計。因此,函數教學中的重點是函數的定義、函數的調用、函數的參數、函數的返回值。只要把這一部分內容弄清楚了,學生就可以動手自己編寫各種函數了,而且還能夠編寫出由函數組成的模塊化程序。
函數教學中的難點有三個。第一,高屋建瓴地建立函數的概念。了解為什么要使用一個個的函數組成完整的程序,進一步理解函數的作用。第二,函數的調用過程。要弄清楚發生函數調用時程序是按什么樣的流程處理的,以及函數調用過程中涉及到局部變量和全局變量的問題。第三,函數的參數。弄清楚函數中實參和形參的關系后才能夠編寫正確的程序,得到正確的結果。
3重難點突破方法
3.1在備課上下功夫
俗話說:臺上一分種,臺下十年功。要想把課講好,首先就要把握好備課環節。備課環節主要涉及到三個方面,第一是備知識點,第二是備學生,第三是備教材。
函數的教學過程中主要講解函數的定義、函數的調用、函數的參數和函數的返回值幾個知識點。備課時首先針對學生的基本情況確定各個知識點的講解深度。雖然學生具備了函數體的知識,但對函數的定義只是一個模糊的認識,因此還要進行系統的講解才能完全建立函數的相關概念。因為學生的基礎有限,無法在函數的調用教學過程中讓學生完全弄清楚函數的調用過程,所以在函數的調用教學過程中主要講解函數的聲明及函數的調用過程。函數參數過程中主要是形式參數和實際參數的關系問題,這是學生最容易疑惑的地方。學生往往不清楚哪里是形式參數,哪里是實際參數,也不明白值傳遞的意思。函數的返回值相對來說相好理解一些,但也要講清楚return語句的用法及函數返回值的類型。
確定知識點講解的深度之后就要認真地研讀教材。每個老師都對函數這一章的相關知識都了如指掌,但自己明白不一定就講得明白。而且教材(譚浩強編寫的《C程序設計第3版》)的講解順序不一定適合所有的學生,我在教學過程中根據學生的實際情況對知識點的講解順序進行了調整。教材中講解的順序是函數的定義、函數的參數、函數的返回值,最后講函數的調用。我在教學過程中將函數的調用提到了前面,放在函數的定義之后。目的是先弄清楚了函數的定義和調用后,學生對函數的整體有了充分的認識,然后再對函數使用過程中的細節,即函數的參數和函數的返回值做深入地探討,這樣有利于學生形成函數的整體概念,能更快地掌握函數相關的知識。如果在建立整體概念之前就陷入細節之中,很難達到好的教學效果。
3.2精彩引入,事半功倍
教材在引入函數的定義時用了專門的一小節,為了便于理解,教材中引入的兩個函數都是無參函數,這樣很容易讓學生只形成無參函數的概念,到了學習有參函數時很難接受。而且教材中引入的例子沒有真正體現函數的代碼可以重用這一目的,因此我在引入的過程中借鑒了《Java就業培訓教程》一書中的方法,首先讓學生用循環語句實現輸出下面的圖形。

學生馬上就可以用三個循環語句寫出完整的程序。有部分同學很快就發現三個循環結構形式是一樣的,不同的是其中的循環次數。這時候就可以引入函數的定義,使用函數可以很好地解決這個問題,把循環次數作為函數的參數,寫出函數的形式。這時候直接把輸出函數和主函數的形式寫出來,讓學生明白用函數可以將某些功能提取出來,可以實現代碼的重用。
這種引入方法從一個實際的例子出發,由淺入深地引出了函數的定義,可以讓學生一步一步地理解函數的概念,而且可以將函數的參數很自然地帶出來,學生可以很容易地理解參數的作用。程序執行完成后,學生也可以對函數的定義和函數的調用有一定的感性上的認識。
3.3突出重難點,點面結合
函數這一章之所以難理解是因為每個知識點不是孤立存在的,在講解一個知識點的同時還要用到其他知識點的內容,但講解的時候不能一股腦地全部放在學生面前,學生也不容易消化。因此在講解某個知識點的時候,一點要突出這個知識點相關的內容,只有把每個知識點都理解透了才能綜合運用各個知識點。在講解函數定義的時候就是要讓學生學會函數的定義方法,可以先介紹函數的形式,然后讓學生分別確定函數的各個部分。函數定義時主要確定函數的類型、函數的參數,函數體的編寫學生基本已經掌握了。函數的調用部分主要講解函數調用的過程,根據函數的執行結果仔細分析函數的調用過程。函數的參數部分主要講解函數形參和實參的關系,讓學生清楚函數
形參和實參值傳遞的過程。函數的返回值部分要求學生能根據函數的返回值確定函數的類型。
除了要突出重難點之外,還要注意知識的融合,做到點面結合。函數的定義部分也會涉及函數的參數和函數的返回值的問題,因此在這部分也要講解函數參數和函數類型的相關知識,但函數定義部分只講解確定函數參數和函數類型的方法,而在函數參數部分重點講解的是形參和實參的值傳遞過程。這樣在突破重難點的同時也對其他的知識點相關的部分進行了講解,讓重難點進行適當的分散,做到循序漸近,步步深入。點面結合的方式也有助于學生形成整體的概念,提高學生的應用能力。
3.4選擇恰當的例子
合適的例子在函數的教學過程中起著舉足輕重的作用,不僅可以讓學生能夠將所學的理論知識上升到實踐的高度,還能夠讓學生從整體上理解函數的定義、函數的調用、函數的參數和函數的返回值這些分散的知識點。此外,還可以利用典型的例子使學生掌握很多常用函數的使用。引入過程中合適的例子可以起到事半功倍的作用。在講解函數定義時,可以以不同類型的函數為例,讓學生對邏輯類型和各種數值類型函數的處理有一定的理解,便于以后實踐過程中能靈活應用。還可以舉幾個參數個數和參數類型不同的函數,讓學生學會處理實際應用中碰到的問題。
3.5實驗環節不可放松
實驗環節既是對課堂教學效果的反應,也是學生將所學的知識轉化為自己的應用能力最好的時機。實驗環節中既要實現課堂上講解的典型例子,也要適當地加入部分綜合性較強的實例。實驗環節實例既要注意綜合性,還要注意難度不要太大,不要因為學生對前面知識消化不透而影響了函數這一章的學習。我在這一章引入的是簡單算術運算器的例子,這個例子既具有一定的綜合性,而且還非常便于擴充,基礎較好的同學可以做得復雜一些。
4小結
本文對函數教學過程中的重難點進行了深入的剖析,并從備課、課堂教學、教材分析、實驗等環節以及學生的學習情況等各方面分析了如何突破本章的重點和難點。教學過程中應該注意學生的實際學習情況,認真設計自己的教學方案,以便達到更好的教學效果。
參考文獻
[1] 譚浩強. C程序設計(第三版)[M]. 北京:清華大學出版社,2005.
[2] 張孝祥. Java就業培訓教程[M]. 北京:清華大學出版社,2003.
[3] 謝偉增,李瑾. C語言程序設計中的重點:函數與指針[J]. 河南廣播電視大學學報,2003.
[4] 孫玉霞. C語言程序設計中若干問題的探討[J]. 沈陽航空工業學院學報,2004.