軟體技術複習

2022-11-19 19:09:04 字數 3830 閱讀 9628

1. 資料結構——資料結構就是資料的組織形式,也可看成是包含資料結構的資料表,說明資料之間存在著一定的相互關係或約束。

2. 邏輯結構——我們把只表現元素之間邏輯關係,而不涉及它們在計算機中的表示,只是理論的、反映在紙面上的東西,這種抽象的資料結構稱為邏輯結構。

3. 說明對程式進行評價時,「時間」與「空間」之間的關係。

答:時間性和空間性是程式的效率問題。

時間效率決定於:源程式轉換為目標程式的時間和目標程式執行的時間。時間效率與編譯質量有關,與演算法的簡化程度有關,還與使用者對語言的熟練程度有關,其中,演算法的效率起主要作用。

空間效率一般指程式花費的記憶體空間的問題。

對於同等複雜程度的程式:一般時間效率越高的程式,占用的記憶體就越大,空間效率就越低;一般時間效率越低的程式,占用的記憶體就越小,空間效率就越高。兩者具有一定的矛盾性。

但是隨著記憶體容量的不斷增大,往往會犧牲空間性來提高時間性。

4. 敘述軟體生命週期的不同階段及各階段的主要工作內容。

答:在軟體工程中,把從軟體的計畫開始,經歷問題的說明(定義),需求分析,設計**,測試與維護,直到軟體報廢為止的整個期間,稱為軟體的生命週期。在軟體生命週期中,除了最後的執行與維護屬於執行期,其它都稱為開發期。

1) 問題說明:對研究的問題進行完整而且適當的說明。

2) 需求分析:根據問題說明,確定軟體必須具有的功能。不是具體解決問題,而是明確必須「做什麼」。

3) 系統設計:將反映使用者要求的邏輯模型轉換為乙個具體的設計方案,使用偽碼來描述演算法。

4) 編寫程式:將偽碼轉換為高階語言的形式。

5) 測試工作:檢查程式和系統的其他部分是否滿足設計要求。

6) 執行與維護:將驗收後的軟體交付使用者使用,通過實際執行環境的檢驗,對不適應的部分進行修改和擴充。

5. 拓撲排序中使用了那些資料結構——共使用了陣列,鍊錶,圖和堆疊四種資料結構。

6. 論述並舉例說明軟體工程中的測試與除錯之間的相同點與不同點?

1)軟體除錯是編碼過程中校正**的過程

2)軟體測試是軟體工程中乙個評價軟體的過程

3)相同點在於試圖考證程式的正確與否

4)不同點在於組織方式,實施方法以及結果處理等幾個方面

組織方式:除錯工作由程式設計師完成,測試需要獨立的小組

實施方法:除錯基於**級,測試可以是白盒子也可以是黑盒子

結果處理:除錯中發現的錯誤要改正,測試中只記錄測試結果

7. 闡述圖與二叉樹的相同點和不同點,在此基礎上,闡述二叉樹的前序遍歷演算法與圖的深度優先遍歷演算法的相同點和不同點?

1)圖與二叉樹都是非線性結構

2)圖與二叉樹之間的不同點是:二叉樹中不同點的後繼集合不相交,而圖則不然

3)遍歷演算法中的相同點:訪問當前結點,然後訪問該結點的後繼結點(鄰結點)

4)遍歷演算法中的不同點:對於圖的訪問,訪問結點時需要記錄已訪問標誌,訪問結點的鄰結點時需要判斷是否已訪問;對於二叉樹而言,訪問鄰結點時,不需要記錄與判斷。

8. 評價程式的方法:

正確性:程式實現的功能是否符合任務要求,在不同的環境下的魯棒性。

驗證方法:列舉法,歸納法,抽象法,證明

時空性:時間越少,空間越小越好

時間和空間的定義

時空的矛盾

解決時間的關鍵是演算法,解決空間的關鍵是資料結構

發展趨勢

易讀性-自己讀,別人讀,結構清晰,易讀易理解,人機介面好,注釋語句

通用性好

可靠性,可移植性-傳統的程式

方法上:抽象思維,模組化

9. 軟體設計中,需求獲取所用方法:

快速原型法:1)快速分析:2)構造原型;3)執行和評價原型;4)修正和改進;5)判定原型是否完成;6)判斷原型細節是否說明;7)原型細節的說明;8)判定原型效果;9)整理原型和提供文件。

10. 求二叉樹的葉節點的個數:

algorithm countleaf( tree *t, int count )

}11. 求二叉樹深度的演算法:

algorithm depth( tree *t )

12. 用兩個棧模擬乙個佇列:

algorithm 用兩個棧模擬乙個佇列

兩個堆疊模擬乙個佇列:

堆疊a和b,a用作入隊,b出隊

(1)判隊滿:如果a滿且b不為空,則隊滿

(2)判隊空:如果a和b都為空,則隊空

(3)入隊:首先判隊滿。

若隊不滿:(1)棧a若不滿,則直接壓入棧a

