軟考程序員輔導(dǎo):程序設(shè)計(jì)基礎(chǔ)知識
一個(gè)簡單的程序設(shè)計(jì)一般包含以下四個(gè)步驟:
(1) 分析問題,建立數(shù)學(xué)模型。
(2) 確定數(shù)據(jù)結(jié)構(gòu)和算法。
解決問題確定的方法和有限的步驟稱作為算法。通常計(jì)算機(jī)算法分為兩大類:數(shù)值運(yùn)算算法和非數(shù)值運(yùn)算算法。任何簡單或復(fù)雜的算法都是由基本功能操作和控制結(jié)構(gòu)這兩個(gè)要素組成。
計(jì)算機(jī)的基本功能操作包括以下四個(gè)方面:
(1) 邏輯運(yùn)算:與、或、非;
(2) 算術(shù)運(yùn)算:加、減、乘、除;
(3) 數(shù)據(jù)比較:大于、小于、等于、不等于、大于等于、小于等于;
(4) 數(shù)據(jù)傳送:輸入、輸出、賦值。
算法的基本控制結(jié)構(gòu)通常包括順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
算法是對程序控制結(jié)構(gòu)的描述,而數(shù)據(jù)結(jié)構(gòu)是對程序中數(shù)據(jù)的描述。
在計(jì)算機(jī)的高級語言中,數(shù)據(jù)結(jié)構(gòu)是通過數(shù)據(jù)類型表現(xiàn)的
算法是一個(gè)有窮規(guī)則的集合,這些規(guī)則確定了解決某類問題的一個(gè)運(yùn)算序列。對于該類問題的任何初始輸入值,它都能機(jī)械地一步一步地執(zhí)行計(jì)算,經(jīng)過有限步驟后終止計(jì)算并產(chǎn)生輸出結(jié)果。歸納起來,算法具有以下基本特征:
(1) 有窮性:一個(gè)算法必須在執(zhí)行有限個(gè)操作步驟后終止;
(2) 確定性:算法中每一步的含義必須是確切的,不可出現(xiàn)任何二義性;
(3) 有效性:算法中的每一步操作都應(yīng)該能有效執(zhí)行,一個(gè)不可執(zhí)行的操作是無效的。例如,一個(gè)數(shù)被0除的操作就是無效的,應(yīng)當(dāng)避免這種操作。
(4) 有零個(gè)或多個(gè)輸入:這里的輸入是指在算法開始之前所需要的初始數(shù)據(jù)。這些輸入的多少取決于特定的問題。有些非凡算法也可以沒有輸入。
(5) 有一個(gè)或多個(gè)輸出:所謂輸出是指與輸入有某種特定關(guān)系的量,在一個(gè)完整的算法中至少會有一個(gè)輸出。
算法可以用任何形式的語言和符號來描述,通常有自然語言、程序語言、流程圖、N-S圖、PAD圖、偽代碼等。所有的程序是直接用程序設(shè)計(jì)語言表示算法。流程圖、N-S圖和PAD圖是表示算法的圖形工具,其中,流程圖是最早提出的用圖形表示算法的工具,所以也稱為傳統(tǒng)流程圖。它具有直觀性強(qiáng)、便于閱讀等特點(diǎn),具有程序無法取代的作用。N-S圖和PAD圖符合結(jié)構(gòu)化程序設(shè)計(jì)要求,是軟件工程中強(qiáng)調(diào)使用的圖形工具。
(3) 編制程序。
4) 調(diào)試程序。
語言、程序和程序設(shè)計(jì);算法、算法設(shè)計(jì)和算法的表示;程序結(jié)構(gòu)、結(jié)構(gòu)化程序和程序風(fēng)格。
語言是交流的工具,程序是指令的集合,而程序設(shè)計(jì)就是用計(jì)算機(jī)語言對所要解決的問題進(jìn)行完整而準(zhǔn)確的描述過程。一個(gè)完整的程序應(yīng)該涉及到以下四個(gè)方面的問題:
數(shù)據(jù)結(jié)構(gòu)、算法、編程語言、程序設(shè)計(jì)方法
程序設(shè)計(jì)過程的五個(gè)步驟是:①分析問題,建立數(shù)學(xué)模型;②確定數(shù)據(jù)結(jié)構(gòu)和算法;③編制程序;④測試程序。其中第①、②步就是確定解決問題的方案;第③步是用程序語言把這個(gè)解決方案嚴(yán)格的描述出來;第④步是在計(jì)算機(jī)上測試這個(gè)程序。在這里,工作過程的第①、②步與其他領(lǐng)域里解決問題的方法相類似,只是考慮問題的基礎(chǔ)不同、出發(fā)點(diǎn)不同。在程序設(shè)計(jì)領(lǐng)域里,我們需要從計(jì)算的觀點(diǎn)、程序的觀點(diǎn)出發(fā),由此引出了數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計(jì)以及算法的表示等新問題。這是本章的重點(diǎn),也是程序設(shè)計(jì)的基礎(chǔ)。第③、④步是程序設(shè)計(jì)工作的非凡問題。由于程序設(shè)計(jì)具有嚴(yán)格規(guī)定的組成結(jié)構(gòu),各種結(jié)構(gòu)有明確定義的功能和形式,要把問題解決方案轉(zhuǎn)變?yōu)榉线@些結(jié)構(gòu)的形式,這也不是輕而易舉的,需要把握相關(guān)的技術(shù)和方法。由此引出了程序的三種基本結(jié)構(gòu)、流程圖、N-S圖和結(jié)構(gòu)化程序設(shè)計(jì)等方法和技術(shù)。這些都是程序設(shè)計(jì)的基本知識,每一個(gè)程序設(shè)計(jì)工作者都必須把握。
會用一些常用算法(例如迭代法、枚舉法、遞歸法等)解決實(shí)際問題,對于初學(xué)者來說,是至關(guān)重要的。許多初學(xué)者往往是把要解決的問題首先和程序設(shè)計(jì)語言中的語句聯(lián)系在一起,影響了程序設(shè)計(jì)質(zhì)量。設(shè)計(jì)算法和編寫程序要分開考慮,當(dāng)你還沒有學(xué)習(xí)程序語言時(shí),就學(xué)會針對一些簡單問題設(shè)計(jì)算法,這是學(xué)習(xí)程序設(shè)計(jì)入門的好方法。
程序的結(jié)構(gòu)化技術(shù)是程序設(shè)計(jì)的基本技術(shù),它使得程序在邏輯上層次分明、結(jié)構(gòu)清楚、易讀、易維護(hù),從而提高程序質(zhì)量和開發(fā)效率。采用結(jié)構(gòu)化程序設(shè)計(jì)方法,并且用流程圖表示算法是必須的。將算法轉(zhuǎn)換成程序代碼,并注重程序風(fēng)格,這都是編寫代碼時(shí)要注重的問題。