書名: C/C++程序設計教程作者名: 孫淑霞 肖陽春 魏琴等編著本章字數: 1201字更新時間: 2018-12-30 07:11:43
1.4.2 算法描述
算法的描述就是用文字或圖形把算法表示出來。常用的描述方法有:自然語言、流程圖、N-S流程圖、偽代碼等。
1.自然語言
自然語言就是人們日常使用的語言,可以是漢語、英語或其他語言。用自然語言描述算法通俗易懂,但也存在如下缺點:
① 往往要用一段較冗長的文字才能表達清楚要進行的操作;
② 容易出現“歧義性”,往往要根據上下文才能正確判斷出它的含義,不太嚴謹;
③ 如果用自然語言描述的算法是順序執行的,還比較容易理解,當算法中包含了判斷和轉移等步驟時,用自然語言描述就不容易理解。
【例1.1】 求任意3個正整數a, b, c中的最大者。
用自然語言描述的算法如下:
① 輸入a, b, c;
② a和b比較,若a>b則a=>max,否則b=>max;
③ c和max比較,若c>max,則c=>max;
④ 輸出max。
2.傳統流程圖
傳統流程圖是用一些幾何圖形框、線條和文字來描述各種操作,是使用最早的算法和程序描述工具。美國國家標準化協會規定了一些常用流程圖符號,如圖1.1所示。

圖1.1 常用傳統流程圖符號
用傳統流程圖描述的例1.1如圖1.2所示。

圖1.2 例1.1的傳統流程圖
3.N-S流程圖
N-S流程圖簡稱N-S圖。這種流程圖能清楚地顯示出程序的結構。但當嵌套層數太多時,內層的方框將越畫越小,從而影響圖形的清晰度。
N-S 結構流程圖用以下三種基本元素框來表示三種基本結構。
(1)順序結構
圖1.3表示的是順序結構,即依次執行A、B語句或語句組。

圖1.3 順序結構
(2)選擇結構
圖 1.4 表示的是選擇結構,其意義是:當條件p成立時執行A操作,條件p不成立時執行B操作。

圖1.4 選擇結構
(3)循環結構
圖1.5(a)是當型循環結構,它表示的意義是:當條件p1成立時反復執行A操作,直到條件p1不成立時為止。圖1.5(b)是直到型循環結構,它表示的意義是:反復執行A操作,直到條件p2不成立時為止。

圖1.5 N-S結構流程圖
由于 N-S 圖廢除了流程線,因此比傳統流程圖更緊湊、易畫,整個算法結構是由各個基本結構按順序組成的,其上下順序就是執行順序,使寫算法和看算法只需從上到下進行,十分方便。但由于 N-S 圖僅使用三種基本結構設計程序,因此使某些程序設計的實現變得繁瑣和困難。
圖1.6是描述例1.1的N-S圖。

圖1.6 例1.1的N-S圖
4.偽代碼
偽代碼(Pseudo-code)又稱程序設計語言 PDL,是用介于自然語言和計算機語言之間的文字和符號來描述算法的。根據編程語言的不同,有對應的類xxx語言,例如類C、類Pascal等。偽代碼借助于某些高級語言的控制結構和一些自然語言的嵌套,每一行(或幾行)表示一個基本操作,書寫方便,格式緊湊,比較好懂,很容易轉化為高級語言程序。
偽代碼可以用英文、漢字、中英文混合表示算法,以便于書寫和閱讀為原則。用偽代碼描述算法并無固定的、嚴格的語法規則,它比程序設計語言更容易描述和理解,又比自然語言更接近程序設計語言,只要把意思表達清楚,書寫格式清晰易讀即可。
下面是描述例1.1的偽代碼。
read a,b,c if a>b a=>max else b=>max if c>max c=>max print max
用自然語言、流程圖、N-S流程圖、偽代碼描述的算法很容易轉換為計算機程序,只要選擇一種計算機語言,按照其語法規則,就可以編寫出計算機程序。
- scikit-learn Cookbook
- Java 9 Concurrency Cookbook(Second Edition)
- Building Modern Web Applications Using Angular
- 樂學Web編程:網站制作不神秘
- PHP+MySQL網站開發技術項目式教程(第2版)
- INSTANT Sencha Touch
- 高級C/C++編譯技術(典藏版)
- C語言程序設計案例式教程
- Microsoft System Center Orchestrator 2012 R2 Essentials
- Drupal 8 Module Development
- Android Native Development Kit Cookbook
- Scala Reactive Programming
- Create React App 2 Quick Start Guide
- Unity 2017 Game AI Programming(Third Edition)
- AutoCAD基礎教程