C語言函數教學方法

導語:針對C語言中函數的重要性及我校學生在學習過程中對函數的掌握情況,總結出一套實用的c語言函數教學方法。下面就由小編爲大家介紹一下C語言函數教學方法,歡迎大家閱讀!

C語言函數教學方法

  1序言

《C程序設計基礎》是我校工科非計算機專業的一門必修課程,目的是使學生掌握程序設計的基本方法,並形成正確的程序設計思想,培養學生用計算機解決本專業問題的能力,爲後續課程的學習打下良好的基礎。

但在教學過程中發現,學生在學習函數這部分的知識時非常吃力,很多學生對此掌握的並不好,不能靈活的運用函數進行程序設計,主要的原因是所用教學方法效果較差。針對此問題,筆者在深入研究C語言函數教學方法的基礎上,通過詳細分析教學過程中學生的表現,並積極與學生溝通,總結出適合我校學生的函數教學方法,首先通過生活中常見的例子介紹函數的概念,並精心設計函數的引入問題,以此來闡述函數編程思想,然後重點講解函數的定義和調用方法,並通過實例強化學生函數設計的方法,最後對函數的.設計方法進行總結。

  2函數思想的引入

數學中的函數與C語言中的函數有什麼區別?數學中的函數側重於自變量和因變量之間的映射關係,而C語言中的函數主要側重於功能的實現。

以計算13!爲例,通常的計算方法是13×12×……×4×3×2×1=6227020800,但也會發現計算量非常大。熟悉計算器的學生也知道,計算器上有一個“n!”按鈕,我們只需按“13”,再按“n!”,就可以得到結果6227020800。兩種計算方法中筆者更喜歡後者,因爲計算器中“n!”按鈕可以協助完成階乘計算,換言之,“n!”按鈕可以完成計算階乘的功能,與c語言中函數的概念非常接近,因此“n!”按鈕就是將求階乘的函數封裝起來了,我們甚至可以說計算器就是將若干個函數封裝起來的一個設備。所以通過計算器來理解C語言中函數的概念就比較容易了。有了函數,就可以多次使用它,就如同有了“n!”,不僅可以計算13!,也可以15!,17!等等。C語言中的函數就是功能獨立的一段代碼,能夠避免重複代碼,降低出錯率,提高程序的可讀性。函數機制的出現,也使多人共同開發大規模的程序成爲可能。

進而引導學生回顧教學中以前學過的主函數和C語言中的一些常見的庫函數(如sqrt()),總結這些函數的共同點,標識符後面都有一個括號,並以一到兩個子函數爲例,講解、編譯、運行,幫助學生更好地認識函數。

在學生對函數有了基本的認識之後,給學生說明並非所有的函數都是現成的,有很多是需要用戶自定義編寫的――用戶自定義函數。在教學中,筆者認爲函數的分類最重要的標準就是函數的使用方式,根據函數的使用方式可以將函數分爲數值計算函數(有返回值,類型不是void)和任務執行函數(無返回值,類型爲void),數值計算函數因爲有結果,使用時一般當做表達式的一部分或者函數參數,任務執行函數由於沒有結果,使用時一般獨立成一條語句。

  3函數的定義和調用

3.1採用要素提取法完成函數定義

C語言函數設計主要圍繞函數類型,函數名,函數形式參數,函數返回值四個要素展開。

對於函數要素的教學部分,重點講解函數的定義與調用。函數定義的一般形式爲:

類型說明符函數名(形式參數表)

{聲明部分;

語句部分;

return(返回值);}

對函數定義部分還需要掌握的是:(1)類型標識符:函數返回值類型,即結果類型。(2)函數名:合法標識符是函數的唯一標識。(3)形式參數表:由類型和變量名組成。(4)return(返回值):返回結果。

函數定義中的四個要素的提取方法可以參照用計算器求13!來說明,(1)類型說明符。13!的結果是6227020800,類型說明符就是根據結果的類型來確定,爲int。(2)函數名。函數名是函數的唯一標識,在用計算器求13!的過程中,函數名就相當於“n!”按鈕,這裏用factorial來表示。(3)形式參數表。當計算13!時,形式參數表就是用來接收13的,假如求17!,那形式參數表就用來接收17,這裏可以得出參數數量爲一個,類型爲int,因此用int x來定義形式參數。(4)返回值。13!的結果是6227020800,返回值就是6227020800。

以求階乘爲例,定義函數:

intfactorial(int x)

{int s=1,i;

for(i=1;i<=x;i++)

{s=s*i;}

return s;}

3.2函數調用及虛實結合的過程

由上述函數定義可以看出,函數定義並沒有具體的結果,原因在於x的值未定,就如同在計算器上只按下“n!”沒有任何意義一樣。因此,函數的定義只是實現了函數的功能,而最終的目的在於使用函數,即函數的調用。

在函數的調用過程中,還需要重點講解實際參數和形式參數的區別,以及整個虛實結合的過程。在使用函數時後面括號中是具體的值,即實際參數。函數定義中括號中的參數是形式參數,沒有具體的值。在發生函數調用的時候,形式參數用來接收實際參數的值。如:

voidmain()

{int a=13,c;

c=factorial(a);

printf(“%d的階乘爲:%d/n”,a,c);}

實際參數是a,有確定的值爲13,形式參數爲x,用來接收a的值。參數傳遞過程如圖2所示:

在函數定義和調用中需要重點強調的地方:

1)函數名是函數的唯一標識。2)函數必須先定義後使用。3)如果函數爲非void類型,函數中必須有return語句。4)普通變量傳遞時爲單向傳遞,即由實際參數傳向形式參數。