c語言函數(shù)范文

時間:2023-03-16 18:55:47

導(dǎo)語:如何才能寫好一篇c語言函數(shù),這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。

c語言函數(shù)

篇1

一、函數(shù)的概念函數(shù)是一組語句,這組語句可以完成一個獨立的操作,這組語句有一個簡短的名字,程序員可以僅僅利用這個名字完成某個操作。函數(shù)的使用,使復(fù)雜的程序變得簡單化、條理化、清晰化。在C語言函數(shù)分為兩大類:庫函數(shù)、用戶自定義函數(shù)。

1、庫函數(shù)在編寫程序的過程中往往有一些操作需要頻繁的使用,并且這些操作的代碼實現(xiàn)又有一定的難度。比如數(shù)據(jù)的輸入、輸出。在C語言中是沒有輸入輸出語句的,由于輸入輸出涉及到多計算機硬件的直接操作,對用戶來說較困難。這些操作往往由編譯系統(tǒng)的開發(fā)商提供給用戶。它們都是以獨立程序塊的模式出現(xiàn),并且存在于編譯系統(tǒng)的某個文件中,這就是庫函數(shù)。比如printf(),scanf()。它們是由編譯程序根據(jù)一般用戶的需要編制并提供給用戶使用的一組程序代碼。C語言的庫函數(shù)極大地方便了用戶,同時也補充了C語言本身的不足。事實上,在編寫C語言程序時,應(yīng)當(dāng)盡可能多地使用庫函數(shù),這樣既可以提高程序的運行效率,又可以提高編程的質(zhì)量。

2、用戶自定義函數(shù)用戶自定義函數(shù)顧名思義就是用戶自己定義的函數(shù)。程序的編寫過程其實就是一個個函數(shù)的定義過程。很多情況下,C語言的編譯系統(tǒng)提供給我們的函數(shù)并不能滿足用戶的要求,這就要求用戶自己編寫函數(shù)。函數(shù)是由一組語句組成,并給定一個名字。相應(yīng)的函數(shù)的定義一般可分為兩大部分:函數(shù)頭部的定義、函數(shù)體的定義。形式如下:函數(shù)的類型函數(shù)名(函數(shù)的參數(shù)){函數(shù)體;}上面大括號上邊的一行成為函數(shù)的頭部(首部),它給出了函數(shù)的表面信息:函數(shù)返回值的類型,函數(shù)的名字,函數(shù)要處理的數(shù)據(jù);大括號內(nèi)的語句描述了函數(shù)的內(nèi)在構(gòu)造,這組語句完成一個獨立的操作,是對函數(shù)能夠完成功能的具體描述。

3、函數(shù)的調(diào)用函數(shù)是由一組語句組成,并給定一個名字。執(zhí)行與函數(shù)相關(guān)的一組語句的行為稱為函數(shù)的調(diào)用。應(yīng)該說函數(shù)定義好之后調(diào)用之前是沒有什么意義的。函數(shù)就像某個具有特殊功能的機器工具。這些機器只有在開關(guān)打開之后才能發(fā)揮作用。在程序編寫過程中,完成“開關(guān)機器”這個操作的就是函數(shù)調(diào)用。函數(shù)調(diào)用的一般形式:函數(shù)名(實際參數(shù));

二、函數(shù)的教學(xué)C語言函數(shù)的教學(xué)主要是學(xué)習(xí)自定義函數(shù)以及庫函數(shù)的使用。

篇2

關(guān)鍵詞:模塊化程序設(shè)計;函數(shù)調(diào)用;嵌套;遞歸

0 引言

程序調(diào)用是指當(dāng)前正在執(zhí)行的程序(又稱調(diào)用程序)中出現(xiàn)了調(diào)用其它程序的語句,使得程序的執(zhí)行轉(zhuǎn)移到另一個程序段(又稱為被調(diào)用程序)中,同時保存必要的信息,以便在被調(diào)用程序執(zhí)行結(jié)束后恢復(fù)執(zhí)行調(diào)用程序的過程。在C/C++語言中,稱程序調(diào)用為函數(shù)調(diào)用。當(dāng)在一個函數(shù)中出現(xiàn)了函數(shù)名時,就發(fā)生了函數(shù)調(diào)用。在C/C++語言中,有以下兩種函數(shù)調(diào)用方式:

(1)函數(shù)調(diào)用以一個語句的形式出現(xiàn),這時被調(diào)用函數(shù)可以沒有返回值(函數(shù)類型可以設(shè)置為void類型);

(2)以表達(dá)式中的一個項的形式出現(xiàn),被調(diào)用函數(shù)必須有一個明確的返回值。

按照函數(shù)調(diào)用的性質(zhì)的不同,函數(shù)調(diào)用又分為兩類:函數(shù)嵌套調(diào)用和函數(shù)遞歸調(diào)用。以下就嵌套調(diào)用與遞歸調(diào)用概念進(jìn)行一些說明。

1 存在問題和解決辦法

C語言函數(shù)的定義都是獨立的,互不包含。換句話來說,一個函數(shù)內(nèi)不能包含對另一個函數(shù)的定義。

嵌套調(diào)用。C語言不能嵌套定義函數(shù),但可以嵌套調(diào)用(nested calling)函數(shù)。嵌套調(diào)用過程如圖1所示。

圖1 C語言函數(shù)嵌套調(diào)用過程

遞歸調(diào)用。在調(diào)用一個函數(shù)的過程中出現(xiàn)了直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。換句話說,當(dāng)一個程序調(diào)用它自身時就發(fā)生了遞歸(recursive calling)。C/C++語言的特點之一就在于允許函數(shù)的遞歸調(diào)用,如圖2所示。

遞歸算法的實質(zhì)是將原來的問題分解為新的問題,而對新的問題又用到了原有問題的解法。按照這一原則分解下去,每次出現(xiàn)的新問題是原有問題的簡化子集,而最終分解出來的問題,是一個已知解的問題(即調(diào)用至滿足調(diào)用終止條件,得到一個可用的基礎(chǔ)值),這便是有限的遞歸調(diào)用。只有有限的遞歸調(diào)用才是有意義的;無限的遞歸調(diào)用永遠(yuǎn)得不到解,沒有實際意義。

圖2 函數(shù)的遞歸調(diào)用過程

遞歸的過程有兩個階段:

第一階段,遞推。將原有的問題不斷分解為新的子問題,逐漸從未知向已知推進(jìn),直到推進(jìn)至滿足調(diào)用終止條件,得到一個可用的基礎(chǔ)值。

第二階段,回歸。從基礎(chǔ)值出發(fā),按照遞推的逆過程,逐一求值回歸,最后到達(dá)遞推的開始處,結(jié)束遞歸調(diào)用。

2 函數(shù)嵌套調(diào)用與遞歸調(diào)用實例分析

現(xiàn)各舉一個嵌套調(diào)用和遞歸調(diào)用的小程序,以說明上面的理解(為了表明C++也支持嵌套調(diào)用和遞歸調(diào)用,以下程序用C++語言編寫)。

例1:輸入兩個整數(shù),求它們和的平方。

分析:為了說明函數(shù)的嵌套調(diào)用,針對該問題可以設(shè)計兩個函數(shù),求平方的函數(shù)SQU及求另一個整數(shù)平方和的函數(shù)SUM。由主函數(shù)調(diào)用SQU,SQU又調(diào)用SUM(見圖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é)束語

嵌套調(diào)用是將功能獨立的函數(shù)有機地結(jié)合起來,完成一項任務(wù)。采用嵌套調(diào)用,提高了程序的可讀性、可維護性和可擴充性。而采用遞歸調(diào)用允許某些算法用簡單的小例程來實現(xiàn),但不能保證速度或效率。遞歸使用不當(dāng)會導(dǎo)致程序在執(zhí)行過程中耗盡空間(因為在遞歸調(diào)用時必然要一次次生成新的同名局部變量,并動態(tài)地為其分配存儲單元),從而引起程序(有時是整個系統(tǒng))崩潰。

篇3

關(guān)鍵詞:函數(shù)教學(xué);函數(shù)定義;調(diào)用;聲明

