Presentation is loading. Please wait.

Presentation is loading. Please wait.

函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式.

Similar presentations


Presentation on theme: "函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式."— Presentation transcript:

1 函式 Function 東海大學物理系‧資訊教育 施奇廷

2 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式

3 函式簡介(續) 將重複的程式碼, 寫成函式, 即可隨時供程 式呼叫使用。當在程式中, 需要寫到會重覆 的程式碼時, 可以用一簡短的函式呼叫語法 取而代之, 一樣可得到相同的執行結果。 將一長串的程式碼, 分割出一些功能獨立的 函式後, 當程式有問題需進行除錯時, 可以 很容易地追蹤錯誤是發生在 main ( ) 或是某 個函式中。

4 內建函式與自訂函式 C 語言已經提供了許多的內建函式供我們使 用,如輸入輸出的 printf 、 scanf 、 getchar ; 數學函數用的 cos, sin, pow 等 主程式 main 也是一個函式 當有些功能(或函數)系統本身沒有提供 時,就必須自己寫,此為自訂函式

5 範例:找出八個數中的最大值 在此我們用一個比較 8 個數字的大小, 然後輸出 最大數值的程式, 來說明函式的應用。首先我們不 使用函式, 而是以先前學過的 if-else 結構, 結果要 用 7 個 if-else 才能確保比較 8 個數字的過程, 能 得到正確的結果 程序如下:若八個數字為 a,b,c,d,e,f,g,h ,則先兩 兩比較 (a,b), (c,d), (e,f), (g,h) 找出其中較大的四個 數 i,j,k,l ,再比較 (i,j), (k,l) 找出較大的兩個數,再比 較最後這兩個數,就可以找出最大的一個 與人腦不同的運作方式:人腦可以一次比八個數, 但是電腦一次只能比較兩個

6 從 8 個數字中找出最大值

7

8

9 執行結果

10 使用函式與未使用函式的比較 我們可以發現, 在第 16 、 19 、 22 、 25 、 28 、 32 、 36 行的條件判斷式一再地出現。只要 有兩個數值需要比較大小時, 我們就必須老 老實實的重複撰寫這些程式碼。 像這種重複的程式碼, 最適合將其寫成函式, 如下所示:

11 從 8 個數字中找出最大值

12

13

14 執行結果

15 使用函式與未使用函式的比較 我們可以很明白的看出, 那些一再重複的條 件判斷式, 在這個範例中只出現在第 29~31 行, 這正是 compare ( ) 函式的內容。 將函式給予一個函式名 compare ( ) 。然後 可在其他函式呼叫使用 ( 例如在 main ( ) 中 呼叫 compare ( ) ), 這樣可以減少重複寫程 式的麻煩。

16 使用函式與未使用函式的比較

17 函式的基本結構與呼叫 在為程式設計函式時, 流程是固定的: 函式的所有組成包括:函式主體、傳回值 的型別、函式名稱、引數 ( 數目不限, 也可 以沒有引數 ) 以及引數的型別。決定了這些 元件後才可以做函式的 " 宣告 " 與 " 定義 " 。

18 函式的組成 函式的組成架構:

19 函式的組成 傳回值的型別:當函式依函式主體的內容 敘述作執行完畢, 然後把結果傳回給呼叫者 ( 例如主程式 main ( ) ,也可以是其他函式 ), 這個結果我們稱為傳回值, 其型別稱為傳回 值的型別。傳回值型別可為 int 、 float 、 char 、 void... 等, void 表示無傳回值。 函式名稱:每個函式都需要給予一個獨立 的名稱, 以便與其他函式、變數區隔, 函式 的命名規則與變數相同。

20 函式的組成 引數與引數型別: main ( ) 或其他函式可以 傳遞資料 ( 可為變數、運算式或常數 ) 到被 呼叫函式裡作運算處理, 這些資料我們稱之 為引數, 其型別稱為引數型別。 函式主體:就是函式的內容程式碼, 函式就 如同一般程式一樣, 可以進行各種運算、輸 出入等。語法也與一般程式相同。

21 函式的原型宣告與定義 就如同使用變數前要先宣告變數一樣, 使用 函式前也需要宣告, 目的是告訴編譯器該函 式的函式名稱、傳回值的型別, 以及引數的 型別。 此種將程式中需要用到的函式, 條列在整個 程式最前面的方式, 即稱為函式的原型宣告 (Prototyping) 。

22 使用原型宣告時須注意 原型宣告的位置, 通常置於 #include 與 main ( ) 函式的中間:

23 使用原型宣告時須注意 函式不一定要有引數。如果有, 在原型宣告 中只需列出引數的型別;沒有的話, 則須註 明為 void 。 原型宣告完畢必須以分號 ( ; ) 當結尾。

24 使用原型宣告時須注意 原型宣告中的傳回值型別可決定函式是否 有傳回值。 void 表示無傳回值, void 以外的 型別都是有傳回值。

25 定義函式 光是宣告函式還不夠, 函式還必須有內容, 正如同掛牌的公司, 也必須有實際的營運行 為一樣。因此我們也需要讓編譯器知道該 函式實際的功用是什麼。這個工作叫做定 義函式:

26 定義函式時須注意 定義函式時, 須標明相對應於原型宣告的引 數型別以及引數名稱:

27 定義函式時須注意 定義函式內的函式主體必須包括在大括號 {... } 內。 函式主體內每行程式碼也必須用分號 ( ; ) 作結尾。

28 定義函式時須注意 如果函式有傳回值, 則該函式要用 return 敘 述將值傳出函式: C 語言的函數為「 Call by value 」,主程式中的 k 不會被更改

29 定義函式時須注意 函式的定義 通常習慣放 在 main ( ) 函式的後面 ( 此點並非 強制規定 ) :

30 習題:解二元一次聯立方程式 二元一次聯立方程組: ax+by=c; dx+ey=f, 其解為:

31 習題:解二元一次聯立方程式 此問題中,我們得計算好幾次二階行列式 的值,先寫一個只有主函式 main 的程式, 再將其中的二階行列式值拉出來寫成一個 函式。


Download ppt "函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式."

Similar presentations


Ads by Google