1.2 算法
學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)語言的目的,是要用語言作為工具,設(shè)計(jì)出可供計(jì)算機(jī)運(yùn)行的程序。
在拿到一個(gè)需要求解的問題之后,怎樣才能編寫出程序呢?除了選定合理的數(shù)據(jù)結(jié)構(gòu)外,一般來說,十分關(guān)鍵的一步是設(shè)計(jì)算法,有了一個(gè)好的算法,就可以用任何一種計(jì)算機(jī)高級(jí)語言把算法轉(zhuǎn)換為程序(編寫程序)。
算法是指為解決某個(gè)特定問題而采取的確定且有限的步驟。一個(gè)算法應(yīng)當(dāng)具有以下五個(gè)特性:
1.有窮性。一個(gè)算法包含的操作步驟應(yīng)該是有限的。也就是說,在執(zhí)行若干個(gè)操作步驟之后,算法將結(jié)束,而且每一步都在合理的時(shí)間內(nèi)完成。
2.確定性。算法中每一條指令必須有確切的含義,不能有二義性,對(duì)于相同的輸入必能得出相同的執(zhí)行結(jié)果。
3.可行性。算法中指定的操作,都可以通過已經(jīng)驗(yàn)證過可以實(shí)現(xiàn)的基本運(yùn)算執(zhí)行有限次后實(shí)現(xiàn)。
4.有零個(gè)或多個(gè)輸入。在計(jì)算機(jī)上實(shí)現(xiàn)的算法是用來處理數(shù)據(jù)對(duì)象的,在大多數(shù)情況下這些數(shù)據(jù)對(duì)象需要通過輸入來得到。
5.有一個(gè)或多個(gè)輸出。算法的目的是為了求“解”,這些“解”只有通過輸出才能得到。
算法可以用各種描述方法來進(jìn)行描述,最常用的是偽代碼和流程圖。
偽代碼是一種近似于高級(jí)語言但又不受語法約束的一種語言描述方式。這在英語國家中使用起來更為方便。
流程圖也是描述算法的很好的工具,一般的流程圖由圖1.2中所示的幾種基本圖形組成。
由這些基本圖形中的框和流程線組成的流程圖來表示算法,形象直觀,簡單方便。但是,這種流程圖對(duì)于流程線的走向沒有任何限制,可以任意轉(zhuǎn)向,在描述復(fù)雜的算法時(shí)所占篇幅較多,費(fèi)時(shí)費(fèi)力且不易閱讀。
隨著結(jié)構(gòu)化程序設(shè)計(jì)方法的出現(xiàn),1973年美國學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式,這種流程圖表余去掉了流程線,算法的每一步都用一個(gè)矩形框來描述,把一個(gè)個(gè)矩形框按執(zhí)行的次序連接起來就是一個(gè)完整的算法。這種流程圖界兩位學(xué)者名字的第一個(gè)英文字母命名,稱為N-S流程圖。在下一節(jié)中將結(jié)合結(jié)構(gòu)化程序設(shè)計(jì)中的三種基本結(jié)構(gòu)來介紹這種流程圖的基本結(jié)構(gòu)。
編輯推薦:
2011年計(jì)算機(jī)等級(jí)考試二級(jí)C語言常見問題匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |