C语言描述算法的常用方法是,认识C语言-算法描述的5种方法
在 C語(yǔ)言中,有 5 種常用的算法描述方法:自然語(yǔ)言、流程圖、N-S 圖、偽代碼和程序設(shè)計(jì)語(yǔ)言。
1. 自然語(yǔ)言描述算法
上一講《算法是什么》中給出的解決問題的算法 a、算法 b 和算法 c 都是用自然語(yǔ)言來表示算法的(見上一節(jié)的圖2)。自然語(yǔ)言就是我們?nèi)粘J褂玫母鞣N語(yǔ)言,可以是漢語(yǔ)、英語(yǔ)、日語(yǔ)等。
用自然語(yǔ)言描述算法的優(yōu)點(diǎn)是通俗易懂,當(dāng)算法中的操作步驟都是順序執(zhí)行時(shí)比較直觀、容易理解。缺點(diǎn)是如果算法中包含了判斷結(jié)構(gòu)和循環(huán)結(jié)構(gòu),并且操作步驟較多時(shí),就顯得不那么直觀清晰了。
2. 用流程圖描述算法
用流程圖描述算法就可以解決上述缺點(diǎn)。所謂流程圖(Flow Chart),是指用規(guī)定的圖形符號(hào)來描述算法(見表 1)。
表 1:流程圖常用的圖形符號(hào)
圖形符號(hào)
名稱
含義
起止框
程序的開始或結(jié)束
處理框
數(shù)據(jù)的各種處理和運(yùn)算操作
輸入/輸出框
數(shù)據(jù)的輸入和輸出
判斷框
根據(jù)條件的不同,選擇不同的操作
連接點(diǎn)
轉(zhuǎn)向流程圖的他處或從他處轉(zhuǎn)入
流向線
程序的執(zhí)行方向
結(jié)構(gòu)化程序設(shè)計(jì)方法中規(guī)定的三種基本程序流程結(jié)構(gòu)(順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu))都可以用流程圖明晰地表達(dá)出來(見圖 1)。
圖 1:用流程圖表示的順序結(jié)構(gòu)、選擇(條件分支)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種流程
3. 用?N-S 圖描述算法
雖然用流程圖描述的算法條理清晰、通俗易懂,但是在描述大型復(fù)雜算法時(shí),流程圖的流向線較多,影響了對(duì)算法的閱讀和理解。因此有兩位美國(guó)學(xué)者提出了一種完全去掉流程方向線的圖形描述方法,稱為 N-S 圖(兩人名字的首字母組合)。
N-S 圖使用矩形框來表達(dá)各種處理步驟和三種基本結(jié)構(gòu)(見圖 2),全部算法都寫在一個(gè)矩形框中。
圖 2:用 N-S 圖表示的順序結(jié)構(gòu)、選擇(條件分支)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種流程
圖 3 展示了分別用自然語(yǔ)言、流程圖和 N-S 圖解決同一問題的算法描述。
圖 3:分別用自然語(yǔ)言、流程圖和 N-S 圖描述的算法
4. 用偽代碼描述算法
偽代碼是用在更簡(jiǎn)潔的自然語(yǔ)言算法描述中,用程序設(shè)計(jì)語(yǔ)言的流程控制結(jié)構(gòu)來表示處理步驟的執(zhí)行流程和方式,用自然語(yǔ)言和各種符號(hào)來表示所進(jìn)行的各種處理及所涉及的數(shù)據(jù)(見圖 4)。它是介于程序代碼和自然語(yǔ)言之間的一種算法描述方法。這樣描述的算法書寫比較緊湊、自由,也比較好理解(尤其在表達(dá)選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)時(shí)),同時(shí)也更有利于算法的編程實(shí)現(xiàn)(轉(zhuǎn)化為程序)。
圖 4:常見的三種流程結(jié)構(gòu)的偽代碼
5. 用程序設(shè)計(jì)語(yǔ)言來描述算法
算法最終都要通過程序設(shè)計(jì)語(yǔ)言描述出來(編程實(shí)現(xiàn)),并在計(jì)算機(jī)上執(zhí)行。程序設(shè)計(jì)語(yǔ)言也是算法的最終描述形式(見圖 5)。無論用何種方法描述算法,都是為了將其更方便的轉(zhuǎn)化為計(jì)算機(jī)程序。
圖 5:用偽代碼和程序設(shè)計(jì)語(yǔ)言(C語(yǔ)言)描述的算法
#include
int main(){
int S=0;
int i=0;
while(i<100)
{
i=i+1;
S=S+i;
}
printf("1+2+3+…+100=%d",S);
system("pause");
}
總結(jié)
以上是生活随笔為你收集整理的C语言描述算法的常用方法是,认识C语言-算法描述的5种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fix indent命令实现纳米摩擦及摩
- 下一篇: matlab imresize算法详解,