計(jì)算機(jī)2級C語言筆試部分分為數(shù)據(jù)結(jié)構(gòu)、軟件工程、數(shù)據(jù)庫、面向程序設(shè)計(jì)很詳細(xì)_第1頁
計(jì)算機(jī)2級C語言筆試部分分為數(shù)據(jù)結(jié)構(gòu)、軟件工程、數(shù)據(jù)庫、面向程序設(shè)計(jì)很詳細(xì)_第2頁
計(jì)算機(jī)2級C語言筆試部分分為數(shù)據(jù)結(jié)構(gòu)、軟件工程、數(shù)據(jù)庫、面向程序設(shè)計(jì)很詳細(xì)_第3頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、計(jì)算機(jī)2級C語言筆試部分。分為數(shù)據(jù)結(jié)構(gòu)、軟件工程、數(shù)據(jù)庫、面向程序設(shè)計(jì)。很詳細(xì)人生的成功不過是在緊要處有一份堅(jiān)持。 二級C語言公共基礎(chǔ)知識之?dāng)?shù)據(jù)結(jié)構(gòu)考點(diǎn)1算法的復(fù)雜度1. 算法的基本概念算法的基本特征:可行性、確定性、有窮性、輸 入(可為0)、輸出(不能為0)2. 算法復(fù)雜度包括時(shí)間復(fù)雜度和空間復(fù)雜度名稱描述時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量空間復(fù)雜度是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間考點(diǎn)2邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)1.邏輯結(jié)構(gòu)2 存儲(chǔ)結(jié)構(gòu)考點(diǎn)3線性結(jié)構(gòu)和非線性結(jié)構(gòu)根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后件關(guān)系的 復(fù)雜程度一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類型:線性結(jié)構(gòu)與非線 性結(jié)構(gòu)如果一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個(gè)

2、條件:(1)有且只有一個(gè)根結(jié)點(diǎn);(2)每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件 也最多有一個(gè)后件 則稱該數(shù)據(jù)結(jié)構(gòu)為線性結(jié)構(gòu)線性結(jié)構(gòu)又稱線性表在一個(gè)線性結(jié)構(gòu)中插入或刪除任何一個(gè)結(jié)點(diǎn)后 還應(yīng)是線性結(jié)構(gòu)棧、隊(duì)列、串等都線性結(jié)構(gòu)如果一個(gè)數(shù)據(jù)結(jié)構(gòu)不是線性結(jié)構(gòu) 則稱之為非線性結(jié)構(gòu)數(shù)組、廣義表、樹和圖等數(shù)據(jù)結(jié)構(gòu)都是非線性結(jié) 構(gòu)考點(diǎn)4棧1.棧的基本概念棧(stack )是一種特殊的線性表 是限定只在一端進(jìn)行插入與刪除的線性表 在棧中一端是封閉的既不允許進(jìn)行插入元素 也不允許刪除元素;另一端是開口的 允許插入和刪除元素通常稱插入、刪除的這一端為棧頂 另一端為棧底當(dāng)表中沒有元素時(shí)稱為空棧棧頂元素總是后被插入的元素從而也是最先被刪

3、除的元素;棧底元素總是最先 被插入的元素從而也是最后才能被刪除的元素 先進(jìn)后出或后進(jìn)先出“2 棧的順序存儲(chǔ)及其運(yùn)算棧的基本運(yùn)算有三種:入棧、退棧與讀棧頂元素(1)入棧運(yùn)算:入棧運(yùn)算是指在棧頂位置插入 一個(gè)新元素(2) 退棧運(yùn)算:退棧是指取出棧頂元素并賦給 一個(gè)指定的變量(3) 讀棧頂元素:讀棧頂元素是指將棧頂元素 賦給一個(gè)指定的變量 考點(diǎn)5隊(duì)列1 .隊(duì)列的基本概念隊(duì)列是只允許在一端進(jìn)行刪除 在另一端進(jìn)行插入的順序表 通常將允許刪除的這一端稱為隊(duì)頭 允許插入的這一端稱為隊(duì)尾當(dāng)表中沒有元素時(shí)稱為空隊(duì)列隊(duì)列的修改是依照先進(jìn)先出的原則進(jìn)行的因此隊(duì)列也稱為先進(jìn)先出的線性表 或者后進(jìn)后出的線性表例如:火車

