什麼是函數?
在數學課時,同學們一定學習過數學函數,
但C程式的函數和數學上的函數,類似卻有不一樣的地方,
讓我們來比較一下:
數學函數的定義 f : A→B 是一個對應,滿足:對所有a∈ A,存在惟一的b∈ B
使得 a 在 f 裡對應到 b。即 ∀ a∈ A,∃!b∈ B,使得 f(a)=b。
例如: y = f( x ) = x 2+x+1
(描述每個輸入值對應唯一輸出的對應關係)
數值型態可以是理想化;
定義域、對應域(值域)可以是無限。
C語言的函數像是: int y( int x) 或 float z(int x)
(可/無 接收一至多個輸入參數,並回傳相關的計算數值)
數值的型態,必須要定義規範。
定義域、對應域是有限的範圍,如整數、浮點數。
簡單來說,C提供兩種方式來使用函數(函式),
一是讓使用者(程式設計者)自行撰寫,傳送數值進去運算後,再傳回,或稱為副程式(subroutine),
另一種是C語言所提供的內建函數(function)/標準函式庫,例如之前所學到的 printf、scanf 就是#include定義檔stdio.h,
要用什麼函數,得先將該函數的定義檔案include載入。
而C的內建函式主要提供:
- 輸出/輸入處理。
- 數學運算。
- 字串處理。
- 記憶體管理。
- 作業系統服務等相關支援。
玩積木 vs 作積木 的觀念
使用函數的目的:
- 減少重複的功能。
- 簡化程式碼。
- 增加程式碼可讀性。
- 使程式維護容易。
|