中圖分類號:TP312.1-4 文獻(xiàn)標(biāo)識碼:A文章編號: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語言是一種結(jié)構(gòu)化程序設(shè)計語言,結(jié)構(gòu)化程序設(shè)計是以模塊化設(shè)計為中心,就是將―個大的計算任務(wù)劃分為一個個比較小的任務(wù),這些小任務(wù)均由函數(shù)來完成,因此對于函數(shù)這章掌握的好壞直接關(guān)系C語言進(jìn)一步的學(xué)習(xí),本人從事C語言教學(xué)多年,總結(jié)多年的教學(xué)經(jīng)驗,在此對函數(shù)教學(xué)的體會進(jìn)行交流探討。

二、函數(shù)的三要素

雖然C語言提供了豐富的庫函數(shù),但不可能滿足每個用戶的各種特殊需要,因此大量的函數(shù)必須由用戶自己來編寫,如何編寫,并且很好地應(yīng)用,就必須掌握函數(shù)的三要素----定義、調(diào)用和聲明函數(shù)。

(一)如何定義函數(shù)。定義函數(shù)是重點,也是學(xué)生學(xué)習(xí)起來的難點,首先來看看函數(shù)定義的一般形式:函數(shù)類型函數(shù)名(形參類型說明表)

{

說明部分

語句部分

}

自己定義函數(shù)時,必須想清楚兩點,第一是否有返回值;第二是否有形參。

下面通過一個例子展示一下如何來定義函數(shù):

例:編寫一個函數(shù)實現(xiàn)兩個正數(shù)的最大公約數(shù)

第一種情況:有返回值

有參數(shù),有兩個整型形參

定義如下:

int gys1(int a ,int b)

{intm; m=a=1;m- -) if(a%m==0&&b%m==0)return m; //返回值的類型最好和函數(shù)類型一致

}

第二種情況:不需要返回值

有參數(shù),同樣是兩個整型形參

void gys2(int a,int b) //void表示無類型,即不需要返回值

{int m; m = a=1;m- -) if(a%m==0&&b%m==0)printf("%d",m);

}

(二)調(diào)用函數(shù)

函數(shù)定義之后,是為了被調(diào)用,同樣以上面的程序為例,展示下如何在主調(diào)函數(shù)中調(diào)用以上兩個函數(shù):

第一個情況被調(diào)用說明:

main()

{

int m,n; scanf("%d%d",&m,&n);printf("%d是最大公約數(shù)",gys1(m,n));

}

以上兩種情況,調(diào)用語句用斜體表示!

第二個情況被調(diào)用說明:

main()

{

int m,n; scanf("%d%d",&m,&n);gys2(m,n);

}

(三)函數(shù)的聲明

函數(shù)定義后,為了正確調(diào)用,要養(yǎng)成聲明函數(shù)的習(xí)慣,以免出錯,對于自己的定義的函數(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ù)傳遞的過程中,必須掌握形參與實參的概念:形式參數(shù):定義函數(shù)時函數(shù)名后面括號中的變量名。實際參數(shù):調(diào)用函數(shù)時函數(shù)名后面括號中的表達(dá)式。(二)單向值傳遞。當(dāng)函數(shù)的形參和實參都是簡單變量時,實參向形參傳遞數(shù)據(jù)是一種單向值傳遞,實參的值傳遞給對應(yīng)的形參,但是形參的值不會回傳給實參。(三)地址值傳遞。當(dāng)函數(shù)的形參和實參是數(shù)組名或指針的時候,這個時候?qū)崊鬟f的是數(shù)組的首地址或指針指向變量的首地址,當(dāng)把實參傳遞過去時,由于形參也代表首地址,這樣實參和形參的首地址相同,即實參和形參占用相同的存儲空間,這樣一種傳遞稱為地址值傳遞。

四、結(jié)束

函數(shù)的三要素和函數(shù)的值傳遞是C語言函數(shù)中基礎(chǔ)也是很重要的內(nèi)容,只有在掌握以上內(nèi)容的基礎(chǔ)上才能更好地學(xué)習(xí)后期知識,經(jīng)過這么多年的實踐教學(xué),通過這種案例為引導(dǎo)的方式教學(xué)起到較好的效果!

參考文獻(xiàn):

[1]何光明.楊靜宇.C語言程序與應(yīng)用開發(fā).北京:清華大學(xué)出版社,2006

篇4

關(guān)鍵詞:C++語言程序設(shè)計;函數(shù)指針;分析研究

中圖分類號:TP311.11 文獻(xiàn)標(biāo)識碼:A文章編號: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)識C++語言程序設(shè)計中的函數(shù)指針

(一)指針與函數(shù)。在C++語言程序設(shè)計中,將指針與函數(shù)結(jié)合在一起使用具有非常豐富的內(nèi)涵。比如說,可以把指針作為函數(shù)的參數(shù)來使用,也可以把指針作為函數(shù)的返回值,另外,指針可以指向函數(shù)成為函數(shù)指針等。在C++語言程序設(shè)計中,用指針作函數(shù)的參數(shù),從而實現(xiàn)地址傳參的調(diào)用。而所謂的調(diào)用就是系統(tǒng)自動將實參地址的值賦給其所對應(yīng)的形參指針,從而使形參指針指向?qū)嶋H參數(shù)變量。這樣一來,形參在函數(shù)體內(nèi)的變化,將會直接影響到調(diào)用函數(shù)中與之對應(yīng)的實參的值。

(二)區(qū)別指針函數(shù)與函數(shù)指針的概念。由于函數(shù)的類型是按照函數(shù)返回值的類型來定義的,所以把返回值為指針類型的函數(shù)稱為指針函數(shù)。其中需要說明的是如果使用某變量的地址來充當(dāng)函數(shù)的返回值的話,還需要考慮地址所對應(yīng)的變量空間是否還在被占用,若地址空間已經(jīng)被釋放掉,那么其中的數(shù)據(jù)就有可能發(fā)生了變化,這樣的話就需要將相應(yīng)的變量設(shè)置為靜態(tài)變量,否則的話,就不能實現(xiàn)正確傳遞參數(shù)的效果。還有一點要說明的就是在使用指針函數(shù)時,必須把接收函數(shù)值的變量設(shè)置為指針,而且其數(shù)據(jù)類型必須與返回值的數(shù)據(jù)類型相同。

由于指針變量不僅可以指向不同的數(shù)據(jù)類型,同時還可以指向函數(shù),其中把指向函數(shù)入口地址的指針稱為函數(shù)指針。函數(shù)指針作為C++語言程序設(shè)計中函數(shù)與指針結(jié)合應(yīng)用的一個重要概念,函數(shù)指針的作用就是用來在函數(shù)間進(jìn)行函數(shù)參數(shù)的傳遞。

在C++語言程序設(shè)計中常常會把指針函數(shù)與函數(shù)指針兩個概念混淆起來,實際上,明白二者的實質(zhì)后,二者完全是兩個不同的概念,其最為顯著的區(qū)別就在于函數(shù)指針中的指針是指向函數(shù)入口的,而指針函數(shù)中的指針是指向函數(shù)出口的,所以在使用時一定要把握好二者的區(qū)別,正確使用。

二、使用C++語言程序設(shè)計函數(shù)指針需要注意的問題

盡管函數(shù)指針的使用可以為程序設(shè)計帶來很多的方便,但是由于指針變量自身存在的缺陷,所以在使用中如果不小心的話就會出現(xiàn)錯誤,嚴(yán)重的話就可能導(dǎo)致系統(tǒng)的崩潰,所以這里有必要就C++語言程序設(shè)計函數(shù)指針應(yīng)用中經(jīng)常出現(xiàn)的問題進(jìn)行說明。

第一、指針變量初始值的賦值問題。盡管指針變量是指向的是相應(yīng)數(shù)據(jù)變量的存儲地址,但是在使用該指針變量前必須對指針變量的初值進(jìn)行賦值,如果不對其賦值的話,系統(tǒng)就會隨機對其進(jìn)行賦值,顯然,這就會導(dǎo)致比較嚴(yán)重的錯誤。

第二、指針變量所指對象的存儲單元單元分配問題。在對指針變量所指的對象進(jìn)行賦值時需要為其所指的對象分配充足的存儲單元,如果存儲單元分配不足的話也將會發(fā)生一系列的錯誤。

