35
C 語語語語語語 07 語語

| 07  函數

  • Upload
    jaxon

  • View
    30

  • Download
    0

Embed Size (px)

DESCRIPTION

| 07  函數. 7.1 關於函數. | main(). int main(void) { // 程式內容 }. |  .  標準函數 >>. 7.1 關於函數. | 標準函數. #include #include . >. 7.2 使用函數. | 函數使用步驟. 7.2.1 宣告定義與呼叫. 原型宣告: 如同變數宣告,在定義函數之前,必須預先宣告函數的原型,所謂的原型,是函數的名稱、引數以及回傳值的型態等相關特性,它的目的是告知編譯器檔案中存在此函數。 - PowerPoint PPT Presentation

Citation preview

Page 1: | 07  函數

C 語言入門經典

| 07  函數

Page 2: | 07  函數

C 語言入門經典  標準函數 >> |  

| main()7.1 關於函數

int main(void){

// 程式內容}

Page 3: | 07  函數

C 語言入門經典  函數使用步驟 >> << main()   

|標準函數

#include <stdio.h>#include <stdlib.h>

7.1 關於函數

Page 4: | 07  函數

C 語言入門經典  函數原型宣告 >> << 標準函數  

|函數使用步驟7.2 使用函數

7.2.1 宣告定義與呼叫

1.原型宣告:如同變數宣告,在定義函數之前,必須預先宣告函數的原型,所謂的原型,是函數的名稱、引數以及回傳值的型態等相關特性,它的目的是告知編譯器檔案中存在此函數。

2. 內容定義:根據原型,定義函數的內容程式碼,建構所需的功能。

3. 呼叫:需要執行函數功能時,直接透過名稱的引用,對其進行呼叫。

Page 5: | 07  函數

C 語言入門經典  函數定義與呼叫 >> << 函數使用步驟  

|函數原型宣告

void dosome ( void );

• dosome 是函式的名稱,根據所要實作的功能為其命名,方便理解函數的功能以及往後程式的呼叫。

• void 是一個關鍵字,第一個 void 表示這個函數執行完畢將不回傳任何值。若是想要回傳整數,就必須以 int 取代 void ,其它型態的回傳值類推。

• 小括弧是必要的,用來承接特定型態的引數, void 表示沒有傳入任何引數。

• 「 ; 」 表示結束宣告。4

3

2

1

7.2.1 宣告定義與呼叫

7.2 使用函數

Page 6: | 07  函數

C 語言入門經典

2

1

 範例:簡單函數示範 >> << 函數原型宣告  

|函數定義與呼叫

void dosome ( void ){

… /* 函數功能程式碼 */}函數的程式區塊範圍,其中包含定義函數功能所需的程式敘述。

dosome() ; dosome() 是函式的名稱,名稱後方必須加上一個小括弧,然後補上一個 「 ; 」 構成完整的程式敘述。完成函數呼叫

7.2.1 宣告定義與呼叫

7.2 使用函數

Page 7: | 07  函數

C 語言入門經典

3

2

1

 範例 : 簡單函數示範 >> << 函數定義與呼叫  

|範例:簡單函數示範7.2.1 宣告定義與呼叫

7.2 使用函數

Hello, 歡迎學習 C 語言

Page 8: | 07  函數

C 語言入門經典  範例:簡單函數示範 >> << 範例:簡單函數示範  

|範例:簡單函數示範7.2.1 宣告定義與呼叫

7.2 使用函數

Page 9: | 07  函數

C 語言入門經典

5

4

3

2

1

 函數參數 >> << 範例:簡單函數示範  

6

Hello, 歡迎學習 C 語言Hello, 歡迎學習 C 語言

7.2.1 宣告定義與呼叫

7.2 使用函數

|範例:簡單函數示範

Page 10: | 07  函數

C 語言入門經典

2

1

 函數的參數語法格式 >> << 範例:簡單函數示範  

|函數參數7.2.2 函數的參數

7.2 使用函數

void dosome ( type1,type2,… ) ;

void dosome ( type1 arg1,type2 arg2, … ){

函式 dosome 區塊程式碼}

• 小括弧定義承接外部傳入參數的引數型態名稱。

• 定義函數必須指定每一個引數的變數名稱。• 呼叫此種函數的程式碼,須根據定義傳入對應型態的

參數,在函數中直接透過引數名稱便能將其取出。

Page 11: | 07  函數

C 語言入門經典  範例:函數的引數傳遞示範 >> << 函數參數  

|函數的參數語法格式7.2.2 函數的參數

7.2 使用函數

Page 12: | 07  函數

C 語言入門經典

5

4

3

2

1

 範例:函數的引數傳遞示範 >> << 函數的參數語法格式  

6

|範例:函數的引數傳遞示範

輸入小時數:

6 小時等於 360 分鐘

6

6

7.2.2 函數的參數

7.2 使用函數

Page 13: | 07  函數

C 語言入門經典  範例:多引數函數示範 >> << 範例:函數的引數傳遞示範  

|範例:函數的引數傳遞示範7.2.2 函數的參數

7.2 使用函數

Page 14: | 07  函數

C 語言入門經典

5

4

3

2

1

 函數回傳值語法定義 >> << 範例:函數的引數傳遞示範  

6

7

8

9

10

11

12

|範例 : 多引數函數示範

請輸入長與寬615

長 6 cm, 寬 15 cm 的矩形面積等於 90 平方公分

6 15

7.2.2 函數的參數

7.2 使用函數

Page 15: | 07  函數

C 語言入門經典

2

1

 範例:函數回傳值示範 >> << 範例:多引數函數示範  

|函數回傳值語法定義7.2.3 函數回傳值

7.2 使用函數

int dosome ( type1,type2,… ) ;

int dosome ( type1 arg1,type2 arg2, … ) {…return value ; // 回傳 value

}

x= dosome(arg , …) ;

value

Page 16: | 07  函數

C 語言入門經典

5

4

3

2

1

 範例:函數回傳值示範 >> << 函數回傳值語法定義  

6

|範例:函數回傳值示範7.2.3 函數回傳值

7.2 使用函數

請輸入長與寬615

長 6 cm, 寬 15 cm 的矩形面積等於 90 平方公分

6 15

90

6 15 7

8

Page 17: | 07  函數

C 語言入門經典  函數區塊的有效區域 >> << 範例:函數回傳值示範  

|範例:函數回傳值示範7.2.3 函數回傳值

7.2 使用函數

Page 18: | 07  函數

C 語言入門經典  範例:函數範圍 >> << 範例:函數回傳值示範  

|函數區塊的有效區域7.3 函數與有效區域

7.3.1 變數與宣告範圍

Page 19: | 07  函數

C 語言入門經典

3

2

1

 範例:函數範圍 >> << 函數區塊的有效區域  

|範例:函數範圍

100

100

7.3 函數與有效區域

7.3.1 變數與宣告範圍

Page 20: | 07  函數

C 語言入門經典  變數範圍錯誤 >> << 範例:函數範圍  

|範例:函數範圍7.3 函數與有效區域

7.3.1 變數與宣告範圍

Page 21: | 07  函數

C 語言入門經典  範例:函數引數範圍 >> << 範例:函數範圍  

|變數範圍錯誤7.3 函數與有效區域

7.3.1 變數與宣告範圍

Page 22: | 07  函數

C 語言入門經典

3

2

1

 範例:全域變數 >> << 變數範圍錯誤  

|範例:函數引數範圍7.3 函數與有效區域

7.3.1 變數與宣告範圍

Page 23: | 07  函數

C 語言入門經典  範例:全域變數與區域變數 >> << 範例:函數引數範圍  

|範例:全域變數7.3 函數與有效區域

7.3.2 全域變數

200+100

300

a+b=300

a-b=100  

200-100

300

5

4

3

2

1

6

7

8

9

10

Page 24: | 07  函數

C 語言入門經典

3

2

1

 範例:靜態變數 >> << 範例:全域變數  

|範例:全域變數與區域變數

6000

60008000123

8000123

7.3 函數與有效區域

7.3.2 全域變數

Page 25: | 07  函數

C 語言入門經典  範例:靜態變數 >> << 範例:全域變數與區域變數  

|範例:靜態變數7.3.3 靜態變數

7.3 函數與有效區域

dox(): a=100 ,

100

doy(): a=100

100+100 => 200

100

100+100 => 200

5

4

3

2

1

Page 26: | 07  函數

C 語言入門經典  範例:靜態變數 >> << 範例:靜態變數  

|範例:靜態變數7.3.3 靜態變數

7.3 函數與有效區域

dox(): a=100 , dox(): a=200 ,

200

doy(): a=100doy(): a=100

200+100 => 300

100

100+100 => 200

5

4

3

2

1

Page 27: | 07  函數

C 語言入門經典  範例:傳值引數 >> << 範例:靜態變數  

|範例:靜態變數7.3.3 靜態變數

7.3 函數與有效區域

dox(): a=100 , dox(): a=200 , dox(): a=300 ,

300

doy(): a=100doy(): a=100doy(): a=100

300+100 => 400

100

100+100 => 200

5

4

3

2

1

Page 28: | 07  函數

C 語言入門經典

5

4

3

2

1

 範例:傳值引數 >> << 範例:靜態變數  

6

|範例:傳值引數7.4 函數的參數傳遞方式

傳入 doadd() 之前: 100doadd() 的運算結果: 101傳入 doadd() 之後: 100

100100

100+1 => 101

Page 29: | 07  函數

C 語言入門經典  範例:簡單的遞迴運算 >> << 範例:傳值引數  

|範例:傳值引數7.4 函數的參數傳遞方式

Page 30: | 07  函數

C 語言入門經典  範例:簡單的遞迴運算 >> << 範例:傳值引數  

|範例:簡單的遞迴運算7.5 遞迴

recursion(1) ...recursion(2) ...recursion(3) ...recursion(4) ...recursion(5) ...recursion(6) ...recursion(7) ...recursion(8) ...recursion(9) ...recursion(10) ...

Page 31: | 07  函數

C 語言入門經典  範例:簡單的遞迴運算 >> << 範例:簡單的遞迴運算  

|範例:簡單的遞迴運算7.5 遞迴

Page 32: | 07  函數

C 語言入門經典

recursion(1) ......recursion(10) ...完成第 10 次的函數執行完成第 9 次的函數執行完成第 8 次的函數執行完成第 7 次的函數執行完成第 6 次的函數執行完成第 5 次的函數執行完成第 4 次的函數執行完成第 3 次的函數執行完成第 2 次的函數執行完成第 1 次的函數執行

7.5 遞迴

|範例:簡單的遞迴運算

<< 範例:簡單的遞迴運算    範例:簡單的遞迴運算 >>

Page 33: | 07  函數

C 語言入門經典  範例:階層運算 >>

7.5 遞迴

|範例:簡單的遞迴運算

<< 範例:簡單的遞迴運算  

Page 34: | 07  函數

C 語言入門經典

|範例:階層運算

請輸入大於 3 的整數:81x2x3x...8 = 40320

7.5 遞迴

<< 範例:簡單的遞迴運算    範例:階層運算 >>

Page 35: | 07  函數

C 語言入門經典  | << 範例:階層運算  

7.5 遞迴

|範例:階層運算