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

2.2 用流程圖表示

流程圖是一種傳統的算法表示法,它用一些圖框來代表各種不同性質的操作,用流程線來指示算法的執行方向。由于它直觀形象,易于理解,所以應用廣泛。

2.2.1 流程圖符號

下面列出一些常見的流程圖符號,如表2.1所示。其中,“起止框”用來標識算法的開始和結束;“輸入/輸出框”用來表示算法的輸入或者輸出;“判斷框”用來判斷給定的條件,并根據條件成立與否,決定如何執行后續操作;“處理框”用來表示算法中變量的一些操作,如變量計算、賦值等;“流程線”用來表示算法的流向,即算法下一步該往哪個方向進行;“注釋框”用來對算法進行注釋;“連接點”用于將畫在不同地方的流程線連接起來。

表2.1 流程圖符號

【實例2.3】 判斷輸入的數字是奇數還是偶數。

判斷一個數是奇數還是偶數的條件如下:用該數除以2,余數為0,則為偶數,否則為奇數。

本實例的算法過程用流程圖表示,如圖2.12所示。其過程分析如下:

(1)程序開始,用戶輸入一個數n。

(2)用菱形框判斷n與2相除取余,結果是否為0。

(3)判斷結果為True,則輸出“此數為偶數”;判斷結果為False,則輸出“此數為奇數”。

(4)程序結束。

【實例2.4】 大學畢業季:智聯招聘投簡歷。

某企業招聘,公司人事會根據求職者填寫的身高和年齡,判斷是否符合公司的初試條件(年齡不低于25歲,身高不低于1.7米)。滿足條件,通知應聘者通過初試,準備參加面試和筆試;否則就通知沒有通過初試。

本實例的算法過程用流程圖表示,如圖2.13所示。其過程分析如下:

圖2.12 判斷奇數還是偶數

圖2.13 是否通過初試

(1)程序開始,輸入身高h和年齡a。

(2)用菱形框判斷h是否大于等于1.7,同時a是否大于等于25。

(3)判斷結果為True,則輸出“通過初試”;判斷結果為False,則輸出“沒有通過初試”。

(4)程序結束。

2.2.2 三大基本結構

1966年,計算機科學家Bohm和Jacopini為了提高算法質量,提出了3種基本程序結構,即順序結構、選擇結構和循環結構,任何一個算法都可由這3種基本結構組成。這3種基本結構之間可以并列,也可以相互包含,但不允許交叉,不允許從一個結構直接跳轉到另一個結構內部。只要規定好這3種基本結構的流程圖的畫法,就可以畫出任何算法的流程圖。

1.順序結構

順序結構是一種簡單的線性結構,各操作將按照在程序中出現的先后順序依次執行。如圖2.14所示,執行完語句1指定的操作后,接著會執行語句2指定的操作。順序結構中,只有一個入口點語句1和一個出口點語句2。

【實例2.5】 農夫、羊、狼及白菜過河。

一名農夫要將一只狼、一只羊和一袋白菜運到河對岸,但農夫的船很小,每次只能載下農夫本人和一只動物,或者農夫與白菜。農夫不能把羊和白菜留在岸邊,因為羊會把白菜吃掉;也不能把狼和羊留在岸邊,因為狼會吃掉羊。那么,農夫怎樣才能將這3樣東西送過河呢?

本實例的流程圖可以采用順序結構來實現,如圖2.15所示。

圖2.14 順序結構

圖2.15 農夫、羊、狼和白菜過河

2.選擇結構

選擇結構也稱為分支結構,其必須包含一個判斷框,用于判斷某個條件是否成立,并根據判斷結果,執行不同的語句,從而模擬現實中的選擇情況。

如圖2.16所示的選擇結構,需要判斷給定的條件P是否成立,如果判斷結果為True,則執行語句;如果判斷結果為False,什么也不做。

如圖2.17所示的選擇結構,需要判斷給定的條件P是否成立,如果判斷結果為True,則執行語句1;如果判斷結果為False,則執行語句2。

圖2.16 選擇結構1

圖2.17 選擇結構2

