- 相關(guān)推薦
C語言函數(shù)教學(xué)方法
導(dǎo)語:針對(duì)C語言中函數(shù)的重要性及我校學(xué)生在學(xué)習(xí)過程中對(duì)函數(shù)的掌握情況,總結(jié)出一套實(shí)用的c語言函數(shù)教學(xué)方法。下面就由小編為大家介紹一下C語言函數(shù)教學(xué)方法,歡迎大家閱讀!
1序言
《C程序設(shè)計(jì)基礎(chǔ)》是我校工科非計(jì)算機(jī)專業(yè)的一門必修課程,目的是使學(xué)生掌握程序設(shè)計(jì)的基本方法,并形成正確的程序設(shè)計(jì)思想,培養(yǎng)學(xué)生用計(jì)算機(jī)解決本專業(yè)問題的能力,為后續(xù)課程的學(xué)習(xí)打下良好的基礎(chǔ)。
但在教學(xué)過程中發(fā)現(xiàn),學(xué)生在學(xué)習(xí)函數(shù)這部分的知識(shí)時(shí)非常吃力,很多學(xué)生對(duì)此掌握的并不好,不能靈活的運(yùn)用函數(shù)進(jìn)行程序設(shè)計(jì),主要的原因是所用教學(xué)方法效果較差。針對(duì)此問題,筆者在深入研究C語言函數(shù)教學(xué)方法的基礎(chǔ)上,通過詳細(xì)分析教學(xué)過程中學(xué)生的表現(xiàn),并積極與學(xué)生溝通,總結(jié)出適合我校學(xué)生的函數(shù)教學(xué)方法,首先通過生活中常見的例子介紹函數(shù)的概念,并精心設(shè)計(jì)函數(shù)的引入問題,以此來闡述函數(shù)編程思想,然后重點(diǎn)講解函數(shù)的定義和調(diào)用方法,并通過實(shí)例強(qiáng)化學(xué)生函數(shù)設(shè)計(jì)的方法,最后對(duì)函數(shù)的設(shè)計(jì)方法進(jìn)行總結(jié)。
2函數(shù)思想的引入
數(shù)學(xué)中的函數(shù)與C語言中的函數(shù)有什么區(qū)別?數(shù)學(xué)中的函數(shù)側(cè)重于自變量和因變量之間的映射關(guān)系,而C語言中的函數(shù)主要側(cè)重于功能的實(shí)現(xiàn)。
以計(jì)算13!為例,通常的計(jì)算方法是13×12×……×4×3×2×1=6227020800,但也會(huì)發(fā)現(xiàn)計(jì)算量非常大。熟悉計(jì)算器的學(xué)生也知道,計(jì)算器上有一個(gè)“n!”按鈕,我們只需按“13”,再按“n!”,就可以得到結(jié)果6227020800。兩種計(jì)算方法中筆者更喜歡后者,因?yàn)橛?jì)算器中“n!”按鈕可以協(xié)助完成階乘計(jì)算,換言之,“n!”按鈕可以完成計(jì)算階乘的功能,與c語言中函數(shù)的概念非常接近,因此“n!”按鈕就是將求階乘的函數(shù)封裝起來了,我們甚至可以說計(jì)算器就是將若干個(gè)函數(shù)封裝起來的一個(gè)設(shè)備。所以通過計(jì)算器來理解C語言中函數(shù)的概念就比較容易了。有了函數(shù),就可以多次使用它,就如同有了“n!”,不僅可以計(jì)算13!,也可以15!,17!等等。C語言中的函數(shù)就是功能獨(dú)立的一段代碼,能夠避免重復(fù)代碼,降低出錯(cuò)率,提高程序的可讀性。函數(shù)機(jī)制的出現(xiàn),也使多人共同開發(fā)大規(guī)模的程序成為可能。
進(jìn)而引導(dǎo)學(xué)生回顧教學(xué)中以前學(xué)過的主函數(shù)和C語言中的一些常見的庫函數(shù)(如sqrt()),總結(jié)這些函數(shù)的共同點(diǎn),標(biāo)識(shí)符后面都有一個(gè)括號(hào),并以一到兩個(gè)子函數(shù)為例,講解、編譯、運(yùn)行,幫助學(xué)生更好地認(rèn)識(shí)函數(shù)。
在學(xué)生對(duì)函數(shù)有了基本的認(rèn)識(shí)之后,給學(xué)生說明并非所有的函數(shù)都是現(xiàn)成的,有很多是需要用戶自定義編寫的――用戶自定義函數(shù)。在教學(xué)中,筆者認(rèn)為函數(shù)的分類最重要的標(biāo)準(zhǔn)就是函數(shù)的使用方式,根據(jù)函數(shù)的使用方式可以將函數(shù)分為數(shù)值計(jì)算函數(shù)(有返回值,類型不是void)和任務(wù)執(zhí)行函數(shù)(無返回值,類型為void),數(shù)值計(jì)算函數(shù)因?yàn)橛薪Y(jié)果,使用時(shí)一般當(dāng)做表達(dá)式的一部分或者函數(shù)參數(shù),任務(wù)執(zhí)行函數(shù)由于沒有結(jié)果,使用時(shí)一般獨(dú)立成一條語句。
3函數(shù)的定義和調(diào)用
3.1采用要素提取法完成函數(shù)定義
C語言函數(shù)設(shè)計(jì)主要圍繞函數(shù)類型,函數(shù)名,函數(shù)形式參數(shù),函數(shù)返回值四個(gè)要素展開。
對(duì)于函數(shù)要素的教學(xué)部分,重點(diǎn)講解函數(shù)的定義與調(diào)用。函數(shù)定義的一般形式為:
類型說明符函數(shù)名(形式參數(shù)表)
{聲明部分;
語句部分;
return(返回值);}
對(duì)函數(shù)定義部分還需要掌握的是:(1)類型標(biāo)識(shí)符:函數(shù)返回值類型,即結(jié)果類型。(2)函數(shù)名:合法標(biāo)識(shí)符是函數(shù)的唯一標(biāo)識(shí)。(3)形式參數(shù)表:由類型和變量名組成。(4)return(返回值):返回結(jié)果。
函數(shù)定義中的四個(gè)要素的提取方法可以參照用計(jì)算器求13!來說明,(1)類型說明符。13!的結(jié)果是6227020800,類型說明符就是根據(jù)結(jié)果的類型來確定,為int。(2)函數(shù)名。函數(shù)名是函數(shù)的唯一標(biāo)識(shí),在用計(jì)算器求13!的過程中,函數(shù)名就相當(dāng)于“n!”按鈕,這里用factorial來表示。(3)形式參數(shù)表。當(dāng)計(jì)算13!時(shí),形式參數(shù)表就是用來接收13的,假如求17!,那形式參數(shù)表就用來接收17,這里可以得出參數(shù)數(shù)量為一個(gè),類型為int,因此用int x來定義形式參數(shù)。(4)返回值。13!的結(jié)果是6227020800,返回值就是6227020800。
以求階乘為例,定義函數(shù):
intfactorial(int x)
{int s=1,i;
for(i=1;i<=x;i++)
{s=s*i;}
return s;}
3.2函數(shù)調(diào)用及虛實(shí)結(jié)合的過程
由上述函數(shù)定義可以看出,函數(shù)定義并沒有具體的結(jié)果,原因在于x的值未定,就如同在計(jì)算器上只按下“n!”沒有任何意義一樣。因此,函數(shù)的定義只是實(shí)現(xiàn)了函數(shù)的功能,而最終的目的在于使用函數(shù),即函數(shù)的調(diào)用。
在函數(shù)的調(diào)用過程中,還需要重點(diǎn)講解實(shí)際參數(shù)和形式參數(shù)的區(qū)別,以及整個(gè)虛實(shí)結(jié)合的過程。在使用函數(shù)時(shí)后面括號(hào)中是具體的值,即實(shí)際參數(shù)。函數(shù)定義中括號(hào)中的參數(shù)是形式參數(shù),沒有具體的值。在發(fā)生函數(shù)調(diào)用的時(shí)候,形式參數(shù)用來接收實(shí)際參數(shù)的值。如:
voidmain()
{int a=13,c;
c=factorial(a);
printf(“%d的階乘為:%d/n”,a,c);}
實(shí)際參數(shù)是a,有確定的值為13,形式參數(shù)為x,用來接收a的值。參數(shù)傳遞過程如圖2所示:
在函數(shù)定義和調(diào)用中需要重點(diǎn)強(qiáng)調(diào)的地方:
1)函數(shù)名是函數(shù)的唯一標(biāo)識(shí)。2)函數(shù)必須先定義后使用。3)如果函數(shù)為非void類型,函數(shù)中必須有return語句。4)普通變量傳遞時(shí)為單向傳遞,即由實(shí)際參數(shù)傳向形式參數(shù)。
【C語言函數(shù)教學(xué)方法】相關(guān)文章:
什么是C語言函數(shù)09-26
C語言函數(shù)的定義07-13
C語言函數(shù)遞歸教程09-25
C語言常用的輸入函數(shù)10-22
C語言中函數(shù)的區(qū)分08-30