ch05_p1.pdf - 程式設計(Programming 真理大學 資訊工程� 吳汶涓老� CH05 函式(function 本章綱要 5-1 簡介 5-2

ch05_p1.pdf - 程式設計(Programming 真理大學...

This preview shows page 1 out of 22 pages.

Unformatted text preview: 程式設計 (Programming) 真理大學 資訊工程系 吳汶涓老師 CH05 函式 (function) 本章綱要 5-1 簡介 5-2 C語言中的程式模組 5-3 數學函式庫 5-4 函式 5-5 函式定義 5-6 函式原型 5-7 函式呼叫堆疊與活動紀錄 5-8 標頭 真理大學 資訊工程系 5-9 呼叫函式 5-10 亂數產生 5-11 範例:機會遊戲 5-12 儲存類別 5-13 範圍規則 5-14 遞迴 5-15 Fibonacci級數 5-16 遞迴 vs. 迭代 程式設計 Programming ( 吳汶涓 ) 2 5.1 簡介  大部分電腦程式都比前幾章所介紹的程式大很多    無法管理 無法分工 各個擊破 (divide and conquer)  以一些較小的單元來建構整個程式   這些小單元稱為模組 (module) 這些小單元要比整個大程式好管理多了 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 3 5.2 C語言中的程式模組  函式 (function)   C的模組 程式包含:使用者定義 使用者定義的函式 、函式庫 函式庫函式 使用者定義 函式庫   C標準函式庫提供了包羅萬象的函式,包括數學運算、字串處理、 字元處理、輸入/輸出等等。 例如:printf( ), scanf( ), pow( ) 函式 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 4  函式呼叫 (function call)  引用函式 (invoking function)     提供函式名稱 函式名稱、引數 函式名稱 引數(資料) 引數 函式是用來執行運算或操作 函式可以傳回運算結果 函式呼叫的比喻    老闆要求員工去執行某項工作 員工得到資訊  執行任務 回報結果(return) 回報結果 老闆不曉得執行的細節 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 5 5.3 數學函式庫函式  數學函式庫函式:    提供常用的數學運算 #include <math.h> 呼叫函式的格式  FunctionName(argument);  function name 若有多個引數,使用逗號隔開,如 pow(10, 2); arguments  printf( “%.2f”, sqrt(900.0) );    呼叫 sqrt 函式,回傳引數的平方根 所有數學函式傳回值的型態都是 傳回值的型態都是 double 引數可以是常數 常數、 常數、變數或運算式 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 6 課本pp. 5-5 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 7 練習  課本pp.5-52, Ex 5.8 請求出下列每項敘述式執行後,x的值為何。        ans: 7.5 x = fabs(7.5); ans: 7.0 x = floor(7.5); ans: 0.0 x = fabs(0.0); x = ceil(0.0); x = fabs(-6.4); x = ceil(-6.4); x = ceil(-fabs(-8 + floor(-5.5) )); 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 8 5.4 函式  函式   模組化一個程式 宣告在函式中的變數都是區域變數 區域變數(local variable) 區域變數   只有定義它們的函式才知道這些變數的存在 使用函式的好處  各個擊破   軟體可以重複使用性 (software reusability)   程式更好管理 抽象化: 隱藏內部細節 減少重複的程式碼 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 9 課本pp. 5-8 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 10 5.5 函式定義  計算1~10整數 的平方  函式自行定義 呼叫 回傳計算結果 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 11  函式定義的格式 return-value-type function-name(parameter-list) { definitions statements }   function-name: 任何合法識別字 return-value-type: 計算結果的資料型態   void 是用來表示函式沒有回傳值 parameter-list: 宣告參數  每個參數的型別要明確指出 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 12 return-value-type function-name(parameter-list) { definitions statements }  definitions & statements: (函式本體、函式區塊)    區塊中可以宣告變數 函式不能定義在另一個函式之內 本體最後一行需傳回執行的控制權   沒有回傳值 return; 有回傳值 return expression or values; 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 13 函式原型: 表示之後會定義此函式 呼叫square函式 函式定義 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 14 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 15  Example: 尋找三個整數中的最大值 課本pp. 5-10 函式原型 呼叫函式 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 16 函式定義 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 17 練習   改寫上面的程式,使能計算三個整數的最小值。 請撰寫一個程式輸入一連串的整數,並將他們一 函式even,它將利用模數運算子來判 次一個傳給函式 函式 斷傳進來的整數是否為偶數。此函式應接收一個 整數引數,並在整數為偶數時傳回1,否則傳回0。 pp.5-54, ex 5.18 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 18 5.6 函式原型 (function prototype)  函式原型:用來驗證函式     函式名稱 參數列 回傳型別 當函式定義出現在使用函式的位置之後 定義出現在使用函式的位置之後,才需要函式原型 定義出現在使用函式的位置之後 … …  提昇規則   C語言會強制進行恰當的 恰當的型別轉換,如 sqrt(4); 恰當的 將數值轉換成較低的型別,通常會得到不正確的值 如圖5.3的 square(4.5) 將會回傳16,而非20.25 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 19 高 低 課本pp. 5-12 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 20 練習  請修改先前的進位轉換作業,將每個功能分別寫 成函式(function),最多會有3個函式。 功能有: 1. Dec -> Bin 2. Bin -> Dec 3. Dec -> Oct 4. Bin -> Oct 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 21 練習  撰寫一個程式,此程式有兩個功能如下 (1) 指數計算: 函式 integerPower(base, exponent) 能計算出 baseexponent的值並回傳。兩個參數皆為整數。 函式中不能用任何數學函式庫來做次方的計算。 (2) 倍數計算: 函式 multiple(v1, v2) 能判斷出v2是否為v1的倍數 並回傳true 或 false。兩個參數皆為整數。 課本pp. 5-54, Ex. 5.16, 5.17 真理大學 資訊工程系 程式設計 Programming ( 吳汶涓 ) 22 ...
View Full Document

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture