- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函式Part.1-東海大學
函式 Function 東海大學物理系?資訊教育 施奇廷 函式簡介 當程式越來越大、越複雜時,程式的維護、除錯會變得更困難,此時必須引入函式來簡化程式或將程式分段,將程式重複的部分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時間、邏輯容易瞭解、程式容易除錯、可分工合作完成程式 函式簡介(續) 將重複的程式碼, 寫成函式, 即可隨時供程式呼叫使用。當在程式中, 需要寫到會重覆的程式碼時, 可以用一簡短的函式呼叫語法取而代之, 一樣可得到相同的執行結果。 將一長串的程式碼, 分割出一些功能獨立的函式後, 當程式有問題需進行除錯時, 可以很容易地追蹤錯誤是發生在 main ( ) 或是某個函式中。 內建函式與自訂函式 C語言已經提供了許多的內建函式供我們使用,如輸入輸出的printf、scanf、getchar;數學函數用的cos, sin, pow等 主程式 main 也是一個函式 當有些功能(或函數)系統本身沒有提供時,就必須自己寫,此為自訂函式 範例:找出八個數中的最大值 在此我們用一個比較 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)找出較大的兩個數,再比較最後這兩個數,就可以找出最大的一個 與人腦不同的運作方式:人腦可以一次比八個數,但是電腦一次只能比較兩個 從 8 個數字中找出最大值 從 8 個數字中找出最大值 從 8 個數字中找出最大值 執行結果 使用函式與未使用函式的比較 我們可以發現, 在第 16、19、22、25、28、32、36 行的條件判斷式一再地出現。只要有兩個數值需要比較大小時, 我們就必須老老實實的重複撰寫這些程式碼。 像這種重複的程式碼, 最適合將其寫成函式, 如下所示: 從 8 個數字中找出最大值 從 8 個數字中找出最大值 從 8 個數字中找出最大值 執行結果 使用函式與未使用函式的比較 我們可以很明白的看出, 那些一再重複的條件判斷式, 在這個範例中只出現在第 29~31 行, 這正是 compare ( ) 函式的內容。 將函式給予一個函式名 compare ( )。然後可在其他函式呼叫使用 (例如在 main ( ) 中呼叫 compare ( ) ), 這樣可以減少重複寫程式的麻煩。 使用函式與未使用函式的比較 函式的基本結構與呼叫 在為程式設計函式時, 流程是固定的: 函式的所有組成包括:函式主體、傳回值的型別、函式名稱、引數 (數目不限, 也可以沒有引數) 以及引數的型別。決定了這些元件後才可以做函式的 宣告 與 定義。 函式的組成 函式的組成架構: 函式的組成 傳回值的型別:當函式依函式主體的內容敘述作執行完畢, 然後把結果傳回給呼叫者 (例如主程式 main ( ),也可以是其他函式), 這個結果我們稱為傳回值, 其型別稱為傳回值的型別。傳回值型別可為 int、float、char、void ... 等, void 表示無傳回值。 函式名稱:每個函式都需要給予一個獨立的名稱, 以便與其他函式、變數區隔, 函式的命名規則與變數相同。 函式的組成 引數與引數型別:main ( ) 或其他函式可以傳遞資料 (可為變數、運算式或常數) 到被呼叫函式裡作運算處理, 這些資料我們稱之為引數, 其型別稱為引數型別。 函式主體:就是函式的內容程式碼, 函式就如同一般程式一樣, 可以進行各種運算、輸出入等。語法也與一般程式相同。 函式的原型宣告與定義 就如同使用變數前要先宣告變數一樣, 使用函式前也需要宣告, 目的是告訴編譯器該函式的函式名稱、傳回值的型別, 以及引數的型別。 此種將程式中需要用到的函式, 條列在整個程式最前面的方式, 即稱為函式的原型宣告 (Prototyping)。 使用原型宣告時須注意 原型宣告的位置, 通常置於 #include 與 main ( ) 函式的中間: 使用原型宣告時須注意 函式不一定要有引數。如果有, 在原型宣告中只需列出引數的型別;沒有的話, 則須註明為 void。 原型宣告完畢必須以分號 (;) 當結尾。 使用原型宣告時須注意 原型宣告中的傳回值型別可決定函式是否有傳回值。void 表示無傳回值, void 以外的型別都是有傳回值。 定義函式 光是宣告函式還不夠, 函式還必須有內容, 正如同掛牌的公司, 也必須有實際的營運行為一樣。因此我們也需要讓編譯器知道該函式實際的功用是什麼
文档评论(0)