4、進(jìn)遂道最先進(jìn)遂道的是火車頭最后是火車尾而火車出遂道的時(shí)候也是火車頭先出 最后出的是火車尾若有隊(duì)列:Q =( q1q2 qn)那么q1為隊(duì)頭元素(排頭元素)qn為隊(duì)尾元素隊(duì)列中的元素是按照q1q2 qn的順序進(jìn)入的退出隊(duì)列也只能按照這個(gè)次序依次退出 即只有在q1q2 qn-1都退隊(duì)之后 qn才能退出隊(duì)列 因最先進(jìn)入隊(duì)列的元素將最先出隊(duì) 所以隊(duì)列具有先進(jìn)先出的特性 體現(xiàn)先來先服務(wù)”的原則隊(duì)頭元素q1是最先被插入的元素 也是最先被刪除的元素隊(duì)尾元素qn是最后被插入的元素也是最后被刪除的元素 入隊(duì)運(yùn)算為往隊(duì)列隊(duì)尾插入一個(gè)數(shù)據(jù)元素 退隊(duì)運(yùn)算為從隊(duì)列的隊(duì)頭刪除一個(gè)數(shù)據(jù)元素考點(diǎn)6鏈表在鏈?zhǔn)酱鎯?chǔ)方式中要求每個(gè)

5、結(jié)點(diǎn)由兩部分組成:一部分用于存放數(shù) 據(jù)元素值稱為數(shù)據(jù)域另一部分用于存放指針稱為指針域其中指針用于指向該結(jié)點(diǎn)的前一個(gè)或后一個(gè)結(jié) 點(diǎn)(即前件或后件)鏈?zhǔn)酱鎯?chǔ)方式既可用于表示線性結(jié)構(gòu) 也可用于表示非線性結(jié)構(gòu)(1)線性鏈表線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)稱為線性鏈表在某些應(yīng)用中對線性鏈表中的每個(gè)結(jié)點(diǎn)設(shè)置兩個(gè)指針 一個(gè)稱為左指針用以指向其前件結(jié)點(diǎn);另一個(gè)稱為右指針 用以指向其后件結(jié)點(diǎn)這樣的表稱為雙向鏈表在線性鏈表中各數(shù)據(jù)元素結(jié)點(diǎn)的存儲(chǔ)空間可以是不連續(xù)的 且各數(shù)據(jù)元素的存儲(chǔ)順序與邏輯順序可以不一 致在線性鏈表中進(jìn)行插入與刪除 不需要移動(dòng)鏈表中的元素(2)帶鏈的棧 棧也是線性表 也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) 帶鏈的??梢杂脕?/p>

6、收集計(jì)算機(jī)存儲(chǔ)空間中所有 空閑的存儲(chǔ)結(jié)點(diǎn)這種帶鏈的棧稱為可利用??键c(diǎn)7二叉樹及其基本性質(zhì)1、二叉樹及其基本概念 二叉樹是一種很有用的非線性結(jié)構(gòu) 具有以下兩個(gè)特點(diǎn): 非空二叉樹只有一個(gè)根結(jié)點(diǎn); 每一個(gè)結(jié)點(diǎn)最多有兩棵子樹且分別稱為該結(jié)點(diǎn)的左子樹和右子樹在二叉樹中每一個(gè)結(jié)點(diǎn)的度最大為2即所有子樹(左子樹或右子樹)也均為二叉樹另外二叉樹中的每個(gè)結(jié)點(diǎn)的子樹被明顯地分為左子樹和右子樹在二叉樹中一個(gè)結(jié)點(diǎn)可以只有左子樹而沒有右子樹也可以只有右子樹而沒有左子樹當(dāng)一個(gè)結(jié)點(diǎn)既沒有左子樹也沒有右子樹時(shí)該結(jié)點(diǎn)即為葉子結(jié)點(diǎn)父結(jié)點(diǎn)(根)在樹結(jié)構(gòu)中每一個(gè)結(jié)點(diǎn)只有一個(gè)前件稱為父結(jié)點(diǎn)沒有前件的結(jié)點(diǎn)只有一個(gè)稱為樹的根結(jié)點(diǎn)簡稱樹的根

7、例如在圖1-1中結(jié)點(diǎn)A是樹的根結(jié)點(diǎn) 子結(jié)點(diǎn)和葉子結(jié)點(diǎn)在樹結(jié)構(gòu)中每一個(gè)結(jié)點(diǎn)可以有多個(gè)后件稱為該結(jié)點(diǎn)的子結(jié)點(diǎn)沒有后件的結(jié)點(diǎn)稱為葉子結(jié)點(diǎn)例如在圖1-1中結(jié)點(diǎn)DEF均為葉子結(jié)點(diǎn)度在樹結(jié)構(gòu)中一個(gè)結(jié)點(diǎn)所擁有的后件的個(gè)數(shù)稱為該結(jié)點(diǎn)的度所有結(jié)點(diǎn)中最大的度稱為樹的度例如在圖1-1中根結(jié)點(diǎn)A和結(jié)點(diǎn)B的度為2結(jié)點(diǎn)C的度為1葉子結(jié)點(diǎn)DEF的度為0所以該樹的度為2深度定義一棵樹的根結(jié)點(diǎn)所在的層次為1其他結(jié)點(diǎn)所在的層次等于它的父結(jié)點(diǎn)所在的層 次加1樹的最大層次稱為樹的深度例如在圖1-1中根結(jié)點(diǎn)A在第1層結(jié)點(diǎn)BC在第2層結(jié)點(diǎn)DEF在第3層該樹的深度為3子樹在樹中以某結(jié)點(diǎn)的一個(gè)子結(jié)點(diǎn)為根構(gòu)成的樹稱為該結(jié) 點(diǎn)的一棵子樹2、二叉

8、樹基本性質(zhì) 二叉樹具有以下幾個(gè)性質(zhì): 性質(zhì)1:在二叉樹的第k層上 最多有2k-1 (k 1)個(gè)結(jié)點(diǎn);性質(zhì)2:深度為m的二叉樹最多有2m-1個(gè)結(jié)點(diǎn); 性質(zhì)3:在任意一棵二叉樹中度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為 2的結(jié) 點(diǎn)多一個(gè)性質(zhì)4:具有n個(gè)結(jié)點(diǎn)的二叉樹其深度至少為Iog2n +1其中Iog2n 表示取Iog2n的整數(shù)部分3、滿二叉樹與完全二叉樹滿二叉樹是指這樣的一種二叉樹:除最后一層外 每一層上的所有結(jié)點(diǎn)都有兩個(gè)子結(jié)點(diǎn)在滿二叉樹中每一層上的結(jié)點(diǎn)數(shù)都達(dá)到最大值 即在滿二叉樹的第k層上有2k-1個(gè)結(jié)點(diǎn) 且深度為m的滿二叉樹有2m-1個(gè)結(jié)點(diǎn)完全二叉樹是指這樣的二叉樹:除最后一層外 每一層上的結(jié)點(diǎn)

9、數(shù)均達(dá)到最大值;在最后一層上 只缺少右邊的若干結(jié)點(diǎn)對于完全二叉樹來說葉子結(jié)點(diǎn)只可能在層次最大的兩層上出現(xiàn):對于任何一個(gè)結(jié)點(diǎn)若其右分支下的子孫結(jié)點(diǎn)的最大層次為 p 則其左分支下的子孫結(jié)點(diǎn)的最大層次或?yàn)閜或?yàn)閜+1完全二叉樹具有以下兩個(gè)性質(zhì):性質(zhì)5:具有n個(gè)結(jié)點(diǎn)的完全二叉樹的深度為:log2n : +1性質(zhì)6:設(shè)完全二叉樹共有n個(gè)結(jié)點(diǎn)如果從根結(jié)點(diǎn)開始按層次(每一層從左到右)用自然數(shù) 12 n給結(jié)點(diǎn)進(jìn)行編號 則對于編號為k (k=1n)的結(jié)點(diǎn)有以下結(jié)論: 若k=1則該結(jié)點(diǎn)為根結(jié)點(diǎn)它沒有父結(jié)點(diǎn);若k1則該結(jié)點(diǎn)的父結(jié)點(diǎn)編號為INT (k/2 ) 若2kw n則編號為k的結(jié)點(diǎn)的左子結(jié)點(diǎn)編號為2k;否則該

10、結(jié)點(diǎn)無左子結(jié)點(diǎn)(顯然也沒有右子結(jié)點(diǎn)) 若2k+1 n則編號為k的結(jié)點(diǎn)的右子結(jié)點(diǎn)編號為2k+1;否則 該結(jié)點(diǎn)無右子結(jié)點(diǎn)考點(diǎn)8二叉樹的遍歷 在遍歷二叉樹的過程中 一般先遍歷左子樹 再遍歷右子樹 在先左后右的原則下根據(jù)訪問根結(jié)點(diǎn)的次序二叉樹的遍歷分為三類:前序遍歷、中序遍歷和 后序遍歷(1)前序遍歷:先訪問根結(jié)點(diǎn)、然后遍歷左子 樹最后遍歷右子樹;并且在遍歷左、右子樹時(shí)仍然先訪問根結(jié)點(diǎn)然后遍歷左子樹最后遍歷右子樹ABDECF(2)中序遍歷:先遍歷左子樹、然后訪問根結(jié)占八、最后遍歷右子樹;并且在遍歷左、右子樹時(shí) 仍然先遍歷左子樹 然后訪問根結(jié)點(diǎn) 最后遍歷右子樹DBEACF(3) 后序遍歷:先遍歷左子樹、

11、然后遍歷右子 樹最后訪問根結(jié)點(diǎn);并且 在遍歷左、右子樹時(shí) 仍然先遍歷左子樹 然后遍歷右子樹 最后訪問根結(jié)點(diǎn)DBFCA考點(diǎn)9順序查找查找是指在一個(gè)給定的數(shù)據(jù)結(jié)構(gòu)中查找某個(gè)指 定的元素從線性表的第一個(gè)元素開始依次將線性表中的元素與被查找的元素相比較 若相等則表示查找成功;若線性表中所有的元素 都與被查找元素進(jìn)行了比較但都不相等則表示查找失敗例如在一維數(shù)組21462499577786中查找數(shù)據(jù)元素98首先從第1個(gè)元素21開始進(jìn)行比較 與要查找的數(shù)據(jù)不相等接著與第2個(gè)元素46進(jìn)行比較以此類推 當(dāng)進(jìn)行到與第4個(gè)元素比較時(shí) 它們相等所以查找成功 如果查找數(shù)據(jù)元素100 則整個(gè)線性表掃描完畢 仍未找到與10

12、0相等的元素 表示線性表中沒有要查找的元素在下列兩種情況下也只能采用順序查找:(1)如果線性表為無序表則不管是順序存儲(chǔ)結(jié)構(gòu)還是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) 只能用順序查找(2)即使是有序線性表 如果采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) 也只能用順序查找考點(diǎn)10二分法查找 二分法查找也稱拆半查找是一種高效的查找方法能使用二分法查找的線性表必須滿足兩個(gè)條件: 用順序存儲(chǔ)結(jié)構(gòu);線性表是有序表在本書中 為了簡化問題 而更方便討論有序是特指元素按非遞減排列 即從小到大排列但允許相鄰元素相等 下一節(jié)排序中有序的含義也是如此順序查找法每一次比較 只將查找范圍減少1 而二分法查找每比較一次 可將查找范圍減少為原來的一半 效率大大提高對于長度為n

13、的有序線性表 在最壞情況下二分法查找只需比較Iog2n次 而順序查找需要比較n次考點(diǎn)11排序冒泡排序法和快速排序法都屬于交換類排序法(1)冒泡排序法 首先 從表頭開始往后掃描線性表 逐次比較相鄰兩個(gè)元素的大小 若前面的元素大于后面的元素 則將它們互換不斷地將兩個(gè)相鄰元素中的大者往后移動(dòng) 最后最大者到了線性表的最后然后從后到前掃描剩下的線性表 逐次比較相鄰兩個(gè)元素的大小 若后面的元素小于前面的元素則將它們互換不斷地將兩個(gè)相鄰元素中的小者往前移動(dòng) 最后最小者到了線性表的最前面對剩下的線性表重復(fù)上述過程直到剩下的線性表變空為止此時(shí)已經(jīng)排好序在最壞的情況下冒泡排序需要比較次數(shù)為n (n 1) 12(2

14、) 快速排序法任取待排序序列中的某個(gè)元素作為基準(zhǔn)(一般取 第一個(gè)元素)通過一趟排序?qū)⒋旁胤譃樽笥覂蓚€(gè)子序列左子序列元素的排序碼均小于或等于基準(zhǔn)元素的排序碼右子序列的排序碼則大于基準(zhǔn)元素的排序碼然后分別對兩個(gè)子序列繼續(xù)進(jìn)行排序直至整個(gè)序列有序二級C語言公共基礎(chǔ)知識之 軟件工程考點(diǎn)1軟件工程基本概念1.軟件定義與軟件特點(diǎn)軟件指的是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另 一部分包括程序、數(shù)據(jù)和相關(guān)文檔的完整集合程序是軟件開發(fā)人員根據(jù)用戶需求開發(fā)的、用程 序設(shè)計(jì)語言描述的、適合計(jì)算機(jī)執(zhí)行的指令序列數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu) 文檔是與程序的開發(fā)、維護(hù)和使用有關(guān)的圖文資 料可見軟件由兩部分組成:(1

15、) 機(jī)器可執(zhí)行的程序和數(shù)據(jù);(2) 機(jī)器不可執(zhí)行的與軟件開發(fā)、運(yùn)行、維護(hù)、使用等有關(guān)的文檔根據(jù)應(yīng)用目標(biāo)的不同軟件可分應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工 具軟件)名稱描述應(yīng)用軟件為解決特定領(lǐng)域的應(yīng)用而開發(fā)的軟件系統(tǒng)軟件計(jì)算機(jī)管理自身資源提高計(jì)算機(jī)使用效率并為計(jì)算機(jī)用戶提供各種 服務(wù)的軟件支撐軟件(或工具軟件) 支撐軟件是介于兩者之間 協(xié)助用戶開發(fā)軟件的工具性軟件2 軟件工程為了擺脫軟件危機(jī)提出了軟件工程的概念軟件工程學(xué)是研究軟件開發(fā)和維護(hù)的普遍原理與技術(shù)的一門工程學(xué)科所謂軟件工程是指采用工程的概念、原理、技術(shù)和方法指導(dǎo)軟件的開發(fā)與維護(hù)軟件工程學(xué)的主要研究對象包括軟件開發(fā)與維 護(hù)的技術(shù)、方法、工具

