【正文】
第 5章 函數(shù) 講授內(nèi)容 ? 函數(shù)的定義和函數(shù)原型 ? 函數(shù)調(diào)用和參數(shù)傳遞機(jī)制 ? 函數(shù)重載 ? 存儲類別和作用域 ? 遞歸函數(shù)設(shè)計(jì)和函數(shù)的遞歸調(diào)用 ? 類的復(fù)合 ? 預(yù)處理指令 模塊化程序設(shè)計(jì) (1/3) ? 復(fù)雜問題一般可以分解為若干稍簡單的問題 ? 每個(gè)問題的解決對應(yīng)一個(gè)模塊的求解 ? 解決復(fù)雜問題的系統(tǒng)一般由逐級抽象的諸模塊組成 ? 每個(gè)模塊是一個(gè)類或函數(shù) 模塊化程序設(shè)計(jì) (2/3) ? 函數(shù)是 C++程序構(gòu)成的基礎(chǔ) ? 任何 C++程序至少包含一個(gè)函數(shù) ——main()函數(shù) ? 函數(shù)也是類的方法的實(shí)現(xiàn)手段 ? 函數(shù)的作用 ? 實(shí)現(xiàn)系統(tǒng)中按功能分解的各小任務(wù) ? 實(shí)現(xiàn)類對象的方法 ? C++程序的設(shè)計(jì)最終都落實(shí)到一個(gè)個(gè)函數(shù)的設(shè)計(jì)上 模塊化程序設(shè)計(jì) (3/3) ? 函數(shù)是 C++源程序的基本模塊 ? C++中的函數(shù)包括兩類: ? 預(yù)定義函數(shù), C++提供了豐富的庫函數(shù),程序員可以在自己的程序中直接使用 ? 用戶自定義函數(shù),用戶根據(jù)需要編寫的函數(shù) ? 一個(gè) C++程序可包含多個(gè)文件,一個(gè)文件可包含多個(gè)函數(shù) 預(yù)定義函數(shù)的使用 (1/2) ? C++提供了豐富的庫函數(shù),這些庫函數(shù)的聲明都放在相應(yīng)的頭文件中 ? 要使用這些庫函數(shù),必須先包括相應(yīng)的頭文件,然后直接使用 ? 例如:數(shù)學(xué)運(yùn)算函數(shù)的聲明包含在,要使用這些函數(shù),程序中必須加上代碼 include 預(yù)定義函數(shù)的使用 (2/2) ? 函數(shù)調(diào)用的一般過程 ? 先計(jì)算實(shí)參表達(dá)式的值 ? 然后將計(jì)算的結(jié)果交給被調(diào)用函數(shù) ? 再執(zhí)行被調(diào)用函數(shù)的代碼,直至返回語句 return或到函數(shù)尾 ? 最后程序控制返回到函數(shù)的調(diào)用處,繼續(xù)執(zhí)行 ? printf(“%.2f”,sqrt())。的執(zhí)行過程 ? 以 sqrt函數(shù),得到返回結(jié)果 ? 以 %.2f和 printf函數(shù),實(shí)現(xiàn)格式化輸出 函數(shù)定義與函數(shù)原型 ? 函數(shù) ? 模塊化 ? 所有在函數(shù)體中說明的變量都是局部變量 ? 僅在定義的函數(shù)中有效 ? 參數(shù) ? 函數(shù)間傳遞信息 ? 局部變量 函數(shù)定義與函數(shù)原型 ? 函數(shù)的優(yōu)點(diǎn) ? 分而治之 ? 有利于程序開發(fā) ? 避免代碼重復(fù) ? 軟件重用 ? 重用已有的函數(shù)來構(gòu)造新的程序 ? 抽象-隱蔽內(nèi)部的細(xì)節(jié) 例子 1:函數(shù)舉例 include int maximum( int,int,int )。/*function prototype*/ int main() { int a, b, c。 printf( Enter three integers: )。 scanf( %d%d%d, amp。a, amp。b, amp。c )。 printf( Maximum is: %d\n, maximum(a,b,c))。 return 0。 } /* Function maximum definition */ int maximum( int x, int y, int z ) { int max = x。 if ( y max ) max = y。 if ( z max ) max = z。 return max。 } 例子 2:函數(shù)舉例 include int maximum( int,int,int )。 int main() { int a, b, c, max。 printf( Enter three integers: )。 scanf( %d%d%d, amp。a, amp。b, amp。c )。 max = maximum(a,b,c)。 printf( Maximum is: %d\n, max )。 return 0。 } int maximum( int x, int y, int z ) { int max = x。 if ( y max ) max = y。 if ( z max ) max = z。 return max。 } 例子 3:函數(shù)舉例 include int maximum( int x, int y, int z ) { int max = x。 if ( y max ) max = y。 if ( z max ) max = z。 return max。 } int main() { int a, b, c, max。 printf( Enter three integers: )。 scanf( %d%d%d, amp。a, amp。b, amp。c )。 max = maximum(a,b,c)。 printf( Maximum is: %d\n, max )。 return 0。 } 例子 4:函數(shù)舉例 include void maximum(int,int,int)。 int main() { int a, b, c, max。 printf( Enter three integers: )。 scanf( %d%d%d, amp。a, amp。b, amp。c )。 maximum(a,b,c)。 return 0。 } void maximum( int x, int y, int z ) { int max = x。 if ( y max ) max = y。 if ( z max ) max = z。 printf( Maximum is: %d\n, max )。 return。 /* is not necessary */ } 例子 5:函數(shù)舉例 include void maximum( int x, int y, int