- Visual Basic程序設計
- 寧愛軍 趙奇
- 1227字
- 2019-10-31 12:47:52
1.4 算法的表示方法
一個算法可以用自然語言、傳統流程圖、N-S流程圖或偽代碼等方式來描述。1.2節中的算法都是使用自然語言描述的。使用自然語言描述算法通俗易懂,但比較冗長,容易產生歧義。
1.傳統流程圖和N-S流程圖
傳統流程圖是用一些圖框、流程線以及一些文字說明來描述操作過程的。使用流程圖來表示算法,更加直觀、易于理解。常用流程圖符號如圖1-4所示。

圖1-4 常用流程圖符號
傳統流程圖雖然形象直觀,但對流程線的使用沒有限制,使用者可以不受限制地使流程隨意跳轉,流程圖可能變得毫無規律,不便于閱讀。為了提高算法表示的質量,使算法更便于閱讀,人們對流程圖的表示方法進行了改進。1973年,美國學者I.Nassi和B.Shneiderman提出了N-S流程圖。這種流程圖去掉了帶有箭頭的流程線,更適合于結構化程序設計,因此更多地被應用于算法設計中。N-S流程圖與傳統流程圖一樣,唯一的區別是沒有了流程線。
2.三種基本結構
1966年,Bohra和Jacopini提出了三種程序設計的基本結構:順序結構、選擇結構和循環結構。經過理論證明,無論多么復雜的算法,都可以表示為這三種基本結構的組合。
(1)順序結構:順序結構是三種基本結構中最簡單的一種,程序在執行過程中會按照語句的先后順序依次執行。圖1-5(a)所示為傳統流程圖表示方式,圖1-5(b)所示為N-S流程圖表示方式。
(2)選擇結構:選擇結構又稱分支結構,指在程序執行過程中經過判定條件的真假來選擇執行下一步的操作。圖1-6(a)、(b)所示為傳統流程圖表示方式,圖1-6(c)所示為N-S流程圖表示方式。

圖1-5 順序結構

圖1-6 選擇結構
(3)循環結構:循環結構用于重復執行相似或相同的操作,但循環應該在有限次循環后結束。循環結構有兩種類型:當型循環和直到型循環。圖1-7(a)所示為當型循環傳統流程圖表示方式,圖1-7(b)所示為當型循環N-S流程圖表示方式,圖1-7(c)所示為直到型循環傳統流程圖表示方式,圖1-7(d)所示為直到型循環N-S流程圖表示方式。

圖1-7 循環結構
以上三種結構具有以下共同特征:
(1)只有一個入口和一個出口。
(2)結構中的每一個部分都有可能被執行到。
(3)結構內不存在“死循環”。
【例1.4】用傳統流程圖表示【例1.1】的算法如圖1-8所示,其N-S流程圖如圖1-9所示。

圖1-8 【例1.1】傳統流程圖

圖1-9 【例1.1】N-S流程圖
【例1.5】用傳統流程圖表示【例1.2】的算法如圖1-10所示,其N-S流程圖如圖1-11所示。

圖1-10 【例1.2】傳統流程圖

圖1-11 【例1.2】N-S流程圖
【例1.6】用傳統流程圖表示n!的算法如圖1-12所示,其N-S流程圖如圖1-13所示。

圖1-12 n!傳統流程圖

圖1-13 n!N-S流程圖
3.偽代碼
用傳統流程圖和N-S流程圖表示算法,直觀易懂,但畫起來較為復雜,修改也比較煩瑣,在設計算法時,也可以使用偽代碼來表示。
偽代碼是介于自然語言與程序設計語言之間的一種表示方式,書寫方便,格式緊湊,可以很方便地向程序設計語言過渡。
【例1.7】用偽代碼表示判斷某一年份是否閏年的算法。
【解】偽代碼具體如下:

學習提示:偽代碼雖然與最終的程序設計語言不同,但在某些方面有相似之處,因此某些算法不能根據流程圖很快寫出代碼時,可以使用偽代碼進行過渡。
- Design Principles for Process:driven Architectures Using Oracle BPM and SOA Suite 12c
- 摩登創客:與智能手機和平板電腦共舞
- Python自動化運維快速入門
- Python測試開發入門與實踐
- HTML5+CSS3基礎開發教程(第2版)
- Building Mobile Applications Using Kendo UI Mobile and ASP.NET Web API
- Python:Master the Art of Design Patterns
- Building Machine Learning Systems with Python(Second Edition)
- Sails.js Essentials
- 邊玩邊學Scratch3.0少兒趣味編程
- Solr權威指南(下卷)
- 數字媒體技術概論
- Java從入門到精通(視頻實戰版)
- Getting Started with JUCE
- ASP.NET本質論