第三、在操作前不對指針的值是否為空就進(jìn)行操作的問題。對于一個值為空的,它的值為空的指針類型變量而言,它是不指向任何變量的,如果強制對它進(jìn)行操作的話,就可能會出現(xiàn)如下的幾種情況:一是禁止讀寫;二是只允許讀而不允許寫;三是既允許讀又允許寫的三種不合法的存儲區(qū)域賦值問題,顯然,這一問題所造成的錯誤勢必會非常嚴(yán)重。

第四、函數(shù)按地址引用時參數(shù)的誤用問題。函數(shù)參數(shù)的引用包括按值引用和按地址引用兩種不同的引用方式,其中按值引用的是數(shù)值而按地址引用的是地址,二者是不一樣的,一定要區(qū)分開來,不能混淆。

三、C++語言程序設(shè)計中函數(shù)指針的應(yīng)用技巧分析

函數(shù)指針作為一種具有特殊用途的指針,它廣泛的應(yīng)用于C++語言程序設(shè)計中。其中C++語言程序設(shè)計中的函數(shù)指針主要用于調(diào)用函數(shù)以及充當(dāng)函數(shù)的參數(shù)這兩個方面。而C++語言程序設(shè)計中函數(shù)指針的應(yīng)用是有技巧的,其使用技巧如下:

第一、多態(tài)機制的實現(xiàn)。在C++語言程序設(shè)計中使用函數(shù)指針來實現(xiàn)多態(tài)機制是比較復(fù)雜的,其中主要是通過虛函數(shù)表來實現(xiàn)的,其中虛函數(shù)表中存放的就是由函數(shù)指針組成的數(shù)組,由這些函數(shù)指針來指向?qū)嶋H所要調(diào)用的函數(shù)。

第二、回調(diào)函數(shù)。所謂的回調(diào)函數(shù)可以這樣的來理解,如果把某個函數(shù)的指針作為參數(shù)將其傳遞給另一個函數(shù)時,當(dāng)這個指針用來指向函數(shù)時,就是回調(diào)函數(shù)。在C++語言程序設(shè)計中回調(diào)函數(shù)應(yīng)用的比較廣泛,舉個例子,譬如Win32程序設(shè)計中的WinProc其實就是一種回調(diào)函數(shù),它主要是用來處理窗口的相關(guān)消息。

第三、取代分支語句。分支語句在程序維護上往往具有一定的限制,然而函數(shù)指針的應(yīng)用可以很好的解決這一問題。

參考文獻(xiàn):

[1]張海平.C/C++語言中函數(shù)指針的深入分析與應(yīng)用[J].軟件開發(fā)與設(shè)計,2009(22)

篇5

經(jīng)濟學(xué)是處理資源配置、解決資源稀缺性和需求的學(xué)間,而農(nóng)業(yè)經(jīng)濟學(xué)也是在解決如何更合理更有效的配置農(nóng)業(yè)資源、要素、取得更大農(nóng)業(yè)產(chǎn)值,滿足消費者需求的間題?;ヂ?lián)網(wǎng)+農(nóng)業(yè)也是在傳統(tǒng)農(nóng)業(yè)和農(nóng)業(yè)經(jīng)濟理論的基礎(chǔ)上,結(jié)合新的要素和互聯(lián)網(wǎng)經(jīng)濟的營銷演化出的新的農(nóng)業(yè)經(jīng)濟模式。   

1 傳統(tǒng)農(nóng)業(yè)   

 傳統(tǒng)農(nóng)業(yè)被認(rèn)為低效,但在舒爾茨的《改造傳統(tǒng)農(nóng)業(yè)》一書中,傳統(tǒng)農(nóng)業(yè)是被認(rèn)為要素是被充分配置了的,制約其進(jìn)一步發(fā)展的是資本的不足和現(xiàn)代技術(shù)使用的欠缺,以及銷售渠道的不通暢和抽成。農(nóng)業(yè)的獲利空間和發(fā)展被壓制了,體現(xiàn)在農(nóng)村勞動力的外流和農(nóng)產(chǎn)品的原料化,與市場的脫節(jié)。由于這類原因,農(nóng)業(yè)產(chǎn)品多根據(jù)生產(chǎn)者自己的少量信息與主觀判斷實施自己的生產(chǎn)計劃,結(jié)果只能取得市場的平均收益,這種局面容易往復(fù)循環(huán),風(fēng)險來臨時沒有防范能力,再次返貧,影響農(nóng)業(yè)農(nóng)村發(fā)展。

2 互聯(lián)網(wǎng)農(nóng)業(yè)及現(xiàn)狀

互聯(lián)網(wǎng)推動農(nóng)產(chǎn)品銷售模式升級,農(nóng)業(yè)生產(chǎn)的附加值有效提高,傳統(tǒng)農(nóng)業(yè)的發(fā)展模式進(jìn)一步深度改造,主要表現(xiàn)在以下幾個方面:(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ù)水平。    

中國目前全國涉農(nóng)電子商務(wù)平臺已超3萬家,農(nóng)產(chǎn)品電商平臺已有3000家。2013年底截止,中國農(nóng)村地區(qū)網(wǎng)民數(shù)達(dá)1.77億,相比2012年增長2101萬人,增長率13.5%。預(yù)計2015年底時,我國互聯(lián)網(wǎng)總?cè)丝跁黄?億,比例近500Io,農(nóng)村市場占260Io。大規(guī)模的農(nóng)村網(wǎng)民數(shù)量將為互聯(lián)網(wǎng)農(nóng)業(yè)的發(fā)展和普及提供保障。

二、相關(guān)理論依據(jù)  

1 微觀經(jīng)濟學(xué)理論依據(jù)

蛛網(wǎng)效應(yīng)的遲滯作用。一般來說,農(nóng)業(yè)在生產(chǎn)形式和生產(chǎn)組織上給人的印象往往是低效、松散和落后的。依靠荒地的開墾和增加人力的投人來實現(xiàn)產(chǎn)量的增長,而在市場這端,由于銷路的不暢,生產(chǎn)個體的孤立,收購商的強勢壓價,很難取得高收益,而且由于蛛網(wǎng)效應(yīng),價格反饋的遲滯,往往會出現(xiàn)需求和供應(yīng)的脫節(jié)。從互聯(lián)網(wǎng)+農(nóng)業(yè)很多取得較好收益的產(chǎn)品來看,不僅通過大數(shù)據(jù)和云計算、線上線下分析消解了蛛網(wǎng)效應(yīng),而且新的產(chǎn)品及業(yè)態(tài)能夠滿足消費者心理和為他們提供更好的服務(wù)價值,即抓住消費者偏好這一因素,使得生產(chǎn)者獲得了高出甚至遠(yuǎn)高于平均收益的溢價。

2 C-D生產(chǎn)函數(shù)(柯布道格拉斯模型)的變型  

篇6

在供應(yīng)鏈全球化的今天,競爭日趨激烈,供應(yīng)鏈成員的目標(biāo)可以通過締結(jié)供應(yīng)鏈契約連結(jié)共同利益而使目標(biāo)更趨一致。但對決策者而言,面對未來的不確定性,收益和風(fēng)險需要同時考慮。傳統(tǒng)的供應(yīng)鏈定量模型在風(fēng)險中性的假設(shè)下,已獲得大量的研究成果,但現(xiàn)實的決策者會出現(xiàn)具有風(fēng)險規(guī)避特征或具有風(fēng)險偏好特征。因此,在構(gòu)建供應(yīng)鏈模型時,將供應(yīng)鏈決策者設(shè)想為風(fēng)險決策者更具實際意義。