【實例2.6】 判斷成績是否及格。

輸入考試成績,判斷該成績是否為大于等于60分。如果判斷結果為True,表示考試成績及格;如果判斷結果為False,表示考試成績不及格。

本實例采用選擇結構來實現,流程圖如圖2.18所示。

3.循環結構

生活中有時會遇到往返重復的操作,使用循環結構處理這類問題最好不過。在循環結構中,某個判斷條件成立時,可反復地執行一系列操作,直到該條件不成立時,才終止循環。

按照判斷條件出現的位置,可將循環結構分為當型循環結構和直到型循環結構。

如圖2.19所示是當型循環結構的流程圖。這里,先判斷條件P是否成立,如果返回的結果是True,則執行語句;執行完語句后,再次判斷條件P是否成立,如果返回的結果仍是True,接著再執行語句;如此反復,直到判斷條件P返回的結果是False,此時不再執行語句,而是跳出循環。

圖2.18 判斷成績是否及格

圖2.19 當型循環

如圖2.20所示是直到型循環結構的流程圖。這里,先執行語句,然后判斷條件P是否成立,如果判斷條件P返回的結果為True,再次執行語句;繼續判斷條件P是否成立,如果返回的結果仍為True,接著再執行語句;如此反復,直到判斷條件P返回的結果為False,此時不再執行語句,而是跳出循環。

可見,當型循環和直到型循環不同之處就是:當型循環是先判斷條件再執行循環體;而直到型循環是先執行一次循環體,再進行條件判斷。也就是說,不論第一次條件判斷的結果是否為True,直到型循環都會執行一次循環體。

【實例2.7】 用不同循環結構實現1~100的求和問題。

計算1~100(包括1和100)所有整數的和。

本實例可以用當型循環結構來表示,流程圖如圖2.21所示;也可以用直到型循環結構來表示,流程圖如圖2.22所示。

圖2.20 直到型循環

圖2.21 當型循環結構求和

圖2.22 直到型循環結構求和

圖2.21所示流程圖的執行過程如下:

(1)程序開始,首先對變量進行初始化,i=1,sum=0。

(2)判斷i的值是否小于等于100,因為i=1,條件判斷結果為True,先執行“sum=sum+i;”,即sum=0+1=1;再執行“i++;”,即i=1+1=2。

(3)再次判斷i的值是否小于等于100,此時i=2,條件判斷結果為True,先執行“sum=sum+i;”即sum=1+1=2;再執行“i++;”,即i=2+1=3。

(4)如此循環下去,直到i=101時,再次判斷i的值是否小于等于100,條件判斷結果為False,跳出循環,輸出sum的值。

(5)程序執行結束。

圖2.22所示流程圖的執行過程如下:

(1)程序開始,首先對變量進行初始化,i=1,sum=0。

(2)然后執行“sum=sum+i;”,即sum=0+1=1;再執行“i++;”,即i=1+1=2。

(3)判斷i的值是否小于等于100,此時i=2,條件判斷結果為True,執行“sum=sum+i;”,即sum=1+1=2;再執行“i++;”,即i=2+1=3。

(4)再次判斷i的值是否小于等于100,此時i=3,條件判斷結果為True,執行“sum=sum+i;”,即sum=2+1=3;再執行“i++;”,即i=3+1=4。

(5)如此循環下去,直到i=101時,再次判斷i的值是否小于等于100,條件判斷結果為False,跳出循環,輸出sum的值。

(6)程序執行結束。

主站蜘蛛池模板: 页游| 岐山县| 景泰县| 迭部县| 兴隆县| 黔南| 德阳市| 克拉玛依市| 昌都县| 九龙坡区| 沁阳市| 南丰县| 安溪县| 宝山区| 水城县| 敖汉旗| 应城市| 漳浦县| 上思县| 万载县| 遵化市| 麻城市| 钦州市| 会宁县| 四平市| 马公市| 焦作市| 岳阳县| 南华县| 金湖县| 防城港市| 康乐县| 利川市| 东乡县| 南召县| 万州区| 梓潼县| 陆川县| 漳平市| 广昌县| 北宁市|