軟件技術(shù)基礎(chǔ)小論文

軟件技術(shù)基礎(chǔ)小論文

ID:46221956

大?。?7.61 KB

頁數(shù):12頁

時(shí)間:2019-11-21

軟件技術(shù)基礎(chǔ)小論文_第1頁
軟件技術(shù)基礎(chǔ)小論文_第2頁
軟件技術(shù)基礎(chǔ)小論文_第3頁
軟件技術(shù)基礎(chǔ)小論文_第4頁
軟件技術(shù)基礎(chǔ)小論文_第5頁
資源描述:

《軟件技術(shù)基礎(chǔ)小論文》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、《數(shù)據(jù)結(jié)構(gòu)》課程論文報(bào)告書題目:表達(dá)式求值系另0:學(xué)號:學(xué)生姓名:目錄—1=4A2.概要設(shè)計(jì)2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)2.2算法設(shè)計(jì)2.3ADT描述2.4功能模塊分析A3.詳細(xì)設(shè)計(jì)3.1數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)3.2主要算法流程圖(或算法代碼)A4.軟件測試A5.總結(jié)1.前在計(jì)算機(jī)中,算術(shù)表達(dá)式山常量、變量、運(yùn)算符和括號組成。山于不同的運(yùn)算符具有不同的優(yōu)先級,又??紤]括號,因此,算術(shù)表達(dá)式的求值不對能嚴(yán)格地從左到右進(jìn)行。因而在程序設(shè)計(jì)時(shí),借助棧實(shí)現(xiàn)。算法輸入:一個(gè)算術(shù)表達(dá)式,由常量、變量、運(yùn)算符和括號組成(以字符串形式輸入)。為簡化

2、,規(guī)定操作數(shù)只能為正整數(shù),操作符為+、-*、/,用#表示結(jié)朿。算法輸出:表達(dá)式運(yùn)算結(jié)果。算法耍點(diǎn):設(shè)置運(yùn)算符棧和運(yùn)算數(shù)棧輔助分析算符優(yōu)先關(guān)系。在讀入表達(dá)式的字符序列的同時(shí),完成運(yùn)算符和運(yùn)算數(shù)的識(shí)別處理,以及相應(yīng)運(yùn)算。2.概要設(shè)計(jì)2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)任何一個(gè)表達(dá)式都是山操作符,運(yùn)算符和界限符組成的。我們分別用順序棧來寄存衣達(dá)式的操作數(shù)和運(yùn)算符。棧是限定于緊僅在表尾進(jìn)行插入或刪除操作的線性表。順序棧的存儲(chǔ)結(jié)構(gòu)是利用一?紐連續(xù)的存儲(chǔ)單元依次存放自棧底到棧頂?shù)臄?shù)據(jù)元索,同時(shí)附設(shè)指針top指示棧頂元素在順序棧中的位置,base為

3、棧底指針,在順序棧中,它始終指向棧底,即top二base可作為??盏臉?biāo)記,每當(dāng)插入新的棧頂元索時(shí),指針top增1,刪除棧頂元索時(shí),指針top減1。2.2算法設(shè)計(jì)為了實(shí)現(xiàn)算符優(yōu)先算法??梢允褂脙蓚€(gè)工作棧。一個(gè)稱為0PTR,用以寄存運(yùn)算符,另一個(gè)稱做0PND,用以寄存操作數(shù)或運(yùn)算結(jié)果。1?首先置操作數(shù)棧為空棧,表達(dá)式起始符”#”為運(yùn)算符棧的棧底元素;2.依次讀入表達(dá)式,若是操作符即進(jìn)0PND棧,若是運(yùn)算符則和0PTR棧的棧頂運(yùn)算符比較優(yōu)先權(quán)后作相應(yīng)的操作,直至整個(gè)表達(dá)式求值完畢(即0PTR棧的棧頂元素和當(dāng)前讀入的字符均為

4、”#”)。2.3ADT描述ADTStack{數(shù)據(jù)對象:D={a-IEElemSet,i=l,2,???,n,nMO}數(shù)據(jù)對象:R1二{<%,%_]>

5、勺_],勺w£),i=2,…,n}約定a”端為棧頂,曾端為棧底?;静僮鳎篒nitStack(&S)操作結(jié)果:構(gòu)造一個(gè)空棧S。GetTop(S)初始條件:棧S己存在。操作結(jié)果:用P返回S的棧頂元素。Push(&S,ch)初始條件:棧S已存在。操作結(jié)果:插入元素ch為新的棧頂元素。Pop(&S)初始條件:棧S已存在。操作結(jié)果:刪除S的棧頂元素。In(ch)操作結(jié)果:判斷字

6、符是否是運(yùn)算符,運(yùn)算符即返冋1。Precede(cl,c2)初始條件:cl,c2為運(yùn)算符。操作結(jié)果:判斷運(yùn)算符優(yōu)先權(quán),返回優(yōu)先權(quán)窩的。Operate(a,op,b)初始條件:a,b為整數(shù),op為運(yùn)算符。操作結(jié)果:a與b進(jìn)行運(yùn)算,op為運(yùn)算符,返冋其值。num(n)操作結(jié)杲:返回操作數(shù)的長度。EvalExpr()初始條件:輸入表達(dá)式合法。操作結(jié)果:返回表達(dá)式的最終結(jié)果。}ADTStack2.4功能模塊分析1.棧的棊本功能。InitStack(Stack*s)和InitStack2(Stack2*s)分別構(gòu)造運(yùn)算符棧與構(gòu)

7、造操作數(shù)棧,Push(Stack*s,charch)運(yùn)算符棧插入ch為新的棧頂元素,Push2(Stack2*s,intch)操作數(shù)棧插入ch為新的棧頂元素,Pop(Stack*s)刪除運(yùn)算符棧s的棧頂元素,川p返回其值,Pop2(Stack2*s)刪除操作數(shù)棧s的棧頂元素,用p返回其值,GetTop(Stacks)用p返回運(yùn)算符棧s的棧頂元素,GetTop2(Stack2s)用p返回操作數(shù)棧s的棧頂元素。1.其它功能分析。(l)Tn(charch)判斷字符是否是運(yùn)算符功能,運(yùn)算符即返回1,該功能只需簡單的一條語句即

8、可實(shí)現(xiàn)return(ch二二'+'

9、

10、ch二二'-'

11、

12、ch二二'*'

13、

14、ch二二'/'

15、

16、ch二二'('

17、

18、ch二二')'

19、

20、ch二二'#')。(2)Precede(charcl,charc2)判斷運(yùn)算符優(yōu)先權(quán)功能,該函數(shù)判斷運(yùn)算符cl,c2的優(yōu)先權(quán),具休優(yōu)先關(guān)系參照表1。(3)Operate(inta,charop,intb)操作數(shù)用對應(yīng)的運(yùn)算符進(jìn)行運(yùn)算功能。運(yùn)算結(jié)果直接返冋。(4)nn)求操作數(shù)的長度功能,需要用itoa函數(shù)把int型轉(zhuǎn)換成字符串型,strlen函數(shù)可求字符長度。(5)EvalExpr()主要操

21、作函數(shù)運(yùn)算功能。分析詳細(xì)見“3?詳細(xì)設(shè)計(jì)…3.2”。2.1數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)因?yàn)楸磉_(dá)式是由操作符,運(yùn)算符和界限符組成的。如果只用一個(gè)char類型棧,不能滿足2位以上的整數(shù),所以還需要定義一個(gè)int類型的棧川來寄存操作數(shù)。/*定義字符類型棧*/typedefstruct{intstacksize;char*base;char*top;}Stack;

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。