![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-7/15/7/2181e2be-8568-4e97-8066-5fae66a8ff6b/2181e2be-8568-4e97-8066-5fae66a8ff6bpic.jpg)
![高級編程技術(shù)_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-7/15/7/2181e2be-8568-4e97-8066-5fae66a8ff6b/2181e2be-8568-4e97-8066-5fae66a8ff6b1.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹“掃雷”案例的講解,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,生命周期方法學(xué):從時間角度對軟件開發(fā)和維護(hù)的復(fù)雜問題進(jìn)行分解,把軟件生命的漫長周期依次劃分為若干個階段,每個階段有相對獨立的任務(wù),然后逐步完成每個階段的任務(wù)。前一個階段任務(wù)的完成是開始進(jìn)行后一個階段工作的前提和基礎(chǔ),而后一階段任務(wù)的完成通常是使前一階段提出的解法更進(jìn)一步具體化,加進(jìn)了更多的實現(xiàn)細(xì)節(jié)。,第1章 大型
2、程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:生命周期方法學(xué),軟件生命周期每個階段及其解決的關(guān)鍵問題,第1章 大型程序的開發(fā)方法,瀑布模型,軟件工程開發(fā)方法的介紹:生命周期方法學(xué),第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,結(jié)構(gòu)化程序設(shè)計方法:是一種設(shè)計程序的技術(shù),采用自頂向下逐步求精的設(shè)計方法和單入口單出口的順序、選擇和循環(huán)三種基本控制結(jié)構(gòu)。它提出的原則可歸納為32字:“自頂向下,逐步細(xì)化;清晰第一,效率第二;書寫規(guī)范,縮進(jìn)格式;基
3、本結(jié)構(gòu),組合而成?!?第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計方法,,某學(xué)院為準(zhǔn)備參加網(wǎng)絡(luò)工程師認(rèn)證的人員開辦了相應(yīng)的培訓(xùn)課程。當(dāng)首批培訓(xùn)人員參加了認(rèn)證考試后,該學(xué)院自然想知道這些學(xué)生考得如何,以便調(diào)整教學(xué)方案和收費標(biāo)準(zhǔn)。現(xiàn)在需要編寫一個統(tǒng)計考試結(jié)果的程序,能夠顯示出通過和沒有通過的人數(shù),并且如果通過人數(shù)不低于總?cè)藬?shù)的70%,顯示提高學(xué)費的建議。已知參加考試的人員有500名,并且已經(jīng)在通過者的名字旁邊標(biāo)注了1,
4、在未通過者的名字旁標(biāo)注了2。,應(yīng)用實例,問題描述,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計方法,,程序必須要處理500個應(yīng)試者的考試結(jié)果,所以要使用循環(huán);每個考試結(jié)果都是一個數(shù),即1或2。程序每次讀取一個結(jié)果后,必須確定該數(shù)是1還是2;使用兩個計數(shù)器。一個用于計算通過考試的人數(shù),另一個用于計算沒有通過的人數(shù);程序處理完所有結(jié)果后,必須判斷是否有70%以上的人員通過了認(rèn)證考試。,應(yīng)用實例,問題分析,第1章
5、大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計方法,,分析認(rèn)證考試的結(jié)果并決定培訓(xùn)費是否提高,應(yīng)用實例,問題的頂層表示,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計方法,,初始化變量;輸入500個考試結(jié)果,統(tǒng)計通過和未通過 的人數(shù);打印統(tǒng)計結(jié)果,并決定培訓(xùn)費是否提高。,應(yīng)用實例,第一次求精結(jié)果,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計方法,,“初始化變量”將變量p
6、asses初始化為0將變量failures初始化為0將變量counter初始化為1,應(yīng)用實例,第二次求精的結(jié)果,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計方法,,“輸入500個考試結(jié)果,統(tǒng)計通過和未通過的人數(shù) ” While人員計數(shù)器counter小于等于500 輸入下一個考試結(jié)果至變量result
7、 If此結(jié)果是通過 變量passes加1 Else 變量failures加1 人員計數(shù)器counter加1,應(yīng)用實例,第二次求精的結(jié)果,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計方法,,“打印統(tǒng)計結(jié)果,并決定培訓(xùn)費是
8、否提高” 打印通過認(rèn)證的人數(shù) 打印未通過認(rèn)證的人數(shù) IF變量 passes的值除500大于等于0.7 打印“提高培訓(xùn)費”,應(yīng)用實例,第二次求精的結(jié)果,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計方法,,求精結(jié)果
9、 源程序,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,三種描述設(shè)計的圖形工具: 層 次 圖——用來描述軟件層次結(jié)構(gòu) 程序流程圖——是歷史最悠久、使用最廣泛 的描述軟件設(shè)計的方法 盒 圖——是一種很好的支持結(jié)構(gòu)化程序 設(shè)計思想的圖形工具,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:描述設(shè)計的圖形工
10、具,應(yīng)用實例,正文加工系統(tǒng)的層次圖,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:描述設(shè)計的圖形工具,應(yīng)用實例,程序流程圖 相應(yīng)的盒圖,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,編碼時注意的問題: 全局變量——應(yīng)該“有限制地使用全局變量”。使用全局變量過多,會降低程序的清晰性;降低函數(shù)的通用性;濫用全局變量會造成程序的混亂函 數(shù)——“工欲善其事,必先利其器”。
11、我們在編寫大型程序時,要善于利用已有的函數(shù),以減少重復(fù)編寫程序段的工作量,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,編碼時注意的問題:風(fēng)格——全局變量使用具有說明性的名字 int totalMine; int table[ROW][COL];局部變量用短名字 int i; … for(i=0; i<10; i++ ) …,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)
12、方法的介紹,命名規(guī)則命名規(guī)則當(dāng)推Microsoft公司的"匈牙利"法該命名規(guī)則的主要思想是"在變量和函數(shù)名中加入前綴以增進(jìn)人們對程序的理解 變量名=屬性+類型+對象描述"匈牙利"法最大的缺點是煩瑣,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,規(guī)則標(biāo)識符應(yīng)當(dāng)直觀且可以拼讀,可望文知意,不必進(jìn)行"解碼"。 標(biāo)識符的長度應(yīng)當(dāng)符合"mi
13、n-length && max-information"原則命名規(guī)則/風(fēng)格盡量保持一致避免僅靠大小寫區(qū)分的相似的標(biāo)識符避免標(biāo)識符完全相同的局部變量和全局變量,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,命名規(guī)則6. 避免標(biāo)識符完全相同的局部變量和全局變量float value; float
14、0; oldValue; float newValue; 7. 全局函數(shù)的名字應(yīng)當(dāng)使用"動詞"或者"動詞+名詞"(動賓詞組)int DrawTable(),第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,命名規(guī)則8. 用正確的反義詞組命名具有互斥意義的變量或相反動作的函數(shù)int minValue;
15、int maxValue; int SetValue(…); int GetValue(…);,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,命名規(guī)則9. 宏定義/常量全大寫#define COL 16int MAX_TABLE 12,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,命名規(guī)則10. 靜態(tài)變量加前綴 s_ 全局變量加前綴 g_,第1章 大型程序的開發(fā)方法,軟件
16、工程開發(fā)方法的介紹,編碼時注意的問題:表達(dá)式的自然形式、分解復(fù)雜的表達(dá)式、當(dāng)心具有副作用的運算符 ——神秘的數(shù)最好要命名,利用語言去計算對象的大小 ——除了定義符號常量外,最好避免使用宏 ——注釋時要注意不要大談明顯的東西,要給函數(shù)和全局?jǐn)?shù)據(jù)加注釋,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,編碼時注意的問題:表達(dá)式的自然形式、分解復(fù)雜的表達(dá)式*xp += (x=(2*k<(n-m)?c[k
17、+1]:d[k--]));x = 2*k < n-m ? c[k++] : d[k--];*xp += x;,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,編碼時注意的問題:當(dāng)心具有副作用的運算符A[i++] = 5;#define isupper(c) (c=‘A’)while( isupper(getch() ) …,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,測試和調(diào)試方法:測試是在認(rèn)為程
18、序能工作的情況下,為發(fā)現(xiàn)其問題而進(jìn)行的一整套確定的系統(tǒng)化的實驗 ——白盒測試相當(dāng)于把程序看成裝在一個透明的白盒子里,也就是完全了解程序的結(jié)構(gòu)和處理方法。它根據(jù)程序內(nèi)部的邏輯來設(shè)計測試用例,檢查程序中的邏輯路徑是否都按預(yù)定的要求正確地工作。常用的技術(shù)包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋等。,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,測試和調(diào)試方法:測試是在認(rèn)為程序能工作的情況下,為
19、發(fā)現(xiàn)其問題而進(jìn)行的一整套確定的系統(tǒng)化的實驗 ——黑盒測試相當(dāng)于把程序看成一個黑盒子,不考慮內(nèi)部結(jié)構(gòu)和處理過程。它根據(jù)規(guī)定的功能來設(shè)計測試用例,檢查程序的功能是否符合要求。常用的技術(shù)包括等價類劃分和邊界值分析等。,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,測試和調(diào)試方法:調(diào)試(即排錯)是在已知程序有問題時要做的事情 ——尋找熟悉的模式 ——檢查最近的改動 ——不要兩次犯同樣的錯誤 —
20、—現(xiàn)在排除,而不是以后 ——把你的代碼解釋給別人 ——分而治之,搜索局部化,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹“掃雷”案例的講解,,第1章 大型程序的開發(fā)方法,“掃雷”案例:選題,第1章 大型程序的開發(fā)方法,“掃雷”案例:分析,Windows掃雷游戲的游戲規(guī)則 :在“游戲”菜單上,單擊“開局”,出現(xiàn)的游戲界面中包括地雷計數(shù)器窗口、計時器窗口和雷區(qū)。開局后,單擊雷區(qū)中的任何一個方塊,便啟動計時器。每標(biāo)
21、記一個地雷,地雷計數(shù)器減1;用鼠標(biāo)左鍵單擊某個方塊,可挖開它。若所揭方塊下有雷,則踩雷,此時所有含地雷的塊都標(biāo)記?,這局游戲失??;如果方塊上出現(xiàn)數(shù)字,它代表在它周圍的八個方塊中共有多少顆地雷;用鼠標(biāo)右鍵單擊某個方塊,則標(biāo)記此塊下埋著地雷(實際上可能是誤標(biāo)),顯示為。每標(biāo)記一個地雷,地雷計數(shù)器減1;用鼠標(biāo)右鍵擊打某個方塊兩次,則在某塊上面標(biāo)一個問號(?),意味著沒有把握判定它是否有雷。標(biāo)記為?的塊可在恰當(dāng)?shù)臅r候再擊打鼠標(biāo)右鍵兩次或單
22、擊左鍵,將其標(biāo)記為地雷或挖開; 如果某個數(shù)字方塊周圍的地雷全都標(biāo)記完,可以同時單擊鼠標(biāo)左右鍵,將其剩下的方塊挖開。如果挨著這個方塊的地雷沒有全部標(biāo)記完,則未挖開的方塊將閃爍。,第1章 大型程序的開發(fā)方法,“掃雷”案例:分析,主要功能:規(guī)則1)隱含初始化新游戲的開局功能;規(guī)則2)隱含的挖雷功能;規(guī)則3)對應(yīng)的標(biāo)記地雷功能;規(guī)則4)對應(yīng)的標(biāo)記疑問功能;規(guī)則5)的自動挖開功能。操作手段:鼠標(biāo),第1章 大型程序的開發(fā)方法,“掃雷”
23、案例:設(shè)計,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計,自頂向下逐步求精:繼續(xù)分析已有功能,精化出所有子功能,確定 模塊間接口;描述精化后每個模塊的處理過程;確定主要的數(shù)據(jù)及其數(shù)據(jù)結(jié)構(gòu);確定輸入輸出數(shù)據(jù)的內(nèi)外部形式;界面的設(shè)計,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計——界面,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計——操作方式,采用鍵盤:上,下,左,右鍵用來移動光標(biāo)的位置;回車或者空格鍵用來挖開光標(biāo)當(dāng)前
24、指向的一個方塊;F, f 標(biāo)記當(dāng)前光標(biāo)指向的方塊有地雷;Q, q 在光標(biāo)指向方塊打一個問號,表示可能有地雷;A , a 自動挖開光標(biāo)周圍的方塊;ESC 退出游戲,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計——主要數(shù)據(jù),雷區(qū)界面數(shù)據(jù)# define ROW 16 /* 表示整個雷區(qū)的行數(shù)*/# define COL 16 /* 表示整個雷區(qū)的列數(shù)*/# define S
25、TARTX 50 /* 表示雷區(qū)在屏幕上的起始x坐標(biāo)*/# define STARTY 50 /* 表示雷區(qū)在屏幕上的起始y坐標(biāo)*/# define SIZEX 20 /* 表示一個方塊的長度*/# define SIZEY 20 /* 表示一個方塊的寬度*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計——主要數(shù)據(jù),雷區(qū)內(nèi)部數(shù)據(jù) int totalMine;
26、 /* 整個雷區(qū)所含的地雷總數(shù)*/int table[ROW][COL]; /* 數(shù)組table的每個元素值記錄了雷區(qū) 對應(yīng)方塊是否有雷:1有雷,0無雷*/int num[ROW][COL]; /* 數(shù)組num的每個元素值記錄了雷區(qū)
27、 對應(yīng)方塊周圍有多少個地雷*/int flag[ROW][COL]; /* 數(shù)組flag的每個元素值記錄了雷區(qū) 對應(yīng)方塊當(dāng)前的狀態(tài)*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計——主要數(shù)據(jù),方塊(i,j)的狀態(tài)取值 #define UNFLAG 0 /* 表示該方塊還沒有被打開或者
28、標(biāo)記*/#define FLAGED 1 /* 標(biāo)記該方塊有地雷*/#define QUESTION 20 /* 表示該方塊可能有地雷*/#define EXPLOD 30 /* 踩到地雷爆炸了*/#define OPEN 40 /* 一個沒有地雷的方塊被打開*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計——主要數(shù)據(jù),光標(biāo)當(dāng)前位置數(shù)據(jù) int pi,pj; /* 記錄光標(biāo)的當(dāng)
29、前位置,初始時光標(biāo)在(0,0)*/int di[8]={-1,-1,0,1,1,1,0,-1};int dj[8]={0,1,1,1,0,-1,-1,-1};/*相對于當(dāng)前方塊而言,di[8]和dj[8]分別表示了它周圍八個 方塊的行和列坐標(biāo)偏移量。它們與當(dāng)前光標(biāo)坐標(biāo)配合使用, 可表示周圍的方塊,如(-1+pi,0+pj)表示當(dāng)前方塊的 正上方方塊的坐標(biāo)。*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計——主
30、要數(shù)據(jù),游戲狀態(tài)數(shù)據(jù) int gameRes; /*記錄游戲結(jié)束的結(jié)果狀態(tài),是輸出數(shù)據(jù)的內(nèi)部形式。 值為0表示按esc鍵退出游戲;-1 表示游戲失??; 1表示游戲勝利。*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計——主要數(shù)據(jù),功能鍵的鍵值 /*上,下,左,右鍵*/#define UP 0x4800#define DOWN 0x5000#define LEFT 0x4b00#define RIGHT 0x4d
31、00/*回車、空格鍵*/#define ENTER 0x1c0d#define SPACE 0x3920/*F, f */#define UPPERF 0x2146#define LOWERF 0x2166,/*Q, q*/#define UPPERQ 0x1051#define LOWERQ 0x1071/*A , a*/#define UPPERA 0x1e41#define LOWERA 0x1e61/*E
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基礎(chǔ)技能訓(xùn)練高級軟件編程技術(shù)
- javaweb編程技術(shù)
- 電大《數(shù)控編程技術(shù)》題庫
- 數(shù)控編程技術(shù)作業(yè)答1
- 網(wǎng)絡(luò)編程技術(shù)課程研究
- 實驗二、三jsp編程技術(shù)
- plc可編程技術(shù)題庫
- 外文翻譯--高級bash腳本編程指南一個對腳本編程技術(shù)的深入討論
- 數(shù)控編程技術(shù)畢業(yè)論文
- jsp應(yīng)用課件—web編程技術(shù)
- 面向網(wǎng)絡(luò)編程技術(shù)練習(xí)題
- 數(shù)控編程技術(shù)的現(xiàn)狀與發(fā)展
- 淺談圓管相貫線編程技術(shù)
- 畢業(yè)論文----cam數(shù)控編程技術(shù)
- 面向?qū)ο缶幊碳夹g(shù)作業(yè)題
- 談?wù)刬os網(wǎng)絡(luò)編程之socket編程技術(shù)及應(yīng)用
- vb數(shù)據(jù)庫編程技術(shù)實例
- 數(shù)控編程技術(shù)畢業(yè)論文(doc)
- 《caxa自動編程技術(shù)》課程標(biāo)準(zhǔn)
- 電大數(shù)控編程技術(shù)考核答案
評論
0/150
提交評論