2)若a滿,則將a中的所有元素彈出到棧b中,然後再將元素入棧a

(4)出隊:(1)若b空就將a中的所有元素彈出到棧b中,然後出棧

2)b不空就直接從b中彈出元素

用兩個佇列模擬乙個堆疊:

佇列a和b

(1)判棧滿:若佇列a和b有乙個為滿則對滿

(2)判棧空:若佇列a和b均為空則棧空

(3)入棧:a佇列當前有元素,b為空(倒過來也一樣)則將需要入棧的元素先放b中,然後將a中的元素依次出列併入列倒b中。(保證有乙個佇列是空的)

(4)出棧:將有元素的佇列出列即可。

比如先將1插入隊a中 ,現在要將2入棧,則將2插入b總然後將a中的1出列入到b中,b中的元素變為 2 ,1

a為空,現在要壓入3 則將3插入a中 ,依次將b中的2 ,1 出列並加入倒a中 ,a中的元素變為 3,2,1 b為空

演算法保證在任何時候都有一隊列為空

13. 一種基於雜湊鍊錶的多關鍵字排序演算法

14. 設計演算法將十進位制數以八進位制數輸出:

十進位制數n不斷被8除后取餘數,直到n為0,由此獲得的一組餘數就是n對應的八進位制數每一位上的數字,先得到的餘數是低位上的數,後得到的餘數是高位上的數字,為了使先被求得餘數後輸出,後求得餘數先輸出,可利用棧的後進先出特點,將每次得到餘數都壓入棧中,直到n為0,然後將棧中的數逐個彈出,每彈出乙個數就作為八進位制數的一位數字輸出。

15. 給定乙個由幾個正整數組成的向量v[ 1 : n ]。

試設計演算法,將v[ 1 : n ]的元素移到r[ 1 : n ]內,使r[ 1 ]<= r[ 2 ] <=……<= r[ n / 2 ],r[ n ]<= r[ n-1 ] <=……<= r[ n / 2 + 1 ],即r中的元素呈現中間大兩邊小的均勻分布狀態。

例如:v = ,則r = 。

algorithm sort( v, r )

}二、假設在陣列a[n]中存貯n個整數,設計演算法change(int *a, int *b, int n),其中n為陣列a中元素的個數,該演算法將陣列a中整數移動到陣列b中,使得陣列b中的元素呈現小、大、小、大間隔的形式,即b[0]b[2], b[2]b[4],……,而且相鄰兩元素值之間的差的絕對值隨下標值的增加呈現不增加趨勢,例如|b[0]-b[1]|≥|b[1]-b[2]|≥|b[2]-b[3]|

1、排序

用氣泡排序法對陣列a排序:

陣列a的元素兩兩比較,大的放在後面(即若前面的大於後面的,交換兩元素的為止)。迴圈執行直到不交換為止。

2、移動

定義兩個變數i,j。初始i= 0;j = n- 1。

定義乙個變數m ,初值為0。

迴圈執行以下操作:

b[m] = a[i];

b[m+1] = a[j];

m += 2;i++;j--;

直到i >= j

最後 if(i == j)b[m] = a[i];

演算法的核心是對陣列a實現從小到大的排序,然後從a陣列的左右兩端分別取資料,順序放入b陣列。分數安排如下:

1)( 10分)排序演算法:任何排序演算法都得分。如果沒有給出排序演算法,只說明要排序,得5分

2) (10分)移動資料到b :任意的移動,只要結果正確便得分。

三、假設每個人的資訊僅包括姓名,年令和性別,在某資訊管理系統中,經常需要查詢同令人的姓名,設計物理存貯結構,使得查詢過程方便快速,並給出相應的查詢給定年令的演算法,分析該演算法的效能。(本題 20 分)

軟體技術報告

現場答辯成績 實驗報告成績 總成績重慶郵電大學 自動化學院 綜合實驗報告 題目 基於嵌入式系統的手持終端介面 單位 二級學院 自動化學院 學生姓名 鄧大慶 專業 自動化 班級 0810704 學號 07200428 指導教師 袁榮棣 設計時間 2010 年 11 月 重慶郵電大學自動化學院制 實驗一...

軟體技術基礎 任務

軟體技術基礎2 實驗報告1 學院自動化 專業自動化 年級大一 姓名廖林 任課教師張坤龍 實驗指導張坤龍 2016年 3月 14日 實驗一一 實驗目的 通過本試驗,使學生掌握利用vc6.0除錯c 程式的過程及方法 深入理解c 程式的結構與組成和程式的執行機制 掌握常量 變數 表示式 基本輸入與輸出在程...

軟體技術服務合同

5.如要系統有修改,另行協商。在甲方支付全款後個工作日,乙方提供等額增值稅發票。合同有效期 自年月日至2 年月日止,期滿合同自動中止。合同合同滿後,雙方協商,甲方可要求乙方繼續提供軟體執行維護服務,但雙方必須重新簽署新的服務合同。五 爭議處理 甲乙雙方如對協議條款規定的理解有異議,或者對與有關的事項...