程序設(shè)計概述課件_第1頁
程序設(shè)計概述課件_第2頁
程序設(shè)計概述課件_第3頁
程序設(shè)計概述課件_第4頁
程序設(shè)計概述課件_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 掌握逐步求精的結(jié)構(gòu)化程序設(shè)計方法,初步掌握良好的程序設(shè)計風(fēng)格的內(nèi)涵,掌握算法的基本概念,理解面向?qū)ο蟪绦蛟O(shè)計的基本概念。教學(xué)目標(biāo)及基本要求教學(xué)目標(biāo)及基本要求教學(xué)重點教學(xué)重點逐步求精的結(jié)構(gòu)化程序設(shè)計方法,算法的基本概念。 第第2727講講 程序設(shè)計與軟件開發(fā)基礎(chǔ)程序設(shè)計與軟件開發(fā)基礎(chǔ)( (一一) )教學(xué)難點教學(xué)難點面向?qū)ο蟪绦蛟O(shè)計的基本概念,算法的復(fù)雜度。 程序設(shè)計的風(fēng)格結(jié)構(gòu)化程序設(shè)計面向?qū)ο蟪绦蛟O(shè)計算法的基本概念算法的復(fù)雜度教學(xué)內(nèi)容教學(xué)內(nèi)容第第2727講講 程序設(shè)計與軟件開發(fā)基礎(chǔ)程序設(shè)計與軟件開發(fā)基礎(chǔ)( (一一) )1學(xué)時 教學(xué)時間教學(xué)時間第第2727講講 程序設(shè)計與軟件開發(fā)基礎(chǔ)程序設(shè)計與軟

2、件開發(fā)基礎(chǔ)( (一一) ) 程序設(shè)計風(fēng)格是指編寫程序時所表現(xiàn)出的特點、習(xí)慣和邏輯思路。 程序設(shè)計的風(fēng)格總體而言應(yīng)該強調(diào)簡單和清晰,程序必須是可以理解的。 主導(dǎo)的程序設(shè)計風(fēng)格: “清晰第一,效率第二” 。(1)源程序文檔化 符號名的命名見名知意名字不宜太長不要使用相似的名字不要使用關(guān)鍵字做標(biāo)識符 同一個名字不要有多種含義 功能性注釋:通常位于每個程序的開頭部分,它給出程序的整體說明。主要描述內(nèi)容包括:程序標(biāo)題、程序功能說明、主要算法、接口說明、程序位置、開發(fā)簡歷、程序設(shè)計者、復(fù)審者、復(fù)審日期、修改日期等。一般嵌在源程序體之中,主要描述其后的語句或程序做什么。 程序注釋序言性注釋: 視覺組織 在程

3、序中利用空格、空行、縮進等技巧使程序?qū)哟吻逦?。?)數(shù)據(jù)說明的方法 數(shù)據(jù)說明的次序規(guī)范化:數(shù)據(jù)說明次序固定,便程序理解、閱讀和維護,可以使數(shù)據(jù)的屬性容易查找,也有利于測試、排錯和維護。 說明語句中變量安排有序化:當(dāng)一個說明語句說明多個變量時,變量按照字母順序排序為好。 使用注釋來說明復(fù)雜數(shù)據(jù)的結(jié)構(gòu)。 顯式地說明一切變量。(3)語句的結(jié)構(gòu) 在一行內(nèi)只寫一條語句。 程序編寫應(yīng)優(yōu)先考慮清晰性,除非對效率有特殊要求,即清晰第一,效率第二。 首先要保證程序正確,然后才要求提高速度。 避免使用臨時變量而使程序的可讀性下降。 避免采用復(fù)雜的條件語句和不必要的轉(zhuǎn)移,盡量使用庫函數(shù)。 數(shù)據(jù)結(jié)構(gòu)要有利于程序的簡化

4、,程序要模塊化,且要盡量使模塊功能單一化,利用信息隱蔽,確保每一個模塊的獨立性。 盡量只采用3種基本控制結(jié)構(gòu)來編寫程序。(4)輸入和輸出 對所有的輸入數(shù)據(jù)都要檢驗數(shù)據(jù)的合法性以及檢查輸入項的各種重要組合的合理性。 輸入格式要簡單,以使輸入的步驟和操作盡可能簡單。 輸入數(shù)據(jù)時,應(yīng)允許使用自由格式和缺省值。 輸入一批數(shù)據(jù)時,最好使用輸入結(jié)束標(biāo)志。 以交互式方式輸入、輸出數(shù)據(jù)時,要在屏幕上有明確的提示符,數(shù)據(jù)輸入結(jié)束時,應(yīng)在屏幕上給出狀態(tài)信息。 當(dāng)程序設(shè)計語言對輸入格式有嚴格要求時,應(yīng)保持輸入格式與輸入語句的一致性;給所有的輸出加注釋,并設(shè)計良好的輸出報表格式。自頂向下、逐步求精、模塊化、限制使用自

5、頂向下、逐步求精、模塊化、限制使用GOTO語句。語句。(1)自頂向下 先總體,后細節(jié);先全局目標(biāo),后局部目標(biāo)。(2)逐步求精 設(shè)計一些子目標(biāo)作為過渡,逐步細化。(3)模塊化 把程序要解決的總目標(biāo)分解為分目標(biāo),再進一步分解為具體的小目標(biāo),把每個小目標(biāo)稱為一個模塊。(4)限制使用GOTO語句 使用GOTO語句有時會使程序執(zhí)行效率較高,但也容易造成程序混亂,程序不易理解、不易排錯、不易維護,因而要盡量限制使用GOTO語句。順序、選擇和循環(huán)順序、選擇和循環(huán)(1)順序結(jié)構(gòu) 如圖7-1所示,順序結(jié)構(gòu)是順序執(zhí)行結(jié)構(gòu)。所謂順序執(zhí)行,就是按照程序語句行的自然順序,一條語句一條語句(ABC)地執(zhí)行程序。ABC圖7

6、-1 順序結(jié)構(gòu)(2)選擇結(jié)構(gòu) 選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),它包括簡單選擇和多分支選擇結(jié)構(gòu),這種結(jié)構(gòu)可以根據(jù)設(shè)定的條件,判斷應(yīng)該選擇哪一條分支來執(zhí)行相應(yīng)的語句序列。圖7-2列出了包含2個分支的簡單選擇結(jié)構(gòu)。 條件 T F A B圖7-2 選擇結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu)又稱為重復(fù)結(jié)構(gòu),它根據(jù)給定的條件,判斷是否需要重復(fù)執(zhí)行某一相同的或類似的程序段。分為兩類:直到型循環(huán)結(jié)構(gòu):先判斷后執(zhí)行循環(huán)體(圖7-3)先執(zhí)行循環(huán)體后判斷(圖7-4)當(dāng)型循環(huán)結(jié)構(gòu): 圖7-3 當(dāng)型循環(huán)結(jié)構(gòu)圖7-4 直到型循環(huán)結(jié)構(gòu)判斷條件 循環(huán)體 循環(huán)體判斷條件(1)使用順序、選擇、循環(huán)三種結(jié)構(gòu)表示程序的控制邏輯。(2)選用的控制結(jié)構(gòu)只

7、準(zhǔn)許有一個入口和一個出口。(3)復(fù)雜結(jié)構(gòu)應(yīng)用嵌套的基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn),語言中所沒有的控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來模擬。(4)嚴格控制GOTO語句的使用。系統(tǒng)的需求總是處于不斷變化之中,因此,需要設(shè)計對變化有彈性的系統(tǒng) 。傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計方法主要是面向過程的,也就是在分析設(shè)計時更多地從過程處理的角度進行,系統(tǒng)框架結(jié)構(gòu),系統(tǒng)模塊的劃分、設(shè)計都是基于系統(tǒng)所實現(xiàn)的功能,而功能是系統(tǒng)中最易變的部分,這樣,如果系統(tǒng)需求發(fā)生一些變化(如系統(tǒng)某些功能的改進或擴充新功能),系統(tǒng)的結(jié)構(gòu)就會受到破壞。 利用傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計方法設(shè)計的系統(tǒng)不易擴充。在實際系統(tǒng)中,最穩(wěn)定的部分是系統(tǒng)對象,它直接

8、描述問題域。面向?qū)ο蟮南到y(tǒng)能夠有效提高系統(tǒng)結(jié)構(gòu)的穩(wěn)定性。較復(fù)雜的系統(tǒng)將為每個對象類定義一些更復(fù)雜的功能(如“飛機”對象類中增加自動跟蹤功能)或者增加一些新的對象類(如“雷達”),但是系統(tǒng)的核心部分(問題域中的對象)即使在系統(tǒng)功能范圍發(fā)生變化的情況下,仍保持不變。在分析階段采用DFD表示,而在設(shè)計階段采用結(jié)構(gòu)圖的表示方法。在面向?qū)ο蠓椒ㄖ?,從分析(OOA)、設(shè)計(OOD)到編程實現(xiàn)(OOP)采用的都是同樣的表示方法。 傳統(tǒng)的結(jié)構(gòu)化分析和設(shè)計方法中存在迥然不同的表示方法??芍赜眯岳^承是面向?qū)ο蠓椒ǖ囊粋€重要機制,用面向?qū)ο蠓椒ㄔO(shè)計的系統(tǒng)的基本對象類可以被其他新系統(tǒng)重用,通常這是通過一個包含類和子類

