Download presentation
Presentation is loading. Please wait.
1
6 使用者函數 6.1 函數定義 6-2 6.1.1 宣告函數 6-3 6.1.2 呼叫函數 6-4 6.1.3 呼叫多個函數 6-6
6 使用者函數 6.1 函數定義 6-2 6.1.1 宣告函數 6-3 6.1.2 呼叫函數 6-4 6.1.3 呼叫多個函數 6-6 6.1.4 多重呼叫函數 6-8 6.1.5 宣告函數原型 6-10 6.2 傳遞參數 6-12 6.2.1 傳遞單一參數 6-12 6.2.2 傳遞多個參數 6-14 6.2.3 傳遞常數符號 6-16 6.2.4 傳遞變數數值 6-18 6.2.5 傳遞變數位址 6-20 6.2.6 傳遞預設參數 6-22 6.3 函數傳回值 6-23 6.3.1 return敘述 6-24 6.3.2 傳回數值 6-26 6.3.3 傳回布林值 6-27 6.4 變數範圍 6-28 6.4.1 區域變數auto 6-28 6.4.2 公用變數 6-30 6.4.3 外部變數extern 6-32 6.4.4 暫存器變數register 6-35 6.4.5 靜態變數static 6-36 6.5 函數特殊用途 6-38 6.5.1 遞迴函數 6-38 6.5.2 exit函數 6-40 6.5.3 定義函數巨集 #define 6-41
2
6.1 函數定義 函數呼叫與返回
3
6.1.1 宣告函數 傳回型態 函數名稱 (參數列) { //函數本體 return 傳回值; } 範例
宣告函數 傳回型態 函數名稱 (參數列) { //函數本體 return 傳回值; } 範例 void womain(void) //使用者函數 { cout << "How are you doing main, from womain."; cout << endl; }
4
呼叫函數 函數名稱 (參數0, 參數1, 參數2, …); 範例 womain(); //呼叫使用者函數womain
5
呼叫函數 (續) 呼叫函數方塊圖
6
呼叫多個函數 呼叫多個函數方塊圖
7
呼叫多個函數 (續) 範例
8
多重呼叫函數 多重呼叫函數方塊圖
9
多重呼叫函數 (續) 範例
10
6.1.5 宣告函數原型 傳回型態 函數名稱 (參數型態0, 參數型態1, 參數型態2, …); 範例
宣告函數原型 傳回型態 函數名稱 (參數型態0, 參數型態1, 參數型態2, …); 範例 void womain(void); //宣告使用者函數原型 void main(void) //main 函數 { cout << "Hi womain, This is main." << endl; womain(); //呼叫使用者函數womain cout << "Fine, thank you!" << endl; } void womain(void) //使用者函數 cout << "How are you doing main, from womain."; cout << endl;
11
6.2 傳遞參數 傳遞參數流程
12
傳遞單一參數 範例 void number(int); //宣告函數原型
13
傳遞多個參數 void sum(int, int, int); //宣告函數原型
14
傳遞常數符號 void area(float, float); //宣告函數原型
15
傳遞變數數值 void calculate(int, int, int); //宣告函數原型
16
傳遞變數位址 void swap(int &, int &); //宣告函數原型
17
6.2.6 傳遞預設參數 範例 void weight(float lb = 1.0); //指定參數預設值
傳遞預設參數 範例 void weight(float lb = 1.0); //指定參數預設值 void weight(float lb) //重量轉換函數 { cout << lb << "磅 = " << lb/ << "公斤"; //顯示函數傳回值 cout << endl; }
18
6.3 函數傳回值 函數傳回值
19
6.3.1 return敘述 return 傳回值; 範例一 int main() //傳回整數資料給OS { //敘述區
} 範例二 void main() //不須傳回任何資料給OS //不須要return敘述 } //main函數結束點
20
return敘述 (續)
21
傳回數值
22
傳回布林值
23
6.4 變數範圍 變數範圍是指變數可使用的範圍,包括區域變數、公用變數、外部變數、靜態變數、與暫存器變數。例如在main函數區塊內宣告的變數只有main函數區塊內的敘述可以使用,其他函數則不能直接存取main函數內的變數。 同理,任何函數內的區域變數只有該函數內的敘述可以使用。而公用變數則可提供同一程式中所有函數的敘述使用。
24
6.4.1 區域變數auto auto 資料型態 變數名稱 = 初值; 範例一 void main() //沒有傳回值 {
auto int ft; //宣告main區域變數 . } //不需要return敘述 double long(int ft) auto double m; //宣告long區域變數 }
25
6.4.1 區域變數auto (續) 範例二 void main() { //沒有傳回值
for (int count=0; count<10; count++) //main區域變數count . } //不需要return敘述 double length(int ft) { for (int count=1; count<=5; count++) //length區域變數count }
26
6.4.2 公用變數 資料型態 變數名稱 = 初值; 範例 double m; //宣告公用變數 double ft; //宣告公用變數
公用變數 資料型態 變數名稱 = 初值; 範例 double m; //宣告公用變數 double ft; //宣告公用變數 void main() { . m = 10; //10存入公用變數m length(); //呼叫函數 cout << m << '\t' << ft; //顯示公用變數值 } void length() { //重量轉換函數 ft = * m; //運算值存入公用變數ft
27
6.4.3 外部變數extern extern 資料型態 變數名稱 = 初值; 範例
double degree(void) { //溫度轉換函數 extern double c; //宣告外部變數 double f; //宣告區域變數 f = ((9 * c ) / 5) + 32; //攝氏轉成華氏 } double c; //宣告公用變數 void main(void) { //main函數 for (c = 36; c <= 40; c++) //攝氏溫度=計數
28
6.4.4 暫存器變數register register 資料型態 變數名稱 = 初值; 範例
int main(void) //main函數 { register double f; //宣告暫存器變數 . } double degree(double fahr) //溫度轉換函數 register double c; //宣告暫存器變數
29
6.4.5 靜態變數static static 資料型態 變數名稱 = 初值; 範例 void main(void) {
for (count = 1; count <= 100; count += 2) //呼叫函數迴圈 oddsum = total(count); //oddsum=函數傳回值 } int total(int n) { static int sum; //宣告靜態變數 sum += n; //sum(n+1)=sum(n)+n
30
6.5.1 遞迴函數 遞迴函數呼叫(Recursive Function Calls)就是函數中包含一個呼叫自己的敘述。 範例
遞迴函數 遞迴函數呼叫(Recursive Function Calls)就是函數中包含一個呼叫自己的敘述。 範例 int total(int n) //計算總和函數 { if (n > 1) //若 n > 1 return n + total(n-1); //呼叫函數自身 else //若n<=1 return 1; //結束遞回呼叫,並傳回1 }
31
遞迴函數 (續)
32
6.5.2 exit函數 #include <cstdlib> void exit(int 傳回值) 範例
void main(void) { if(!display_mode()) exit(1); play(); }
33
6.5.3 定義函數巨集 #define #define 巨集名稱 數值 #define 巨集名稱 字串 #define 巨集名稱 函數
範例一 #define PI //定義符號 pi 範例二 #define BEGIN { //定義起始符號 #define END } //定義結束符號 #define TAB '\t' //定義定位符號
34
6.5.3 定義函數巨集 #define (續) 範例三 #define ABS(n) (n<0 ? –n : n)
//定義取絕對值函數巨集 #define EVEN(n) (n%2==0 ? "偶數" : "奇數") //定義判斷奇偶數函數巨集
Similar presentations