官术网_书友最值得收藏!

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】用偽代碼表示判斷某一年份是否閏年的算法。

【解】偽代碼具體如下:

學習提示:偽代碼雖然與最終的程序設計語言不同,但在某些方面有相似之處,因此某些算法不能根據流程圖很快寫出代碼時,可以使用偽代碼進行過渡。

主站蜘蛛池模板: 富川| 伊宁市| 四平市| 南溪县| 白山市| 新丰县| 黄浦区| 海阳市| 彰化市| 南通市| 临颍县| 张北县| 柳州市| 卫辉市| 东源县| 林州市| 孟津县| 济南市| 芜湖市| 永顺县| 天全县| 东兰县| 溆浦县| 渑池县| 宣城市| 沙田区| 永兴县| 衡水市| 绥芬河市| 甘德县| 如皋市| 科尔| 武鸣县| 温州市| 陆川县| 虎林市| 白水县| 攀枝花市| 夏津县| 桃园县| 贵定县|