- C/C++實踐進(jìn)階之道:寫給程序員看的編程書
- 陳黎娟
- 930字
- 2020-06-29 11:37:42
5-1 函數(shù)的引入
還記得數(shù)學(xué)家高斯小時候的故事嗎:老師讓高斯他們計算從1加到100的值,高斯找到了一個巧妙的方法,很快就寫出了答案,而他的同學(xué)還在老老實實的計算。
如果我們今天讓計算機來計算,完全可以編寫如下程序:
【示例5-1】求從1加到100的值。
代碼如下:


這個方法雖然老實而笨拙,但是計算機具有運算速度快的特點,所以也沒有關(guān)系。但是如果老師怕各位同學(xué)互相抄襲,讓有的同學(xué)從1加到66,有的加到77……這個程序的通用性就差了一點。
于是就有了下面的求從1加到任意一個數(shù)n的通用程序,使用sum()函數(shù)來計算所有從1加到n,只不過在主程序中,調(diào)用它來滿足不同的需求。
【示例5-2】求從1加到n的值。
代碼如下:

在這個程序中,我們第一次地使用了函數(shù)這樣的結(jié)構(gòu)。這是C語言和大多數(shù)高級語言都提供的一種代碼集成機制,可以把特定的功能集中由函數(shù)(function)來完成。
函數(shù)完成固定的、規(guī)劃好的功能,在程序編寫中如果需要使用這樣的功能即可通過調(diào)用這個函數(shù)來實現(xiàn)。不管這個函數(shù)實現(xiàn)的功能有多復(fù)雜,調(diào)用它只需要很少的語句,而且調(diào)用形式(接口)是固定不變的。
C語言中引入函數(shù)這樣的結(jié)構(gòu)有很多的好處,一是提高程序的通用性;提高代碼的復(fù)用率;強化了程序的分工;還提高程序的可讀性。
相比較而言,有人說Basic語言的一個語句就是一個函數(shù),真的是很有道理。
函數(shù)的重要意義在于接口和實現(xiàn)的分家,這給開發(fā)大型程序、分工合作帶來了可能。
程序員各自開發(fā)各自的模塊,只需要約定好互相調(diào)用的接口即可。C語言的函數(shù)就是起到接口的作用,我們只需要使用函數(shù),而不需要知道函數(shù)的內(nèi)部是如何實現(xiàn)的。例如上面的程序可以改用高斯先生的算法,如下面示例所示。
【示例5-3】求從1加到n的值(高斯算法)。
代碼如下:

高斯先生果然聰明,采用他的算法,程序也可以簡單很多。我們也很聰明,從兩段程序的對比中會發(fā)現(xiàn)有很多不同:
(1)函數(shù)可以使用一個原型先聲明,實現(xiàn)可以在其他任何地方;
(2)接口不變,實現(xiàn)變了,不影響程序的執(zhí)行。
實際開發(fā)中也是如此,確定各個模塊的接口后,在優(yōu)化程序的時候,修改各個函數(shù)模塊的內(nèi)部實現(xiàn)即可,不用對整個系統(tǒng)“大動干戈”。函數(shù)的功能結(jié)合一定的程序設(shè)計方法,在求解問題的時候逐步細(xì)化,逐步到最簡單的、最底層的函數(shù),然后逐一實現(xiàn),這給軟件開發(fā)帶來了極大的便利。
- 數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程(第2版)
- C# 7 and .NET Core Cookbook
- 自己動手寫搜索引擎
- Mastering OpenCV Android Application Programming
- Mastering Entity Framework
- Ext JS Data-driven Application Design
- VMware vSphere 6.7虛擬化架構(gòu)實戰(zhàn)指南
- C語言程序設(shè)計實踐教程
- 單片機應(yīng)用與調(diào)試項目教程(C語言版)
- WebRTC技術(shù)詳解:從0到1構(gòu)建多人視頻會議系統(tǒng)
- Protocol-Oriented Programming with Swift
- Node.js開發(fā)指南
- Android Development Tools for Eclipse
- Learning Grunt
- 青少年學(xué)Python(第2冊)