計算機概論:C/C++程式設計

 

6 模組化的程式設計基礎:函式

 

 


授課教師:陳慶瀚

WWW : http://www.miat.ee.isu.edu.tw/cpp

E-mail : pierre@isu.edu.tw   

 


6.2 函式的宣告和定義

一個函式在使用之前必須先行宣告,一個函式的宣告就稱為原型。宣告的目的在於告訴編譯器關於函式的名稱、傳回值的資料型態,以及傳遞引數等訊息,這些訊息可以讓編譯器預先知道函式將如何運作。

當我們呼叫一個函式,連帶傳入一些函式內部處理時所需的引數(arguments),隨後函式執行其內部指令,運算結束後,它可以傳回運算結果(return value),也就是函式的傳回值。

使用一個自訂的函式一般包含三個步驟:

(1). 函式原型宣告;

(2). 函式使用;

(3). 函式定義。

範例5-1展示一個完整的例子。

/*----------------------------------------------------*/

//                  範例程式5-1

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

// 函式原型宣告

int getMax(int x, int y); 

// 主程式中使用函數

void main()

{

int  a,b;

cout<<"請輸入兩個任意整數:";

cin>>a>>b;  //由鍵盤讀入ab兩個整數

int max;

//---------------------------------------------

//  函式呼叫

//  將引數ab傳入函式,函式傳回ab,並存入變數max

//----------------------------------------------

max=getMax(a,b); 

cout<<"最大值是 : "<<max<<endl;

}

//------------------------------------

//  函式定義

//------------------------------------

int getMax(int x, int y)

{

    if(x>y)return x;   // 如果x大於y ,則傳回x

    else return y;     // 否則傳回y

}

在使用一個函式前所做的宣告又稱為函式原型宣告(prototype declaration),它的目的有兩個:

  • 程式更為結構化,以使程式更容易閱讀;
  • 當它被呼叫時,它允許編譯器(compiler)在使用函式前先行檢查函式的語法。

例如我們宣告一個程式原型:

   double sin(double x);

上述的程式碼宣告了一個名稱為sin()的函數原型,這個函數傳遞的參數是一個double數,傳回值也是double數型態。

雖然函數可以跟變數一起宣告在同一行裡,例如下列這種宣告方式是合法的:

   double result, double sin(double x);

但我們仍然不鼓勵使用這種方式,因為會導致程式結構混亂,不利程式維護。

課堂練習TD5-1

請模仿範例程式5-1,寫一個程式,發展一個計算兩個整數乘積的函式int mult(int x, int y),必須包含三個函式發展的步驟。

 

函式原型宣告

使用一個函式前,必須先宣告該函式,稱為函式原型宣告,其語法如下:

return_type function_name ( [type parameter_list_name]...);

一個函式的原型必須告訴編譯器該函式傳回值的資料型態return_type 、函式名稱function_name 和傳遞的參數清單parameter_list_name,在宣告函式原型時,只需要列出參數的資料型態,可以省略參數名稱,不過加上完整名稱的參數宣告會使得函式較易於閱讀理解。但定義函式時,參數宣告一定要加上名稱,否則編譯時將會出錯。此外,函式原型宣告一定要在結尾加上分號。

函式的定義

函式定義通常放在主程式之後,甚至可以放在一個獨立的檔案,以便管理。函式定義的語法如下:

return_type function_name ( [type parameter_list_name]...)

{

  statements;

}

其中,第一行與函式原型宣告完全一樣,但結尾處沒有分號,因為其後還有以大括號包含著的函式主體(function body)。函式主體的內容寫法與主程式的寫法是沒有兩樣的,我們也可以在函式主體再呼叫其它函式。

範例程式5-2是發展三個傳遞參數的函式,注意到在函式的宣告和定義中,三個變數的名稱是x,y,z,而在主程式中,三個變數的名稱則是a,b,c,這並不會影響到參數的傳遞,事實上,函式裡的三個變數與主程式中的三個變數使用個自獨立的記憶空間,所以我們也可以使用相同的變數名稱而不至於發生重複變數宣告的錯誤。

/*----------------------------------------------------*/

//                  範例程式5-2

//        函式:計算三個傳入數值,傳回平均值

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

// 函式原型宣告

float findaverage(float x, float y, float z);

//主程式

void main()

{

  float a, b, c, result;

a=5;

b=15;

c=8;

  result=findaverage(a,b,c);  //呼叫函式

  cout<<"average = "<<result<<endl;

}

//函式定義

float findaverage(float a, float b, float z)

{ 

   float average;

   average=(x+y+z)/3.0;

   return average;

}


 

計算機概論:C/C++程式設計

義守大學電機系 陳慶瀚 
2001.12.17

 