供應(yīng)鏈中任意兩環(huán)節(jié)的鏈接可稱為二級供應(yīng)鏈,已有關(guān)于二級供應(yīng)鏈的研究已很多,并且在二級供應(yīng)鏈契約、庫存研究等方面已取得一定成果。三級供應(yīng)鏈及多級供應(yīng)鏈?zhǔn)侵冈阪湕l中三個環(huán)節(jié)或三個環(huán)節(jié)以上的鏈接。三級供應(yīng)鏈和多級供應(yīng)鏈的研究涉及鏈條多方和多類型的不同模式和不同層級,是更為復(fù)雜的研究領(lǐng)域。其中三級供應(yīng)鏈管理上的問題被稱為供應(yīng)鏈網(wǎng)絡(luò)問題的縮影,通過設(shè)計合理的供應(yīng)鏈契約,可以減弱或消除由于“雙重邊際化”和“牛鞭效應(yīng)”等造成的績效損失,優(yōu)化供應(yīng)鏈管理和改善供應(yīng)鏈績效,可實現(xiàn)風(fēng)險共擔(dān)。供應(yīng)鏈契約是供應(yīng)鏈中的企業(yè)共擔(dān)由各種不確定性帶來風(fēng)險的重要手段。同時,供應(yīng)鏈成員決策的實質(zhì)是對未來的投資決策,現(xiàn)資理論的豐富成果已逐漸引入到供應(yīng)鏈的優(yōu)化決策中。

自從Copula引入金融領(lǐng)域,金融風(fēng)險分析就進(jìn)入了新階段。Copula理論在實際應(yīng)用中有許多優(yōu)點(Nelson,1999)。首先,由于不限制邊際分布的選擇,可運用Copula理論構(gòu)造靈活的多元分布;其次,運用Copula理論建立金融模型時,可將隨機變量的邊際分布和它們之間的相關(guān)結(jié)構(gòu)分開來研究,相關(guān)結(jié)構(gòu)則由Copula函數(shù)來描述。這樣建模問題大大簡化,同時也有助于很多金融問題的分析和理解;另外,如果對變量作非線性的單調(diào)增變換,常用的相關(guān)性測度如線性相關(guān)系數(shù)的值會發(fā)生改變,而由Copula函數(shù)導(dǎo)出的一致性和相關(guān)性測度的值則不會改變,因此由Copula函數(shù)導(dǎo)出的一致性和相關(guān)性測度應(yīng)用范圍更廣、實用性更強。Copula理論最初由sklar(1959)提出;隨后Schweizer & Sklar(1953)對其進(jìn)行了階段性的總結(jié),在概率測度空間理論的框架內(nèi),介紹了Copula函數(shù)的定義及性質(zhì)等;Joe(1997)從相關(guān)性分析和多元建模的角度進(jìn)行論述,展示和介紹了Copula函數(shù)的性質(zhì)和參數(shù)族;隨后Nelsen(1999)在其專著中對Copula方法作了系統(tǒng)的闡述,成為這一研究領(lǐng)域的集大成者;在前人的理論研究基礎(chǔ)上,Embrechts et al.(1999)把Copula函數(shù)引入金融學(xué)研究,探討了在金融市場中采用線性相關(guān)指標(biāo)度量相依性的局限性,建議用Copula理論來估計隨機變量間的聯(lián)合分布,在研究思想上對Copula的應(yīng)用前景做了很好的展望。之后Copula理論如雨后春筍般很快應(yīng)用到金融市場的各個領(lǐng)域。Bouye,E.et.al.(2000),Embrechts P.et.al.(2001)等人用數(shù)據(jù)擬合Copula函數(shù)進(jìn)行了風(fēng)險分析。

國內(nèi)對Copula理論的研究起步比較晚,在方法創(chuàng)新方面,史道濟(2004)用Copula計量方法研究了外匯組合的相關(guān)性,并改進(jìn)了Copula對數(shù)據(jù)擬合的方法;韓明(2004)從計量的角度研究了Copula函數(shù);張世英和樊智 (2004)研究了Copula-Garch模型對波動性的描述;刁心薇(2004)探討了Copula函數(shù)的非參數(shù)估計方法;陶文龍(2005)對金融數(shù)據(jù)的尾部相關(guān)性用copula方法進(jìn)行了度量;單國莉和陳東峰(2005)用QQ圖方法進(jìn)行最優(yōu)Copula函數(shù)的選擇;李平和黃光東(2005)則探討了二元數(shù)字期權(quán)定價與Copula函數(shù)的關(guān)系:詹原瑞(2005)將極值理論和Copula理論結(jié)合起來探討了災(zāi)難風(fēng)險的建模問題;陳守東等(2006)結(jié)合國內(nèi)證券市場,基于Copula理論,采用Monet Carlo模擬方法度量了市場風(fēng)險。孫祿杰和柏滿迎(2006)詳細(xì)討論了現(xiàn)有相關(guān)指標(biāo)與copula函數(shù)的關(guān)系;包衛(wèi)軍和徐成賢(2008),結(jié)合SV模型和Copula技術(shù),建立了兩變量金融時間序列的Copula-SV模型。

綜上統(tǒng)計,目前尚無結(jié)合copula函數(shù)對三級供應(yīng)鏈協(xié)調(diào)的研究。在對現(xiàn)有研究進(jìn)行分析綜述的基礎(chǔ)上,以決策者具有不同風(fēng)險態(tài)度的三級供應(yīng)鏈為協(xié)調(diào)目標(biāo),研究由一個供應(yīng)商、一個分銷商和一個零售商組成的三級供應(yīng)鏈在具有不同風(fēng)險規(guī)避程度參與者的供應(yīng)鏈契約協(xié)調(diào)問題,各參與者的風(fēng)險規(guī)避特征用Copula函數(shù)和CVaR方法描述,建立隨機市場需求下契約協(xié)調(diào)的風(fēng)險值模型,供應(yīng)商、分銷商和零售商的風(fēng)險偏好程度對執(zhí)行價格、零售商和分銷商最優(yōu)訂貨量、供應(yīng)鏈及各個成員的風(fēng)險值和期望利潤水平的影響,在比較靜態(tài)分析中討論不同契約組合在三級供應(yīng)鏈協(xié)調(diào)過程中的重要作用。

嘗試基于Copula函數(shù)CVaR方法測度三級供應(yīng)鏈風(fēng)險,建立參數(shù)為風(fēng)險偏好、風(fēng)險中性、風(fēng)險規(guī)避三種的測度指標(biāo)。建立零售商和分銷商的不同風(fēng)險值決策模型。利用風(fēng)險值的次可加性,得到供應(yīng)鏈基于負(fù)收益的 Copula函數(shù)和,得到不同風(fēng)險態(tài)度下供應(yīng)鏈契約協(xié)調(diào)模型需要滿足的條件。制定有效的復(fù)合契協(xié)調(diào)機制,使系統(tǒng)利潤增量在成員間合理分配,促使供應(yīng)鏈及其成員的收益都得到帕累托改進(jìn)。

參考文獻(xiàn)

[1]張明恒,多金融資產(chǎn)風(fēng)險價值的Copula計量方法研究[J].數(shù)量經(jīng)濟技術(shù)經(jīng)濟研究,2004,(4),67-70.

[2]史道濟,姚慶祝,改進(jìn)Copula對數(shù)據(jù)擬合的方法[J].系統(tǒng)工程理論與實踐,2004,(4),49-55.

[3]韓明,Copula-一個新的計量經(jīng)濟工具[J].統(tǒng)計與信息論壇,2004,(19)5,93-95.

[4]張世英,樊智,協(xié)整理論與波動模型一金融時間序列分析及應(yīng)用!M].清華大學(xué)出版社,2004.

[5]刁心薇,copula函數(shù)的非參數(shù)估計方法〔D].吉林大學(xué)碩士學(xué)位論文,2005.

[6]陶文龍,金融數(shù)據(jù)的尾部相關(guān)性研究[D].武漢理工大學(xué)學(xué)位論文,2005.

篇7

關(guān)鍵詞:C語言 計算機 軟件編程 編程方法優(yōu)化

1、C語言概述

C語言本身具備著較為優(yōu)越的功能,而其本身擁有的兼具匯編語言和高級語言特點的能力,也是C語言能夠在今天的計算機編程中得到廣泛應(yīng)用的原因所在。C語言發(fā)展到今天,已成為各種計算機編程語言的基礎(chǔ),而其具備的靈活方便、簡潔緊湊、適用于多種操作系統(tǒng)、可自由書寫等特點,更為C語言的廣泛應(yīng)用提供了堅實基礎(chǔ)。

2、基于C語言的計算機編程技術(shù)

2.1 C語言中的函數(shù)