9、層次結(jié)構(gòu)的類庫來實現(xiàn)的,面向?qū)ο蠓椒ㄍㄟ^從一個項目向另一個項目提供一些重用類而能顯著提高生產(chǎn)率。 可維護性表示方法的一致性對象對象消息消息類類繼承繼承多態(tài)性多態(tài)性 算法是指解題方案的準(zhǔn)確而完整的描述,并且具有下列特性: (1)有窮性:一個算法必須在執(zhí)行有窮步驟之后結(jié)束,且每一步都可在有窮時間內(nèi)完成。 (2)確定性:算法的每一步必須是確切定義的,不能有歧義。(3)可行性:算法應(yīng)該是可行的。(4)輸入:一個算法有零個或多個輸入。(5)輸出:一個算法有一個或多個輸出。對數(shù)據(jù)對象的運算和操作 算法的控制結(jié)構(gòu) 算術(shù)運算、 邏輯運算、 關(guān)系運算、 數(shù)據(jù)傳輸算法中各操作之間的執(zhí)行順序正確性可讀性健壯性效率評

10、價一個算法優(yōu)劣的主要標(biāo)準(zhǔn)是算法的執(zhí)行效率和存儲需求。算法的執(zhí)行效率指的是時間復(fù)雜度(Time Complexity),存儲需求指的是空間復(fù)雜度(Space Complexity)。 v概念算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量。因為基本運算反映了算法運算的主要特征,因而可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數(shù)來度量算法的工作量。v算法的工作量計算公式算法的工作量=f(n) 其中n是問題的規(guī)模兩個n階矩陣相乘所需的基本運算(即兩個實數(shù)的乘法)次數(shù)為n3,即計算工作量為n3,也就是時間復(fù)雜度為n3。 v注意事項在同一個問題規(guī)模下,如果算法執(zhí)行所需的基本運算次數(shù)取決于某一特定輸入時,可以

11、用平均性態(tài)和最壞情況復(fù)雜性方法來分析算法的工作量。平均性態(tài)平均性態(tài)分析是指用各種特定輸入下的基本運算次數(shù)的加權(quán)平均值來度量算法的工作量。 在長度為n的一維數(shù)組中查找值為x的元素,若采用順序搜索法,在平均情況下需要檢查數(shù)組中一半的元素。 最壞情況分析 最壞情況分析是指在規(guī)模為n時,算法所執(zhí)行的基本運算的最大次數(shù)。 在長度為n的一維數(shù)組中查找值為x的元素,若采用順序搜索法,在最壞情況下最壞情況需查找n次。 一個算法的空間復(fù)雜度一般是指執(zhí)行這個算法所需要的內(nèi)存空間。包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及

12、某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。 【例7.1】討論用選擇法對數(shù)組中n個整數(shù)按由小到大排序的時間復(fù)雜度。1.選擇法: 先將n個數(shù)中最小的數(shù)與a0對換,再將a1到an-1中最小的數(shù)與a1對換每比較一輪,找出一個未經(jīng)排序的數(shù)中最小的一個,共比較n1輪。 2.算法:(1)從鍵盤輸入n個數(shù),并將其存儲在一個有n個元素的整型數(shù)組a中。(2)進行選擇排序: int i=0;/每一輪比較起始元素的下標(biāo) int k=0;/每一輪比較得到的最小元素的下標(biāo) 通過循環(huán)求出aian中最小數(shù)的下標(biāo)k 如果i不等于k,將ai與ak對換 i=i+1,轉(zhuǎn)到(3)輸出排序的結(jié)果。3.C+程序代碼void select_sort

13、(int array, intvoid select_sort(int array, int n) / n) /第第1 1行行 int i,j,k,t int i,j,k,t; /; /第第2 2行行 for(ifor(i=0;in-1;i+) /=0;in-1;i+) /第第3 3行行 k=i; / k=i; /第第4 4行行 for(j=i+1;jn;jfor(j=i+1;jn;j+) /+) /第第5 5行行 if(arrayjarraykif(arrayjarrayk) /) /第第6 6行行 k=j; /k=j; /第第7 7行行if(kif(k!=i) /!=i) /第第8 8行行 /第第9 9行行 t=arrayk;arrayk=arrayi;arrayit=arrayk;arrayk=arrayi;arrayi=t;

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論