摘要:C語言是由若干個函數組成的,函數也是C語言程序設計的重點和難點。本文從教學實踐出發,采用實例引導和類比相結合的方法,從數學角度入手設計了一種C語言函數教學模式。實踐證明,這一模式在教學中取得了較好的效果。
關鍵詞:函數;C語言;教學方法
1、引言
C語言是一門面向過程的編程語言,在實際操作中,函數在C語言程序中占據非常重要的地位[1]。在C語言的教學中發現,學生在學習函數部分知識時非常吃力,很多學生掌握不好,不能靈活的運用函數進行程序設計,沒有建立“模塊化”編程思想。然而C語言的這種模塊化思想可以將復雜的大任務分解為若干個相對獨立的子任務,這些子任務稱為“模塊化”函數,通過函數之間的調用解決實際中的復雜問題[2]。因此,學生只有靈活掌握函數的運用,才能為以后課程的學習鑒定堅實的基礎。
2、函數思想的引入
數學中有很多的公式,我們在解決問題的時候根據需要直接套用相應的公式就可以很簡單的解決問題。我們以求長方形面積為例,長方形的面積公式為長乘以寬,所以我們只需要知道長方形的長和寬的值是多少就可以非常簡單的計算面積,這個公式與C語言中函數的概念非常相似,通過數學公式來理解C語言函數的概念就比較容易。有了函數就可以多次使用它,就如同有了長方形面積公式,就可以計算任意邊長的長方形的面積一樣。C語言中的函數就是功能獨立的一段代碼,能夠避免代碼重復,提高程序的可讀性。
有了前面的講解,再通過編程舉例讓學生更好的理解和認識函數。例如,我們從數學庫函數入手,讓學生編寫程序完成從鍵盤輸入一個正整數,計算這個整形數的平方根,并進行輸出。計算平方根需要用到數學庫函數sqrt(),通過數學庫函數,總結函數基本特點,讓學生初步認識函數。在學生初步認識函數后,讓學生知道光依靠系統提供的函數來解決問題是遠遠不夠的,這就需要我們根據自己的需要來編寫函數-用戶自定義函數。
在編寫函數時,哪些定義成函數的參數,哪些定義成函數的返回值以及如何定義函數的返回值類型,對于初學者這些部分比較難理解和掌握,我們可以通過學生已經掌握的數學知識,直接從題目上獲得相關信息。
3、函數的定義和調用
3.1函數的定義
C語言函數設計主要包括返回值類型、函數名、函數形式參數、函數返回值等要素。
函數定義的一般格式為:
返回值類型 函數名(形參列表)
{
變量聲明部分;
語句序列部分;
return(返回值);
}
想要設計一個自定義函數,必須按照函數定義的格式來定義,還要解決好函數定義中涉及的四個要素。解決這些問題實際上可以從題目上得到相應的信息:題目中要求解的結果可以看作函數的返回值,題目中的已知條件可以作為函數的參數,函數名是函數的唯一標識,需要滿足標識符的命名規則。
以求長方形的面積(假定長方形的邊長為整形)為例,通過舉例說明如何定義函數。(1)函數名。函數的功能是求面積,為了能見名知義,我們給函數起一個名字。(2)函數參數。我們要實現求長方形的面積,需要知道幾個數據才能求出和?知道一個整數能求面積嗎?所以需要知道這兩個數據才能求。這兩個數據是什么類型?在題目中已經明確說明是整形,因此參數部分就可以確定了。(3)返回值。函數中求出的面積就是返回值。(4)返回值類型。根據返回結果也就是面積的類型來確定。
通過上述引導,學生在回答完以上問題之后,基本上能編寫出這個函數,最后帶領學生共編寫參考答案,讓學生思考自己編寫的函數和參考答案有什么不同之處,哪種寫法更好。
函數定義:
int area(int a, int b)
{ int s;
s=a*b;
return s;
}
3.2 函數的調用
如果說函數的定義如同定義公式,那么函數的調用就使用公式。我們知道數學公式有很多,我們在使用時需要根據功能去選擇公式,如果用錯了公式,最終的結果肯定也是錯誤的,因此第一步要選對公式。例如我們要求長方形的面積,那就要用長方形的面積公式----長乘以寬,如果用了別的公式,結果肯定不對。我們寫程序時可以定義很多個自定義函數,在使用函數時根據功能需要通過函數名字來選擇具體要用的函數。
在函數的調用過程中,還需要重點講解實參和形參的區別,以及參數傳遞的過程。在定義函數時括號中的參數是形參,在使用函數時括號中的參數是實參,實參必須要有具體的值。我們以計算長方形面積為例,函數調用:
main()
{
int x=5,y=10,mj;
mj=area(x,y);
printf(“%d\n”,mj);
}
實參是x和y,形參為a和b,在函數調用的過程中x的值傳遞給a,實參y的值傳遞給b,這樣形參a和b就有確定值5和10,根據長方形面積函數計算出s的值為50,并且把50帶回主調函數并賦值給變量mj。
結束語
C語言教學最終是函數教學,函數的編寫和設計在C語言程序設計中具有非常重要的地位。在教學過程中,采用實例引導的教學方法進行教學,重點是通過學生已經掌握的數學公式去類比分析函數部分的知識,使學生能夠通過老師的引導和啟發去發現問題、分析問題和解決問題,從而從本質上去理解函數思想,運用C語言函數知識去解決實際問題。
參考文獻:
[1]Copper James M, Coldman Susan. Classmoom Teaching Skills [M]. Boston: Houghton Mifflin Company,2002:196
-212.
[2]Papaspyrou Nikolaos S, Stathis Zachos, Teaching Programming through Problem Solving: The Role of the Programming Language[C]//Proceedings of the 2013 Federated Conference on Computer Science and Information Systems,2013:1533-1536.
[3]譚浩強.C程序設計(第四版)[M].北京:清華大學出版社,2010.
[4]李祥林,賈桂霞等.C語言程序設計課程改革與實踐探討[J].甘肅聯合大學學報(自然科學版),2012(04).
作者簡介:任石、1980、女、講師/碩士研究生、主要研究方向計算機軟件技術,計算機圖形學。