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