在基于C語言的計算機編程技術(shù)中,由于具體的編程過程需要分為若干個模塊,這就使得其中每一個模塊功能的實現(xiàn),都需要由函數(shù)完成。對于基于C語言的計算機編程技術(shù)來說,其本身需要應(yīng)用多種特有的函數(shù),而這類函數(shù)的應(yīng)用過程,相關(guān)編程人員需要進(jìn)行命名、定義參數(shù)名以及定義返回值類型等操作,這樣才能夠順利完成基于C語言的模塊功能設(shè)計。當(dāng)然由于計算機技術(shù)的不斷發(fā)展,編程人員大多數(shù)時候都無需手動輸入C語言相關(guān)的函數(shù),只需要在編程時輸入“#include”指令,就可以使用定義好的函數(shù)庫完成具體的編程操作。

2.2 變量存貯器類型的合理定義

在基于C語言的計算機編程技術(shù)中,對變量存貯器類型進(jìn)行合理定義也是這一技術(shù)的重要組成部分。具體來說,基于C語言的計算機編程往往需要應(yīng)用不同類型的變量存貯器,而不同的變量存貯器對于編譯代碼的執(zhí)行效率也不盡相同,為此編程人員可以在子程序模塊編程中盡量選擇局部變量存貯器,整個程序模塊的編程則可以選擇全局變量存貯器,這樣就能夠較好實現(xiàn)基于C語言計算機編程過程中變量存貯器類型的合理定義。

2.3 算法技巧及位操作

對于基于C語言的計算機編程來說,算法稱得上是這一編程語言的靈魂所在,這就使得編程人員在應(yīng)用C語言進(jìn)行計算機編程時,必須掌握一定算法技巧,對于基于C語言的計算機編程來說,其本身具備著自然語言和流程圖兩種算法表示方法。值得注意的是,在應(yīng)用流程圖對基于C語言的計算機編程算法表示中,編程人員能夠基于這一表示了解流程圖符號的含義,這樣就能夠保證其較好的進(jìn)行基于C語言的計算機編程算法技巧應(yīng)用。

2.4 多重\算次序

在基于C語言的計算機編程中,C語言本身對于變量多重運算求值順序沒有形成統(tǒng)一的規(guī)定。有過應(yīng)用C語言編程經(jīng)驗的人就會了解到,不同C語言編譯系統(tǒng)存在著細(xì)微差別,而很多C語言編譯系統(tǒng)在多重運算次序上存在著一定差別。據(jù)筆者調(diào)查得知,在我國當(dāng)下基于C語言的計算機編程中,參數(shù)求值順序從右到左最為常見,這就使得基于C語言的計算機編程多重運算次序大多為先運算最后面,依次運算前面,這種基于C語言的計算機編程多重運算次序選擇有著較好的可讀性和移植性。

2.5 指針用法

對于基于C語言的計算機編程來說,指針用法也是這一編程的重要環(huán)節(jié),在論述這一環(huán)節(jié)前,首先需要了解基于C語言的計算機編程中指針變量。結(jié)合相關(guān)文獻(xiàn)資料筆者發(fā)現(xiàn),定義指針變量時必須對其進(jìn)行初始化,否則存儲空間操作很容易出現(xiàn)嚴(yán)重錯誤。值得注意的是,編程人員還可以通過加減數(shù)值移動指針位置,完成具體的指針計算。此外,應(yīng)用函數(shù)庫中的 void 函數(shù),就能夠?qū)崿F(xiàn)指針變量的定義,最終實現(xiàn)將任意數(shù)據(jù)類型的地址賦給指針變量。

3、基于C語言的編程方法優(yōu)化

結(jié)合上文內(nèi)容,對基于C語言的計算機編程技術(shù)有了較為直觀的認(rèn)識,而為了保證基于C語言的計算機編程技術(shù)能夠更好發(fā)揮自身作用,筆者結(jié)合自身多年編程經(jīng)驗與相關(guān)文獻(xiàn)資料,對基于C語言的計算機編程方法優(yōu)化進(jìn)行了詳細(xì)論述,希望這一論述能夠為相關(guān)C語言計算機編程從業(yè)者帶來一定啟發(fā)。

3.1 優(yōu)化函數(shù)調(diào)用

對于基于C語言的計算機編程技術(shù)來時,想要實現(xiàn)自身的優(yōu)化,優(yōu)化函數(shù)調(diào)用屬于較為有效的方法。具體來說,在基于C語言的計算機編程技術(shù)函數(shù)調(diào)用的優(yōu)化中,首先需要禁止函數(shù)調(diào)用傳遞結(jié)構(gòu),之所以需要禁止傳遞結(jié)構(gòu)的函數(shù)調(diào)用,主要是由于函數(shù)調(diào)用傳遞結(jié)構(gòu)會將整個結(jié)構(gòu)復(fù)制到堆棧,這就將大量占用堆棧空間,最終加重整個系統(tǒng)的負(fù)擔(dān),而為了解決不能函數(shù)調(diào)動傳遞結(jié)構(gòu)這一影響,可以采用結(jié)構(gòu)指針解決這一問題,這樣就順利實現(xiàn)了基于C語言的計算機編程技術(shù)函數(shù)調(diào)動優(yōu)化。

對于基于C語言的計算機編程技術(shù)來說,其本身具備著多種能夠提高自身編程效率的庫函數(shù),但這些函數(shù)往往具備著代碼量大、效率低的缺點,這種缺點之所以出現(xiàn),主要是由于庫函數(shù)需要保證自身的廣泛適用性,所以編程人員在具體的工作中,就可以結(jié)合庫函數(shù),自己設(shè)計一段函數(shù)程序,這樣也能夠較好實現(xiàn)函數(shù)調(diào)用的優(yōu)化。

3.2 指針在數(shù)組中使用

對于基于C語言的計算機編程技術(shù)來說,想要實現(xiàn)自身技術(shù)的優(yōu)化,就可以將指針在數(shù)組中使用,這樣就能夠大大提高程序的運行效率。具體來說,一般基于C語言的計算機編程需要多次計算數(shù)組地址來獲得數(shù)組中相應(yīng)的每一個數(shù)值,這就大大影響了程序的運行效率,所以筆者建議將指針變量直接指向數(shù)組中元素,這樣就能夠較好實現(xiàn)基于C語言的計算機編程技術(shù)優(yōu)化。

3.3 優(yōu)化循環(huán)語句

為了能夠?qū)崿F(xiàn)基于C語言的計算機編程技術(shù)優(yōu)化,對循環(huán)語句進(jìn)行優(yōu)化也是優(yōu)化的較好選擇。在基于C語言的計算機編程中,某些重要的循環(huán)直接關(guān)系著程序運行速度,所以筆者建議將有些在運算時并不需要加入循環(huán)變量的任務(wù)置于循環(huán)外,這樣就能夠較好實現(xiàn)循環(huán)的優(yōu)化,大大提高程序的運行速度并降低CPU 的負(fù)擔(dān)。

4、結(jié)語

在本文就基于C語言的計算機編程技術(shù)展開的研究中,筆者詳細(xì)論述了C語言概述、基于C語言的計算機編程技術(shù)以及基于C語言的編程方法優(yōu)化,希望這一論述內(nèi)容能夠在一定程度上推動我國計算機編程技術(shù)的發(fā)展,并為于C語言的學(xué)習(xí)者帶來一定幫助。

參考文獻(xiàn):

[1]劉秀明. 基C語言的計算機軟件編程實驗研究[J].電子技術(shù)與軟件工程 ,2014(5):263.

篇8

作的一般框架,通過實例描述了動態(tài)連接庫的實現(xiàn)及其制做方法、編程步驟,這種方法具有

普遍的意義。

關(guān)鍵詞 VB 動態(tài)連接庫DLL C程序

一、引言

Visual Basic( 以下簡稱VB)是一種可視化的面向?qū)ο蟮木幊陶Z言,以其編程簡單、快捷

等特點,深受廣大WINDOWS程序員的青睞。利用VB開發(fā)界面友好、操作方便的軟件只需

很短的時間。但是VB運行速度較慢,對于龐大的科學(xué)計算問題,VB的這種慢速會使人難

以忍受。C語言是國際上非常流行的一種中級編程語言,以其靈活、高效等優(yōu)點而獲得廣

泛應(yīng)用,許多的應(yīng)用程序都是用C語言在DOS環(huán)境下編寫而成。那么如何發(fā)揮VB和C這兩

