国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++抽象編程——函數與庫(1)

2019-11-06 07:59:39
字體:
來源:轉載
供稿:網友

      最近在學c++的一本經典的教材——PRogramming abstraction in C++. 教材沒有中文版,所以我就把大致的意思寫下來,權當自己做個筆記吧。先從第二章開始總結,第一章有機會再補上吧。

      2.1 函數思想

       正如我們知道的,C++程序大部分都是由一系列函數而構成的,而C++中函數的概念與數學中的概念是很接近的,也就意味著我們不是在學習新的概念。舉個例子,高中學的一元二次函數的定義 

函數f 把x變成右邊的形式,使得任意的數x,都能代入式中,算出結果。同樣的在C++中,我們也可以執行這樣的一個函數,像這樣

 

那么,意思是,同樣的輸入一個x,返回的是X*X+1的值。那么,為什么我們在編程中要用到函數呢?試想,如果重復執行一個小功能,每一次我們都要寫一遍代碼,這樣就顯得一個小程序的代碼非常多,可讀性很差,而且在重復寫的過程中,萬一其中哪一個寫錯了一個參數,回去調試的時候,工作量是很大的。而我們將一個功能定義成一個函數,到時候要用的時候直接調用,就可以很完美的解決這個問題。

總之,函數有以下幾點優點:

a. 一次代碼,多次使用

b.便于程序的維護跟修改

c.減少程序的代碼量,增強代碼的可讀性

d.最重要的一點,函數可以把一個大程序分割成一個一個的小函數。

在d中,我們通常把大程序盡可能的分割成小函數,小到我們自己可以解決的程度,這樣的設計理念,我們稱之為自頂向下設計(top-down-design)

函數與算法

       函數之所以在編程中如此重要,原因是它為算法提供基本的運行程序。算法,就是用于解決一系列計算問題的嚴格詳細的策略(which are precisely specified strategies for solving computational problems.)。舉個例子 ,求兩個數的最大公約數(greatest common divisor)。簡稱為gcd,比如49跟35的最大公約數是7. 用算法可以這樣描述:

 1. Divide x by y and compute the remainder; call that remainder r.2. If r is zero, the algorithm is complete, and the answer is y.3. If r is not zero, set x to the old value of y, set y equal to r, and repeat the process.

我的理解就是

1.用y去除以x,并計算其余數記為r.

2.如果r=0;算法結束,結果為y;

3.如果r!=0;將y的值賦給x,并令y=r,然后重復操作。

當時我考慮了一下,要是有y<x呢,這時候就用到了取余,返回的就是x,那么相當于兩者對調位置,然后正常運行。最好動筆算一下。很容易把它轉換為C++代碼

int gcd(int x, int y) {int r = x % y;while (r != 0) {x = y;y = r;r = x % y;}return y;}那么,像這樣的一系列的簡單的數學算法,我們就沒必要去一個一個都要寫,c++為我們提供了很便利的工具 叫<cmath>。

<cmath>庫

下圖就是<cmath>中提供的一些數學運算


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 沛县| 巫溪县| 镇平县| 辉南县| 尖扎县| 铜川市| 梅河口市| 天等县| 崇左市| 河北省| 新郑市| 芦山县| 壤塘县| 贵阳市| 米林县| 大邑县| 南城县| 黄梅县| 蕉岭县| 云和县| 长阳| 德昌县| 哈巴河县| 揭阳市| 三亚市| 黄平县| 若尔盖县| 房产| 赤峰市| 高青县| 石首市| 江永县| 莒南县| 宁陵县| 阿尔山市| 五家渠市| 宣恩县| 云安县| 谢通门县| 墨玉县| 敦化市|