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