摘要:本文分析了C語言函數(shù)調(diào)用學習過程中存在的問題,從函數(shù)定義、函數(shù)調(diào)用方式和通過函數(shù)問題案例調(diào)用三個方面進行探討,提出函數(shù)教學的新思路。通過庫函數(shù)將函數(shù)概念簡單具體化,穿插講解啟發(fā)性強的典型小案例,這些方法的結(jié)合使用,在實際教學中取得良好的效果。
關(guān)鍵詞:函數(shù)調(diào)用 庫函數(shù) 案例
1 函數(shù)調(diào)用問題的提出
本人在教學過程中,出現(xiàn)了多次這種問題。在講授函數(shù)的概念、函數(shù)的定義和函數(shù)的調(diào)用之后,給學生出一道題目用函數(shù)來實現(xiàn),通常情況下,該問題如果不用函數(shù)方法而用其他方法做的話,學生可能會做得出來,但讓他們必須用自定義函數(shù)的方法來實現(xiàn),他們就感覺無從下手,并不是這個問題本身很難,歸根結(jié)底,學生對于怎么自定義函數(shù),定義多少個參數(shù),怎么在主調(diào)函數(shù)中調(diào)用自己定義的被調(diào)函數(shù)不知道如何做。從而導(dǎo)致了用函數(shù)解決的問題卻用其他方法實現(xiàn)。在這里,我個人通過自己的反復(fù)思量,為了提高講授函數(shù)調(diào)用的教學效果,自己總結(jié)了幾條經(jīng)驗。
2 函數(shù)調(diào)用問題方法討論
要知道函數(shù)怎么調(diào)用,首先得知道用戶怎么定義函數(shù)。
2.1 函數(shù)定義的一般格式:
類型標識符[3] 函數(shù)名(形式參數(shù)列表)
{ 聲明部分
語句部分
}
這個格式定義的函數(shù)為有參函數(shù),“形式參數(shù)列表”中的參數(shù)被稱為形參,有些函數(shù)是無參函數(shù),則“形式參數(shù)列表”可以沒有,但括弧不能省略,即無參函數(shù)。
函數(shù)在使用之前要先聲明、定義,然后才能調(diào)用[1]。
2.2 函數(shù)調(diào)用的一般形式為:
函數(shù)名(實參表列)
函數(shù)在程序中出現(xiàn)的位置來分,可以有以下三種函數(shù)調(diào)用方式[2]:
①函數(shù)語句
把函數(shù)調(diào)用作為一個語句,這種方式不要求函數(shù)帶回值,如打印圖形、顯示字符串等。只要函數(shù)完成一定的操作。
②函數(shù)表達式
函數(shù)出現(xiàn)在一個表達式中,這種表達式稱為函數(shù)表達式。要求函數(shù)帶回一個確定的值以參加表達式的運算。如:c=10*max(a,b),其中,函數(shù)max就是表達式的一部分。
③函數(shù)參數(shù)
函數(shù)調(diào)用作為一個函數(shù)的實參,如:printf(“%d”,max(a,b));是把max(a,b)作為printf函數(shù)的一個參數(shù)。
2.3 函數(shù)問題案例講解
①首先從庫函數(shù)的調(diào)用案例著手講授,學生自然就很輕松上手。
眾所周知,庫函數(shù)中的數(shù)學函數(shù)學生從高中就經(jīng)常接觸到,在計算機教學的其他課程里面也會經(jīng)常出現(xiàn),如excel里面就有數(shù)學函數(shù),學生們已經(jīng)很熟悉了,如下面一道編程題就需要調(diào)用庫函數(shù)解決。
用C語言求14+24+34+……94+104之和。
#include\"math.h\"
main()
{int n=10,k=4;
long y=0;
for(i=1;i<=n;i++)
y=y+pow(i,k);
printf(\"%d\",y);
}
其中,pow(i,k)就是系統(tǒng)自帶的數(shù)學函數(shù),i和k是它自帶的兩個參數(shù),其功能是計算i的k次方。通過這個系統(tǒng)數(shù)學函數(shù)的調(diào)用程序的編寫及調(diào)試,學生們很輕松就知道庫函數(shù)怎么調(diào)用,即函數(shù)名加上函數(shù)括號里面的參數(shù)。
另外大家使用庫函數(shù)的時候,一定要在本文件開頭用#include命令,將調(diào)用有關(guān)庫函數(shù)時所需用到的信息“包含”到本文件中來。該程序開頭用語句# include\"math.h\",即可將數(shù)學庫函數(shù)“包含”到主函數(shù)中來。
②用大家熟悉且簡短的函數(shù)編程案例入手講解。
典型小案例教學具有很強的啟發(fā)性,既有利于學生學習,也有利于老師教授。
用C語言函數(shù)實現(xiàn)1+2+3+……+20之和。
long fnsum(int n)
{int i;
long y=0;
{for(i=1;i<=n;i++)
y=y+i;}
return y;
}
main()
{
int n=20;
printf(\"%d\",fnsum(n));
}
在這個程序代碼中,程序行l(wèi)ong fnsum(int n)是自定義函數(shù),fnsum是函數(shù)名,n是定義的一個形參,也僅需要一個,表示1+2+……+20共有多少個數(shù)求和。由于fnsum函數(shù)代碼寫在main()函數(shù)之前,可以不進行聲明。反之,若fnsum函數(shù)代碼寫在main()函數(shù)之后,必須用代碼long fnsum(int n);進行聲明。fnsum函數(shù)功能即是題目要完成的功能實現(xiàn),最后通過main()主函數(shù)定義一個實參n并賦值20,在printf函數(shù)中通過代碼printf(\"%d\",fnsum(n)),調(diào)用了自定義函數(shù)fnsum,并將實參n=20傳遞給自定義函數(shù)fnsum(int n)中的形參n,最終將結(jié)果打印輸出。
在main()主函數(shù)中,fnsum這個函數(shù)調(diào)用也可以改成如下:
main()
{
int n=20,sum;
sum=fnsum(n);
printf(\"%d\",sum);
}
這個是通過函數(shù)表達式的方法進行函數(shù)調(diào)用,通過這個自定義函數(shù)的簡單案例講解,學生很輕松能夠理解函數(shù)怎么自定義并在main()主函數(shù)中調(diào)用。
3 結(jié)束語
本文分析了C語言函數(shù)調(diào)用學習過程中存在的問題,在今后的教學過程中,本人將進一步努力提升自己,希望能總結(jié)出更多更好的方法來改進函數(shù)教學方法,使學生能夠更輕松地上手學習。
參考文獻:
[1]汪明光.C++語言中函數(shù)指針的分析與應(yīng)用[J].巢湖學院學報,2006,8(3):30-34.
[2]譚浩強.C語言程序設(shè)計(第三版)[M].北京:清華大學出版社,2005.143-150.
[3]烏云高娃.C語言程序設(shè)計[M].高等教育出版社,2007.118-220.