謝孟媛 dvd -
情趣用品 -
飛鳥遊戲 -
遊戲基地 -
PATEK PHILIPPE -
xyz資訊工作坊 -
xyz軟體王 -
英文老師 -
沛納海 -
xyz軟體下載倉庫 -
基測試題 -
CARTIER 卡地亞 -
林晟數學 -
PIAGET -
費洛蒙情定 -
xyz -
軟體大補帖 -
高國華補習班 -
game淘 -
ps2台片 -
wii超級瑪莉攻略 -
情定費洛蒙 -
wii價格2011 -
xbox 360台片 -
tvgame360 -
愛馬仕 -
春藥專賣店 -
ps3價錢 2011 -
ps2遊戲王 -
wii遊戲片專賣店 -
百達翡麗 PATEK PHILIPPE -
壯陽藥品哪買 -
海賊王 -
春藥王 -
xyz軟體下載倉庫 -
壯陽食物 -
xbox360 -
催情藥 -
TISSOT 天梭 -
ps2遊戲燒錄 -
威而剛哪裡買 -
一夜情婦 -
xbox 360台片專賣 -
國中基測題庫 -
無雙遊戲網 -
xyz軟體王 -
ps2遊戲片80元 -
基測 -
xyz軟體王下載 -
GUCCI 古馳 -
南一題庫網 -
COACH -
LOUIS VUITTON -
wii超級瑪莉 -
wii價格2011 -
魔法老師 -
催情藥專賣店 -
國小翰林題庫網 -
wii遊戲片專賣店 -
遊戲天堂 -
寶格麗 -
金榜之路 -
wii遊戲片80元 -
xbox 360遊戲片 -
wii遊戲載點 -
人類費洛蒙情定 -
xbox 360台片專賣 -
催情王 -
xyz軟體之家 -
ps2遊戲片80元 -
情色小站 -
微風廣場 -
情慾之夜 -
民視文化 -
xbox360 -
蔻馳 -
ps2遊戲燒錄 -
ps3遊戲片 -
龍騰高中題庫 -
ps3台片 -
威而剛 -
ps3價錢 2011 -
軟體王下載 -
蕭邦 CHOPARD -
龍騰 -
催情藥 -
威而剛哪裡買 -
基測題目 -
HERMES 愛馬仕 -
情定費洛蒙 -
ps2台片 -
ps3遊戲片 -
wii瑪莉兄弟遊戲 -
江詩丹頓 Vacheron Constantin -
wii超級瑪莉 -
wii遊戲片在ho99小舖 -
春藥王 -
歷屆基測試題 -
窮人軟體 -
威而柔哪裡買 -
蕭邦 -
翰林題庫網 -
一夜情婦 -
wii遊戲下載 -
xbox 360遊戲 -
壯陽食物 -
ps2遊戲片 -
sogo百貨 -
台灣情色網 -
xyz軟體王下載 -
lv2011官方網 -
wii遊戲片專賣店 -
xbox 360價錢 -
歐米茄 -
雷達錶 RADO -
xyz資訊工坊 -
儒林補習班 -
壯陽藥品 -
xyz軟體王 -
窮人遊戲 -
ps2遊戲下載 -
ps3台片 -
德周 -
sogo百貨 -
費洛蒙情定 -
壯陽藥品哪買 -
催情王 -
春藥哪裡買 -
lv2011夏季新款 -
情趣用品 -
中友百貨 -
史萊姆的第一個家 -
情色論壇 -
萬寶龍 MONT BLANC -
萬國 -
ps2遊戲下載 -
春藥哪裡買 -
xyz資訊工作坊 -
龍騰文化 -
太平洋百貨 -
軟體王 -
xbox 360台片專賣 -
ps3遊戲片在ho99小舖 -
壯陽藥 -
xyz軟體銀行 -
xbox360台片 -
魔法24 -
wii遊戲片80元 -
XYZ資訊工坊 -
CARTIER -
春藥網 -
壯陽 -
xyz 軟體補給站 -
微風廣場 -
lv2011新款型錄 -
xbox 360遊戲 -
費洛蒙 -
卡地亞 -
wii遊戲下載 -
窮人天碟 -
春藥專賣店 -
gucci2011專賣店旗艦店 -
迪奧 -
CHANEL -
xyz軟體大本營 -
xbox 360遊戲片在ho99小舖 -
台北郵購網 -
BURBERRY 巴寶莉 -
伯爵 -
遠東百貨 -
陳希 -
費洛蒙mx -
時間廣場 -
漢神百貨 -
情色論壇 -
傳政 -
軟體 -
寶格麗 BVLGARI -
名牌包俱樂部 -
時間廣場 -
威而柔 -
wii瑪莉兄弟遊戲 -
lv名牌包專賣店 -
xyz軟體大本營 -
威而柔哪裡買 -
伯爵 PIAGET -
xyz軟體銀行 -
ps3遊戲下載 -
wii超級瑪莉歐 -
無名套裝 -
xyz軟體下載倉庫 -
江詩丹頓 -
林晟 -
ps3遊戲片在ho99小舖 -
威而剛 -
費洛蒙mx -
xyz軟體之家 -
HERMES -
林晟超理解數學 -
謝孟媛 -