《軟件工程5軟件編碼ppt課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件工程5軟件編碼ppt課件(50頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、第5章 軟件編碼掌握:掌握:程序設(shè)計(jì)語言分類、常見程序設(shè)計(jì)語言及其特點(diǎn)、程序設(shè)計(jì)語言的選擇、編碼規(guī)范、結(jié)構(gòu)化程序設(shè)計(jì)的方法。5.1 程序設(shè)計(jì)語言5.1.1 程序設(shè)計(jì)語言分類1.機(jī)器語言機(jī)器語言又稱“低級(jí)語言”,是以二進(jìn)制代碼表示的指令集合。占用內(nèi)存少、執(zhí)行效率高不易為人們理解、記憶和交流2.匯編語言匯編語言又稱符號(hào)語言。,它把計(jì)算機(jī)能識(shí)別的機(jī)器指令用符號(hào)表示用匯編語言編寫的程序更易理解、調(diào)試和維護(hù)3.高級(jí)語言與機(jī)器語言和匯編語言相比,高級(jí)語言比較容易理解和掌握,并且通用性好便于維護(hù),這極大地提高了編程的效率和程序的可靠件性用高級(jí)語言編寫的程序也不能直接被機(jī)器識(shí)別和執(zhí)行5.1.2 常見程序設(shè)計(jì)語
2、言及其特點(diǎn)1.C語言 C語言是一種編譯型計(jì)算機(jī)程序設(shè)計(jì)語言,它既有高級(jí)語言的特點(diǎn),又具有匯編語言的特點(diǎn)。C語言可以作為系統(tǒng)設(shè)計(jì)語言,編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序,因此,其應(yīng)用范圍十分廣泛。C語言的優(yōu)點(diǎn)包括:(1)簡潔緊湊、靈活方便。(2)運(yùn)算符豐富。(3)數(shù)據(jù)結(jié)構(gòu)豐富。(4)C語言是結(jié)構(gòu)式語言。(5)C語言的語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。(6)C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作(7)C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高。(8)C語言適用范圍大,可移植性好。2.C+其優(yōu)點(diǎn)主要包括:(1)與C語言兼容,既支持面向?qū)ο蟮某?/p>
3、序設(shè)計(jì),也支持結(jié)構(gòu)化的程序設(shè)計(jì)。(2)修補(bǔ)了C語言中的一些漏洞(3)生成的目標(biāo)程序質(zhì)量高,程序執(zhí)行效率高。(4)提供了異常處理機(jī)制,簡化了程序的出錯(cuò)處理。(5)函數(shù)可以重載并可以使用缺省參數(shù)。(6)提供了模板機(jī)制。3.Java Java的特點(diǎn)包括:(1)平臺(tái)無關(guān)性。(2)安全性。(3)面向?qū)ο蟆#?)分布式。(5)健壯性。4.Basic BASIC是Beginners All-purpose Symbolic Code(初學(xué)者通用符號(hào)指令代碼)的縮寫。BASIC語言是一種解釋執(zhí)行的會(huì)話語言,它簡單易學(xué),因此成為許多初學(xué)者學(xué)習(xí)程序設(shè)計(jì)的入門語言。5.C#C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于
4、.NET Framework之上的高級(jí)程序設(shè)計(jì)語言。C#看起來與Java驚人的相似,它也包括了諸如單一繼承、界面等特性,并具有與Java幾乎同樣的語法及編譯成中間代碼再運(yùn)行的過程。C#與Java的不同之處在于它與COM(組件對象模型)是直接集成的。6.FORTRAN FORTRAN是英文Formula Translator的縮寫,譯為“公式翻譯器”,它是世界上最早出現(xiàn)的計(jì)算機(jī)高級(jí)程序設(shè)計(jì)語言。Fortran語言的最大特點(diǎn)是接近數(shù)學(xué)公式的自然描述,以及具有很高的執(zhí)行效率。同時(shí),它易學(xué),語法嚴(yán)謹(jǐn),并可以直接對矩陣和復(fù)數(shù)進(jìn)行運(yùn)算。7.PASCAL Pascal是最早出現(xiàn)的結(jié)構(gòu)化編程語言,它具有豐富的
5、數(shù)據(jù)類型和簡潔靈活的操作語句,對于數(shù)值和非數(shù)值問題都具有很好的描述能力。Pascal語言現(xiàn)已成為使用最廣泛的基于DOS的語言之一,其主要特點(diǎn)有:嚴(yán)格的結(jié)構(gòu)化形式、豐富完備的數(shù)據(jù)類型、運(yùn)行效率高、查錯(cuò)能力強(qiáng)。8.COBOL COBOL是Common Business Oriented Language(面向商業(yè)的公用語言)的縮寫,這是商業(yè)數(shù)據(jù)處理中廣泛使用的一種標(biāo)準(zhǔn)語言。它具有出色的適合商業(yè)應(yīng)用的數(shù)據(jù)類型,能有效地支持與商業(yè)數(shù)據(jù)處理有關(guān)的各種技術(shù),適合于計(jì)算簡單、數(shù)據(jù)量大的應(yīng)用場合,廣泛應(yīng)用于商業(yè)領(lǐng)域。9.ALGOL ALGOL是結(jié)構(gòu)化語言的前驅(qū),它提供了特別豐富的過程構(gòu)造及數(shù)據(jù)類型構(gòu)造,在歐洲
6、得到了廣泛應(yīng)用。但是,PASCAL語言和C語言問世以后,它的位置就逐漸被取代了。10.Ada Ada是一種美國國防部為克服軟件開發(fā)危機(jī)而耗費(fèi)巨資,歷時(shí)近20年研制成功的表現(xiàn)能力很強(qiáng)的通用程序設(shè)計(jì)語言,它被譽(yù)為第四代計(jì)算機(jī)語言的成功代表。Ada語言體現(xiàn)了許多現(xiàn)代軟件的開發(fā)原理,并將這些原理付諸實(shí)現(xiàn)。Ada語言的使用大大提高了軟件系統(tǒng)的清晰性、可靠性、有效性、可維護(hù)性。11.LISP LISP(List Processor,鏈表處理語言)是由約翰麥卡錫在1960年左右創(chuàng)造的一種基于演算的函數(shù)式編程語言,它主要應(yīng)用于人工智能領(lǐng)域。12.Prolog Prolog(Programming in Log
7、ic)是一種邏輯編程語言,它建立在邏輯學(xué)的理論基礎(chǔ)之上,最初被運(yùn)用于自然語言等研究領(lǐng)域?,F(xiàn)在Prolog已廣泛應(yīng)用于人工智能的研究中,用來建造專家系統(tǒng)、自然語言理解、智能知識(shí)庫等。使用Prolog能夠比使用其他語言更快速地開發(fā)程序,因?yàn)樗木幊谭椒ǜ袷鞘褂眠壿嫷恼Z言來描述程序。13.SmallTalk Smalltalk 被公認(rèn)為歷史上第二個(gè)面向?qū)ο蟮某绦蛟O(shè)計(jì)語言和第一個(gè)真正的集成開發(fā)環(huán)境(IDE),它由Alan Kay,Dan Ingalls,Ted Kaehler,Adele Goldberg等于20世紀(jì)70年代初在Xerox PARC開發(fā)。5.1.3 程序設(shè)計(jì)語言的選擇 開發(fā)人員在選擇
8、程序設(shè)計(jì)語言時(shí),應(yīng)考慮以下因素:1.應(yīng)用領(lǐng)域 2.算法與數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性 3.軟件執(zhí)行的環(huán)境 4.軟件執(zhí)行的效率5.2 編碼規(guī)范5.2.1 編排格式1.采用縮進(jìn)風(fēng)格2.控制代碼行寬度 3.使用空格字符實(shí)現(xiàn)縮進(jìn)4.適當(dāng)?shù)厥褂每招?.不允許把多個(gè)短語句寫在一行中6.適當(dāng)使用空格5.2.2 命名規(guī)則 (1)盡量采用有意義的名字命名。(2)名字的長度無限制,但也不宜過長。(3)如果名字使用縮寫,那么縮寫規(guī)則須保持一致。5.2.3 注釋 (1)每一個(gè)注釋都應(yīng)當(dāng)有用,應(yīng)避免無意義的注釋。(2)合理使用序言性注釋和功能性注釋。以下一段代碼是序言性注釋的例子:/*名稱:求平均值函數(shù) 功能:計(jì)算數(shù)組的平均值 輸
9、入:score 數(shù)組,元素類型為float,代表分?jǐn)?shù) n 數(shù)組中元素的個(gè)數(shù) 返回值:score數(shù)組中所有元素的平均值 使用舉例:aver=average(score,n)作者:張*11/12/2008 版本號(hào):1.1 */float average(score,n)int n;float score;int i;float score;for(i=1;in;i+)sum=sum+socrei;aver=sum/n;return(aver);以下一段代碼是功能性注釋的例子:/*對每月銷售額求和*/TOTAL=AMOUNTTOTAL (3)對函數(shù)、過程、方法、變量等合理命名,可增加代碼的可讀性,從
10、而減少不必要的注釋。(4)注釋格式應(yīng)該盡量保持統(tǒng)一。5.2.4 輸入/輸出(1)對所有輸入數(shù)據(jù)都進(jìn)行檢驗(yàn),以保證每個(gè)數(shù)據(jù)的有效性。例如,某系統(tǒng)中身份證號(hào)字段的輸入,設(shè)計(jì)校驗(yàn)規(guī)則為:保證其不為空,并且由18位的純數(shù)字組成。(2)檢查輸入項(xiàng)重要組合的合法性。(3)保持輸入格式和輸入步驟的簡單。(4)使用數(shù)據(jù)結(jié)構(gòu)標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目。(5)明確提示交互式輸入的請求,詳細(xì)說明可用的選擇或邊界數(shù)值。(6)當(dāng)程序設(shè)計(jì)語言的格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式一致。(7)設(shè)計(jì)良好的輸出報(bào)表。(8)給所有輸出數(shù)據(jù)加標(biāo)志。(9)當(dāng)程序設(shè)計(jì)語言對輸入/輸出格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式與輸入語句的要求一
11、致。5.2.5 程序結(jié)構(gòu)程序結(jié)構(gòu)應(yīng)符合以下原則:(1)盡量避免使用復(fù)雜的條件測試。(2)盡量減少對“非”條件的測試。(3)避免過多使用循環(huán)嵌套和條件嵌套。(4)利用括號(hào)使邏輯表達(dá)式和算術(shù)表達(dá)式的運(yùn)算次序清晰、直觀。(5)盡可能使用庫函數(shù)。5.2.6 效率和GOTO語句1.效率一般來說,對效率的追求需要明確以下幾點(diǎn):(1)效率是一個(gè)性能要求,其目標(biāo)在需求分析階段就應(yīng)給出。(2)追求效率應(yīng)建立在不損害程序可讀性或可靠性的基礎(chǔ)上,要先使程序正確,再提高程序效率;先使程序清晰,再提高程序效率。(3)提高程序效率的根本途徑在于選擇良好的設(shè)計(jì)方法、良好的數(shù)據(jù)結(jié)構(gòu)算法。根據(jù)有關(guān)資料,以下原則對提高程序效率有
12、一些幫助:(1)在編碼之前,先化簡算術(shù)表達(dá)式和邏輯表達(dá)式。(2)特別注意嵌套的循環(huán),以確定是否有語句可以從循環(huán)內(nèi)層移到循環(huán)外層。(3)盡量避免使用多維數(shù)組和復(fù)雜的表格。(4)盡量使用執(zhí)行時(shí)間短的算術(shù)運(yùn)算。(5)盡量避免混合使用不同數(shù)據(jù)類型的量。(6)盡量使用整型算術(shù)表達(dá)式和邏輯表達(dá)式。2.GOTO語句 近年來,關(guān)于“一切GOTO語句都是有害的”的論斷是否正確的爭論仍在繼續(xù),是否應(yīng)當(dāng)去掉GOTO語句還未有定論。因此,除非確實(shí)需要,否則最好不使用GOTO語句;確實(shí)需要GOTO語句時(shí),也要限制使用的范圍,特別要避免GOTO語句相互交叉的情況發(fā)生。5.3 結(jié)構(gòu)化程序設(shè)計(jì)5.3.1 結(jié)構(gòu)化程序設(shè)計(jì)的形成
13、1968年,Dijskstra在計(jì)算機(jī)通訊上發(fā)表文章,提出了“結(jié)構(gòu)化程序設(shè)計(jì)”的思想。結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用“自頂向下,逐步求精”的程序設(shè)計(jì)方法和“單入口單出口”的控制結(jié)構(gòu)。5.3.2 結(jié)構(gòu)化程序設(shè)計(jì)方法1.程序流程的基本結(jié)構(gòu)1)順序結(jié)構(gòu)語句形式如下:語句A語句B2)選擇結(jié)構(gòu)單分支結(jié)構(gòu)如圖4-8所示,相應(yīng)的語句形式如下:if(條件P)語句Aelse 語句B多分支結(jié)構(gòu)如圖4-9所示,相應(yīng)的語句形式如下:switch(V)case V1:語句A1 case V2:語句A2 case Vn:語句An default:語句An+13)循環(huán)結(jié)構(gòu)while循環(huán)語句形式為:while(條件表達(dá)式P)語句Auntil循環(huán)語句形式為:do 語句A until(條件表達(dá)式P)2.自頂向下,逐步求精 結(jié)構(gòu)化程序設(shè)計(jì)遵循的是自頂而下,逐步求精的設(shè)計(jì)方法。在分析一個(gè)問題的編程思路時(shí),先將該問題分成若干個(gè)大的步驟;然后對每一步驟再進(jìn)行細(xì)化,分成若干個(gè)小的步驟。這樣逐級(jí)劃分,直到最后能將每一個(gè)步驟直接翻譯成為相應(yīng)的計(jì)算機(jī)語言指令。5.4 編程與程序員的基本素質(zhì) 要成為一名合格的程序員,不僅要具備編程功底和動(dòng)手能力,還需要具備以下素質(zhì) 1團(tuán)隊(duì)精神和協(xié)作能力 2文檔習(xí)慣 3規(guī)范化和標(biāo)準(zhǔn)化的代碼編寫習(xí)慣 4復(fù)用性與模塊化思維能力 5測試習(xí)慣 6學(xué)習(xí)和總結(jié)的能力 第第5章章 結(jié)束結(jié)束 謝謝!