160 likes | 333 Views
物件導向程式設計. CH6. 函式. 函式( function ) 執行一段會重複用到的功能 以函數名稱來代表與使用 ( 呼叫 ) 提高程式的可讀性 方便程式除錯. 傳回值. 函式的變數. 函式的使用. 需要先定義 定義 資料型別 、 呼叫參數 與 動作. 型別 函式名稱 ( 呼叫參數 1, 呼叫參數 2 … . ) { 程式 ; }. 沒有傳回值請填 void. 程式開始. 返回. 呼叫 beep. 函式呼叫架構. #include <iostream> using namespace std; void beep() {
E N D
物件導向程式設計 CH6
函式 • 函式(function) • 執行一段會重複用到的功能 • 以函數名稱來代表與使用(呼叫) • 提高程式的可讀性 • 方便程式除錯
傳回值 函式的變數 函式的使用 • 需要先定義 • 定義資料型別、呼叫參數與動作 • 型別 函式名稱 (呼叫參數1,呼叫參數2….) • { • 程式; • } 沒有傳回值請填 void
程式開始 返回 呼叫beep 函式呼叫架構 • #include <iostream> • using namespace std; • void beep() • { • cout << "\a"; • } • int main() • { • 其他程式碼; • beep(); • }
函式宣告I 放哪裡差很多 • #include <iostream> • using namespace std; • void beep() • { • cout << "\a"; • } • int main() • { • 其他程式碼; • beep(); • } • #include <iostream> • using namespace std; • int main() • { • 其他程式碼; • beep(); • } • void beep() • { • cout << "\a"; • }
函式宣告II • #include <iostream> • using namespace std; • void beep(); • int main() • { • 其他程式碼; • beep(); • } • void beep() • { • cout << "\a"; • }
函式宣告III 有參數的 • #include <iostream> • using namespace std; • void FtoC(double f); • int main() • { • double x; • cout << “請輸入華氏溫度?”; • cin >> x; • FtoC(x); • } • void FtoC(double f) • { • cout << “攝氏”<< ((f-32)*5/9) << “度”; • }
變數的作用範圍 • 局部變數:函式內,其他函式無法使用 • 靜態局部變數 • 全域變數 • 外部變數
static int number; //靜態局部變數 局部變數 • #include <iostream> • using namespace std; • void adding(); • int main() • { • int i; • adding(); • adding(); • for(i=1;i<=3;i++) • { • adding(); • } • } • void adding() • { • int number; • cout << "number=" << number++ << endl; • }
全域變數 • #include <iostream> • using namespace std; • double f; • void FtoC(); • int main() • { • cout << "請輸入華氏溫度?"; • cin >> f; • FtoC(); • } • void FtoC() • { • cout << "攝氏" << ((f-32)*5/9) << "度"; • }
全域變數 & 局部變數同名 範圍解析運算子 :: 存取全域變數
行內函式 • Inline function • 函數傳回值型別前加上inline加以定義 • 原則上會將函數內容完全替換到呼叫本體 • 執行效率加快 • 執行檔編譯後變大
巨集 • Macro • 將簡單運算式定義成巨集 • #define x-cube x*x*x 用x-cube來代表x連乘3次
標準函式庫-日期時間 【範例】:取得目前PC系統日期及時間 char sdate[9]; char stime[9]; _strdate_s(sdate); _strtime_s(stime); cout<<"目前日期:"<<sdate<<endl<<"現在時刻:"<<stime<<endl;
函式多載 • Overloading • 函式名稱可以重複 • 利用參數型別與個數加以區別
遞迴函式 • Recersive • 函式自己呼叫自己 • 需要設計結束條件或ctrl-c結束