種語言的優(yōu)勢,用VB設(shè)計一種良好的for windows界面來調(diào)用C語言程序,即實現(xiàn)VB調(diào)用C

語言程序呢?現(xiàn)有的文獻(xiàn)只提到動態(tài)鏈接庫(以下簡稱DLL)可以將這兩種語言連接起來,

但有講動態(tài)鏈接庫DLL的制做及其編程方法。本文詳細(xì)介紹了Borland C環(huán)境下制作動態(tài)鏈

接庫以及VB調(diào)用for dos動態(tài)鏈接庫的的方法、步驟,并通過實例描述VB調(diào)用C程序的全過

程。

二、用Borland C編寫DLL程序的方法

要想實現(xiàn)VB調(diào)用C程序,首先需要用Borland C編寫動態(tài)連接庫DLL程序(假設(shè)DLL程序

取名為example)。動態(tài)鏈接庫包含四個文件:C語言源程序(.C)、模塊定義文件

(.DEF)、原型函數(shù)文件(.H)和工程文件(.PRJ)。下面分別詳細(xì)介紹一下這四種文件

的具體結(jié)構(gòu)。

1、編寫C語言源程序的框架:

C語言源程序(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īng)用程序*/

}

/***********終止函數(shù)***********/

int FAR PASCAL WEP ( int /*SystemExit*/ )

{

return(1);

}

以上各組成部分參數(shù)的含義:Windows.h頭文件,它包含有數(shù)據(jù)類型的定義、API入口

點定義和其它有用的參數(shù)信息。PASCAL說明符定義該程序的傳遞參數(shù)和凈化堆棧的協(xié)定

(注意:DLL外部傳送的指針必須是遠(yuǎn)指針FAR)。LibMain帶四個參數(shù):

hInstance、 wDataSeg、cbHeapSize和lpszCmdLine。第一個參數(shù)hInstance是DLL事例句

柄, wDataSeg參數(shù)是數(shù)據(jù)段(DS)寄存器值,cbHeapSize參數(shù)是在模塊定義文件中定義

的堆的大小,LibMain 使用該值使本地堆初始化。lpszCmdLine參數(shù)包括命令行信息,但

很少被DLL使用。一般來說,這四個參數(shù)是制作DLL通用的參數(shù)。

如果不想讓DLL數(shù)據(jù)被封住,那么必須調(diào)用unlockdata恢復(fù)正常的非鎖狀態(tài),如果DLL初始

化已經(jīng)成功,DLL則返回1,若不成功則返回0值,且 DLL退出系統(tǒng)。

DLL的輸出函數(shù)實現(xiàn)用戶所要完成的任務(wù),這部分是DLL的核心。它與一般C語言程序不同

之處在于無scanf函數(shù)。所有的外部指針都是遠(yuǎn)指針FAR。畫直線函數(shù)要用lineto函數(shù)。

DLL包括一個終止函數(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是把這個模塊視為一個DLL,庫的名字example跟在其后,且必須與該庫

的名字、DEF中的DLL的文件名相一致。DESCRIPTION語句采用一個字符串,其長度可達(dá)

128 個字符,通常用它來保存模塊描述的信息。EXETYPE windows語句每個windows應(yīng)用程

序和 DLL都需要。DATA語句定義該庫數(shù)據(jù)段的內(nèi)存屬性,關(guān)鍵字MOVEABLE允許內(nèi)存管

理程序在 必要時移動內(nèi)存段,關(guān)鍵字SINGLE是DLL必要,因為DLL總是有一個單一數(shù)據(jù)段,

而不管訪 問它的應(yīng)用程序的數(shù)量。HEAPSIZE語句用來定義一個DLL局部堆的初始規(guī)模,

篇9

【關(guān)鍵詞】C語言 編程 結(jié)構(gòu)化

1 C語言的編程特點

1.1 C語言的定位

很多人都普遍的認(rèn)為C語言是在B語言的基礎(chǔ)上發(fā)展過來的一種高級編程語言。然而從編程語言的層次結(jié)構(gòu)方面來說,我們應(yīng)該認(rèn)為C語言,是在匯編語言的基礎(chǔ)上發(fā)展而來的,它比匯編這類編程語言要高級,但是比一些可視化的編程語言又低級,所以準(zhǔn)確來說,C語言應(yīng)該算是中級編程語言,或者稱為準(zhǔn)高級程序設(shè)計語言。目前很多高級程序設(shè)計語言都是在C語言的基礎(chǔ)上發(fā)展而來的,或者至少借鑒了C語言程序設(shè)計的思想。80年代初,Bjarne Stroustrup在貝爾實驗室對標(biāo)準(zhǔn)C進(jìn)行了改進(jìn)和完善,C++得以誕生,使得面向?qū)ο蟮某绦蛟O(shè)計思想得以提出和落實;21世紀(jì)初,人們將C語言和單片機相結(jié)合,開發(fā)出來了應(yīng)用于單片機編程的C51語言,使得單片機的程序設(shè)計從反復(fù)的匯編語言設(shè)計中抽身出來,大大的提高了程序的設(shè)計效率。

可見C語言在整個編程語言的發(fā)展過程中屬于承上啟下的作用,同時其自身的應(yīng)用領(lǐng)域又在不斷的更新和發(fā)展。

1.2 C語言的編程特點

通過上述C語言的定位可知,它既具備高級程序設(shè)計語言的結(jié)構(gòu)性和層次性特點,同時也兼具了低級程序設(shè)計語言的實用性。

(1)用相應(yīng)的C語句可以實現(xiàn)對微機操作中的字節(jié)、地址等進(jìn)行直接訪問。

(2)基于函數(shù)的結(jié)構(gòu)化特點,使得復(fù)雜的軟件系統(tǒng)可以由多個人,以設(shè)計子函數(shù)的形式,分別各自進(jìn)行程序開發(fā)。之后進(jìn)行函數(shù)的匯總,最后由主函數(shù),按照既定的程序流完成對各個子函數(shù)的調(diào)用就行。

(3)豐富的數(shù)據(jù)類型,尤其是指針類型,可以很方便的應(yīng)用于復(fù)雜數(shù)據(jù)和大數(shù)據(jù)的訪問和處理。

(4)由于C語言基本上不向低級語言那樣直接涉及到對硬件的操作,所以C語言程序往往具有很好的通用性,方便程序移植。

2 C語言的編程技巧

2.1 扎實基本工

在進(jìn)行C語言程序設(shè)計之前,首先要熟悉運算符、表達(dá)式以及各鐘類型數(shù)據(jù)的定義和使用方法,其次對順序、分支和循環(huán)三大程序結(jié)構(gòu)要有較好的把握,并熟練使用while循環(huán)、for循環(huán)、switch語句等。如果要在程序的設(shè)計上有進(jìn)一步的提高,那就需要對“指針”能夠進(jìn)行熟練的使用了。指針可以用于表示變量,但更多的是用于代表數(shù)組、存儲地址以及函數(shù)地址。在代替不同變量時將返回不同的值,可以說指針的功能十分強大。對其熟練使用有助于程序設(shè)計的簡潔和便利。

2.2 立足C語言的結(jié)構(gòu)化的特點,熟練程序設(shè)計基本構(gòu)型

C語言典型的特點就是結(jié)構(gòu)化,在進(jìn)行具體的程序開發(fā)時,應(yīng)該首先要根據(jù)設(shè)計的軟件項目,然后進(jìn)行任務(wù)的細(xì)分,由于C語言不需要編程人員去配置硬件資源,因此程序設(shè)計人員可以把更多的精力放在各個細(xì)分任務(wù)的子函數(shù)設(shè)計上,考慮用最簡單的程序結(jié)構(gòu)去實現(xiàn)。在數(shù)據(jù)類型的選擇上,能夠用短數(shù)據(jù)類型就盡量用短數(shù)據(jù)類型。

另外,為了提高程序代碼的執(zhí)行效率,建議C語言程序設(shè)計人員要了解C語言程序最終運行的硬件的基礎(chǔ)機構(gòu),是在微型計算機上運行,還是在單片機上運行。在了解硬件平臺結(jié)構(gòu)及內(nèi)部資源的前提下進(jìn)行相應(yīng)的程序設(shè)計,將有助于提升程序的運行效率。

3 C語言的實踐應(yīng)用

