版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-算法圖

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

定義

計(jì)算機(jī)語言只是一種工具。光學(xué)習(xí)語言的規(guī)則還不夠,最重要的是學(xué)會針對各種類型的問題,擬定出有效的解決方法和步驟即算法。有了正確而有效的算法,可以利用任何一種計(jì)算機(jī)高級語言編寫程序,使計(jì)算機(jī)進(jìn)行工作。因此,設(shè)計(jì)算法是程序設(shè)計(jì)的核心。算法圖常用的有流程圖,PAD圖等。

流程圖定義流程圖是用規(guī)定的圖形,指向線和文字說明來準(zhǔn)確、清晰、直觀的來表示算法的圖形。又被稱為流程圖或流程算法圖。

構(gòu)成流程圖是由表示相應(yīng)操作的程序框,帶有箭頭的流程線,程序框內(nèi)必要的文字說明組成。

表示符號如下:

處理框(矩形框),表示一般的處理功能。

判斷框(菱形框),表示對一個給定的條件進(jìn)行判斷,根據(jù)給定的條件是否成立決定如何執(zhí)行其后的操作。它有一個入口,二個出口。輸入輸出框(平行四邊形框)。

起止框(圓弧形框),表示算法開始或結(jié)束。

連接點(diǎn)(圓圈),用于將畫在不同地方的流程線連接起來。用連接點(diǎn),可以避免流程

線的交叉或過長,使流程圖清晰。

流程線(指向線),表示流程的路徑和方向。

注釋框,是為了對流程圖中某些框的操作做必要的補(bǔ)充說明,以幫助閱讀算法圖的人更好地理解流程圖的作用。它不是流程圖中必要的部分,不反映流程和操作。

規(guī)則畫流程圖的規(guī)則如下:

1、使用標(biāo)準(zhǔn)的框圖符號;

2、流程圖一般按從上到下從左到右的方向畫;

3、起止框是任一流程圖中必不可少的,表示算法的開始和結(jié)束;

4、算法框內(nèi)的文字要簡潔明了;

5、判斷框有一個進(jìn)入點(diǎn)但有兩個退出點(diǎn),其他程序框只有一個進(jìn)入點(diǎn)和退出點(diǎn)。

順序結(jié)構(gòu)有若干個依次執(zhí)行的步驟組成,語句與語句之間,框與框之間按

從上到下進(jìn)行的邏輯結(jié)構(gòu),我們稱之為順序結(jié)構(gòu)。

例如:尺規(guī)作圖,確定線段一個五等分點(diǎn)。

步驟:1、從線段的左端A點(diǎn)出發(fā)做一條射線;

2、在射線上取點(diǎn)C,得到單位線段AC;

3、在射線上做線段CE=AC;EF=AC;FG=AC;GD=AC;

4、連接DB;

5、過C做BD的平行線,交線段AB于M,即為五等分點(diǎn)。

選擇結(jié)構(gòu)在算法的流程中,先根據(jù)條件作出判斷,再決定執(zhí)行哪一種操作的結(jié)構(gòu)稱為選擇結(jié)構(gòu)。

選擇結(jié)構(gòu)的兩種模式如下圖:

循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu):又稱重復(fù)結(jié)構(gòu),即反復(fù)執(zhí)行某一部分的操作。有兩類循環(huán)結(jié)構(gòu):

當(dāng)型(While):當(dāng)給定的條件p成立時(shí),執(zhí)行A框操作,然后再判斷p條件是否成立。如果仍然成立,再執(zhí)行A框,如此反復(fù)直到p條件不成立為止。此時(shí)不執(zhí)行A框而脫離循環(huán)結(jié)構(gòu)。

直到型(Until):先執(zhí)行A框,然后判斷給定的p條件是否成立。如果p條件不成立,則再執(zhí)行A,然后再對p條件作判斷。如此反復(fù)直到給定的p條件成立為止。此時(shí)脫離本循環(huán)結(jié)構(gòu)。

PAD圖定義PAD是問題分析圖(Problem Analysis Diagram)的英文縮寫,由日本的二村良彥等人提出的一種主要用于描述軟件詳細(xì)設(shè)計(jì)的圖形表示工具。與流程圖一樣,PAD圖也只能描述結(jié)構(gòu)化程序允許使用的幾種基本結(jié)果。發(fā)明以來,已經(jīng)得到一定程度的推廣。它用二維樹形結(jié)構(gòu)的圖表示程序的控制流,以PAD圖為基礎(chǔ),遵循機(jī)械的走樹(Tree Walk)規(guī)則就能方便地編寫出程序,用這種圖轉(zhuǎn)換為程序代碼比較容易1。

規(guī)則1、功能域(即,一個特定控制結(jié)構(gòu)的作用域)明確,可以從PAD圖上一眼就看出來。

2、沒有箭頭,不可能任意轉(zhuǎn)移控制。

3、最左端的縱線是程序主干線,對應(yīng)程序的第一層結(jié)構(gòu);每增一層PAD圖向右擴(kuò)展一條縱線,幫程序的縱線數(shù)等于程序?qū)哟螖?shù)。

4、程序執(zhí)行:從PAD圖最左主干線上端結(jié)點(diǎn)開始,自上而下、自左向右依次執(zhí)行,程序終止于最左主干線。

特征1、結(jié)構(gòu)清晰,結(jié)構(gòu)化程度高;

2、易于閱讀

3、、很容易確定局部和全程數(shù)據(jù)的作用域。

4、很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。

5、五中基本模式,并允許遞歸使用。

優(yōu)勢1、使用表示結(jié)構(gòu)優(yōu)化控制結(jié)構(gòu)的PAD符號所設(shè)計(jì)出來的程序必然是程序化程序

2、PAD圖所描述的程序結(jié)構(gòu)十分清晰。圖中最左邊的豎線是程序的主線,即第一層控制結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾?,PAD圖逐漸向右延伸,每增加一個層次,圖形向右擴(kuò)展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù);

3、用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。PAD圖是二維數(shù)型結(jié)構(gòu)的圖形,程序從圖中最左邊上端的結(jié)點(diǎn)開始執(zhí)行,自上而下,從左到右順序執(zhí)行;

4、很容易將PDA圖轉(zhuǎn)換成高級程序語言源程序,這種轉(zhuǎn)換可由軟件工具自動完成,從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產(chǎn)率。

5、可用于表示程序邏輯,也可用于描述數(shù)據(jù)結(jié)構(gòu)

6、PAD圖的符號支持自頂向下、逐步求精方法的使用。開始時(shí)設(shè)計(jì)者可以定義一個抽象程序,隨著設(shè)計(jì)工作的深入而使用“def”符號逐步增加細(xì)節(jié),直至完成詳細(xì)設(shè)計(jì)。