16、和管理等方面軟件工程包括3個(gè)要素:方法、工具和過程名稱描述方法方法是完成軟件工程項(xiàng)目的技術(shù)手段工具工具支持軟件的開發(fā)、管理、文檔生成過程過程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制、管理 考點(diǎn)2軟件生命周期1. 軟件生命周期概念軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退 役的過程稱為軟件生命周期一般包括可行性分析研究與需求分析、設(shè)計(jì)、實(shí) 現(xiàn)、測試、交付使用以及維護(hù)等活動(dòng)如圖3- 1所示軟件生命周期分為3個(gè)時(shí)期共8個(gè)階段(1) 軟件定義期:包括問題定義、可行性研究 和需求分析3個(gè)階段;(2) 軟件開發(fā)期:包括概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)和測試4個(gè)階段;(3) 運(yùn)行維護(hù)期:即運(yùn)行維護(hù)階段軟件生命周期各個(gè)階段的活動(dòng)

17、可以有重復(fù)執(zhí)行時(shí)也可以有迭代如圖3-1所示2軟件生命周期各階段的主要任務(wù)任務(wù)描述問題定義確定要求解決的問題是什么可行性研究與計(jì)劃制定決定該問題是否存在一個(gè)可行的解決辦法指定完成開發(fā)任務(wù)的實(shí)施計(jì)劃需求分析對待開發(fā)軟件提出需求進(jìn)行分析并給出詳細(xì)定 義編寫軟件規(guī)格說明書及初步的用戶手冊提交評審軟件設(shè)計(jì)通常又分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及 處理流程這階段提交評審的文檔有概要設(shè)計(jì)說明書、詳細(xì) 設(shè)計(jì)說明書和測試計(jì)劃初稿軟件實(shí)現(xiàn)在軟件設(shè)計(jì)的基礎(chǔ)上編寫程序這階段完成的文檔有用戶手冊、操作手冊等面向 用戶的文檔以及為下一步作準(zhǔn)備而編寫的單元測試計(jì)劃 軟件測試在設(shè)計(jì)測試用

18、例的基礎(chǔ)上 檢驗(yàn)軟件的各個(gè)組成部分編寫測試分析報(bào)告運(yùn)行維護(hù)將已交付的軟件投入運(yùn)行同時(shí)不斷的維護(hù)進(jìn)行必要而且可行的擴(kuò)充和刪改 考點(diǎn)3軟件設(shè)計(jì)基本概念從技術(shù)觀點(diǎn)上看軟件設(shè)計(jì)包括軟件結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè) 計(jì)、過程設(shè)計(jì)(1)結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)各主要部件之間的 關(guān)系;(2)數(shù)據(jù)設(shè)計(jì)將分析時(shí)創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù) 結(jié)構(gòu)的定義;(3)接口設(shè)計(jì)是描述軟件內(nèi)部、軟件和協(xié)作系 統(tǒng)之間以及軟件與人之間如何通信;(4)過程設(shè)計(jì)則是把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換為軟件 的過程性描述 從工程管理角度來看軟件設(shè)計(jì)分兩步完成:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)(1)概要設(shè)計(jì)將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)、 確定系統(tǒng)級接口、全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式;

19、(2)詳細(xì)設(shè)計(jì)確立每個(gè)模塊的實(shí)現(xiàn)算法和局部 數(shù)據(jù)結(jié)構(gòu)用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)考點(diǎn)4軟件設(shè)計(jì)的基本原理1、軟件設(shè)計(jì)中應(yīng)該遵循的基本原理和與軟件設(shè) 計(jì)有關(guān)的概念(1)抽象:軟件設(shè)計(jì)中考慮模塊化解決方案時(shí) 可以定出多個(gè)抽象級別抽象的層次從概要設(shè)計(jì)到詳細(xì)設(shè)計(jì)逐步降低(2)模塊化:模塊是指把一個(gè)待開發(fā)的軟件分 解成若干小的簡單的部分模塊化是指解決一個(gè)復(fù)雜問題時(shí)自頂向下逐層 把軟件系統(tǒng)劃分成若干模塊的過程(3)信息隱蔽:信息隱蔽是指在一個(gè)模塊內(nèi)包 含的信息(過程或數(shù)據(jù))對于不需要這些信息的其他模塊來說是不能訪 問的(4) 模塊獨(dú)立性:模塊獨(dú)立性是指每個(gè)模塊只 完成系統(tǒng)要求的獨(dú)立的子功能并且與其他