3.1 混合編程

很多程序設(shè)計人員都認(rèn)為C語言比匯編語言高級,所以認(rèn)為沒有必要去學(xué)習(xí)和了解低級語言。其實這種思路是及其錯誤的。匯編語言之所以稱之為低級語言,是因為其更加貼近于硬件。在編程時一定要明確的在代碼中描述清楚,數(shù)據(jù)如何從一個存儲單元送入另一個單元,因此顯得編程復(fù)雜,由于其直接和硬件打交道,所以被稱為低級語言。但是其運行效率卻是最高的。所以在C語言程序設(shè)計上要有質(zhì)的飛越,有必要了解匯編語言的編程思路和理念。有條件的話可以將C語言和匯編語言混合編程,從而發(fā)揮出兩類編程語言各自的優(yōu)點,達(dá)到設(shè)計程序的最優(yōu)化。

在進(jìn)行C語言和匯編語言的混合編程時,無論是采用C語言調(diào)用匯編,還是匯編調(diào)用C語言,還是C語言嵌入?yún)R編的方式,都應(yīng)該對調(diào)用關(guān)系、各模塊的連接以及參數(shù)的傳遞進(jìn)行妥善的處理。對于調(diào)用關(guān)系,則需要對調(diào)用的函數(shù)和過程進(jìn)行說明;通過明確函數(shù)和變量的命名以及存儲模式的關(guān)聯(lián)性,從而實現(xiàn)各模塊的有效連接;通常情況下往往通過堆棧的方式來實現(xiàn)參數(shù)的傳遞。

3.2 C語言在工程上的應(yīng)用

C語言在電力電氣系統(tǒng)、交通控制系統(tǒng)以及機器人控制方面都有廣泛的應(yīng)用。下面以工廠通風(fēng)控制系統(tǒng)的C語言程序設(shè)計為例來加深對C語言軟件編程思想的理解。

工廠通風(fēng)控制程序的設(shè)計時采用模塊化得設(shè)計思想,即單獨的編寫初始化函數(shù)void Initial(void);中斷處理函數(shù)void**(void)interrupt;數(shù)據(jù)采集函數(shù)unsigned char ADconvert(unsigned char address)以及其它函數(shù)等。然后由主程序負(fù)責(zé)對各個子函數(shù)的調(diào)用,從而實現(xiàn)對工廠通風(fēng)系統(tǒng)的控制。簡化的主程序如下:

main( ){ ... Initial(void);

while(l){ReadAi( );ADconvert(unsignedchar address);

DataChange( ); DisPlay( ); …}

整個系統(tǒng)由于需要不停的對工廠數(shù)據(jù)進(jìn)行采集,所有主程序的結(jié)構(gòu)就設(shè)置成了循環(huán)結(jié)構(gòu),當(dāng)通風(fēng)控制系統(tǒng)有序的進(jìn)行準(zhǔn)備工作之后,通過調(diào)用初始化函數(shù),程序就開始進(jìn)入主循環(huán),主循環(huán)中通過調(diào)用采集程序,完成對測量對象的循環(huán)檢測以及對顯示程序,數(shù)據(jù)處理函數(shù)的循環(huán)調(diào)用。一遍又一遍的不停循環(huán)執(zhí)行主程序。在這個主程序循環(huán)的過程中,如果有異常情況發(fā)生,則隨著中斷觸發(fā)事件的發(fā)生,將進(jìn)入中斷響應(yīng),實現(xiàn)對中斷函數(shù)的調(diào)用。

4 總結(jié)

C語言作為編程語言中經(jīng)典的一類程序設(shè)計語言,因其結(jié)構(gòu)化、可移植化、編程簡介的特點,被廣泛的應(yīng)用國民生產(chǎn)的各個領(lǐng)域。而隨著信息技術(shù)、互聯(lián)網(wǎng)技術(shù)以及物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,未來C語言的應(yīng)用領(lǐng)域?qū)⒆兊酶訌V泛。對C語言在軟件編程方面的研究和分析將變得更有意義。

參考文獻(xiàn)

[1]顧泰龍,李遠(yuǎn)靜.基于C語言的計算機軟件編程實驗研究[J].軟件工程師,2013(08).

[2]李強.計算機軟件開發(fā)語言的選擇探討[J].電子制作,2013(09).

作者單位

篇10

關(guān)鍵詞:獨立學(xué)院;C語言;學(xué)生學(xué)習(xí)特點;困難;教學(xué)方法

中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號: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

在計算機技術(shù)飛速發(fā)展的今天,各種計算機軟件開發(fā)語言是計算機更新?lián)Q代的一個重要條件,常見的有VB、C、C++、C#.NET等等。其中,C語言可移植性好,既具有高級語言的特點,又具有低級語言的許多特點,因此它屬于一種中間語言一直廣泛使用到今天。特別是在高校,《C語言程序設(shè)計》這門課一般面向初學(xué)程序設(shè)計的學(xué)生開設(shè),掌握C語言的精髓,是學(xué)生學(xué)好其他后續(xù)專業(yè)課程的關(guān)鍵。對于獨立學(xué)院要參加等級考試的學(xué)生來說,C語言學(xué)習(xí)要求更高、難度更大,因此要針對特殊環(huán)境下學(xué)生的特點不斷改進(jìn)教學(xué)方法以達(dá)到最終的教學(xué)目標(biāo)。通過多年教學(xué),現(xiàn)對獨立學(xué)院C語言等級考試教學(xué)做如下幾點探討。

1 獨立學(xué)院學(xué)生的學(xué)習(xí)特點

獨立學(xué)院招收的本三批次學(xué)生,大多在學(xué)習(xí)能力、學(xué)習(xí)自主性方面還是稍差的,學(xué)習(xí)過程中,習(xí)慣于接受老師課本上基本知識點的講解,對于補充提高的內(nèi)容,比較難于掌握,加上課后幾乎不問問題,自學(xué)能力差,不擅長復(fù)結(jié),一旦有問題得不到及時解決,就會在后續(xù)學(xué)習(xí)過程中越積越多,從而導(dǎo)致整門課程學(xué)習(xí)的惡性循環(huán),考試復(fù)習(xí)更是無從下手。

2 C語言學(xué)習(xí)中存在的困難

C語言學(xué)習(xí)中存在的困難主要體現(xiàn)在教學(xué)過程中,教學(xué)過程涉及到兩個重要方面:教材內(nèi)容和教學(xué)方法。就教材內(nèi)容而言,C語言教學(xué)使用的是譚浩強編寫的《C程序設(shè)計》。整本教材所包含的內(nèi)容比較側(cè)重于理論知識點的講解,適當(dāng)加上了一些實例分析,而不是一本側(cè)重于培養(yǎng)學(xué)生編程能力的教材。書中包含的基本知識點很多,而且相對而言顯得比較瑣碎,但前后章節(jié)又彼此相輔相成,學(xué)生如果不花大量時間去記憶,根本掌握不了最基礎(chǔ)的語法。

目前在C語言教學(xué)過程中,所使用的教學(xué)方法存在以下問題:

1)教學(xué)過程枯燥

有的老師在教學(xué)過程中使用多媒體課件PPT教學(xué),但PPT上的內(nèi)容跟書上的幾乎一樣,從課件上看不出任何重點、難點的標(biāo)注,上課相當(dāng)于加上稍許講解從頭到尾把書上內(nèi)容讀了一遍。學(xué)生本身就覺得書本上理論知識枯燥,如果教學(xué)過程安排不恰當(dāng),學(xué)生從心理上就會逐漸有排斥性,從而導(dǎo)致他們從一開始就沒興趣、不好好學(xué)的現(xiàn)象。

2)忽視教學(xué)方法的總結(jié)

事實證明,C語言中有很多學(xué)生容易混淆的知識點,特別是在學(xué)到后續(xù)章節(jié)例如函數(shù)的時候,學(xué)生編寫函數(shù)調(diào)用程序往往會出現(xiàn)理不清思路、不知如何下手的狀況,不清楚被調(diào)用函數(shù)和調(diào)用函數(shù)分別如何定義、如何編程,如果在授課過程中教師能夠及時總結(jié),學(xué)生理清了思路,就可以很順利地去解決問題了。

3)忽視學(xué)生編程能力的提高

