版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1 第第2章章 偽代碼實例介紹偽代碼實例介紹 主講:黃明瓊主講:黃明瓊 2 第第2章章 偽代碼實例介紹偽代碼實例介紹 2.1 偽代碼介紹偽代碼介紹 2.2 三角形問題三角形問題 2.3 NextDate函數(shù)問題函數(shù)問題 2.4 傭金問題傭金問題 2.5 簡單簡單ATM系統(tǒng)系統(tǒng) 2.6 貨幣轉(zhuǎn)換器貨幣轉(zhuǎn)換器 3 本章教學目標本章教學目標 n正確理解偽代碼的概念 n正確理解偽代碼的規(guī)則 n正確理解偽代碼實例中的邏輯 n能夠看懂實例中的偽代碼所表達的含義 4 2.1 偽代碼介紹偽代碼介紹 2.1.1 偽代碼概念偽代碼概念 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則 5 2.1 偽代碼介紹偽代碼介紹 偽
2、代碼偽代碼 引言:引言: n 在單元測試中,我們會用到三個例子,分別是: 三角形問題;邏輯比較復雜的函數(shù),NextDate ();有代表性的MIS測試,傭金問題。這三個 例子合在一起,可以說明測試人員在單元級別上 會遇到的大多數(shù)問題,而在討論這幾個問題時, 我們會用到偽代碼這個工具,因此今天我們先介 紹偽代碼的概念和一種偽代碼規(guī)則。 6 2.1.1 偽代碼概念偽代碼概念 n偽代碼實際上是計算機代碼的簡略形式, 它比流程圖更像計算機代碼。 n偽代碼必須結(jié)構清晰,代碼簡單,可讀性 好。 n偽代碼要求程序設計人員集中于解決問題 而不是計算機語言。 7 2.1.1 偽代碼概念偽代碼概念(續(xù))(續(xù)) n
3、偽代碼(Pseudocode)是一種算法描述語 言。使用偽代碼的目的是為了使被描述的 算法可以容易地以任何一種編程語言 (Pascal,C,Java,etc)實現(xiàn)。因此, 偽代碼必須結(jié)構清晰、代碼簡單、可讀性偽代碼必須結(jié)構清晰、代碼簡單、可讀性 好,并且類似自然語言。好,并且類似自然語言。 介于自然語言與介于自然語言與 編程語言之間。編程語言之間。 8 2.1.1 偽代碼概念偽代碼概念(續(xù))(續(xù)) n 例如例如,類類Pascal語言的偽代碼的語法規(guī)則是語言的偽代碼的語法規(guī)則是: 在 偽代碼中,每一條指令占一行(else if,例外)。 指令后不跟任何符號(Pascal和C中語句要以分 號結(jié)尾)
4、。書寫上的“縮進”表示程序中的分支 程序結(jié)構。這種縮進風格也適用于if-then-else語 句。用縮進取代傳統(tǒng)Pascal中的begin和end語句 來表示程序的塊結(jié)構可以大大提高代碼的清晰性; 同一模塊的語句有相同的縮進量,次一級模塊的 語句相對與其父級模塊的語句縮進。 9 2.1.1 偽代碼概念偽代碼概念(續(xù))(續(xù)) n 偽代碼只是像流程圖一樣用在程序設計的初期,幫助寫出程序流程。 簡單的程序一般都不用寫流程、寫思路,但是復雜的代碼,最好還是 把流程寫下來,總體上去考慮整個功能如何實現(xiàn)。寫完以后不僅可以 用來作為以后測試,維護的基礎,還可用來與他人交流。但是,如果把 全部的東西寫下來必定
5、可能會浪費很多時間,那么這個時候可以采用 偽代碼方式。比如:比如: IF 九點以前 THEN do 私人事務; ELSF 9點到18點 THEN 工作; ELSE 下班; END IF 這樣不但可以達到文檔的效果,同時可以節(jié)約時間. 更重要的是,使結(jié)構 比較清晰,表達方式更加直觀. 10 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則 n 變量聲明 n 符號后的內(nèi)容表示注釋 n 數(shù)據(jù)結(jié)構聲明 n 賦值語句 n 輸入 n 輸出 n 簡單條件 n 復合條件 n 順序結(jié)構 n 簡單選擇 n 選擇 n 多重選擇 n 計數(shù)循環(huán) n While循環(huán) n Unitl循環(huán) n 過程定義 n 過程調(diào)用 n 程序 n
6、練習 n 小結(jié) 11 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n變量聲明用:變量聲明用:Dim As 例如例如: Dim a As INTEGER 意思是:聲明a為整形變量 Dim a,b,c,match As INTEGER 意思是:聲明a,b,c,match都為整形變量 n符號符號后的內(nèi)容表示注釋;后的內(nèi)容表示注釋; 例如:例如: Dim a,b,c As INTEGER 定義三角形 的三條邊 12 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n 數(shù)據(jù)結(jié)構聲明:數(shù)據(jù)結(jié)構聲明: Type End 例如例如: Type STUDENT Dim name As STRING Di
7、m age As INTEGER Dim NO As STRING Dim tele As STRING End STUDENT 13 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n賦值語句:賦值語句: = 例如例如: tomorrowDay=day+1 tomorrowMonth=month+1 n輸入:輸入: Input () 例如例如: Input (a) Input(a,b,c) 14 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n輸出輸出 Output () 例如例如: Output (“Side A is”,a) Output (“Side B is”,b) Outpu
8、t (“Side C is”,c) Output (“Error!please again!”) 15 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n簡單條件:簡單條件: 例如例如: Stud.age=0 Stud.agec 16 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n復合條件:復合條件: 例如例如: (ab+c) AND(ba+c)AND(ca+b) 17 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n順序結(jié)構順序結(jié)構 語句按照串行順序排列。語句按照串行順序排列。 例如:例如: Output (“Enter 3 integers which are sides of
9、 a triangle) Input(a,b,c) Output (“Side A is”,a) Output (“Side B is”,b) Output (“Side C is”,c) 18 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n簡單選擇簡單選擇 nIf Then n nEndIf 例如例如:if a=b Then match=match+1 EndIf 19 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n選擇選擇 If Then Else EndIf 例如例如:if (ab+c) AND(ba+c)AND(ca+b) Then IsTriangle=True Else
10、 IsTriangle=False EndIf 20 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n多重選擇多重選擇 Case of Case 1: Case n: EndCase 例如:例如: Case score of Case 1:score=90 Output(“Good!”) Case 2:60=score=89 Output(“Pass!”) Case 3:0=score=59 Output(“Not Pass!”) EndCase 21 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n計數(shù)循環(huán)計數(shù)循環(huán) For=To EndFor 例如例如: For i=1 to 100
11、 sum=sum+i EndFor 22 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) nWhile循環(huán)循環(huán) Do While EndWhile 例如例如: Do While stature=165 Output(“Stop!”) EndWhile 23 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) nUntil循環(huán)循環(huán) Do Until 例如例如: sum=0 i=1 Do sum=sum+i i=i+1 Until i=100 24 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n過程定義過程定義(函數(shù)和面向?qū)ο蠓椒ǖ亩x類似函數(shù)和面向?qū)ο蠓椒ǖ亩x類似) (Input:; O
12、utput:) End 25 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n過程調(diào)用過程調(diào)用(函數(shù)和面向?qū)ο蠓椒ǖ亩x類似函數(shù)和面向?qū)ο蠓椒ǖ亩x類似) Call (;) n程序:程序: Program End 26 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n偽代碼課堂練習偽代碼課堂練習 問題:計算并報告一個班學生的平均分數(shù)。 討論:平均分數(shù)等于所有學生分數(shù)的和除以 學生數(shù)。我們需要一個循環(huán)然后加班中每 位學生的分數(shù)。在循環(huán)內(nèi)仍需要班內(nèi)學生 的總數(shù)。 27 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) Program average grade Dim grade,sum
13、,average As Real Dim counter As integer sum=0.0 counter=0 Do while there no more data input(grade) sum=sum+grade counter=counter+1 EndWhile average=sum/counter Output(average) End average grade 28 2.1.2 一種偽代碼規(guī)則一種偽代碼規(guī)則(續(xù)續(xù)) n小 結(jié) 這里介紹的偽代碼提供了表示程序源代碼 的“獨立于語言”的方式。偽代碼有兩層 結(jié)構:單元和程序組建。單元既可以解釋 為傳統(tǒng)組件(過程和函數(shù)),也可以
14、解釋 為面向?qū)ο蠼M件(類和對象)。使用偽代 碼可以使程序設計人員集中于解決問題而 不是計算機語言。 29 2.2 三角形問題三角形問題 2.2.1 三角形問題陳述三角形問題陳述 2.2.2 三角形問題實現(xiàn)三角形問題實現(xiàn) 30 2.2 三角形問題三角形問題 n引言:引言: 三角形問題是軟件測試中一個經(jīng)久不衰的 例子,它包含了清晰而且復雜的邏輯。比 如說三角形的性質(zhì):任何兩邊之和必須要 嚴格大于第三條邊。 我們在講述這個問題 的時候還給出了三角形三條邊的上限值, 這主要是為了以后在講黑盒測試時要用到 這個上限值。 31 2.2 三角形問題三角形問題 n三角形問題是在軟件測試文獻中使用最廣 的一個例
15、子,這個例子經(jīng)久不衰的原因之 一是,它包含了清晰而又復雜的邏輯。它 還是削弱客戶、開發(fā)人員和測試人員溝通 的不完整定義的典型例子。 n三角形問題之所以復雜,是因為輸入與正 確輸出之間的關系復雜。 32 2.2.1 三角形問題陳述三角形問題陳述 簡單版本簡單版本:三角形問題接受三個整數(shù)a、b和c作為 輸入,用作三角形的邊。程序的輸出是由這三條 邊確定的三角形類型:等邊三角形、等腰三角形、 不等邊三角形或非三角形。有時這個問題被擴展 為將直角三角形作為第五類,在有些練習中會使 用這種擴展。 改進版本改進版本:三角形問題接受三個整數(shù)a、b和c作為 輸入,用作三角形的邊。整數(shù)整數(shù)a、b和和c必須滿足必
16、須滿足 以下條件:以下條件: c1:1=a=200 c4: ab+c c2: 1=b=200 c5: ba+c c3: 1=c=200 c6: ca+b 33 2.2.1 三角形問題陳述三角形問題陳述(續(xù)續(xù)) 程序的輸出是由這三條邊確定的三角形類型: 等邊三角形、等腰三角形、不等邊三角形或非 三角形。如果輸入值沒有滿足這些條件中的任 何一個,則程序會通過輸出消息來進行通知, 例如,例如,“b的取值不在允許范圍內(nèi)”,若若c1、c2、 c3滿足,則給出以下四種相互排斥輸出的一個滿足,則給出以下四種相互排斥輸出的一個: 如果三條邊相等,則程序的輸出是等邊三角形。 如果兩條邊相等,則程序的輸出是等腰三
17、角形。 如果沒有兩條邊相等,則程序的輸出是不等邊 三角形。 1.如果c4、c5和c6中有一個條件不滿足,則程序 的輸出是非三角形。 34 2.2.2 三角形問題實現(xiàn)三角形問題實現(xiàn) n以下是三角形問題的數(shù)據(jù)流圖描述以下是三角形問題的數(shù)據(jù)流圖描述。可以 把這個程序?qū)崿F(xiàn)為一個主程序和三個簡單 的過程。在后續(xù)章節(jié)里我們還要用到這個 例子,現(xiàn)在將它的實現(xiàn)用偽代碼表示。 35 2.2.2 三角形問題實現(xiàn)三角形問題實現(xiàn)(續(xù)續(xù)) 三角形程序?qū)崿F(xiàn)的數(shù)據(jù)流圖三角形程序?qū)崿F(xiàn)的數(shù)據(jù)流圖 36 2.2.2 三角形問題實現(xiàn)三角形問題實現(xiàn)(續(xù)續(xù)) n三角形問題實現(xiàn)的偽代碼三角形問題實現(xiàn)的偽代碼 Program triang
18、le2 version of simple Dim a,b,c As Integer Dim IsATriangle As Boolean Step1: Get Input Output(“Enter 3 integers which are sides of a triangle”) Input(a,b,c) Output(“Side A is ”,a) Output(“Side B is ”,b) Output(“Side C is ”,c) Step 2:Is A Triangle? If (ab+c) AND(ba+c)AND(ca+b) Then IsATriangle =True
19、Else IsATriangle =False EndIf step3:Determine Triangle Type If IsATrangle Then if(a=b)AND (b=c) Then Output(“Equilateral”) Else If(ab)AND(ac)AND(bc) Then Output(“Scalence”) Else Output(“Isosecles”) EndIf EndIf Else Output(“NOT a Triangle”) EndIf End triangle2 37 2.2.2 三角形問題實現(xiàn)三角形問題實現(xiàn)(續(xù)續(xù)) n三角形問題實現(xiàn)的偽代碼
20、續(xù)三角形問題實現(xiàn)的偽代碼續(xù) Program triangle3 improved version Dim a,b,c As Integer Dim IsATriangle As Boolean Step1: Get Input Do Output(“Enter 3 integers which are sides of a triangle”) Input(a,b,c) c1=(1=200) c2=(1=200) c3=(1=200) If NOT(c1) Then Output(“Value of a is not in the range of permitted values”) End
21、If If NOT(c2) Then Output(“Value of b is not in the range of permitted values”) EndIf If NOT(c3) Then Output(“Value of c is not in the range of permitted values”) EndIf Until c1 AND c2 AND c3 Output(“Side A is ”,a) Output(“Side B is ”,b) Output(“Side C is ”,c) Step2 Step3 End triangle3 38 2.3 NextDa
22、te函數(shù)問題函數(shù)問題 2.3.1 NextDate 問題陳述問題陳述 2.3.2 NextDate 的偽代碼實現(xiàn)的偽代碼實現(xiàn) 2.3.3 NextDate 小結(jié)小結(jié) 39 2.3 NextDate函數(shù)問題函數(shù)問題 n引言:引言:NextDate問題說明了輸入變量之間 的邏輯關系復雜性。 n輸入變量之間的邏輯比較復雜 n有兩種復雜性來源:輸入域和閏年規(guī)則 n80%活動出現(xiàn)在20%的空間 40 2.3.1 NextDate 問題陳述問題陳述 n NextDate是一個有三個變量(月份、日期和年) 的函數(shù)。函數(shù)返回輸入日期后面的那個日期。變 量月份、日期和年都是整數(shù)值,并滿足以下條件: c1:1=月
23、份=12 c2:1=日期=31 c3:1812=年=2012 n 我們的處理要包括對月份、日期和年的無效輸入 值的響應處理,還要對無效邏輯處理,例如例如任意 年的4月31日。 41 2.3.1 NextDate 問題陳述問題陳述(續(xù))(續(xù)) n 在NextDate函數(shù)中有兩種復雜性來源:輸入域和閏年規(guī)則。 關于公歷閏年是這樣規(guī)定的:地球繞太陽公轉(zhuǎn)一周叫做一 回歸年,一回歸年長365日5時48分46秒。因此,公歷規(guī) 定有平年和閏年,平年一年有365日,比回歸年短0.2422 日,四年共短0.9688日,故每四年增加一日,這一年有 366日,就是閏年。但四年增加一日比四個回歸年又多 0.0312日
24、,400年后將多3.12日,故在400年中少設3個閏年, 也就是在400年中只設97個閏年,這樣公歷年的平均長度 與回歸年就相近似了。由此規(guī)定:年份是整百數(shù)的必須是 400的倍數(shù)才是閏年,例如例如1900年、2100年就不是閏年。 42 2.3.2 NextDate 的偽代碼實現(xiàn)的偽代碼實現(xiàn) If day31 then tomorrowDay=day+1 else tomorrowDay=1 tomorrowMonth=month+1 EndIf Case 2:month Is 4,6,9 or 11 30day month If day30 then tomorrowDay=day+1 el
25、se tomorrowDay=1 tomorrowMonth=month+1 EndIf Program NextDate1 Simple version Dim tomorrowDay,tomorrowMont h,tomorrowYear As Integer Dim day,month,year As Integer Output(“Enter todays date in the form MM DD YYYY”) Input(month,day,year) Case month Of Case 1:month Is1,3,5,7,8,or 10:31 day months (excp
26、et 12) 43 2.3.2 NextDate 的偽代碼實現(xiàn)的偽代碼實現(xiàn)(續(xù)) Case 3:month Is 12: If day31 then tomorrowDay=day+1 else tomorrowDay=1 tomorrowMonth=1 If year=2012 then Output(“2012 is over”) else tomorrowYear=year+1 EndIf EndIf Case 4:month Is 2: If day45000.0) then commission=0.04*20000.0 commission= commission+0.01*250
27、00.0 commission= commission+0.005*(sales-45000.0) else If(sales20000) then commission=0.04* commission commission= commission+0.01*(sales-20000) else commission=0.04*sales EndIf EndIf Output(“Commission is ”,commission,”元”) EndCommission 52 2.5 簡單簡單ATM系統(tǒng)系統(tǒng) 2.5.1 SATM的問題描述的問題描述 2.5.2 SATM問題分析問題分析 2.5
28、.3 SATM問題實現(xiàn)問題實現(xiàn) 53 2.5 簡單簡單ATM系統(tǒng)系統(tǒng) 引言:引言: n 為了方便同學們了解集成測試和系統(tǒng)測試, 我們介紹一個簡單的自動柜員機系統(tǒng), n包含各種功能和交互,是一個典型的客戶/ 服務系統(tǒng)的客戶端。 54 2.5.1 SATM的問題描述的問題描述 nSATM客戶可以選擇 三種交易中的任意 一種:存款、取款 和查詢余額。這些 交易可以在信用帳 戶和儲蓄帳戶上完 成。 55 2.5.1 SATM的問題描述的問題描述(續(xù)續(xù)) 56 2.5.2 SATM問題分析問題分析 n有大量的信息隱藏在剛剛給出的系統(tǒng)描述 中。例如例如,100元的整數(shù)倍,這種文字描述 可能比實際問題中更加
29、精確。 nSATM-簡單ATM n透支額度?放入多少現(xiàn)金?何種現(xiàn)金? 57 2.5.3 SATM問題實現(xiàn)問題實現(xiàn) Programme teller (input,output) ATM Dim balance,inputMoney, outputMoney ,currentMoney As Integer Dim password As String Dim inquire ,fetch, deposit As String Dim isPasswordRight As Boolean currentMoney=balance+inputMoney output(“please input y
30、our card!”) input(“password”) for n=1 to 3 if isPasswordRight = False then if n=2 then output(“The password is wrong,insert again please”) else output(“Youve input wrong password 3 times,take the card down”) End if 58 2.5.3 SATM問題實現(xiàn)問題實現(xiàn)(續(xù)續(xù)) 續(xù)續(xù) if isPasswordRight= True then output(“choose the type of
31、 deal”) End if if inquire then output(“Your balance is ”,balance) if fetch then output (“input your number want to fetch”) input (“outputMoney”) if outputMoney= balance then output(“please take your money away”) currentMoney=balance+inputMoney else output(“your balance is not enough”) End if If deposit then 存款不足 Output(“insert your money”) End if End if 59 2.6 貨幣轉(zhuǎn)換器貨幣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)吧網(wǎng)絡方案
- 溝通技巧在匯報中的應用實踐
- 現(xiàn)代企業(yè)管理中的教育技術應用
- 現(xiàn)代企業(yè)供應鏈管理與優(yōu)化
- 生態(tài)城市規(guī)劃中的生態(tài)環(huán)境教育
- 國慶節(jié)的班隊活動方案
- 生命教育在職業(yè)教育中的價值與挑戰(zhàn)
- 國家公祭日動計方案
- Unit 1 School life Reading B 說課稿 -2024-2025學年高一上學期英語上外版(2020)必修第一冊
- 2023六年級英語上冊 Review Module Unit 1說課稿 外研版(三起)
- 探索者三維建筑結(jié)構建模設計軟件說明書
- 實驗動物飼養(yǎng)人員崗位競聘演講范文匯報報告范文
- 商業(yè)地產(chǎn)市場競品樓盤市場調(diào)研表格
- 社會治安視頻監(jiān)控系統(tǒng)項目技術及設計方案
- GB/T 709-2019熱軋鋼板和鋼帶的尺寸、外形、重量及允許偏差
- FZ/T 54007-2019錦綸6彈力絲
- DB11-T 291-2022日光溫室建造規(guī)范
- 2021-2022學年山東省淄博市高二(下)期末英語試卷(附答案詳解)
- 北師大版高中數(shù)學選修4-6初等數(shù)論初步全套課件
- 外貿(mào)業(yè)務員面試試卷
- 紀檢知識答題測試題及答案
評論
0/150
提交評論