20、模塊的聯(lián)系最少且接口簡單模塊的獨(dú)立程度是評價(jià)設(shè)計(jì)好壞的重要度量標(biāo) 準(zhǔn)衡量軟件的模塊獨(dú)立性使用耦合性和內(nèi)聚性兩 個(gè)定性的度量標(biāo)準(zhǔn)內(nèi)聚性是信息隱蔽和局部化概念的自然擴(kuò)展 一個(gè)模塊的內(nèi)聚性越強(qiáng)則該模塊的模塊獨(dú)立性 越強(qiáng)一個(gè)模塊與其他模塊的耦合性越強(qiáng)則該模塊的 模塊獨(dú)立性越弱2、衡量軟件模塊獨(dú)立性使用耦合性和內(nèi)聚性兩 個(gè)定性的度量標(biāo)準(zhǔn)內(nèi)聚性是度量一個(gè)模塊功能強(qiáng)度的一個(gè)相對指 標(biāo)內(nèi)聚是從功能角度來衡量模塊的聯(lián)系它描述的是模塊內(nèi)的功能聯(lián)系內(nèi)聚有如下種類它們之間的內(nèi)聚度由弱到強(qiáng)排列:偶然內(nèi)聚、邏 輯內(nèi)聚、時(shí)間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序 內(nèi)聚、功能內(nèi)聚耦合性是模塊之間互相連接的緊密程度的度量 耦合性取決于