為了應(yīng)付等級考試,有的老師一味追求題海戰(zhàn)術(shù),認(rèn)為學(xué)生練習(xí)題目做得越多運用越熟練,但在熟練的同時,是否考慮到這樣兩個問題:有些學(xué)生一開始就做不下去反過來抄襲答案;使學(xué)生重復(fù)做同類型題目會浪費學(xué)生大量的時間。再加上老師如果不注重強調(diào)編程題算法的重要性,學(xué)生編程能力往往得不到提高。

4)不了解學(xué)生的掌握程度

教學(xué)過程是教和學(xué)的統(tǒng)一體,忽視任何一方整個教學(xué)效果都不會理想。因此在教學(xué)過程中,不僅要注重教師的教,也要注重學(xué)生的學(xué)。如果僅僅考慮如何教,教師就不能接收到來自學(xué)生的信息反饋,從而無法根據(jù)學(xué)生的學(xué)習(xí)情況及時改進(jìn)教學(xué)方法,調(diào)整教學(xué)進(jìn)度。而在很多授課過程中,僅僅只是教師的講解,沒有任何跟學(xué)生的提問互動思考等過程,或者課后跟學(xué)生也毫無交流。缺少了學(xué)這樣一個巨大的信息反饋渠道,教學(xué)過程根本無法很好的完成。

3 C語言教學(xué)方法思考

3.1 教材總體把握

1)要掌握若干數(shù)據(jù)類型,包括char、int、float等基本數(shù)據(jù)類型和數(shù)組、結(jié)構(gòu)體、共用體等構(gòu)造數(shù)據(jù)類型,這是程序中最基本的數(shù)據(jù)存儲方式。

2)掌握三種基本的程序結(jié)構(gòu):順序、選擇、循環(huán)。任何一個復(fù)雜的程序,都是由三種基本結(jié)構(gòu)組成的。其中,循環(huán)是重點也是難點。

3)C語言使用函數(shù)來實現(xiàn)某個特定功能。

4)C語言提供了一個十分便利的工具――指針,它能直接指向內(nèi)存空間單元,從而可以更加方便地操作變量,簡化程序設(shè)計。

3.2 具體教學(xué)方法

1)重視理論基礎(chǔ)

通過清晰的講解讓學(xué)生打下扎實的理論基礎(chǔ),在學(xué)生記憶知識點的同時利用典型題目,幫助學(xué)生靈活應(yīng)用所學(xué)知識,及時鞏固。

2)讓初學(xué)者學(xué)會讀程序

初學(xué)程序設(shè)計,不會編寫程序代碼屬正?,F(xiàn)象。帶領(lǐng)學(xué)生從一開始多看程序,閱讀的程序越多,解決不同問題的算法也就能夠積累越多。讀程序的最大好處是先學(xué)別人怎么寫程序,有了一定積累再自己嘗試去動手編寫程序。在記憶算法的同時,可以發(fā)現(xiàn)很多問題歸根到底可以使用同一方法解決,因此在閱讀程序的過程中還要學(xué)會算法的歸類。

3)注意教學(xué)方法的總結(jié)

在此對C語言中的兩個難點函數(shù)的編寫和指針分別作總結(jié)。

函數(shù)調(diào)用時,main函數(shù)的框架一般是變量定義、簡單輸入、函數(shù)調(diào)用、簡單輸出,而實現(xiàn)某個特定功能的函數(shù)要看成一個整體單獨定義,其框架一般是變量定義、實現(xiàn)函數(shù)功能的處理語句、返回值語句。特別是對于遞歸函數(shù)的編寫,可以遵循“找遞歸公式?寫遞歸函數(shù)?補充main函數(shù)”的規(guī)則,這種方法對于學(xué)生理解“漢諾塔”問題相對容易些。對于嵌套函數(shù),建議根據(jù)算法先寫出要使用到的幾個空函數(shù)框架,再逐個補全各函數(shù)語句。

對于指針這章,關(guān)鍵要抓住變量的入口地址,其中所對應(yīng)的有單個變量的地址、數(shù)組入口地址、函數(shù)的入口地址。

指向數(shù)組的指針,可以定義一個指向數(shù)組入口地址的指針變量p,通過p++使指針指向數(shù)組的每一個元素,因此*p可代替數(shù)組的每一個元素,避免了使用下標(biāo)法來引用元素。字符串的指針就是指向數(shù)組的指針的一個特例,特別要注意經(jīng)常使用字符串結(jié)束標(biāo)記‘\0’作為循環(huán)結(jié)束的判斷條件。

指向函數(shù)的指針很簡單,因為它始終指向函數(shù)的入口,可以在指針變量名前加*就可以代替函數(shù)名進(jìn)行使用。一般使用指向函數(shù)的指針有這樣一個特殊場合,一個函數(shù)有多個參數(shù),多次調(diào)用此函數(shù)時,每次前幾個參數(shù)相同,而最后一個參數(shù)不同,最后一個參數(shù)可以利用一個指向函數(shù)的指針來實現(xiàn),每次使指針指向另外幾個不同的函數(shù)。例如,在編寫一個求定積分的通用函數(shù)時,下限、上限保持不變,而每次函數(shù)表達(dá)式不同,我們就可以用此方法來實現(xiàn)。

返回指針值的函數(shù)一般在函數(shù)被調(diào)用后,會返回一個指針,以便于主函數(shù)利用此指針進(jìn)行其他操作,一般返回指針值的函數(shù)可用在查找信息的編程中。

指針數(shù)組和指向指針的指針,通常要聯(lián)合起來使用,因為指向指針的指針為二級指針,必須通過一級指針才能與變量相互引用,而指針數(shù)組是一個很好的中介,它可以將若干一級指針聚集起來,指向若干個變量。這時,我們只要通過一個二級指針就可以很方便地指向指針數(shù)組的每一個元素,從而間接地指向每一個變量。

4)重視上機操作

一般上機課時間有限,因此建議課后讓學(xué)生動手在紙上編寫代碼,上機課主要抓緊時間進(jìn)行調(diào)試。老師要重點講解編程題目的算法,提醒學(xué)生可以將大的程序分解成熟悉的小程序編寫,再將小程序連接起來,上機大部分時間還是讓學(xué)生自主完成程序的調(diào)試,這樣有利于學(xué)生自我總結(jié)提高,掌握編程技巧。

3.3 信心教學(xué)

教師在平時的教學(xué)過程中,首先要給學(xué)生樹立起學(xué)習(xí)的信心,激發(fā)他們的學(xué)習(xí)激情。多年來,C語言的教學(xué)都是以輸出“HELLO WORLD”開始講解程序設(shè)計語言的,該程序過于平淡,不能引起學(xué)生的學(xué)習(xí)興趣。我們可以考慮演示一個事先編好的小游戲程序,從一開始吸引學(xué)生的注意力,激發(fā)其濃厚的學(xué)習(xí)興趣。在學(xué)習(xí)過程中,要發(fā)揮學(xué)生的學(xué)習(xí)信心,可以采取諸如:編故事提高語言的趣味性、引用經(jīng)典數(shù)學(xué)問題、讓學(xué)生親自參與等方法,讓學(xué)生在不知不覺中即學(xué)到了知識,又活躍了課堂氣氛。最終,通過等級考試的考核讓學(xué)生實現(xiàn)其信心。

C語言的學(xué)習(xí)存在一定難度,對于獨立學(xué)院的學(xué)生來說參加等級考試學(xué)習(xí)難度更大,因此在教學(xué)過程中,我們要不斷研究采用合適的教學(xué)方法讓學(xué)生產(chǎn)生學(xué)習(xí)興趣,掌握學(xué)習(xí)方法、勤于做題、自主編程,最終順利地通過等級考試。

參考文獻(xiàn):

[1] 王淑敬. 關(guān)于C語言教學(xué)的一點體會[J]. 計算機科學(xué),2008.

[2] 趙妮, 熊高君. 激活課堂氣氛,提升學(xué)習(xí)興趣――談C語言課堂教學(xué)方法[J].教育與教學(xué)研究,2008.12.

[3] 何岸. 論《C語言程序設(shè)計》課程的趣味教學(xué)[J]. 高等函授學(xué)報(自然科學(xué)版),2008.10.