c語(yǔ)言函數(shù)范文
時(shí)間:2023-03-16 18:55:47
導(dǎo)語(yǔ):如何才能寫(xiě)好一篇c語(yǔ)言函數(shù),這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。
篇1
一、函數(shù)的概念函數(shù)是一組語(yǔ)句,這組語(yǔ)句可以完成一個(gè)獨(dú)立的操作,這組語(yǔ)句有一個(gè)簡(jiǎn)短的名字,程序員可以僅僅利用這個(gè)名字完成某個(gè)操作。函數(shù)的使用,使復(fù)雜的程序變得簡(jiǎn)單化、條理化、清晰化。在C語(yǔ)言中函數(shù)分為兩大類:庫(kù)函數(shù)、用戶自定義函數(shù)。
1、庫(kù)函數(shù)在編寫(xiě)程序的過(guò)程中往往有一些操作需要頻繁的使用,并且這些操作的代碼實(shí)現(xiàn)又有一定的難度。比如數(shù)據(jù)的輸入、輸出。在C語(yǔ)言中是沒(méi)有輸入輸出語(yǔ)句的,由于輸入輸出涉及到多計(jì)算機(jī)硬件的直接操作,對(duì)用戶來(lái)說(shuō)較困難。這些操作往往由編譯系統(tǒng)的開(kāi)發(fā)商提供給用戶。它們都是以獨(dú)立程序塊的模式出現(xiàn),并且存在于編譯系統(tǒng)的某個(gè)文件中,這就是庫(kù)函數(shù)。比如printf(),scanf()。它們是由編譯程序根據(jù)一般用戶的需要編制并提供給用戶使用的一組程序代碼。C語(yǔ)言的庫(kù)函數(shù)極大地方便了用戶,同時(shí)也補(bǔ)充了C語(yǔ)言本身的不足。事實(shí)上,在編寫(xiě)C語(yǔ)言程序時(shí),應(yīng)當(dāng)盡可能多地使用庫(kù)函數(shù),這樣既可以提高程序的運(yùn)行效率,又可以提高編程的質(zhì)量。
2、用戶自定義函數(shù)用戶自定義函數(shù)顧名思義就是用戶自己定義的函數(shù)。程序的編寫(xiě)過(guò)程其實(shí)就是一個(gè)個(gè)函數(shù)的定義過(guò)程。很多情況下,C語(yǔ)言的編譯系統(tǒng)提供給我們的函數(shù)并不能滿足用戶的要求,這就要求用戶自己編寫(xiě)函數(shù)。函數(shù)是由一組語(yǔ)句組成,并給定一個(gè)名字。相應(yīng)的函數(shù)的定義一般可分為兩大部分:函數(shù)頭部的定義、函數(shù)體的定義。形式如下:函數(shù)的類型函數(shù)名(函數(shù)的參數(shù)){函數(shù)體;}上面大括號(hào)上邊的一行成為函數(shù)的頭部(首部),它給出了函數(shù)的表面信息:函數(shù)返回值的類型,函數(shù)的名字,函數(shù)要處理的數(shù)據(jù);大括號(hào)內(nèi)的語(yǔ)句描述了函數(shù)的內(nèi)在構(gòu)造,這組語(yǔ)句完成一個(gè)獨(dú)立的操作,是對(duì)函數(shù)能夠完成功能的具體描述。
3、函數(shù)的調(diào)用函數(shù)是由一組語(yǔ)句組成,并給定一個(gè)名字。執(zhí)行與函數(shù)相關(guān)的一組語(yǔ)句的行為稱為函數(shù)的調(diào)用。應(yīng)該說(shuō)函數(shù)定義好之后調(diào)用之前是沒(méi)有什么意義的。函數(shù)就像某個(gè)具有特殊功能的機(jī)器工具。這些機(jī)器只有在開(kāi)關(guān)打開(kāi)之后才能發(fā)揮作用。在程序編寫(xiě)過(guò)程中,完成“開(kāi)關(guān)機(jī)器”這個(gè)操作的就是函數(shù)調(diào)用。函數(shù)調(diào)用的一般形式:函數(shù)名(實(shí)際參數(shù));
二、函數(shù)的教學(xué)C語(yǔ)言函數(shù)的教學(xué)主要是學(xué)習(xí)自定義函數(shù)以及庫(kù)函數(shù)的使用。
篇2
關(guān)鍵詞:模塊化程序設(shè)計(jì);函數(shù)調(diào)用;嵌套;遞歸
0 引言
程序調(diào)用是指當(dāng)前正在執(zhí)行的程序(又稱調(diào)用程序)中出現(xiàn)了調(diào)用其它程序的語(yǔ)句,使得程序的執(zhí)行轉(zhuǎn)移到另一個(gè)程序段(又稱為被調(diào)用程序)中,同時(shí)保存必要的信息,以便在被調(diào)用程序執(zhí)行結(jié)束后恢復(fù)執(zhí)行調(diào)用程序的過(guò)程。在C/C++語(yǔ)言中,稱程序調(diào)用為函數(shù)調(diào)用。當(dāng)在一個(gè)函數(shù)中出現(xiàn)了函數(shù)名時(shí),就發(fā)生了函數(shù)調(diào)用。在C/C++語(yǔ)言中,有以下兩種函數(shù)調(diào)用方式:
(1)函數(shù)調(diào)用以一個(gè)語(yǔ)句的形式出現(xiàn),這時(shí)被調(diào)用函數(shù)可以沒(méi)有返回值(函數(shù)類型可以設(shè)置為void類型);
(2)以表達(dá)式中的一個(gè)項(xiàng)的形式出現(xiàn),被調(diào)用函數(shù)必須有一個(gè)明確的返回值。
按照函數(shù)調(diào)用的性質(zhì)的不同,函數(shù)調(diào)用又分為兩類:函數(shù)嵌套調(diào)用和函數(shù)遞歸調(diào)用。以下就嵌套調(diào)用與遞歸調(diào)用概念進(jìn)行一些說(shuō)明。
1 存在問(wèn)題和解決辦法
C語(yǔ)言函數(shù)的定義都是獨(dú)立的,互不包含。換句話來(lái)說(shuō),一個(gè)函數(shù)內(nèi)不能包含對(duì)另一個(gè)函數(shù)的定義。
嵌套調(diào)用。C語(yǔ)言不能嵌套定義函數(shù),但可以嵌套調(diào)用(nested calling)函數(shù)。嵌套調(diào)用過(guò)程如圖1所示。
圖1 C語(yǔ)言函數(shù)嵌套調(diào)用過(guò)程
遞歸調(diào)用。在調(diào)用一個(gè)函數(shù)的過(guò)程中出現(xiàn)了直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。換句話說(shuō),當(dāng)一個(gè)程序調(diào)用它自身時(shí)就發(fā)生了遞歸(recursive calling)。C/C++語(yǔ)言的特點(diǎn)之一就在于允許函數(shù)的遞歸調(diào)用,如圖2所示。
遞歸算法的實(shí)質(zhì)是將原來(lái)的問(wèn)題分解為新的問(wèn)題,而對(duì)新的問(wèn)題又用到了原有問(wèn)題的解法。按照這一原則分解下去,每次出現(xiàn)的新問(wèn)題是原有問(wèn)題的簡(jiǎn)化子集,而最終分解出來(lái)的問(wèn)題,是一個(gè)已知解的問(wèn)題(即調(diào)用至滿足調(diào)用終止條件,得到一個(gè)可用的基礎(chǔ)值),這便是有限的遞歸調(diào)用。只有有限的遞歸調(diào)用才是有意義的;無(wú)限的遞歸調(diào)用永遠(yuǎn)得不到解,沒(méi)有實(shí)際意義。
圖2 函數(shù)的遞歸調(diào)用過(guò)程
遞歸的過(guò)程有兩個(gè)階段:
第一階段,遞推。將原有的問(wèn)題不斷分解為新的子問(wèn)題,逐漸從未知向已知推進(jìn),直到推進(jìn)至滿足調(diào)用終止條件,得到一個(gè)可用的基礎(chǔ)值。
第二階段,回歸。從基礎(chǔ)值出發(fā),按照遞推的逆過(guò)程,逐一求值回歸,最后到達(dá)遞推的開(kāi)始處,結(jié)束遞歸調(diào)用。
2 函數(shù)嵌套調(diào)用與遞歸調(diào)用實(shí)例分析
現(xiàn)各舉一個(gè)嵌套調(diào)用和遞歸調(diào)用的小程序,以說(shuō)明上面的理解(為了表明C++也支持嵌套調(diào)用和遞歸調(diào)用,以下程序用C++語(yǔ)言編寫(xiě))。
例1:輸入兩個(gè)整數(shù),求它們和的平方。
分析:為了說(shuō)明函數(shù)的嵌套調(diào)用,針對(duì)該問(wèn)題可以設(shè)計(jì)兩個(gè)函數(shù),求平方的函數(shù)SQU及求另一個(gè)整數(shù)平方和的函數(shù)SUM。由主函數(shù)調(diào)用SQU,SQU又調(diào)用SUM(見(jiàn)圖3)。
圖3 函數(shù)的嵌套調(diào)用和遞歸調(diào)用
假設(shè)求平方的函數(shù)為為a,求整數(shù)平方和的函數(shù)為b,程序
如下(Source Code):
//
//nestf.cpp
//The C++program illustrates nested functiOn calling.
//CaIculation of the quadratic sum of two Integers.
//
#incIude<iOstream.h>
Vo|d math(void)
{int m,n;
int a(int x,inl y);//function prolotype
COUl<<"pIease enter two jntegers:"<<endI;
cin>>m>>n;
COUt<<“the quadratic sum of m and n is"<<a(m,n)<<endl;
//calIing function
}
int a(int x,int y) //function decIaration
{int b(int m);//function prototype
return(b(x)+b(y));
//calling nested functiOn and function retum
}
int b(int k)//function declaration
{reIum(k*k);)//funclion return
例2:求n!
分析:根據(jù)
程序流程:
圖4 程序流程
以下以6 1為例:
我們可以進(jìn)行以下分析:
6!=6*5!5!=5*4!4!=4*3!3!=3*2!2!=2*1!1!=1*0!0!=1
未知――――――(遞推)――――――――――已知
6!=6*5!=7205=5*4!=1204!=4×3!=243!=3*2!=62!=21!=1*0!=10!=1
未知――――――(回歸)―――――――――已知
Source Code:
//
//factof.cpp
//A C++program illustrating recursiVe functiOn caIIs.
//CaIcuIating the factorial of a number.
//ExamDIe:6!=6*5*4*3*2*1=720
//
#incIude<iOstream.h>
long flactof(int n)//funclion declaration
{long a;
if(n<0)
count<<"The integer(n)which you entered must be
greater than or equal to zero!"<<endI;
eIse if(n==0)a=1;//the basic condition to terminale
eIse a=facfof(n-1)*n;//iterating
retum(a);
}
void main()
{long faclof(inI n);//funclion procotype
int b=6;
long y;
y=factof(b);//recursiVe calling
COUl<<"6!="<<y<<endl;
}
3 結(jié)束語(yǔ)
嵌套調(diào)用是將功能獨(dú)立的函數(shù)有機(jī)地結(jié)合起來(lái),完成一項(xiàng)任務(wù)。采用嵌套調(diào)用,提高了程序的可讀性、可維護(hù)性和可擴(kuò)充性。而采用遞歸調(diào)用允許某些算法用簡(jiǎn)單的小例程來(lái)實(shí)現(xiàn),但不能保證速度或效率。遞歸使用不當(dāng)會(huì)導(dǎo)致程序在執(zhí)行過(guò)程中耗盡空間(因?yàn)樵谶f歸調(diào)用時(shí)必然要一次次生成新的同名局部變量,并動(dòng)態(tài)地為其分配存儲(chǔ)單元),從而引起程序(有時(shí)是整個(gè)系統(tǒng))崩潰。
篇3
關(guān)鍵詞:函數(shù)教學(xué);函數(shù)定義;調(diào)用;聲明
中圖分類號(hào):TP312.1-4 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1007-9599(2011)24-0000-01
Function Teaching Talking in C Language
He Lixia
(Hubei Jingzhou Yangtze University College of Computer Science, Jingzhou434023,China)
Abstract:The C program is composed of functions, using functions can improve programming efficiency,so learning functions is very important to the C language program understanding and grasping,according to years of teaching practice,being guided teaching by the cases has played a good effect.
Keywords:Function teaching;Function definition;Call;Statement
一、引言
C語(yǔ)言是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,結(jié)構(gòu)化程序設(shè)計(jì)是以模塊化設(shè)計(jì)為中心,就是將―個(gè)大的計(jì)算任務(wù)劃分為一個(gè)個(gè)比較小的任務(wù),這些小任務(wù)均由函數(shù)來(lái)完成,因此對(duì)于函數(shù)這章掌握的好壞直接關(guān)系C語(yǔ)言進(jìn)一步的學(xué)習(xí),本人從事C語(yǔ)言教學(xué)多年,總結(jié)多年的教學(xué)經(jīng)驗(yàn),在此對(duì)函數(shù)教學(xué)的體會(huì)進(jìn)行交流探討。
二、函數(shù)的三要素
雖然C語(yǔ)言提供了豐富的庫(kù)函數(shù),但不可能滿足每個(gè)用戶的各種特殊需要,因此大量的函數(shù)必須由用戶自己來(lái)編寫(xiě),如何編寫(xiě),并且很好地應(yīng)用,就必須掌握函數(shù)的三要素----定義、調(diào)用和聲明函數(shù)。
(一)如何定義函數(shù)。定義函數(shù)是重點(diǎn),也是學(xué)生學(xué)習(xí)起來(lái)的難點(diǎn),首先來(lái)看看函數(shù)定義的一般形式:函數(shù)類型函數(shù)名(形參類型說(shuō)明表)
{
說(shuō)明部分
語(yǔ)句部分
}
自己定義函數(shù)時(shí),必須想清楚兩點(diǎn),第一是否有返回值;第二是否有形參。
下面通過(guò)一個(gè)例子展示一下如何來(lái)定義函數(shù):
例:編寫(xiě)一個(gè)函數(shù)實(shí)現(xiàn)兩個(gè)正數(shù)的最大公約數(shù)
第一種情況:有返回值
有參數(shù),有兩個(gè)整型形參
定義如下:
int gys1(int a ,int b)
{intm; m=a=1;m- -) if(a%m==0&&b%m==0)return m; //返回值的類型最好和函數(shù)類型一致
}
第二種情況:不需要返回值
有參數(shù),同樣是兩個(gè)整型形參
void gys2(int a,int b) //void表示無(wú)類型,即不需要返回值
{int m; m = a=1;m- -) if(a%m==0&&b%m==0)printf("%d",m);
}
(二)調(diào)用函數(shù)
函數(shù)定義之后,是為了被調(diào)用,同樣以上面的程序?yàn)槔故鞠氯绾卧谥髡{(diào)函數(shù)中調(diào)用以上兩個(gè)函數(shù):
第一個(gè)情況被調(diào)用說(shuō)明:
main()
{
int m,n; scanf("%d%d",&m,&n);printf("%d是最大公約數(shù)",gys1(m,n));
}
以上兩種情況,調(diào)用語(yǔ)句用斜體表示!
第二個(gè)情況被調(diào)用說(shuō)明:
main()
{
int m,n; scanf("%d%d",&m,&n);gys2(m,n);
}
(三)函數(shù)的聲明
函數(shù)定義后,為了正確調(diào)用,要養(yǎng)成聲明函數(shù)的習(xí)慣,以免出錯(cuò),對(duì)于自己的定義的函數(shù),函數(shù)聲明如下:
函數(shù)類型函數(shù)名(形參類型[形參名],….. ); [形參名]表示可選,以上面的函數(shù)為例,
第一種情況的聲明為:int gys1(int a,int b);或int gys1(int ,int);
第二種情況的聲明為:void gys2(int a,int b);或void gys2(int , int );
三、函數(shù)的值傳遞
(一)基本概念。在進(jìn)行參數(shù)傳遞的過(guò)程中,必須掌握形參與實(shí)參的概念:形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名。實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后面括號(hào)中的表達(dá)式。(二)單向值傳遞。當(dāng)函數(shù)的形參和實(shí)參都是簡(jiǎn)單變量時(shí),實(shí)參向形參傳遞數(shù)據(jù)是一種單向值傳遞,實(shí)參的值傳遞給對(duì)應(yīng)的形參,但是形參的值不會(huì)回傳給實(shí)參。(三)地址值傳遞。當(dāng)函數(shù)的形參和實(shí)參是數(shù)組名或指針的時(shí)候,這個(gè)時(shí)候?qū)崊鬟f的是數(shù)組的首地址或指針指向變量的首地址,當(dāng)把實(shí)參傳遞過(guò)去時(shí),由于形參也代表首地址,這樣實(shí)參和形參的首地址相同,即實(shí)參和形參占用相同的存儲(chǔ)空間,這樣一種傳遞稱為地址值傳遞。
四、結(jié)束
函數(shù)的三要素和函數(shù)的值傳遞是C語(yǔ)言函數(shù)中基礎(chǔ)也是很重要的內(nèi)容,只有在掌握以上內(nèi)容的基礎(chǔ)上才能更好地學(xué)習(xí)后期知識(shí),經(jīng)過(guò)這么多年的實(shí)踐教學(xué),通過(guò)這種案例為引導(dǎo)的方式教學(xué)起到較好的效果!
參考文獻(xiàn):
[1]何光明.楊靜宇.C語(yǔ)言程序與應(yīng)用開(kāi)發(fā).北京:清華大學(xué)出版社,2006
篇4
關(guān)鍵詞:C++語(yǔ)言程序設(shè)計(jì);函數(shù)指針;分析研究
中圖分類號(hào):TP311.11 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1007-9599 (2011) 24-0000-01
Analysis and Research of Function Pointers for C++ Language Programming
Zhang Suxia
(Shandong Rural Credit Cooperatives,Qingdao266550,China)
Abstract:Pointer as C++ language programming is an important concept,its application is the C++ Programming Language is very important content.Pointer as a special type of data structure,which can effectively express complex data between the logical structure of the relationship.Flexible and correctly use the pointer to the design of the program with a lot of convenience,the application of which the most significant effect is a function pointer,by using the function pointer,you can call the function can get multiple return values,and to deal directly with memory addresses and so on.This article from the introduction of C++ language program design,function pointer to talk about,and then a detailed description of the use of C++ language program design function pointers need to pay attention to the,the final C++ language program design,function pointers application techniques carried out a systematic analysis.
Keywords:C++ Language Programming;Function pointer;Analysis
一、認(rèn)識(shí)C++語(yǔ)言程序設(shè)計(jì)中的函數(shù)指針
(一)指針與函數(shù)。在C++語(yǔ)言程序設(shè)計(jì)中,將指針與函數(shù)結(jié)合在一起使用具有非常豐富的內(nèi)涵。比如說(shuō),可以把指針作為函數(shù)的參數(shù)來(lái)使用,也可以把指針作為函數(shù)的返回值,另外,指針可以指向函數(shù)成為函數(shù)指針等。在C++語(yǔ)言程序設(shè)計(jì)中,用指針作函數(shù)的參數(shù),從而實(shí)現(xiàn)地址傳參的調(diào)用。而所謂的調(diào)用就是系統(tǒng)自動(dòng)將實(shí)參地址的值賦給其所對(duì)應(yīng)的形參指針,從而使形參指針指向?qū)嶋H參數(shù)變量。這樣一來(lái),形參在函數(shù)體內(nèi)的變化,將會(huì)直接影響到調(diào)用函數(shù)中與之對(duì)應(yīng)的實(shí)參的值。
(二)區(qū)別指針函數(shù)與函數(shù)指針的概念。由于函數(shù)的類型是按照函數(shù)返回值的類型來(lái)定義的,所以把返回值為指針類型的函數(shù)稱為指針函數(shù)。其中需要說(shuō)明的是如果使用某變量的地址來(lái)充當(dāng)函數(shù)的返回值的話,還需要考慮地址所對(duì)應(yīng)的變量空間是否還在被占用,若地址空間已經(jīng)被釋放掉,那么其中的數(shù)據(jù)就有可能發(fā)生了變化,這樣的話就需要將相應(yīng)的變量設(shè)置為靜態(tài)變量,否則的話,就不能實(shí)現(xiàn)正確傳遞參數(shù)的效果。還有一點(diǎn)要說(shuō)明的就是在使用指針函數(shù)時(shí),必須把接收函數(shù)值的變量設(shè)置為指針,而且其數(shù)據(jù)類型必須與返回值的數(shù)據(jù)類型相同。
由于指針變量不僅可以指向不同的數(shù)據(jù)類型,同時(shí)還可以指向函數(shù),其中把指向函數(shù)入口地址的指針?lè)Q為函數(shù)指針。函數(shù)指針作為C++語(yǔ)言程序設(shè)計(jì)中函數(shù)與指針結(jié)合應(yīng)用的一個(gè)重要概念,函數(shù)指針的作用就是用來(lái)在函數(shù)間進(jìn)行函數(shù)參數(shù)的傳遞。
在C++語(yǔ)言程序設(shè)計(jì)中常常會(huì)把指針函數(shù)與函數(shù)指針兩個(gè)概念混淆起來(lái),實(shí)際上,明白二者的實(shí)質(zhì)后,二者完全是兩個(gè)不同的概念,其最為顯著的區(qū)別就在于函數(shù)指針中的指針是指向函數(shù)入口的,而指針函數(shù)中的指針是指向函數(shù)出口的,所以在使用時(shí)一定要把握好二者的區(qū)別,正確使用。
二、使用C++語(yǔ)言程序設(shè)計(jì)函數(shù)指針需要注意的問(wèn)題
盡管函數(shù)指針的使用可以為程序設(shè)計(jì)帶來(lái)很多的方便,但是由于指針變量自身存在的缺陷,所以在使用中如果不小心的話就會(huì)出現(xiàn)錯(cuò)誤,嚴(yán)重的話就可能導(dǎo)致系統(tǒng)的崩潰,所以這里有必要就C++語(yǔ)言程序設(shè)計(jì)函數(shù)指針應(yīng)用中經(jīng)常出現(xiàn)的問(wèn)題進(jìn)行說(shuō)明。
第一、指針變量初始值的賦值問(wèn)題。盡管指針變量是指向的是相應(yīng)數(shù)據(jù)變量的存儲(chǔ)地址,但是在使用該指針變量前必須對(duì)指針變量的初值進(jìn)行賦值,如果不對(duì)其賦值的話,系統(tǒng)就會(huì)隨機(jī)對(duì)其進(jìn)行賦值,顯然,這就會(huì)導(dǎo)致比較嚴(yán)重的錯(cuò)誤。
第二、指針變量所指對(duì)象的存儲(chǔ)單元單元分配問(wèn)題。在對(duì)指針變量所指的對(duì)象進(jìn)行賦值時(shí)需要為其所指的對(duì)象分配充足的存儲(chǔ)單元,如果存儲(chǔ)單元分配不足的話也將會(huì)發(fā)生一系列的錯(cuò)誤。
第三、在操作前不對(duì)指針的值是否為空就進(jìn)行操作的問(wèn)題。對(duì)于一個(gè)值為空的,它的值為空的指針類型變量而言,它是不指向任何變量的,如果強(qiáng)制對(duì)它進(jìn)行操作的話,就可能會(huì)出現(xiàn)如下的幾種情況:一是禁止讀寫(xiě);二是只允許讀而不允許寫(xiě);三是既允許讀又允許寫(xiě)的三種不合法的存儲(chǔ)區(qū)域賦值問(wèn)題,顯然,這一問(wèn)題所造成的錯(cuò)誤勢(shì)必會(huì)非常嚴(yán)重。
第四、函數(shù)按地址引用時(shí)參數(shù)的誤用問(wèn)題。函數(shù)參數(shù)的引用包括按值引用和按地址引用兩種不同的引用方式,其中按值引用的是數(shù)值而按地址引用的是地址,二者是不一樣的,一定要區(qū)分開(kāi)來(lái),不能混淆。
三、C++語(yǔ)言程序設(shè)計(jì)中函數(shù)指針的應(yīng)用技巧分析
函數(shù)指針作為一種具有特殊用途的指針,它廣泛的應(yīng)用于C++語(yǔ)言程序設(shè)計(jì)中。其中C++語(yǔ)言程序設(shè)計(jì)中的函數(shù)指針主要用于調(diào)用函數(shù)以及充當(dāng)函數(shù)的參數(shù)這兩個(gè)方面。而C++語(yǔ)言程序設(shè)計(jì)中函數(shù)指針的應(yīng)用是有技巧的,其使用技巧如下:
第一、多態(tài)機(jī)制的實(shí)現(xiàn)。在C++語(yǔ)言程序設(shè)計(jì)中使用函數(shù)指針來(lái)實(shí)現(xiàn)多態(tài)機(jī)制是比較復(fù)雜的,其中主要是通過(guò)虛函數(shù)表來(lái)實(shí)現(xiàn)的,其中虛函數(shù)表中存放的就是由函數(shù)指針組成的數(shù)組,由這些函數(shù)指針來(lái)指向?qū)嶋H所要調(diào)用的函數(shù)。
第二、回調(diào)函數(shù)。所謂的回調(diào)函數(shù)可以這樣的來(lái)理解,如果把某個(gè)函數(shù)的指針作為參數(shù)將其傳遞給另一個(gè)函數(shù)時(shí),當(dāng)這個(gè)指針用來(lái)指向函數(shù)時(shí),就是回調(diào)函數(shù)。在C++語(yǔ)言程序設(shè)計(jì)中回調(diào)函數(shù)應(yīng)用的比較廣泛,舉個(gè)例子,譬如Win32程序設(shè)計(jì)中的WinProc其實(shí)就是一種回調(diào)函數(shù),它主要是用來(lái)處理窗口的相關(guān)消息。
第三、取代分支語(yǔ)句。分支語(yǔ)句在程序維護(hù)上往往具有一定的限制,然而函數(shù)指針的應(yīng)用可以很好的解決這一問(wèn)題。
參考文獻(xiàn):
[1]張海平.C/C++語(yǔ)言中函數(shù)指針的深入分析與應(yīng)用[J].軟件開(kāi)發(fā)與設(shè)計(jì),2009(22)
篇5
經(jīng)濟(jì)學(xué)是處理資源配置、解決資源稀缺性和需求的學(xué)間,而農(nóng)業(yè)經(jīng)濟(jì)學(xué)也是在解決如何更合理更有效的配置農(nóng)業(yè)資源、要素、取得更大農(nóng)業(yè)產(chǎn)值,滿足消費(fèi)者需求的間題?;ヂ?lián)網(wǎng)+農(nóng)業(yè)也是在傳統(tǒng)農(nóng)業(yè)和農(nóng)業(yè)經(jīng)濟(jì)理論的基礎(chǔ)上,結(jié)合新的要素和互聯(lián)網(wǎng)經(jīng)濟(jì)的營(yíng)銷演化出的新的農(nóng)業(yè)經(jīng)濟(jì)模式。
1 傳統(tǒng)農(nóng)業(yè)
傳統(tǒng)農(nóng)業(yè)被認(rèn)為低效,但在舒爾茨的《改造傳統(tǒng)農(nóng)業(yè)》一書(shū)中,傳統(tǒng)農(nóng)業(yè)是被認(rèn)為要素是被充分配置了的,制約其進(jìn)一步發(fā)展的是資本的不足和現(xiàn)代技術(shù)使用的欠缺,以及銷售渠道的不通暢和抽成。農(nóng)業(yè)的獲利空間和發(fā)展被壓制了,體現(xiàn)在農(nóng)村勞動(dòng)力的外流和農(nóng)產(chǎn)品的原料化,與市場(chǎng)的脫節(jié)。由于這類原因,農(nóng)業(yè)產(chǎn)品多根據(jù)生產(chǎn)者自己的少量信息與主觀判斷實(shí)施自己的生產(chǎn)計(jì)劃,結(jié)果只能取得市場(chǎng)的平均收益,這種局面容易往復(fù)循環(huán),風(fēng)險(xiǎn)來(lái)臨時(shí)沒(méi)有防范能力,再次返貧,影響農(nóng)業(yè)農(nóng)村發(fā)展。
2 互聯(lián)網(wǎng)農(nóng)業(yè)及現(xiàn)狀
互聯(lián)網(wǎng)推動(dòng)農(nóng)產(chǎn)品銷售模式升級(jí),農(nóng)業(yè)生產(chǎn)的附加值有效提高,傳統(tǒng)農(nóng)業(yè)的發(fā)展模式進(jìn)一步深度改造,主要表現(xiàn)在以下幾個(gè)方面:(1)推進(jìn)農(nóng)業(yè)生產(chǎn)的標(biāo)準(zhǔn)化;(2)使?fàn)I銷人口變得便利與高效;(3)突出了安全健康的農(nóng)產(chǎn)品品牌形象;(4)優(yōu)化提升了農(nóng)村的金融服務(wù)水平。
中國(guó)目前全國(guó)涉農(nóng)電子商務(wù)平臺(tái)已超3萬(wàn)家,農(nóng)產(chǎn)品電商平臺(tái)已有3000家。2013年底截止,中國(guó)農(nóng)村地區(qū)網(wǎng)民數(shù)達(dá)1.77億,相比2012年增長(zhǎng)2101萬(wàn)人,增長(zhǎng)率13.5%。預(yù)計(jì)2015年底時(shí),我國(guó)互聯(lián)網(wǎng)總?cè)丝跁?huì)突破7億,比例近500Io,農(nóng)村市場(chǎng)占260Io。大規(guī)模的農(nóng)村網(wǎng)民數(shù)量將為互聯(lián)網(wǎng)農(nóng)業(yè)的發(fā)展和普及提供保障。
二、相關(guān)理論依據(jù)
1 微觀經(jīng)濟(jì)學(xué)理論依據(jù)
蛛網(wǎng)效應(yīng)的遲滯作用。一般來(lái)說(shuō),農(nóng)業(yè)在生產(chǎn)形式和生產(chǎn)組織上給人的印象往往是低效、松散和落后的。依靠荒地的開(kāi)墾和增加人力的投人來(lái)實(shí)現(xiàn)產(chǎn)量的增長(zhǎng),而在市場(chǎng)這端,由于銷路的不暢,生產(chǎn)個(gè)體的孤立,收購(gòu)商的強(qiáng)勢(shì)壓價(jià),很難取得高收益,而且由于蛛網(wǎng)效應(yīng),價(jià)格反饋的遲滯,往往會(huì)出現(xiàn)需求和供應(yīng)的脫節(jié)。從互聯(lián)網(wǎng)+農(nóng)業(yè)很多取得較好收益的產(chǎn)品來(lái)看,不僅通過(guò)大數(shù)據(jù)和云計(jì)算、線上線下分析消解了蛛網(wǎng)效應(yīng),而且新的產(chǎn)品及業(yè)態(tài)能夠滿足消費(fèi)者心理和為他們提供更好的服務(wù)價(jià)值,即抓住消費(fèi)者偏好這一因素,使得生產(chǎn)者獲得了高出甚至遠(yuǎn)高于平均收益的溢價(jià)。
2 C-D生產(chǎn)函數(shù)(柯布道格拉斯模型)的變型
篇6
在供應(yīng)鏈全球化的今天,競(jìng)爭(zhēng)日趨激烈,供應(yīng)鏈成員的目標(biāo)可以通過(guò)締結(jié)供應(yīng)鏈契約連結(jié)共同利益而使目標(biāo)更趨一致。但對(duì)決策者而言,面對(duì)未來(lái)的不確定性,收益和風(fēng)險(xiǎn)需要同時(shí)考慮。傳統(tǒng)的供應(yīng)鏈定量模型在風(fēng)險(xiǎn)中性的假設(shè)下,已獲得大量的研究成果,但現(xiàn)實(shí)的決策者會(huì)出現(xiàn)具有風(fēng)險(xiǎn)規(guī)避特征或具有風(fēng)險(xiǎn)偏好特征。因此,在構(gòu)建供應(yīng)鏈模型時(shí),將供應(yīng)鏈決策者設(shè)想為風(fēng)險(xiǎn)決策者更具實(shí)際意義。
供應(yīng)鏈中任意兩環(huán)節(jié)的鏈接可稱為二級(jí)供應(yīng)鏈,已有關(guān)于二級(jí)供應(yīng)鏈的研究已很多,并且在二級(jí)供應(yīng)鏈契約、庫(kù)存研究等方面已取得一定成果。三級(jí)供應(yīng)鏈及多級(jí)供應(yīng)鏈?zhǔn)侵冈阪湕l中三個(gè)環(huán)節(jié)或三個(gè)環(huán)節(jié)以上的鏈接。三級(jí)供應(yīng)鏈和多級(jí)供應(yīng)鏈的研究涉及鏈條多方和多類型的不同模式和不同層級(jí),是更為復(fù)雜的研究領(lǐng)域。其中三級(jí)供應(yīng)鏈管理上的問(wèn)題被稱為供應(yīng)鏈網(wǎng)絡(luò)問(wèn)題的縮影,通過(guò)設(shè)計(jì)合理的供應(yīng)鏈契約,可以減弱或消除由于“雙重邊際化”和“牛鞭效應(yīng)”等造成的績(jī)效損失,優(yōu)化供應(yīng)鏈管理和改善供應(yīng)鏈績(jī)效,可實(shí)現(xiàn)風(fēng)險(xiǎn)共擔(dān)。供應(yīng)鏈契約是供應(yīng)鏈中的企業(yè)共擔(dān)由各種不確定性帶來(lái)風(fēng)險(xiǎn)的重要手段。同時(shí),供應(yīng)鏈成員決策的實(shí)質(zhì)是對(duì)未來(lái)的投資決策,現(xiàn)資理論的豐富成果已逐漸引入到供應(yīng)鏈的優(yōu)化決策中。
自從Copula引入金融領(lǐng)域,金融風(fēng)險(xiǎn)分析就進(jìn)入了新階段。Copula理論在實(shí)際應(yīng)用中有許多優(yōu)點(diǎn)(Nelson,1999)。首先,由于不限制邊際分布的選擇,可運(yùn)用Copula理論構(gòu)造靈活的多元分布;其次,運(yùn)用Copula理論建立金融模型時(shí),可將隨機(jī)變量的邊際分布和它們之間的相關(guān)結(jié)構(gòu)分開(kāi)來(lái)研究,相關(guān)結(jié)構(gòu)則由Copula函數(shù)來(lái)描述。這樣建模問(wèn)題大大簡(jiǎn)化,同時(shí)也有助于很多金融問(wèn)題的分析和理解;另外,如果對(duì)變量作非線性的單調(diào)增變換,常用的相關(guān)性測(cè)度如線性相關(guān)系數(shù)的值會(huì)發(fā)生改變,而由Copula函數(shù)導(dǎo)出的一致性和相關(guān)性測(cè)度的值則不會(huì)改變,因此由Copula函數(shù)導(dǎo)出的一致性和相關(guān)性測(cè)度應(yīng)用范圍更廣、實(shí)用性更強(qiáng)。Copula理論最初由sklar(1959)提出;隨后Schweizer & Sklar(1953)對(duì)其進(jìn)行了階段性的總結(jié),在概率測(cè)度空間理論的框架內(nèi),介紹了Copula函數(shù)的定義及性質(zhì)等;Joe(1997)從相關(guān)性分析和多元建模的角度進(jìn)行論述,展示和介紹了Copula函數(shù)的性質(zhì)和參數(shù)族;隨后Nelsen(1999)在其專著中對(duì)Copula方法作了系統(tǒng)的闡述,成為這一研究領(lǐng)域的集大成者;在前人的理論研究基礎(chǔ)上,Embrechts et al.(1999)把Copula函數(shù)引入金融學(xué)研究,探討了在金融市場(chǎng)中采用線性相關(guān)指標(biāo)度量相依性的局限性,建議用Copula理論來(lái)估計(jì)隨機(jī)變量間的聯(lián)合分布,在研究思想上對(duì)Copula的應(yīng)用前景做了很好的展望。之后Copula理論如雨后春筍般很快應(yīng)用到金融市場(chǎng)的各個(gè)領(lǐng)域。Bouye,E.et.al.(2000),Embrechts P.et.al.(2001)等人用數(shù)據(jù)擬合Copula函數(shù)進(jìn)行了風(fēng)險(xiǎn)分析。
國(guó)內(nèi)對(duì)Copula理論的研究起步比較晚,在方法創(chuàng)新方面,史道濟(jì)(2004)用Copula計(jì)量方法研究了外匯組合的相關(guān)性,并改進(jìn)了Copula對(duì)數(shù)據(jù)擬合的方法;韓明(2004)從計(jì)量的角度研究了Copula函數(shù);張世英和樊智 (2004)研究了Copula-Garch模型對(duì)波動(dòng)性的描述;刁心薇(2004)探討了Copula函數(shù)的非參數(shù)估計(jì)方法;陶文龍(2005)對(duì)金融數(shù)據(jù)的尾部相關(guān)性用copula方法進(jìn)行了度量;單國(guó)莉和陳東峰(2005)用QQ圖方法進(jìn)行最優(yōu)Copula函數(shù)的選擇;李平和黃光東(2005)則探討了二元數(shù)字期權(quán)定價(jià)與Copula函數(shù)的關(guān)系:詹原瑞(2005)將極值理論和Copula理論結(jié)合起來(lái)探討了災(zāi)難風(fēng)險(xiǎn)的建模問(wèn)題;陳守東等(2006)結(jié)合國(guó)內(nèi)證券市場(chǎng),基于Copula理論,采用Monet Carlo模擬方法度量了市場(chǎng)風(fēng)險(xiǎn)。孫祿杰和柏滿迎(2006)詳細(xì)討論了現(xiàn)有相關(guān)指標(biāo)與copula函數(shù)的關(guān)系;包衛(wèi)軍和徐成賢(2008),結(jié)合SV模型和Copula技術(shù),建立了兩變量金融時(shí)間序列的Copula-SV模型。
綜上統(tǒng)計(jì),目前尚無(wú)結(jié)合copula函數(shù)對(duì)三級(jí)供應(yīng)鏈協(xié)調(diào)的研究。在對(duì)現(xiàn)有研究進(jìn)行分析綜述的基礎(chǔ)上,以決策者具有不同風(fēng)險(xiǎn)態(tài)度的三級(jí)供應(yīng)鏈為協(xié)調(diào)目標(biāo),研究由一個(gè)供應(yīng)商、一個(gè)分銷商和一個(gè)零售商組成的三級(jí)供應(yīng)鏈在具有不同風(fēng)險(xiǎn)規(guī)避程度參與者的供應(yīng)鏈契約協(xié)調(diào)問(wèn)題,各參與者的風(fēng)險(xiǎn)規(guī)避特征用Copula函數(shù)和CVaR方法描述,建立隨機(jī)市場(chǎng)需求下契約協(xié)調(diào)的風(fēng)險(xiǎn)值模型,供應(yīng)商、分銷商和零售商的風(fēng)險(xiǎn)偏好程度對(duì)執(zhí)行價(jià)格、零售商和分銷商最優(yōu)訂貨量、供應(yīng)鏈及各個(gè)成員的風(fēng)險(xiǎn)值和期望利潤(rùn)水平的影響,在比較靜態(tài)分析中討論不同契約組合在三級(jí)供應(yīng)鏈協(xié)調(diào)過(guò)程中的重要作用。
嘗試基于Copula函數(shù)CVaR方法測(cè)度三級(jí)供應(yīng)鏈風(fēng)險(xiǎn),建立參數(shù)為風(fēng)險(xiǎn)偏好、風(fēng)險(xiǎn)中性、風(fēng)險(xiǎn)規(guī)避三種的測(cè)度指標(biāo)。建立零售商和分銷商的不同風(fēng)險(xiǎn)值決策模型。利用風(fēng)險(xiǎn)值的次可加性,得到供應(yīng)鏈基于負(fù)收益的 Copula函數(shù)和,得到不同風(fēng)險(xiǎn)態(tài)度下供應(yīng)鏈契約協(xié)調(diào)模型需要滿足的條件。制定有效的復(fù)合契協(xié)調(diào)機(jī)制,使系統(tǒng)利潤(rùn)增量在成員間合理分配,促使供應(yīng)鏈及其成員的收益都得到帕累托改進(jìn)。
參考文獻(xiàn)
[1]張明恒,多金融資產(chǎn)風(fēng)險(xiǎn)價(jià)值的Copula計(jì)量方法研究[J].數(shù)量經(jīng)濟(jì)技術(shù)經(jīng)濟(jì)研究,2004,(4),67-70.
[2]史道濟(jì),姚慶祝,改進(jìn)Copula對(duì)數(shù)據(jù)擬合的方法[J].系統(tǒng)工程理論與實(shí)踐,2004,(4),49-55.
[3]韓明,Copula-一個(gè)新的計(jì)量經(jīng)濟(jì)工具[J].統(tǒng)計(jì)與信息論壇,2004,(19)5,93-95.
[4]張世英,樊智,協(xié)整理論與波動(dòng)模型一金融時(shí)間序列分析及應(yīng)用!M].清華大學(xué)出版社,2004.
[5]刁心薇,copula函數(shù)的非參數(shù)估計(jì)方法〔D].吉林大學(xué)碩士學(xué)位論文,2005.
[6]陶文龍,金融數(shù)據(jù)的尾部相關(guān)性研究[D].武漢理工大學(xué)學(xué)位論文,2005.
篇7
關(guān)鍵詞:C語(yǔ)言 計(jì)算機(jī) 軟件編程 編程方法優(yōu)化
1、C語(yǔ)言概述
C語(yǔ)言本身具備著較為優(yōu)越的功能,而其本身?yè)碛械募婢邊R編語(yǔ)言和高級(jí)語(yǔ)言特點(diǎn)的能力,也是C語(yǔ)言能夠在今天的計(jì)算機(jī)編程中得到廣泛應(yīng)用的原因所在。C語(yǔ)言發(fā)展到今天,已成為各種計(jì)算機(jī)編程語(yǔ)言的基礎(chǔ),而其具備的靈活方便、簡(jiǎn)潔緊湊、適用于多種操作系統(tǒng)、可自由書(shū)寫(xiě)等特點(diǎn),更為C語(yǔ)言的廣泛應(yīng)用提供了堅(jiān)實(shí)基礎(chǔ)。
2、基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)
2.1 C語(yǔ)言中的函數(shù)
在基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)中,由于具體的編程過(guò)程需要分為若干個(gè)模塊,這就使得其中每一個(gè)模塊功能的實(shí)現(xiàn),都需要由函數(shù)完成。對(duì)于基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)來(lái)說(shuō),其本身需要應(yīng)用多種特有的函數(shù),而這類函數(shù)的應(yīng)用過(guò)程,相關(guān)編程人員需要進(jìn)行命名、定義參數(shù)名以及定義返回值類型等操作,這樣才能夠順利完成基于C語(yǔ)言的模塊功能設(shè)計(jì)。當(dāng)然由于計(jì)算機(jī)技術(shù)的不斷發(fā)展,編程人員大多數(shù)時(shí)候都無(wú)需手動(dòng)輸入C語(yǔ)言相關(guān)的函數(shù),只需要在編程時(shí)輸入“#include”指令,就可以使用定義好的函數(shù)庫(kù)完成具體的編程操作。
2.2 變量存貯器類型的合理定義
在基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)中,對(duì)變量存貯器類型進(jìn)行合理定義也是這一技術(shù)的重要組成部分。具體來(lái)說(shuō),基于C語(yǔ)言的計(jì)算機(jī)編程往往需要應(yīng)用不同類型的變量存貯器,而不同的變量存貯器對(duì)于編譯代碼的執(zhí)行效率也不盡相同,為此編程人員可以在子程序模塊編程中盡量選擇局部變量存貯器,整個(gè)程序模塊的編程則可以選擇全局變量存貯器,這樣就能夠較好實(shí)現(xiàn)基于C語(yǔ)言計(jì)算機(jī)編程過(guò)程中變量存貯器類型的合理定義。
2.3 算法技巧及位操作
對(duì)于基于C語(yǔ)言的計(jì)算機(jī)編程來(lái)說(shuō),算法稱得上是這一編程語(yǔ)言的靈魂所在,這就使得編程人員在應(yīng)用C語(yǔ)言進(jìn)行計(jì)算機(jī)編程時(shí),必須掌握一定算法技巧,對(duì)于基于C語(yǔ)言的計(jì)算機(jī)編程來(lái)說(shuō),其本身具備著自然語(yǔ)言和流程圖兩種算法表示方法。值得注意的是,在應(yīng)用流程圖對(duì)基于C語(yǔ)言的計(jì)算機(jī)編程算法表示中,編程人員能夠基于這一表示了解流程圖符號(hào)的含義,這樣就能夠保證其較好的進(jìn)行基于C語(yǔ)言的計(jì)算機(jī)編程算法技巧應(yīng)用。
2.4 多重\算次序
在基于C語(yǔ)言的計(jì)算機(jī)編程中,C語(yǔ)言本身對(duì)于變量多重運(yùn)算求值順序沒(méi)有形成統(tǒng)一的規(guī)定。有過(guò)應(yīng)用C語(yǔ)言編程經(jīng)驗(yàn)的人就會(huì)了解到,不同C語(yǔ)言編譯系統(tǒng)存在著細(xì)微差別,而很多C語(yǔ)言編譯系統(tǒng)在多重運(yùn)算次序上存在著一定差別。據(jù)筆者調(diào)查得知,在我國(guó)當(dāng)下基于C語(yǔ)言的計(jì)算機(jī)編程中,參數(shù)求值順序從右到左最為常見(jiàn),這就使得基于C語(yǔ)言的計(jì)算機(jī)編程多重運(yùn)算次序大多為先運(yùn)算最后面,依次運(yùn)算前面,這種基于C語(yǔ)言的計(jì)算機(jī)編程多重運(yùn)算次序選擇有著較好的可讀性和移植性。
2.5 指針用法
對(duì)于基于C語(yǔ)言的計(jì)算機(jī)編程來(lái)說(shuō),指針用法也是這一編程的重要環(huán)節(jié),在論述這一環(huán)節(jié)前,首先需要了解基于C語(yǔ)言的計(jì)算機(jī)編程中指針變量。結(jié)合相關(guān)文獻(xiàn)資料筆者發(fā)現(xiàn),定義指針變量時(shí)必須對(duì)其進(jìn)行初始化,否則存儲(chǔ)空間操作很容易出現(xiàn)嚴(yán)重錯(cuò)誤。值得注意的是,編程人員還可以通過(guò)加減數(shù)值移動(dòng)指針位置,完成具體的指針計(jì)算。此外,應(yīng)用函數(shù)庫(kù)中的 void 函數(shù),就能夠?qū)崿F(xiàn)指針變量的定義,最終實(shí)現(xiàn)將任意數(shù)據(jù)類型的地址賦給指針變量。
3、基于C語(yǔ)言的編程方法優(yōu)化
結(jié)合上文內(nèi)容,對(duì)基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)有了較為直觀的認(rèn)識(shí),而為了保證基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)能夠更好發(fā)揮自身作用,筆者結(jié)合自身多年編程經(jīng)驗(yàn)與相關(guān)文獻(xiàn)資料,對(duì)基于C語(yǔ)言的計(jì)算機(jī)編程方法優(yōu)化進(jìn)行了詳細(xì)論述,希望這一論述能夠?yàn)橄嚓P(guān)C語(yǔ)言計(jì)算機(jī)編程從業(yè)者帶來(lái)一定啟發(fā)。
3.1 優(yōu)化函數(shù)調(diào)用
對(duì)于基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)來(lái)時(shí),想要實(shí)現(xiàn)自身的優(yōu)化,優(yōu)化函數(shù)調(diào)用屬于較為有效的方法。具體來(lái)說(shuō),在基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)函數(shù)調(diào)用的優(yōu)化中,首先需要禁止函數(shù)調(diào)用傳遞結(jié)構(gòu),之所以需要禁止傳遞結(jié)構(gòu)的函數(shù)調(diào)用,主要是由于函數(shù)調(diào)用傳遞結(jié)構(gòu)會(huì)將整個(gè)結(jié)構(gòu)復(fù)制到堆棧,這就將大量占用堆??臻g,最終加重整個(gè)系統(tǒng)的負(fù)擔(dān),而為了解決不能函數(shù)調(diào)動(dòng)傳遞結(jié)構(gòu)這一影響,可以采用結(jié)構(gòu)指針解決這一問(wèn)題,這樣就順利實(shí)現(xiàn)了基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)函數(shù)調(diào)動(dòng)優(yōu)化。
對(duì)于基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)來(lái)說(shuō),其本身具備著多種能夠提高自身編程效率的庫(kù)函數(shù),但這些函數(shù)往往具備著代碼量大、效率低的缺點(diǎn),這種缺點(diǎn)之所以出現(xiàn),主要是由于庫(kù)函數(shù)需要保證自身的廣泛適用性,所以編程人員在具體的工作中,就可以結(jié)合庫(kù)函數(shù),自己設(shè)計(jì)一段函數(shù)程序,這樣也能夠較好實(shí)現(xiàn)函數(shù)調(diào)用的優(yōu)化。
3.2 指針在數(shù)組中使用
對(duì)于基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)來(lái)說(shuō),想要實(shí)現(xiàn)自身技術(shù)的優(yōu)化,就可以將指針在數(shù)組中使用,這樣就能夠大大提高程序的運(yùn)行效率。具體來(lái)說(shuō),一般基于C語(yǔ)言的計(jì)算機(jī)編程需要多次計(jì)算數(shù)組地址來(lái)獲得數(shù)組中相應(yīng)的每一個(gè)數(shù)值,這就大大影響了程序的運(yùn)行效率,所以筆者建議將指針變量直接指向數(shù)組中元素,這樣就能夠較好實(shí)現(xiàn)基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)優(yōu)化。
3.3 優(yōu)化循環(huán)語(yǔ)句
為了能夠?qū)崿F(xiàn)基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)優(yōu)化,對(duì)循環(huán)語(yǔ)句進(jìn)行優(yōu)化也是優(yōu)化的較好選擇。在基于C語(yǔ)言的計(jì)算機(jī)編程中,某些重要的循環(huán)直接關(guān)系著程序運(yùn)行速度,所以筆者建議將有些在運(yùn)算時(shí)并不需要加入循環(huán)變量的任務(wù)置于循環(huán)外,這樣就能夠較好實(shí)現(xiàn)循環(huán)的優(yōu)化,大大提高程序的運(yùn)行速度并降低CPU 的負(fù)擔(dān)。
4、結(jié)語(yǔ)
在本文就基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)展開(kāi)的研究中,筆者詳細(xì)論述了C語(yǔ)言概述、基于C語(yǔ)言的計(jì)算機(jī)編程技術(shù)以及基于C語(yǔ)言的編程方法優(yōu)化,希望這一論述內(nèi)容能夠在一定程度上推動(dòng)我國(guó)計(jì)算機(jī)編程技術(shù)的發(fā)展,并為于C語(yǔ)言的學(xué)習(xí)者帶來(lái)一定幫助。
參考文獻(xiàn):
[1]劉秀明. 基C語(yǔ)言的計(jì)算機(jī)軟件編程實(shí)驗(yàn)研究[J].電子技術(shù)與軟件工程 ,2014(5):263.
篇8
作的一般框架,通過(guò)實(shí)例描述了動(dòng)態(tài)連接庫(kù)的實(shí)現(xiàn)及其制做方法、編程步驟,這種方法具有
普遍的意義。
關(guān)鍵詞 VB 動(dòng)態(tài)連接庫(kù)DLL C程序
一、引言
Visual Basic( 以下簡(jiǎn)稱VB)是一種可視化的面向?qū)ο蟮木幊陶Z(yǔ)言,以其編程簡(jiǎn)單、快捷
等特點(diǎn),深受廣大WINDOWS程序員的青睞。利用VB開(kāi)發(fā)界面友好、操作方便的軟件只需
很短的時(shí)間。但是VB運(yùn)行速度較慢,對(duì)于龐大的科學(xué)計(jì)算問(wèn)題,VB的這種慢速會(huì)使人難
以忍受。C語(yǔ)言是國(guó)際上非常流行的一種中級(jí)編程語(yǔ)言,以其靈活、高效等優(yōu)點(diǎn)而獲得廣
泛應(yīng)用,許多的應(yīng)用程序都是用C語(yǔ)言在DOS環(huán)境下編寫(xiě)而成。那么如何發(fā)揮VB和C這兩
種語(yǔ)言的優(yōu)勢(shì),用VB設(shè)計(jì)一種良好的for windows界面來(lái)調(diào)用C語(yǔ)言程序,即實(shí)現(xiàn)VB調(diào)用C
語(yǔ)言程序呢?現(xiàn)有的文獻(xiàn)只提到動(dòng)態(tài)鏈接庫(kù)(以下簡(jiǎn)稱DLL)可以將這兩種語(yǔ)言連接起來(lái),
但有講動(dòng)態(tài)鏈接庫(kù)DLL的制做及其編程方法。本文詳細(xì)介紹了Borland C環(huán)境下制作動(dòng)態(tài)鏈
接庫(kù)以及VB調(diào)用for dos動(dòng)態(tài)鏈接庫(kù)的的方法、步驟,并通過(guò)實(shí)例描述VB調(diào)用C程序的全過(guò)
程。
二、用Borland C編寫(xiě)DLL程序的方法
要想實(shí)現(xiàn)VB調(diào)用C程序,首先需要用Borland C編寫(xiě)動(dòng)態(tài)連接庫(kù)DLL程序(假設(shè)DLL程序
取名為example)。動(dòng)態(tài)鏈接庫(kù)包含四個(gè)文件:C語(yǔ)言源程序(.C)、模塊定義文件
(.DEF)、原型函數(shù)文件(.H)和工程文件(.PRJ)。下面分別詳細(xì)介紹一下這四種文件
的具體結(jié)構(gòu)。
1、編寫(xiě)C語(yǔ)言源程序的框架:
C語(yǔ)言源程序(example.C),它包括三種函數(shù):入口函數(shù)、輸出函數(shù)和終止函數(shù)。其具體
結(jié)構(gòu)如下:
/*************************************/
/* 文件名: example.C */
/*************************************/
#include
/***********入口函數(shù)***********/
int FAR PASCAL LibMain ( HANDLE hInstance,
WORD wDataSeg,
WORD cbHeapSize,
LPSTR lpszCmdLine )
{
if (cbHeapSize!=0)
UnlockData(0);
return (1);
}
/***********輸出函數(shù)***********/
int FAR PASCAL example(int param1,...,char param n)
{
...... /*C語(yǔ)言應(yīng)用程序*/
}
/***********終止函數(shù)***********/
int FAR PASCAL WEP ( int /*SystemExit*/ )
{
return(1);
}
以上各組成部分參數(shù)的含義:Windows.h頭文件,它包含有數(shù)據(jù)類型的定義、API入口
點(diǎn)定義和其它有用的參數(shù)信息。PASCAL說(shuō)明符定義該程序的傳遞參數(shù)和凈化堆棧的協(xié)定
(注意:DLL外部傳送的指針必須是遠(yuǎn)指針FAR)。LibMain帶四個(gè)參數(shù):
hInstance、 wDataSeg、cbHeapSize和lpszCmdLine。第一個(gè)參數(shù)hInstance是DLL事例句
柄, wDataSeg參數(shù)是數(shù)據(jù)段(DS)寄存器值,cbHeapSize參數(shù)是在模塊定義文件中定義
的堆的大小,LibMain 使用該值使本地堆初始化。lpszCmdLine參數(shù)包括命令行信息,但
很少被DLL使用。一般來(lái)說(shuō),這四個(gè)參數(shù)是制作DLL通用的參數(shù)。
如果不想讓DLL數(shù)據(jù)被封住,那么必須調(diào)用unlockdata恢復(fù)正常的非鎖狀態(tài),如果DLL初始
化已經(jīng)成功,DLL則返回1,若不成功則返回0值,且 DLL退出系統(tǒng)。
DLL的輸出函數(shù)實(shí)現(xiàn)用戶所要完成的任務(wù),這部分是DLL的核心。它與一般C語(yǔ)言程序不同
之處在于無(wú)scanf函數(shù)。所有的外部指針都是遠(yuǎn)指針FAR。畫(huà)直線函數(shù)要用lineto函數(shù)。
DLL包括一個(gè)終止函數(shù),終止函數(shù)有時(shí)稱為退出函數(shù),它的名字必須是WEP。且它可以被
包括在DLL模塊定義文件的EXPORTS段中。
2、模塊定義文件(.DEF)的結(jié)構(gòu)和各段的意義
模塊定義文件的結(jié)構(gòu)如下:
/*************************************/
/* 文件名: example.DEF */
/*************************************/
LIBRARY example /* DLLname */
DESCRIPTION ' example.DLL'
EXETYPE WINDOWS
CODE PRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD MOVEABLE SINGLE
HEAPSIZE 1024
EXPORTS
example @1
WEP @2
關(guān)鍵字LIBRARY是把這個(gè)模塊視為一個(gè)DLL,庫(kù)的名字example跟在其后,且必須與該庫(kù)
的名字、DEF中的DLL的文件名相一致。DESCRIPTION語(yǔ)句采用一個(gè)字符串,其長(zhǎng)度可達(dá)
128 個(gè)字符,通常用它來(lái)保存模塊描述的信息。EXETYPE windows語(yǔ)句每個(gè)windows應(yīng)用程
序和 DLL都需要。DATA語(yǔ)句定義該庫(kù)數(shù)據(jù)段的內(nèi)存屬性,關(guān)鍵字MOVEABLE允許內(nèi)存管
理程序在 必要時(shí)移動(dòng)內(nèi)存段,關(guān)鍵字SINGLE是DLL必要,因?yàn)镈LL總是有一個(gè)單一數(shù)據(jù)段,
而不管訪 問(wèn)它的應(yīng)用程序的數(shù)量。HEAPSIZE語(yǔ)句用來(lái)定義一個(gè)DLL局部堆的初始規(guī)模,
篇9
【關(guān)鍵詞】C語(yǔ)言 編程 結(jié)構(gòu)化
1 C語(yǔ)言的編程特點(diǎn)
1.1 C語(yǔ)言的定位
很多人都普遍的認(rèn)為C語(yǔ)言是在B語(yǔ)言的基礎(chǔ)上發(fā)展過(guò)來(lái)的一種高級(jí)編程語(yǔ)言。然而從編程語(yǔ)言的層次結(jié)構(gòu)方面來(lái)說(shuō),我們應(yīng)該認(rèn)為C語(yǔ)言,是在匯編語(yǔ)言的基礎(chǔ)上發(fā)展而來(lái)的,它比匯編這類編程語(yǔ)言要高級(jí),但是比一些可視化的編程語(yǔ)言又低級(jí),所以準(zhǔn)確來(lái)說(shuō),C語(yǔ)言應(yīng)該算是中級(jí)編程語(yǔ)言,或者稱為準(zhǔn)高級(jí)程序設(shè)計(jì)語(yǔ)言。目前很多高級(jí)程序設(shè)計(jì)語(yǔ)言都是在C語(yǔ)言的基礎(chǔ)上發(fā)展而來(lái)的,或者至少借鑒了C語(yǔ)言程序設(shè)計(jì)的思想。80年代初,Bjarne Stroustrup在貝爾實(shí)驗(yàn)室對(duì)標(biāo)準(zhǔn)C進(jìn)行了改進(jìn)和完善,C++得以誕生,使得面向?qū)ο蟮某绦蛟O(shè)計(jì)思想得以提出和落實(shí);21世紀(jì)初,人們將C語(yǔ)言和單片機(jī)相結(jié)合,開(kāi)發(fā)出來(lái)了應(yīng)用于單片機(jī)編程的C51語(yǔ)言,使得單片機(jī)的程序設(shè)計(jì)從反復(fù)的匯編語(yǔ)言設(shè)計(jì)中抽身出來(lái),大大的提高了程序的設(shè)計(jì)效率。
可見(jiàn)C語(yǔ)言在整個(gè)編程語(yǔ)言的發(fā)展過(guò)程中屬于承上啟下的作用,同時(shí)其自身的應(yīng)用領(lǐng)域又在不斷的更新和發(fā)展。
1.2 C語(yǔ)言的編程特點(diǎn)
通過(guò)上述C語(yǔ)言的定位可知,它既具備高級(jí)程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu)性和層次性特點(diǎn),同時(shí)也兼具了低級(jí)程序設(shè)計(jì)語(yǔ)言的實(shí)用性。
(1)用相應(yīng)的C語(yǔ)句可以實(shí)現(xiàn)對(duì)微機(jī)操作中的字節(jié)、地址等進(jìn)行直接訪問(wèn)。
(2)基于函數(shù)的結(jié)構(gòu)化特點(diǎn),使得復(fù)雜的軟件系統(tǒng)可以由多個(gè)人,以設(shè)計(jì)子函數(shù)的形式,分別各自進(jìn)行程序開(kāi)發(fā)。之后進(jìn)行函數(shù)的匯總,最后由主函數(shù),按照既定的程序流完成對(duì)各個(gè)子函數(shù)的調(diào)用就行。
(3)豐富的數(shù)據(jù)類型,尤其是指針類型,可以很方便的應(yīng)用于復(fù)雜數(shù)據(jù)和大數(shù)據(jù)的訪問(wèn)和處理。
(4)由于C語(yǔ)言基本上不向低級(jí)語(yǔ)言那樣直接涉及到對(duì)硬件的操作,所以C語(yǔ)言程序往往具有很好的通用性,方便程序移植。
2 C語(yǔ)言的編程技巧
2.1 扎實(shí)基本工
在進(jìn)行C語(yǔ)言程序設(shè)計(jì)之前,首先要熟悉運(yùn)算符、表達(dá)式以及各鐘類型數(shù)據(jù)的定義和使用方法,其次對(duì)順序、分支和循環(huán)三大程序結(jié)構(gòu)要有較好的把握,并熟練使用while循環(huán)、for循環(huán)、switch語(yǔ)句等。如果要在程序的設(shè)計(jì)上有進(jìn)一步的提高,那就需要對(duì)“指針”能夠進(jìn)行熟練的使用了。指針可以用于表示變量,但更多的是用于代表數(shù)組、存儲(chǔ)地址以及函數(shù)地址。在代替不同變量時(shí)將返回不同的值,可以說(shuō)指針的功能十分強(qiáng)大。對(duì)其熟練使用有助于程序設(shè)計(jì)的簡(jiǎn)潔和便利。
2.2 立足C語(yǔ)言的結(jié)構(gòu)化的特點(diǎn),熟練程序設(shè)計(jì)基本構(gòu)型
C語(yǔ)言典型的特點(diǎn)就是結(jié)構(gòu)化,在進(jìn)行具體的程序開(kāi)發(fā)時(shí),應(yīng)該首先要根據(jù)設(shè)計(jì)的軟件項(xiàng)目,然后進(jìn)行任務(wù)的細(xì)分,由于C語(yǔ)言不需要編程人員去配置硬件資源,因此程序設(shè)計(jì)人員可以把更多的精力放在各個(gè)細(xì)分任務(wù)的子函數(shù)設(shè)計(jì)上,考慮用最簡(jiǎn)單的程序結(jié)構(gòu)去實(shí)現(xiàn)。在數(shù)據(jù)類型的選擇上,能夠用短數(shù)據(jù)類型就盡量用短數(shù)據(jù)類型。
另外,為了提高程序代碼的執(zhí)行效率,建議C語(yǔ)言程序設(shè)計(jì)人員要了解C語(yǔ)言程序最終運(yùn)行的硬件的基礎(chǔ)機(jī)構(gòu),是在微型計(jì)算機(jī)上運(yùn)行,還是在單片機(jī)上運(yùn)行。在了解硬件平臺(tái)結(jié)構(gòu)及內(nèi)部資源的前提下進(jìn)行相應(yīng)的程序設(shè)計(jì),將有助于提升程序的運(yùn)行效率。
3 C語(yǔ)言的實(shí)踐應(yīng)用
3.1 混合編程
很多程序設(shè)計(jì)人員都認(rèn)為C語(yǔ)言比匯編語(yǔ)言高級(jí),所以認(rèn)為沒(méi)有必要去學(xué)習(xí)和了解低級(jí)語(yǔ)言。其實(shí)這種思路是及其錯(cuò)誤的。匯編語(yǔ)言之所以稱之為低級(jí)語(yǔ)言,是因?yàn)槠涓淤N近于硬件。在編程時(shí)一定要明確的在代碼中描述清楚,數(shù)據(jù)如何從一個(gè)存儲(chǔ)單元送入另一個(gè)單元,因此顯得編程復(fù)雜,由于其直接和硬件打交道,所以被稱為低級(jí)語(yǔ)言。但是其運(yùn)行效率卻是最高的。所以在C語(yǔ)言程序設(shè)計(jì)上要有質(zhì)的飛越,有必要了解匯編語(yǔ)言的編程思路和理念。有條件的話可以將C語(yǔ)言和匯編語(yǔ)言混合編程,從而發(fā)揮出兩類編程語(yǔ)言各自的優(yōu)點(diǎn),達(dá)到設(shè)計(jì)程序的最優(yōu)化。
在進(jìn)行C語(yǔ)言和匯編語(yǔ)言的混合編程時(shí),無(wú)論是采用C語(yǔ)言調(diào)用匯編,還是匯編調(diào)用C語(yǔ)言,還是C語(yǔ)言嵌入?yún)R編的方式,都應(yīng)該對(duì)調(diào)用關(guān)系、各模塊的連接以及參數(shù)的傳遞進(jìn)行妥善的處理。對(duì)于調(diào)用關(guān)系,則需要對(duì)調(diào)用的函數(shù)和過(guò)程進(jìn)行說(shuō)明;通過(guò)明確函數(shù)和變量的命名以及存儲(chǔ)模式的關(guān)聯(lián)性,從而實(shí)現(xiàn)各模塊的有效連接;通常情況下往往通過(guò)堆棧的方式來(lái)實(shí)現(xiàn)參數(shù)的傳遞。
3.2 C語(yǔ)言在工程上的應(yīng)用
C語(yǔ)言在電力電氣系統(tǒng)、交通控制系統(tǒng)以及機(jī)器人控制方面都有廣泛的應(yīng)用。下面以工廠通風(fēng)控制系統(tǒng)的C語(yǔ)言程序設(shè)計(jì)為例來(lái)加深對(duì)C語(yǔ)言軟件編程思想的理解。
工廠通風(fēng)控制程序的設(shè)計(jì)時(shí)采用模塊化得設(shè)計(jì)思想,即單獨(dú)的編寫(xiě)初始化函數(shù)void Initial(void);中斷處理函數(shù)void**(void)interrupt;數(shù)據(jù)采集函數(shù)unsigned char ADconvert(unsigned char address)以及其它函數(shù)等。然后由主程序負(fù)責(zé)對(duì)各個(gè)子函數(shù)的調(diào)用,從而實(shí)現(xiàn)對(duì)工廠通風(fēng)系統(tǒng)的控制。簡(jiǎn)化的主程序如下:
main( ){ ... Initial(void);
while(l){ReadAi( );ADconvert(unsignedchar address);
DataChange( ); DisPlay( ); …}
整個(gè)系統(tǒng)由于需要不停的對(duì)工廠數(shù)據(jù)進(jìn)行采集,所有主程序的結(jié)構(gòu)就設(shè)置成了循環(huán)結(jié)構(gòu),當(dāng)通風(fēng)控制系統(tǒng)有序的進(jìn)行準(zhǔn)備工作之后,通過(guò)調(diào)用初始化函數(shù),程序就開(kāi)始進(jìn)入主循環(huán),主循環(huán)中通過(guò)調(diào)用采集程序,完成對(duì)測(cè)量對(duì)象的循環(huán)檢測(cè)以及對(duì)顯示程序,數(shù)據(jù)處理函數(shù)的循環(huán)調(diào)用。一遍又一遍的不停循環(huán)執(zhí)行主程序。在這個(gè)主程序循環(huán)的過(guò)程中,如果有異常情況發(fā)生,則隨著中斷觸發(fā)事件的發(fā)生,將進(jìn)入中斷響應(yīng),實(shí)現(xiàn)對(duì)中斷函數(shù)的調(diào)用。
4 總結(jié)
C語(yǔ)言作為編程語(yǔ)言中經(jīng)典的一類程序設(shè)計(jì)語(yǔ)言,因其結(jié)構(gòu)化、可移植化、編程簡(jiǎn)介的特點(diǎn),被廣泛的應(yīng)用國(guó)民生產(chǎn)的各個(gè)領(lǐng)域。而隨著信息技術(shù)、互聯(lián)網(wǎng)技術(shù)以及物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,未來(lái)C語(yǔ)言的應(yīng)用領(lǐng)域?qū)⒆兊酶訌V泛。對(duì)C語(yǔ)言在軟件編程方面的研究和分析將變得更有意義。
參考文獻(xiàn)
[1]顧泰龍,李遠(yuǎn)靜.基于C語(yǔ)言的計(jì)算機(jī)軟件編程實(shí)驗(yàn)研究[J].軟件工程師,2013(08).
[2]李強(qiáng).計(jì)算機(jī)軟件開(kāi)發(fā)語(yǔ)言的選擇探討[J].電子制作,2013(09).
作者單位
篇10
關(guān)鍵詞:獨(dú)立學(xué)院;C語(yǔ)言;學(xué)生學(xué)習(xí)特點(diǎn);困難;教學(xué)方法
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)25-7176-02
Independent Colleges C Language Teaching Test
LIU Li-juan
(Nanjing Normal University Taizhou College, Taizhou 225300, China)
Abstract: C language is one of the Language Tests which an independent non-computer science and engineering college students in obtaining bachelor's degree level certificates must participate in.Examination pass rates over the years reflect that, C language have a certain degree of difficulty, Secondary examination pass rate was generally not high. How to make the C language teaching more effective for students to grasp the main points to improve programming ability, successfully passed the test, this is a problem worthy of careful consideration. From characteristics of students in the independent College, C language learning difficulties, thinking of C language teaching methods several aspects, followed by the C language Teaching Test of independent Institute are discussed,expectations are constantly in search of better teaching methods.
Key words: Independent Institute; C language; student learning characteristics; difficulties; teaching methods
在計(jì)算機(jī)技術(shù)飛速發(fā)展的今天,各種計(jì)算機(jī)軟件開(kāi)發(fā)語(yǔ)言是計(jì)算機(jī)更新?lián)Q代的一個(gè)重要條件,常見(jiàn)的有VB、C、C++、C#.NET等等。其中,C語(yǔ)言可移植性好,既具有高級(jí)語(yǔ)言的特點(diǎn),又具有低級(jí)語(yǔ)言的許多特點(diǎn),因此它屬于一種中間語(yǔ)言一直廣泛使用到今天。特別是在高校,《C語(yǔ)言程序設(shè)計(jì)》這門(mén)課一般面向初學(xué)程序設(shè)計(jì)的學(xué)生開(kāi)設(shè),掌握C語(yǔ)言的精髓,是學(xué)生學(xué)好其他后續(xù)專業(yè)課程的關(guān)鍵。對(duì)于獨(dú)立學(xué)院要參加等級(jí)考試的學(xué)生來(lái)說(shuō),C語(yǔ)言學(xué)習(xí)要求更高、難度更大,因此要針對(duì)特殊環(huán)境下學(xué)生的特點(diǎn)不斷改進(jìn)教學(xué)方法以達(dá)到最終的教學(xué)目標(biāo)。通過(guò)多年教學(xué),現(xiàn)對(duì)獨(dú)立學(xué)院C語(yǔ)言等級(jí)考試教學(xué)做如下幾點(diǎn)探討。
1 獨(dú)立學(xué)院學(xué)生的學(xué)習(xí)特點(diǎn)
獨(dú)立學(xué)院招收的本三批次學(xué)生,大多在學(xué)習(xí)能力、學(xué)習(xí)自主性方面還是稍差的,學(xué)習(xí)過(guò)程中,習(xí)慣于接受老師課本上基本知識(shí)點(diǎn)的講解,對(duì)于補(bǔ)充提高的內(nèi)容,比較難于掌握,加上課后幾乎不問(wèn)問(wèn)題,自學(xué)能力差,不擅長(zhǎng)復(fù)結(jié),一旦有問(wèn)題得不到及時(shí)解決,就會(huì)在后續(xù)學(xué)習(xí)過(guò)程中越積越多,從而導(dǎo)致整門(mén)課程學(xué)習(xí)的惡性循環(huán),考試復(fù)習(xí)更是無(wú)從下手。
2 C語(yǔ)言學(xué)習(xí)中存在的困難
C語(yǔ)言學(xué)習(xí)中存在的困難主要體現(xiàn)在教學(xué)過(guò)程中,教學(xué)過(guò)程涉及到兩個(gè)重要方面:教材內(nèi)容和教學(xué)方法。就教材內(nèi)容而言,C語(yǔ)言教學(xué)使用的是譚浩強(qiáng)編寫(xiě)的《C程序設(shè)計(jì)》。整本教材所包含的內(nèi)容比較側(cè)重于理論知識(shí)點(diǎn)的講解,適當(dāng)加上了一些實(shí)例分析,而不是一本側(cè)重于培養(yǎng)學(xué)生編程能力的教材。書(shū)中包含的基本知識(shí)點(diǎn)很多,而且相對(duì)而言顯得比較瑣碎,但前后章節(jié)又彼此相輔相成,學(xué)生如果不花大量時(shí)間去記憶,根本掌握不了最基礎(chǔ)的語(yǔ)法。
目前在C語(yǔ)言教學(xué)過(guò)程中,所使用的教學(xué)方法存在以下問(wèn)題:
1)教學(xué)過(guò)程枯燥
有的老師在教學(xué)過(guò)程中使用多媒體課件PPT教學(xué),但PPT上的內(nèi)容跟書(shū)上的幾乎一樣,從課件上看不出任何重點(diǎn)、難點(diǎn)的標(biāo)注,上課相當(dāng)于加上稍許講解從頭到尾把書(shū)上內(nèi)容讀了一遍。學(xué)生本身就覺(jué)得書(shū)本上理論知識(shí)枯燥,如果教學(xué)過(guò)程安排不恰當(dāng),學(xué)生從心理上就會(huì)逐漸有排斥性,從而導(dǎo)致他們從一開(kāi)始就沒(méi)興趣、不好好學(xué)的現(xiàn)象。
2)忽視教學(xué)方法的總結(jié)
事實(shí)證明,C語(yǔ)言中有很多學(xué)生容易混淆的知識(shí)點(diǎn),特別是在學(xué)到后續(xù)章節(jié)例如函數(shù)的時(shí)候,學(xué)生編寫(xiě)函數(shù)調(diào)用程序往往會(huì)出現(xiàn)理不清思路、不知如何下手的狀況,不清楚被調(diào)用函數(shù)和調(diào)用函數(shù)分別如何定義、如何編程,如果在授課過(guò)程中教師能夠及時(shí)總結(jié),學(xué)生理清了思路,就可以很順利地去解決問(wèn)題了。
3)忽視學(xué)生編程能力的提高
為了應(yīng)付等級(jí)考試,有的老師一味追求題海戰(zhàn)術(shù),認(rèn)為學(xué)生練習(xí)題目做得越多運(yùn)用越熟練,但在熟練的同時(shí),是否考慮到這樣兩個(gè)問(wèn)題:有些學(xué)生一開(kāi)始就做不下去反過(guò)來(lái)抄襲答案;使學(xué)生重復(fù)做同類型題目會(huì)浪費(fèi)學(xué)生大量的時(shí)間。再加上老師如果不注重強(qiáng)調(diào)編程題算法的重要性,學(xué)生編程能力往往得不到提高。
4)不了解學(xué)生的掌握程度
教學(xué)過(guò)程是教和學(xué)的統(tǒng)一體,忽視任何一方整個(gè)教學(xué)效果都不會(huì)理想。因此在教學(xué)過(guò)程中,不僅要注重教師的教,也要注重學(xué)生的學(xué)。如果僅僅考慮如何教,教師就不能接收到來(lái)自學(xué)生的信息反饋,從而無(wú)法根據(jù)學(xué)生的學(xué)習(xí)情況及時(shí)改進(jìn)教學(xué)方法,調(diào)整教學(xué)進(jìn)度。而在很多授課過(guò)程中,僅僅只是教師的講解,沒(méi)有任何跟學(xué)生的提問(wèn)互動(dòng)思考等過(guò)程,或者課后跟學(xué)生也毫無(wú)交流。缺少了學(xué)這樣一個(gè)巨大的信息反饋渠道,教學(xué)過(guò)程根本無(wú)法很好的完成。
3 C語(yǔ)言教學(xué)方法思考
3.1 教材總體把握
1)要掌握若干數(shù)據(jù)類型,包括char、int、float等基本數(shù)據(jù)類型和數(shù)組、結(jié)構(gòu)體、共用體等構(gòu)造數(shù)據(jù)類型,這是程序中最基本的數(shù)據(jù)存儲(chǔ)方式。
2)掌握三種基本的程序結(jié)構(gòu):順序、選擇、循環(huán)。任何一個(gè)復(fù)雜的程序,都是由三種基本結(jié)構(gòu)組成的。其中,循環(huán)是重點(diǎn)也是難點(diǎn)。
3)C語(yǔ)言使用函數(shù)來(lái)實(shí)現(xiàn)某個(gè)特定功能。
4)C語(yǔ)言提供了一個(gè)十分便利的工具――指針,它能直接指向內(nèi)存空間單元,從而可以更加方便地操作變量,簡(jiǎn)化程序設(shè)計(jì)。
3.2 具體教學(xué)方法
1)重視理論基礎(chǔ)
通過(guò)清晰的講解讓學(xué)生打下扎實(shí)的理論基礎(chǔ),在學(xué)生記憶知識(shí)點(diǎn)的同時(shí)利用典型題目,幫助學(xué)生靈活應(yīng)用所學(xué)知識(shí),及時(shí)鞏固。
2)讓初學(xué)者學(xué)會(huì)讀程序
初學(xué)程序設(shè)計(jì),不會(huì)編寫(xiě)程序代碼屬正常現(xiàn)象。帶領(lǐng)學(xué)生從一開(kāi)始多看程序,閱讀的程序越多,解決不同問(wèn)題的算法也就能夠積累越多。讀程序的最大好處是先學(xué)別人怎么寫(xiě)程序,有了一定積累再自己嘗試去動(dòng)手編寫(xiě)程序。在記憶算法的同時(shí),可以發(fā)現(xiàn)很多問(wèn)題歸根到底可以使用同一方法解決,因此在閱讀程序的過(guò)程中還要學(xué)會(huì)算法的歸類。
3)注意教學(xué)方法的總結(jié)
在此對(duì)C語(yǔ)言中的兩個(gè)難點(diǎn)函數(shù)的編寫(xiě)和指針?lè)謩e作總結(jié)。
函數(shù)調(diào)用時(shí),main函數(shù)的框架一般是變量定義、簡(jiǎn)單輸入、函數(shù)調(diào)用、簡(jiǎn)單輸出,而實(shí)現(xiàn)某個(gè)特定功能的函數(shù)要看成一個(gè)整體單獨(dú)定義,其框架一般是變量定義、實(shí)現(xiàn)函數(shù)功能的處理語(yǔ)句、返回值語(yǔ)句。特別是對(duì)于遞歸函數(shù)的編寫(xiě),可以遵循“找遞歸公式?寫(xiě)遞歸函數(shù)?補(bǔ)充main函數(shù)”的規(guī)則,這種方法對(duì)于學(xué)生理解“漢諾塔”問(wèn)題相對(duì)容易些。對(duì)于嵌套函數(shù),建議根據(jù)算法先寫(xiě)出要使用到的幾個(gè)空函數(shù)框架,再逐個(gè)補(bǔ)全各函數(shù)語(yǔ)句。
對(duì)于指針這章,關(guān)鍵要抓住變量的入口地址,其中所對(duì)應(yīng)的有單個(gè)變量的地址、數(shù)組入口地址、函數(shù)的入口地址。
指向數(shù)組的指針,可以定義一個(gè)指向數(shù)組入口地址的指針變量p,通過(guò)p++使指針指向數(shù)組的每一個(gè)元素,因此*p可代替數(shù)組的每一個(gè)元素,避免了使用下標(biāo)法來(lái)引用元素。字符串的指針就是指向數(shù)組的指針的一個(gè)特例,特別要注意經(jīng)常使用字符串結(jié)束標(biāo)記‘\0’作為循環(huán)結(jié)束的判斷條件。
指向函數(shù)的指針很簡(jiǎn)單,因?yàn)樗冀K指向函數(shù)的入口,可以在指針變量名前加*就可以代替函數(shù)名進(jìn)行使用。一般使用指向函數(shù)的指針有這樣一個(gè)特殊場(chǎng)合,一個(gè)函數(shù)有多個(gè)參數(shù),多次調(diào)用此函數(shù)時(shí),每次前幾個(gè)參數(shù)相同,而最后一個(gè)參數(shù)不同,最后一個(gè)參數(shù)可以利用一個(gè)指向函數(shù)的指針來(lái)實(shí)現(xiàn),每次使指針指向另外幾個(gè)不同的函數(shù)。例如,在編寫(xiě)一個(gè)求定積分的通用函數(shù)時(shí),下限、上限保持不變,而每次函數(shù)表達(dá)式不同,我們就可以用此方法來(lái)實(shí)現(xiàn)。
返回指針值的函數(shù)一般在函數(shù)被調(diào)用后,會(huì)返回一個(gè)指針,以便于主函數(shù)利用此指針進(jìn)行其他操作,一般返回指針值的函數(shù)可用在查找信息的編程中。
指針數(shù)組和指向指針的指針,通常要聯(lián)合起來(lái)使用,因?yàn)橹赶蛑羔樀闹羔槥槎?jí)指針,必須通過(guò)一級(jí)指針才能與變量相互引用,而指針數(shù)組是一個(gè)很好的中介,它可以將若干一級(jí)指針聚集起來(lái),指向若干個(gè)變量。這時(shí),我們只要通過(guò)一個(gè)二級(jí)指針就可以很方便地指向指針數(shù)組的每一個(gè)元素,從而間接地指向每一個(gè)變量。
4)重視上機(jī)操作
一般上機(jī)課時(shí)間有限,因此建議課后讓學(xué)生動(dòng)手在紙上編寫(xiě)代碼,上機(jī)課主要抓緊時(shí)間進(jìn)行調(diào)試。老師要重點(diǎn)講解編程題目的算法,提醒學(xué)生可以將大的程序分解成熟悉的小程序編寫(xiě),再將小程序連接起來(lái),上機(jī)大部分時(shí)間還是讓學(xué)生自主完成程序的調(diào)試,這樣有利于學(xué)生自我總結(jié)提高,掌握編程技巧。
3.3 信心教學(xué)
教師在平時(shí)的教學(xué)過(guò)程中,首先要給學(xué)生樹(shù)立起學(xué)習(xí)的信心,激發(fā)他們的學(xué)習(xí)激情。多年來(lái),C語(yǔ)言的教學(xué)都是以輸出“HELLO WORLD”開(kāi)始講解程序設(shè)計(jì)語(yǔ)言的,該程序過(guò)于平淡,不能引起學(xué)生的學(xué)習(xí)興趣。我們可以考慮演示一個(gè)事先編好的小游戲程序,從一開(kāi)始吸引學(xué)生的注意力,激發(fā)其濃厚的學(xué)習(xí)興趣。在學(xué)習(xí)過(guò)程中,要發(fā)揮學(xué)生的學(xué)習(xí)信心,可以采取諸如:編故事提高語(yǔ)言的趣味性、引用經(jīng)典數(shù)學(xué)問(wèn)題、讓學(xué)生親自參與等方法,讓學(xué)生在不知不覺(jué)中即學(xué)到了知識(shí),又活躍了課堂氣氛。最終,通過(guò)等級(jí)考試的考核讓學(xué)生實(shí)現(xiàn)其信心。
C語(yǔ)言的學(xué)習(xí)存在一定難度,對(duì)于獨(dú)立學(xué)院的學(xué)生來(lái)說(shuō)參加等級(jí)考試學(xué)習(xí)難度更大,因此在教學(xué)過(guò)程中,我們要不斷研究采用合適的教學(xué)方法讓學(xué)生產(chǎn)生學(xué)習(xí)興趣,掌握學(xué)習(xí)方法、勤于做題、自主編程,最終順利地通過(guò)等級(jí)考試。
參考文獻(xiàn):
[1] 王淑敬. 關(guān)于C語(yǔ)言教學(xué)的一點(diǎn)體會(huì)[J]. 計(jì)算機(jī)科學(xué),2008.
[2] 趙妮, 熊高君. 激活課堂氣氛,提升學(xué)習(xí)興趣――談C語(yǔ)言課堂教學(xué)方法[J].教育與教學(xué)研究,2008.12.
[3] 何岸. 論《C語(yǔ)言程序設(shè)計(jì)》課程的趣味教學(xué)[J]. 高等函授學(xué)報(bào)(自然科學(xué)版),2008.10.