21、各個(gè)模塊之間接口的復(fù)雜度、調(diào)用 方式以及哪些信息通過接口耦合可以分為下列幾種它們之間的耦合度由高到低排列:內(nèi)容耦合、公 共耦合、外部耦合、控制耦合、標(biāo)記耦合、數(shù)據(jù) 耦合、非直接耦合在程序結(jié)構(gòu)中各模塊的內(nèi)聚性越強(qiáng)則耦合性越弱一般較優(yōu)秀的軟件設(shè)計(jì)應(yīng)盡量做到高內(nèi)聚低耦合即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚 性有利于提高模塊的獨(dú)立性考點(diǎn)5結(jié)構(gòu)化分析方法1、結(jié)構(gòu)化分析方法的定義結(jié)構(gòu)化分析方法就是使用數(shù)據(jù)流圖(DFD、數(shù)據(jù) 字典(DD、結(jié)構(gòu)化英語、判定表和判定樹的工 具來建立一種新的、稱為結(jié)構(gòu)化規(guī)格說明的目標(biāo)文 檔結(jié)構(gòu)化分析方法的實(shí)質(zhì)是著眼于數(shù)據(jù)流、自頂向 下、對系統(tǒng)的功能進(jìn)行逐層分解、以數(shù)據(jù)流圖和

22、數(shù)據(jù)字典為主要工具建立系統(tǒng)的邏輯模型2、結(jié)構(gòu)化分析方法常用工具(1、數(shù)據(jù)流圖(DFD數(shù)據(jù)流圖是系統(tǒng)邏輯模型的圖形表示 即使不是專業(yè)的計(jì)算機(jī)技術(shù)人員也容易理解它 因此它是分析員與用戶之間極好的通信工具(2)數(shù)據(jù)字典(DD數(shù)據(jù)字典是對數(shù)據(jù)流圖中所有元素的定義的集是結(jié)構(gòu)化分析的核心 數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型 沒有數(shù)據(jù)字典數(shù)據(jù)流圖就不嚴(yán)格若沒有數(shù)據(jù)流圖數(shù)據(jù)字典也難于發(fā)揮作用數(shù)據(jù)字典中有4種類型的條目:數(shù)據(jù)流、數(shù)據(jù)項(xiàng)、 數(shù)據(jù)存儲(chǔ)和加工(3)判定表有些加工的邏輯用語言形式不容易表達(dá)清楚 而用表的形式則一目了然如果一個(gè)加工邏輯有多個(gè)條件、多個(gè)操作 并且在不同的條件組合下執(zhí)行不同的操作那么可以

23、使用判定表來描述(4)判定樹判定樹和判定表沒有本質(zhì)的區(qū)別可以用判定表表示的加工邏輯都能用判定樹表 示3、軟件需求規(guī)格說明書軟件需求規(guī)格說明書是需求分析階段的最后成 果是軟件開發(fā)的重要文檔之一它的特點(diǎn)是具有正確性、無歧義性、完整性、可 驗(yàn)證性、一致性、可理解性、可修改性和可追蹤 性考點(diǎn)6軟件測試的目的和準(zhǔn)則1 軟件測試的目的(1) 測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序 的過程(2) 好的測試用例(test case )能發(fā)現(xiàn)迄今為 止尚未發(fā)現(xiàn)的錯(cuò)誤(3) 一次成功的測試是能發(fā)現(xiàn)至今為止尚未發(fā) 現(xiàn)的錯(cuò)誤測試的目的是發(fā)現(xiàn)軟件中的錯(cuò)誤 但是暴露錯(cuò)誤并不是軟件測試的最終目的測試的根本目的是盡可能多地發(fā)現(xiàn)

24、并排除軟件 中隱藏的錯(cuò)誤2 軟件測試的準(zhǔn)則 根據(jù)上述軟件測試的目的 為了能設(shè)計(jì)出有效的測試方案 以及好的測試用例 軟件測試人員必須深入理解 并正確運(yùn)用以下軟件測試的基本準(zhǔn)則(1) 所有測試都應(yīng)追溯到用戶需求(2) 在測試之前制定測試計(jì)劃并嚴(yán)格執(zhí)行(3) 充分注意測試中的群集現(xiàn)象(4) 避免由程序的編寫者測試自己的程序(5) 不可能進(jìn)行窮舉測試(6) 妥善保存測試計(jì)劃、測試用例、出錯(cuò)統(tǒng)計(jì) 和最終分析報(bào)告為維護(hù)提供方便 考點(diǎn)7軟件測試的方法和實(shí)施【考點(diǎn)精講】1、軟件測試方法 軟件測試具有多種方法 依據(jù)軟件是否需要被執(zhí)行 可以分為靜態(tài)測試和動(dòng)態(tài)測試方法 如果依照功能劃分可以分為白盒測試和黑盒測試方法

25、1 靜態(tài)測試和動(dòng)態(tài)測試(1) 靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、 代碼質(zhì)量度量等其中代碼檢查分為代碼審查、代碼走查、桌面檢 查、靜態(tài)分析等具體形式(2) 動(dòng)態(tài)測試靜態(tài)測試不實(shí)際運(yùn)行軟件 主要通過人工進(jìn)行分析 動(dòng)態(tài)測試就是通常所說的上機(jī)測試 是通過運(yùn)行軟件來檢驗(yàn)軟件中的動(dòng)態(tài)行為和運(yùn) 行結(jié)果的正確性 動(dòng)態(tài)測試的關(guān)鍵是使用設(shè)計(jì)高效、合理的測試用 例測試用例就是為測試設(shè)計(jì)的數(shù)據(jù)由測試輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果兩部份組成 測試用例的設(shè)計(jì)方法一般分為兩類:黑盒測試方 法和白盒測試方法2.黑盒測試和白盒測試(1) 白盒測試白盒測試是把程序看成裝在一只透明的白盒子 里測試者完全了解程序的結(jié)構(gòu)和處理過程 它根據(jù)

26、程序的內(nèi)部邏輯來設(shè)計(jì)測試用例 檢查程序中的邏輯通路是否都按預(yù)定的要求正 確地工作(2) 黑盒測試黑盒測試是把程序看成一只黑盒子測試者完全不了解或不考慮程序的結(jié)構(gòu)和處理過程它根據(jù)規(guī)格說明書的功能來設(shè)計(jì)測試用例 檢查程序的功能是否符合規(guī)格說明的要求2、軟件測試的實(shí)施軟件測試過程分4個(gè)步驟即單元測試、集成測試、驗(yàn)收測試和系統(tǒng)測試單元測試是對軟件設(shè)計(jì)的最小單位-模塊(程序 單元)進(jìn)行正確性檢驗(yàn)測試單元測試的技術(shù)可以采用靜態(tài)分析和動(dòng)態(tài)測試集成測試是測試和組裝軟件的過程主要目的是發(fā)現(xiàn)與接口有關(guān)的錯(cuò)誤主要依據(jù)是概要設(shè)計(jì)說明書集成測試所設(shè)計(jì)的內(nèi)容包括:軟件單元的接口測試、全局?jǐn)?shù)據(jù)結(jié)構(gòu)測試、邊界條件和非法輸入的

27、 測試等集成測試時(shí)將模塊組裝成程序通常采用兩種方式:非增量方式組裝和增量方式 組裝確認(rèn)測試的任務(wù)是驗(yàn)證軟件的功能和性能以及其他特性是否滿足了需求規(guī)格說明中確定 的各種需求包括軟件配置是否完全、正確確認(rèn)測試的實(shí)施首先運(yùn)用黑盒測試方法對軟件進(jìn)行有效性測試即驗(yàn)證被測軟件是否滿足需求規(guī)格說明確認(rèn)的 標(biāo)準(zhǔn)系統(tǒng)測試是通過測試確認(rèn)的軟件作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元素與計(jì)算機(jī)硬件、外設(shè)、支撐軟件、數(shù)據(jù)和人員等 其他系統(tǒng)元素組合在一起在實(shí)際運(yùn)行(使用)環(huán)境下對計(jì)算機(jī)系統(tǒng)進(jìn)行一 系列的集成測試和確認(rèn)測試系統(tǒng)測試的具體實(shí)施一般包括:功能測試、性能 測試、操作測試、配置測試、外部接口測試、安 全性測試等考點(diǎn)8程序的

28、調(diào)試在對程序進(jìn)行了成功的測試之后將進(jìn)入程序調(diào)試(通常稱Debug即排錯(cuò))程序的調(diào)試任務(wù)是診斷和改正程序中的錯(cuò)誤 調(diào)試主要在開發(fā)階段進(jìn)行程序調(diào)試活動(dòng)由兩部分組成是根據(jù)錯(cuò)誤的跡象確定程序中錯(cuò)誤的確切性質(zhì)、原因和位置;二是對程序進(jìn)行修改 排除這個(gè)錯(cuò)誤程序調(diào)試的基本步驟:(1)錯(cuò)誤定位從錯(cuò)誤的外部表現(xiàn)形式入手研究有關(guān)部分的程序確定程序中出錯(cuò)位置找出錯(cuò)誤的內(nèi)在原因;(2)修改設(shè)計(jì)和代碼以排除錯(cuò)誤;(3)進(jìn)行回歸測試防止引進(jìn)新的錯(cuò)誤軟件調(diào)試可分為靜態(tài)調(diào)試和動(dòng)態(tài)調(diào)試靜態(tài)調(diào)試主要是指通過人的思維來分析源程序代碼和排錯(cuò)是主要的設(shè)計(jì)手段而動(dòng)態(tài)調(diào)試是輔助靜態(tài)調(diào)試的主要的調(diào)試方法有:(1)強(qiáng)行排錯(cuò)法;(2)回溯 法;

29、(3)原因排除法二級C語言公共基礎(chǔ)知識之 面向程序設(shè)計(jì)考點(diǎn)1程序設(shè)計(jì)的方法與風(fēng)格養(yǎng)成良好的程序設(shè)計(jì)風(fēng)格主要考慮下述因素:1.源程序文檔化(1) 符號名的命名:符號名的命名應(yīng)具有一定的實(shí)際含義以便于對程序功能的理解(2) 程序注釋:在源程序中添加正確的注釋可 幫助人們理解程序程序注釋可分為序言性注釋和功能性注釋(3) 視覺組織:通過在程序中添加一些空格、 空行和縮進(jìn)等使人們在視覺上對程序的結(jié)構(gòu)一目了然2 數(shù)據(jù)說明的方法為使程序中的數(shù)據(jù)說明易于理解和維護(hù) 可采用下列數(shù)據(jù)說明的風(fēng)格見表2-1數(shù)據(jù)說明風(fēng)格詳細(xì)說明次序應(yīng)規(guī)范化使數(shù)據(jù)說明次序固定使數(shù)據(jù)的屬性容易查找也有利于測試、排錯(cuò)和維護(hù)變量安排有序化當(dāng)

30、多個(gè)變量出現(xiàn)在同一個(gè)說明語句中時(shí) 變量名應(yīng)按字母順序排序以便于查找使用注釋在定義一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)時(shí)應(yīng)通過注解來說明該數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)3 語句的結(jié)構(gòu)程序應(yīng)該簡單易懂語句構(gòu)造應(yīng)該簡單直接 4.輸入和輸出考點(diǎn)2結(jié)構(gòu)化程序設(shè)計(jì)1構(gòu)化程序設(shè)計(jì)的原則結(jié)構(gòu)化程序設(shè)計(jì)方法引入了工程思想和結(jié)構(gòu)化 思想使大型軟件的開發(fā)和編程得到了極大的改善 結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則為:自頂向下、 逐步求精、模塊化和限制使用 goto語句自頂向上:先考慮整體再考慮細(xì)節(jié);先考慮全局目標(biāo)再考慮局部目標(biāo)逐步求精:對復(fù)雜問題應(yīng)設(shè)計(jì)一些子目標(biāo)作為過 渡逐步細(xì)化模塊化:把程序要解決的總目標(biāo)分解為分目標(biāo) 再進(jìn)一步分解為具體的小目標(biāo)把每個(gè)小目標(biāo)稱為一個(gè)模塊限制使用goto語句:在程序開發(fā)過程中要限制使用goto語句 2 .結(jié)構(gòu)化程序的基本結(jié)構(gòu)結(jié)構(gòu)化程序的基本結(jié)構(gòu)有三種類型:順序結(jié)構(gòu)、 選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)順序結(jié)構(gòu):是最基本、最普通的結(jié)構(gòu)形式按照程序中的語句行的先后順序逐條執(zhí)行選擇結(jié)構(gòu):又稱為分支結(jié)構(gòu)它包括簡單選擇和多分支選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu):根據(jù)給定的條件判斷是否要重復(fù)執(zhí)行某一相同的或類似的程序 段循環(huán)結(jié)構(gòu)對應(yīng)兩類循環(huán)語句:先判斷后執(zhí)行的循 環(huán)體稱為當(dāng)型循環(huán)結(jié)構(gòu);先執(zhí)行循環(huán)體后判斷的 稱為直到型循環(huán)結(jié)構(gòu) 考點(diǎn)3面向?qū)ο蠓椒?面向?qū)ο蠓椒êw對象及對象屬性與方法、類、 繼承、多態(tài)性幾個(gè)基本要素(1) 對象通常

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論