2012軟考程序員輔導(dǎo):程序設(shè)計基礎(chǔ)知識

字號:

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