軟件工程CH06編碼_第1頁(yè)
軟件工程CH06編碼_第2頁(yè)
軟件工程CH06編碼_第3頁(yè)
軟件工程CH06編碼_第4頁(yè)
軟件工程CH06編碼_第5頁(yè)
已閱讀5頁(yè),還剩114頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2023/6/10[軟件工程]CH06編碼[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第1頁(yè)。2023/6/102第六章編碼效果定義可行性研討可行否?否是需求剖析終止項(xiàng)目計(jì)劃時(shí)期開發(fā)時(shí)期主要內(nèi)容6.1編碼概念6.2順序設(shè)計(jì)言語(yǔ)6.3編碼作風(fēng)6.4編碼工具概要/詳細(xì)設(shè)計(jì)編碼[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第2頁(yè)。2023/6/1036.1編碼概念順序設(shè)計(jì)言語(yǔ)的特性、順序設(shè)計(jì)作風(fēng)會(huì)深上天影響軟件的質(zhì)量和可維護(hù)性。概要設(shè)計(jì)報(bào)告詳細(xì)設(shè)計(jì)報(bào)告源順序清單順序設(shè)計(jì)言語(yǔ)[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第3頁(yè)。2023/6/1046.1編碼概念【㈠目的】發(fā)作正確牢靠、簡(jiǎn)明明晰、具有較高效率的源順序?!菊f(shuō)明】⒈源代碼越是清楚和簡(jiǎn)明,就越便于驗(yàn)證源代碼和設(shè)計(jì)文檔的分歧性,越容易對(duì)它中止測(cè)試和維護(hù);⒉明晰和效率卻經(jīng)常會(huì)有矛盾,明晰性好的順序普通效率較低,而要求效率高的順序往往明晰度不太好;⒊關(guān)于大少數(shù)模塊,編碼時(shí)應(yīng)該把簡(jiǎn)明明晰放在第一位。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第4頁(yè)。2023/6/105面向進(jìn)程與面向?qū)ο缶幊堂嫦蜻M(jìn)程就是剖析出處置效果所需求的步驟,然后用函數(shù)把這些步驟一步一步完成,運(yùn)用的時(shí)分一個(gè)一個(gè)依次調(diào)用。面向?qū)ο笫前褬?gòu)成效果事務(wù)分解成各個(gè)對(duì)象,樹立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描敘某個(gè)事物在整個(gè)處置效果的步驟中的行為。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第5頁(yè)。2023/6/1066.1編碼概念【㈠目的】發(fā)作正確牢靠、簡(jiǎn)明明晰、具有較高效率的源順序。【㈡自頂向下,逐漸求精】把一個(gè)模塊的功用逐漸分解。詳細(xì)設(shè)計(jì)模塊功用細(xì)化為一系列詳細(xì)的步驟。編碼階段用順序設(shè)計(jì)言語(yǔ)翻譯成一系列的順序。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第6頁(yè)。2023/6/1076.1編碼概念例:用挑選法求100以內(nèi)的素?cái)?shù)。(從2到100中去掉素?cái)?shù)2,3,5,7的倍數(shù),剩下的就是100以內(nèi)的素?cái)?shù)。)【⒈先按順序功用寫出一個(gè)框架】main(){//1、樹立2到100的數(shù)組A[],其中A[i]=i//2、樹立2到10的素?cái)?shù)表B[]//3、假定A[i]=i是B[]中任一數(shù)的倍數(shù),那么剔除A[i]//4、輸入A[]中一切沒有被剔除的數(shù)}[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第7頁(yè)。2023/6/1086.1編碼概念例:用挑選法求100以內(nèi)的素?cái)?shù)?!劲矊?duì)框架中的局部再做細(xì)化,失掉整個(gè)順序】main(){for(i=2;i<=100;i++)A[i]=i; //1B[1]=2;B[2]=3;B[3]=5;B[4]=7; //2for(j=1;j<=4;j++){/*3.1反省A[]一切的數(shù)能否被B[j]整除并將能被整除的數(shù)從A[]中剔除*/}for(i=2;i<=100;i++){/*4.1假定A[i]沒有被剔除,那么輸入*/}}[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第8頁(yè)。2023/6/1096.1編碼概念例:用挑選法求100以內(nèi)的素?cái)?shù)?!劲矊?duì)框架中的局部再做細(xì)化,失掉整個(gè)順序】main(){……for(j=1;j<=4;j++){for(i=2;i<=100;i++){if(0==A[i]%B[j])A[i]=0;//3.1}}for(i=2;i<=100;i++){if(A[i]!=0)printf(〝A[%d]=%d\n〞,i,A[i]);//4.1}}[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第9頁(yè)。2023/6/10106.1編碼概念【㈡自頂向下,逐漸求精】?jī)?yōu)點(diǎn):⑴契合人們處置復(fù)雜效果的普遍規(guī)律。可提高軟件開發(fā)的成功率和消費(fèi)率。⑵用先全局后局部,先籠統(tǒng)后詳細(xì)的進(jìn)程開收回來(lái)的順序具有明晰的層次結(jié)構(gòu)。同一層節(jié)點(diǎn)的細(xì)化義務(wù)相互獨(dú)立。每一步義務(wù)僅在下層節(jié)點(diǎn)的基礎(chǔ)上做不多的設(shè)計(jì)擴(kuò)展。有利于設(shè)計(jì)的分工和組織義務(wù)。有利于編碼、測(cè)試和集成。順序明晰和模塊化強(qiáng)。在修正和重新設(shè)計(jì)一個(gè)軟件時(shí),可復(fù)用的代碼量大。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第10頁(yè)。2023/6/10116.2順序設(shè)計(jì)言語(yǔ)順序設(shè)計(jì)言語(yǔ)指編寫計(jì)算機(jī)順序所用的言語(yǔ),是人與計(jì)算機(jī)中止交流的工具。計(jì)算機(jī)硬件僅僅知道0和1有效果需求計(jì)算機(jī)處置的人交流的鴻溝[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第11頁(yè)。2023/6/10126.2順序設(shè)計(jì)言語(yǔ)順序設(shè)計(jì)言語(yǔ)指編寫計(jì)算機(jī)順序所用的言語(yǔ),是人與計(jì)算機(jī)中止交流的工具。順序設(shè)計(jì)言語(yǔ)計(jì)算機(jī)硬件僅僅知道0和1有效果需求計(jì)算機(jī)處置的人[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第12頁(yè)。2023/6/10136.2.1順序設(shè)計(jì)言語(yǔ)分類按展開進(jìn)程,順序設(shè)計(jì)言語(yǔ)分為:低級(jí)言語(yǔ)初級(jí)言語(yǔ)硬件依賴于機(jī)器系統(tǒng)軟件硬件獨(dú)立于機(jī)器機(jī)器語(yǔ)言匯編語(yǔ)言[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第13頁(yè)。2023/6/10146.2.1順序設(shè)計(jì)言語(yǔ)分類按展開進(jìn)程,順序設(shè)計(jì)言語(yǔ)分為:低級(jí)言語(yǔ)③初級(jí)言語(yǔ)①機(jī)器語(yǔ)言②匯編語(yǔ)言人工智能Lisp、Prolog用于軍事Ada[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第14頁(yè)。2023/6/10154GL-第四代言語(yǔ)-14GL以數(shù)據(jù)庫(kù)管理系統(tǒng)所提供的功用為中心,進(jìn)一步結(jié)構(gòu)了開發(fā)高層軟件系統(tǒng)的開發(fā)環(huán)境,如報(bào)表生成、多窗口表格設(shè)計(jì)、菜單生成系統(tǒng)等,為用戶提供了一個(gè)良好的運(yùn)用開發(fā)環(huán)境。4GL復(fù)雜易學(xué),用戶界面良好,提供了功用弱小的非進(jìn)程化效果定義手段,用戶只需告知系統(tǒng)做什么,而無(wú)需說(shuō)明怎樣做4GL的代表性軟件系統(tǒng)有:Oracle運(yùn)用開發(fā)環(huán)境、SQLWindows、PowerBuilder、Delphi和INFORMOX-4GL等[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第15頁(yè)。2023/6/10164GL-第四代言語(yǔ)-2由于近代軟件工程實(shí)踐所提出的大局部技術(shù)和方法并未遭到普遍的歡迎和采用,軟件供求矛盾進(jìn)一步好轉(zhuǎn),軟件的開發(fā)本錢日益增長(zhǎng),招致了所謂〝新軟件危機(jī)〞。這既暴露了傳統(tǒng)開發(fā)模型的缺乏,又說(shuō)明了單純以休息力密集的方式來(lái)支持軟件消費(fèi),已不再順應(yīng)社會(huì)信息化的要求,必需尋求更高效、自動(dòng)化水平更高的軟件開發(fā)工具來(lái)支持軟件消費(fèi)。4GL就是在這種背景下應(yīng)運(yùn)而生并展開壯大的。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第16頁(yè)。2023/6/10174GL-第四代言語(yǔ)-34GL應(yīng)具有的規(guī)范(1)消費(fèi)率:4GL一出現(xiàn),就是以大幅度提高軟件消費(fèi)率為己任的,4GL應(yīng)比3GL提高消費(fèi)率一個(gè)數(shù)量級(jí)以上。(2)非進(jìn)程化:4GL基本上應(yīng)該是面向效果的,即只需告知計(jì)算機(jī)〝做什么〞,而不用告知計(jì)算機(jī)〝怎樣做〞。當(dāng)然4GL為了順應(yīng)復(fù)雜的運(yùn)用,而這些運(yùn)用是無(wú)法〝非進(jìn)程化〞的,就允許保管進(jìn)程化的言語(yǔ)成分,但非進(jìn)程化應(yīng)是4GL的主要特征。(3)用戶界面:4GL應(yīng)具有良好的用戶界面,應(yīng)該復(fù)雜、易學(xué)、易掌握,運(yùn)用方便、靈敏。(4)功用:4GL要具有生命力,不能適用范圍太窄,在某一范圍內(nèi)應(yīng)具有通用性。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第17頁(yè)。2023/6/10184GL-第四代言語(yǔ)-4(1)4GL雖然功用弱小,但在其全體才干上卻與3GL有一定的差距。這一方面是言語(yǔ)籠統(tǒng)級(jí)別提高;另一方面是人為帶來(lái)的,許多4GL只面向?qū)m?xiàng)運(yùn)用。有的4GL為了提高對(duì)效果的表達(dá)才干,提供了同3GL的接口,以補(bǔ)償其才干上的缺乏。如Oracle提供了可將SQL語(yǔ)句嵌入C順序中的工具PRO*C。(2)4GL系統(tǒng)開支龐大,運(yùn)轉(zhuǎn)效率低下,對(duì)軟硬件資源消耗嚴(yán)重,運(yùn)用受硬件限制。(3)由于缺乏分歧的工業(yè)規(guī)范,4GL產(chǎn)品花招單一,用戶界面差異很大,與詳細(xì)的機(jī)器聯(lián)絡(luò)嚴(yán)密,言語(yǔ)的獨(dú)立性較差(SQL稍好),影響了運(yùn)用軟件的移植與推行。(4)目前4GL主要面向基于數(shù)據(jù)庫(kù)運(yùn)用的范圍,不宜于迷信計(jì)算、高速的實(shí)時(shí)系統(tǒng)和系統(tǒng)軟件開發(fā)。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第18頁(yè)。2023/6/10194GL-第四代言語(yǔ)-5分類1.查詢言語(yǔ)和報(bào)表生成器查詢言語(yǔ)是數(shù)據(jù)庫(kù)管理系統(tǒng)的主要工具,它提供用戶對(duì)數(shù)據(jù)庫(kù)中止查詢的功用。有的查詢言語(yǔ)(如SQL)實(shí)際上還包括有查詢、操縱、定義、控制四種功用。報(bào)表生成器是為用戶提供的自動(dòng)發(fā)作報(bào)表的重要工具,它提供非進(jìn)程化的描畫手段讓用戶很方便地依據(jù)數(shù)據(jù)庫(kù)中的信息來(lái)生成報(bào)表,如ADF[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第19頁(yè)。2023/6/10204GL-第四代言語(yǔ)-52.圖形言語(yǔ)圖形信息較之一維的字符串、二維的表格信息更為直觀、鮮明。目前較有代表性的是Gupta公司開發(fā)的SQLWindows系統(tǒng)。它以SQL言語(yǔ)為引擎,讓用戶在屏幕上以圖形方式定義用戶需求,系統(tǒng)自動(dòng)生成相應(yīng)的源順序〔還具有面向?qū)ο蟮墓τ谩?,用戶可修正或添加這些源順序,從而完成運(yùn)用開發(fā)。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第20頁(yè)。2023/6/10214GL-第四代言語(yǔ)-63.運(yùn)用生成器運(yùn)用生成器是重要的一類綜合的4GL工具,它用來(lái)生成完整的運(yùn)用系統(tǒng)。運(yùn)用生成器讓用戶不用運(yùn)用多個(gè)軟件,而只用這樣一個(gè)綜合工具來(lái)完成多種功用。運(yùn)用生成器按其運(yùn)用對(duì)象可以分為交互式和編程式二類。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第21頁(yè)。2023/6/10224GL-第四代言語(yǔ)-7交互式:FOCUS、RAMIS、MAPPER、UFO、NOMAD、SAS等。它們效力于維護(hù)、預(yù)備和處置報(bào)表,允許用戶以可見的交互方式在終端上創(chuàng)立文件、報(bào)表和中止其它的處置。運(yùn)用開發(fā)環(huán)境目前較有代表性的有PowerBuilder和Oracle。Oracle提供的SQL*FORMS、SQL*MENU、SQL*REPORTWRITER等工具樹立在SQL言語(yǔ)基礎(chǔ)之上,借助了數(shù)據(jù)庫(kù)管理系統(tǒng)弱小的功用,讓用戶交互式地定義需求,系統(tǒng)生成相應(yīng)的屏幕格式、菜單和打印報(bào)表。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第22頁(yè)。2023/6/10234GL-第四代言語(yǔ)-8編程式運(yùn)用生成器:是為建造復(fù)雜系統(tǒng)的專業(yè)順序人員設(shè)計(jì)的,如NATURAL、FOXPRO、MANTIS、IDEAL、CSP、DMS、INFO、LINC、FORMAL、APPLICATIONFACTORY以及作者設(shè)計(jì)的OO-HLL等。這一類4GL中有許多是順序生成器(ProgramGenerator),如LINC生成COBOL順序,F(xiàn)ORMAL生成PASCAL順序等。為了提供專業(yè)人員建造復(fù)雜的運(yùn)用系統(tǒng),有的言語(yǔ)具有很強(qiáng)的進(jìn)程化描畫才干。雖然語(yǔ)句的方式有差異,其實(shí)質(zhì)與3GL的進(jìn)程化語(yǔ)句相反,如Informix-4GL和Oracle的PRO*C。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第23頁(yè)。2023/6/10244GL-第四代言語(yǔ)-94.方式規(guī)格說(shuō)明言語(yǔ)軟件規(guī)格說(shuō)明是對(duì)軟件應(yīng)滿足的需求、功用、功用及其它重要方面的陳說(shuō),是軟件開發(fā)的基礎(chǔ),有軟件的需求規(guī)格說(shuō)明、功用規(guī)格說(shuō)明、設(shè)計(jì)規(guī)格說(shuō)明等。用來(lái)書寫規(guī)格說(shuō)明的言語(yǔ)稱為規(guī)格說(shuō)明言語(yǔ)。傳統(tǒng)的規(guī)格說(shuō)明言語(yǔ)是自然言語(yǔ)。在我國(guó),主要運(yùn)用現(xiàn)代漢語(yǔ)來(lái)表達(dá)軟件的規(guī)格說(shuō)明。自然言語(yǔ)為開發(fā)者和用戶所熟習(xí),易于運(yùn)用。但也會(huì)不可防止地將自然言語(yǔ)的歧義性、不準(zhǔn)確性引入到軟件規(guī)格說(shuō)明中,從而給軟件的開發(fā)和軟件的質(zhì)量帶來(lái)隱患。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第24頁(yè)。2023/6/10254GL-第四代言語(yǔ)-10方式的規(guī)格說(shuō)明言語(yǔ)那么很好地處置了上述效果,而且還是軟件自動(dòng)化的基礎(chǔ)。從方式的需求規(guī)格說(shuō)明和功用規(guī)格說(shuō)明動(dòng)身,可以自動(dòng)或半自動(dòng)地轉(zhuǎn)換成某種可執(zhí)行的言語(yǔ)〔如初級(jí)言語(yǔ)〕。需求規(guī)格說(shuō)明和功用規(guī)格說(shuō)明是面向效果、非進(jìn)程化的,因此屬于4GL。這一類言語(yǔ)有Z、NPL、SPECINT以及作者設(shè)計(jì)的JAVASPEC。設(shè)計(jì)規(guī)格說(shuō)明言語(yǔ)由于包括了大批進(jìn)程化成分,原那么上不應(yīng)劃入4GL。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第25頁(yè)。2023/6/10264GL-第四代言語(yǔ)-11展開趨向:4GL與面向?qū)ο蠹夹g(shù)將進(jìn)一步結(jié)合支持網(wǎng)絡(luò)散布式運(yùn)用開發(fā)4GL將出現(xiàn)理想上的工業(yè)規(guī)范受限的自然言語(yǔ)加圖形作為用戶界面4GL將進(jìn)一步與人工智能相結(jié)合4GL繼續(xù)需求數(shù)據(jù)庫(kù)管理系統(tǒng)的支持4GL要求軟件開發(fā)方法發(fā)作改造[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第26頁(yè)。2023/6/1027第五代言語(yǔ)第五代言語(yǔ)就是自然言語(yǔ)又被稱為知識(shí)庫(kù)言語(yǔ)或人工智能言語(yǔ),目的是最接近日常生活所用言語(yǔ)的順序文語(yǔ)。目前并沒有真正意義上的第五代言語(yǔ),LISP和PROLOG號(hào)稱第五代言語(yǔ),其實(shí)還遠(yuǎn)遠(yuǎn)不能抵達(dá)自然言語(yǔ)的要求。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第27頁(yè)。2023/6/10286.2.3順序設(shè)計(jì)言語(yǔ)的選擇由于軟件系統(tǒng)的絕大局部紅本用于生命周期的測(cè)試、維護(hù)階段,所以容易測(cè)試和容易維護(hù)十分重要?!具x擇編程言語(yǔ)的閱歷準(zhǔn)那么】⑴系統(tǒng)用戶的要求;⑵選擇適宜運(yùn)用范圍的言語(yǔ);⑶可以運(yùn)用的編譯順序編譯順序能否可以運(yùn)轉(zhuǎn)在目的系統(tǒng)的環(huán)境中。⑷可以失掉的軟件工具能否有支持某種言語(yǔ)順序開發(fā)的軟件工具可以運(yùn)用[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第28頁(yè)。2023/6/10296.2.3順序設(shè)計(jì)言語(yǔ)的選擇由于軟件系統(tǒng)的絕大局部紅本用于生命周期的測(cè)試、維護(hù)階段,所以容易測(cè)試和容易維護(hù)十分重要。【選擇編程言語(yǔ)的閱歷準(zhǔn)那么】⑸軟件可移植性要求假定目的系統(tǒng)將在不同類型的設(shè)備上運(yùn)轉(zhuǎn),或許預(yù)期的運(yùn)用壽命很長(zhǎng),那么選擇一種規(guī)范化順序高、順序可移植性好的言語(yǔ)就是很重要的⑹人的要素盡量選用順序員和系統(tǒng)維護(hù)人員熟習(xí)的言語(yǔ)環(huán)境,以節(jié)省開發(fā)時(shí)間,也有利于未來(lái)運(yùn)用和維護(hù)義務(wù)⑺工程規(guī)模[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第29頁(yè)。2023/6/10306.2.3順序設(shè)計(jì)言語(yǔ)的選擇[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第30頁(yè)。2023/6/1031TIOBE編程言語(yǔ)社區(qū)排行榜TIOBE編程言語(yǔ)社區(qū)排行榜是編程言語(yǔ)盛行趨向的一個(gè)目的,每月更新。這份排行榜排名基于互聯(lián)網(wǎng)上有閱歷的順序員、課程和第三方廠商的數(shù)量。排名運(yùn)用著名的搜索引擎〔諸如Google、MSN、雅虎〕以及Wikipedia和YouTube中止計(jì)算。這個(gè)排行榜只是反映某個(gè)編程言語(yǔ)的搶手水平,并不能說(shuō)明一門編程言語(yǔ)好不好,或許一門言語(yǔ)所編寫的代碼數(shù)量多少。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第31頁(yè)。TIOBE-2021082023/6/1032[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第32頁(yè)。2023/6/1033世界前10位言語(yǔ)2002-2021[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第33頁(yè)。2023/6/1034〔1〕C言語(yǔ)優(yōu)點(diǎn)〔1〕C言語(yǔ)靈敏性好,效率高,可以接觸到軟件開發(fā)比擬底層的東西?!?〕微軟的MFC庫(kù)胸?zé)o點(diǎn)墨,學(xué)會(huì)它可以讓為所欲為地中止編程?!?〕VC是微軟制造的產(chǎn)品,與操作系統(tǒng)的結(jié)合愈加嚴(yán)密。缺陷對(duì)運(yùn)用者的要求比擬高,既要具有豐厚的C言語(yǔ)編程閱歷,又要具有一定的WINDOWS編程基礎(chǔ)。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第34頁(yè)。2023/6/1035〔1〕C言語(yǔ)集成開發(fā)工具常用的IDE〔集成開發(fā)環(huán)境〕:MicrosoftVisualC++,BorlandC++,WatcomC++,BorlandC++Builder,GNUDJGPPC++,Lccwin32CCompiler3.1,MicrosoftC,HighC,TurboCMFC特點(diǎn)〔1〕微軟的MFC庫(kù)胸?zé)o點(diǎn)墨,學(xué)會(huì)它可以讓為所欲為地中止編程〔2〕對(duì)運(yùn)用者的要求比擬高,既要具有豐厚的C言語(yǔ)編程閱歷,又要具有一定的WINDOWS編程基礎(chǔ)〔3〕可視化開發(fā)環(huán)境缺乏優(yōu)勢(shì)[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第35頁(yè)。2023/6/1036〔2〕JAVA言語(yǔ)Java言語(yǔ)最是降生于1991年,后來(lái)被稱為OAK言語(yǔ),是SUN公司為一些消費(fèi)性電子產(chǎn)品而設(shè)計(jì)的一個(gè)通用環(huán)境。在Java出現(xiàn)以前。Internet上的信息內(nèi)容都是一些幽默死板的HTML文檔。SUN的工程師敏銳地覺察到了HTML缺乏交互性這一點(diǎn),從1994年起,他們末尾將OAK技術(shù)運(yùn)用于WEB上,并且開收回了HotJava的第一個(gè)版本。當(dāng)SUN公司1995年正式以Java這個(gè)名字推出的時(shí)分,簡(jiǎn)直一切的WEB開發(fā)人員都想到:噢,這正是我想要的。于是Java成了一顆耀眼的明星,丑小鴨一下了變成了白晝鵝。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第36頁(yè)。2023/6/1037〔3〕Objective-C2021年排名在第3的Objective-C,2020年排第12的Go,它們的面前區(qū)分站著目前風(fēng)頭正勁的兩家技術(shù)公司Google和AppleObjective-C取得成功的最大要素在于,它是為iPhone、iPad開發(fā)運(yùn)用順序的必備工具。隨著創(chuàng)新平板電腦iPad的發(fā)布,Objective-C也迎來(lái)了歷史新的高峰。谷歌采用了類C言語(yǔ)語(yǔ)法,然后依據(jù)自己的看法添加和刪減局部功用。谷歌Go言語(yǔ)設(shè)計(jì)者的理念,與C#、Java和ObjectiveC設(shè)計(jì)者的理念十分相似,但它可以支持多中心架構(gòu),或許今后能被運(yùn)用到愈加普遍的平臺(tái)中。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第37頁(yè)。2023/6/1038〔4〕C++言語(yǔ)C++Builder優(yōu)點(diǎn)〔1〕承襲了C言語(yǔ)的全部?jī)?yōu)點(diǎn)。〔2〕完全的可視化?!?〕極強(qiáng)的兼容性,支持OWL、VCL和MFC三大類庫(kù)?!?〕編譯速度十分快。缺陷綜述:C++Builder是最好的C++編程工具。它既堅(jiān)持了C言語(yǔ)編程的優(yōu)點(diǎn),又做到了完全的可視化。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第38頁(yè)。2023/6/1039Java與C/C++言語(yǔ)區(qū)別Java提供了一個(gè)功用弱小言語(yǔ)的一切功用。C++平安性不好,但C和C++被大家接受,所以Java設(shè)計(jì)成C++方式,讓大家很容易學(xué)習(xí)。Java去掉了C++言語(yǔ)的許多功用,很精煉:指針運(yùn)算結(jié)構(gòu)typedefs#define需求釋放內(nèi)存這將添加了往常出錯(cuò)的50%。而且,Java很小,整個(gè)解釋器只需215K的RAM。Java完成了C++的基本面象對(duì)象技術(shù)并有一些增強(qiáng),如自動(dòng)搜集碎片。Java處置數(shù)據(jù)方式和用對(duì)象接口處置對(duì)象數(shù)據(jù)方式一樣。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第39頁(yè)?!?〕C#C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)轉(zhuǎn)于.NETFramework之上的初級(jí)順序設(shè)計(jì)言語(yǔ)C#與Java有著驚人的相似,它包括了諸如單一承襲、接口、與Java簡(jiǎn)直異常的語(yǔ)法和編譯成中間代碼再運(yùn)轉(zhuǎn)的過(guò)程C#與Java也有著清楚的不同,它自創(chuàng)了Delphi的一些特點(diǎn),與COM〔組件對(duì)象模型〕是直接集成的,而且它是微軟.NETwindows網(wǎng)絡(luò)框架的主角2023/6/1040[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第40頁(yè)。Delphi和.NET之父微軟公司研討員AndersHejlsber把CompassPascal編譯器中心授權(quán)給了美國(guó)Borland公司,并作為雇員參與Borland公司,并且是后來(lái)一切TurboPascal版本與Delphi前3個(gè)版本的架構(gòu)師1996年Hejlsberg參與微軟公司。聽說(shuō),比爾·蓋茨親身參與了這次挖角舉動(dòng),年薪三百萬(wàn)美金,并許愿安德斯·海爾斯伯格在微軟將失掉技術(shù)上的足夠自在和資源支持2023/6/1041[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第41頁(yè)?!?〕PHP:HypertextPreprocessorPHP是一種HTML內(nèi)嵌式的言語(yǔ),是一種在效力器端執(zhí)行的嵌入HTML文檔的腳本言語(yǔ),言語(yǔ)的作風(fēng)有相似于C言語(yǔ)PHP具有十分弱小的功用,一切的CGI的功用PHP都能完成支持簡(jiǎn)直一切盛行的數(shù)據(jù)庫(kù)以及操作系統(tǒng)最重要的是PHP可以用C、C++中止順序的擴(kuò)展運(yùn)用普遍2023/6/1042[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第42頁(yè)?!?〕PHP:主要特點(diǎn)1、開放的源代碼:一切的PHP源代碼理想上都可以失掉。2、PHP是收費(fèi)的3、php的快捷性:順序開發(fā)快,運(yùn)轉(zhuǎn)快,技術(shù)自身學(xué)習(xí)快。嵌入于HTML:由于PHP可以被嵌入于HTML言語(yǔ),它相關(guān)于其他言語(yǔ)。編輯復(fù)雜,適用性強(qiáng),更適宜初學(xué)者。4、跨平臺(tái)性強(qiáng):由于PHP是運(yùn)轉(zhuǎn)在效力器端的腳本,可以運(yùn)轉(zhuǎn)在UNIX、LINUX、WINDOWS下。5、效率高:PHP消耗相當(dāng)少的系統(tǒng)資源。6、圖像處置:用PHP靜態(tài)創(chuàng)立圖像7、面向?qū)ο螅涸趐hp4,php5中,面向?qū)ο蠓矫娑加辛撕艽蟮母牧?,如今php完全可以用來(lái)開發(fā)大型商業(yè)順序。8、專業(yè)專注:PHP支持腳本言語(yǔ)為主,為類C言語(yǔ)。2023/6/1043[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第43頁(yè)?!?〕VisualBasic

〔14〕VisualBasic.NetVisualBasic于20世紀(jì)60年代中期所創(chuàng)。由于立意甚佳,BASIC言語(yǔ)復(fù)雜、易學(xué)的基本特性,很快地就普遍盛行起來(lái)VisualBasic是基于Basic的集成開發(fā)環(huán)境VisualBasic.NetVisualBasic.NET是基于微軟.NETFramework之上的面向?qū)ο蟮闹虚g解釋性言語(yǔ),可以看作是VisualBasic在NetFramework平臺(tái)上的晉級(jí)版本增強(qiáng)了對(duì)面向?qū)ο蟮闹С钟捎诟膭?dòng)太大,招致VB.net對(duì)VB的向后兼容性不好2023/6/1044[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第44頁(yè)?!?〕Python是一種面向?qū)ο?、直譯式計(jì)算機(jī)順序設(shè)計(jì)言語(yǔ),由GuidovanRossum于1989年底發(fā)明,第一個(gè)地下發(fā)行版發(fā)行于1991年P(guān)ython語(yǔ)法簡(jiǎn)捷而明晰,具有豐厚和弱小的類庫(kù)它常被昵稱為膠水言語(yǔ),它可以很輕松的把用其他言語(yǔ)制造的各種模塊〔尤其是C/C++〕輕松地結(jié)合在一同可運(yùn)用python快速生成順序的原型〔有時(shí)甚至是順序的最終界面〕,然后對(duì)其中有特別要求的局部用更適宜的言語(yǔ)改寫2023/6/1045[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第45頁(yè)?!?〕Perl:PracticalExtractionandReportLanguagePerl最末尾是文本處置言語(yǔ),掃描大批文本并且生成靜態(tài)數(shù)據(jù)以及打印出這些數(shù)據(jù)的良好格式化的報(bào)表借取了C、sed、awk、shellscripting以及很多其他順序文語(yǔ)的特性,Perl的解釋順序是開放源碼的收費(fèi)軟件其最重要的特性是它外部集成了正那么表達(dá)式的功用,以及龐大的第三方代碼庫(kù)CPAN,有數(shù)的開源模塊,從迷信計(jì)算到桌面運(yùn)用到網(wǎng)絡(luò)等可以很容易操作數(shù)字,文本,文件和目錄,計(jì)算機(jī)和網(wǎng)絡(luò)2023/6/1046[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第46頁(yè)。正那么表達(dá)式用事前定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)〝規(guī)那么字符串〞,〝規(guī)那么字符串〞用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯目前主流的開發(fā)言語(yǔ)〔PHP、C#、Java、C++、VB、Javascript、Ruby以及python等〕、數(shù)以億萬(wàn)計(jì)的各種運(yùn)用軟件中,都可以看到正那么表達(dá)式優(yōu)美的舞姿實(shí)例:\d婚配一個(gè)數(shù)字字符,等價(jià)于[0-9]\n婚配字符〝n〞,\\n婚配一個(gè)換行符2023/6/1047[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第47頁(yè)。〔10〕RubyRuby是一個(gè)語(yǔ)法像Smalltalk一樣完片面向?qū)ο?、腳本執(zhí)行、又有Perl弱小的文字處置功用的編程言語(yǔ)Ruby言語(yǔ)通常十分直觀,依照編程人以為它應(yīng)該的方式運(yùn)轉(zhuǎn),而不是一味從機(jī)器的角度想象。特點(diǎn):任何東西都是對(duì)象,包括其他言語(yǔ)中的基本數(shù)據(jù)類型,比如整數(shù)不論是數(shù)學(xué)或許邏輯表達(dá)式還是一個(gè)語(yǔ)句,都有值Ruby是靜態(tài)言語(yǔ),曾經(jīng)定義的類可以在運(yùn)轉(zhuǎn)時(shí)修正變量無(wú)需聲明,變量沒有數(shù)據(jù)類型2023/6/1048[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第48頁(yè)。2023/6/1049〔11〕JavaScriptJSP與Microsoft的ASP技術(shù)十分相似。兩者都提供在HTML代碼中混合某種順序代碼、由言語(yǔ)引擎解釋執(zhí)行順序代碼的才干。ASP的編程言語(yǔ)是VBScript之類的腳本言語(yǔ),JSP運(yùn)用的是Java,這是兩者最清楚的區(qū)別此外,ASP與JSP還有一個(gè)更為實(shí)質(zhì)的區(qū)別:兩種言語(yǔ)引擎用完全不同的方式處置頁(yè)面中嵌入的順序代碼。在ASP下,VBScript代碼被ASP引擎解釋執(zhí)行;在JSP下,代碼被編譯成Servlet并由Java虛擬機(jī)執(zhí)行,這種編譯操作僅在對(duì)JSP頁(yè)面的第一次央求時(shí)發(fā)作順序代碼的執(zhí)行結(jié)果被重新嵌入到HTML代碼中,然后一同發(fā)送給閱讀器。ASP和JSP都是面向Web效力器的技術(shù),客戶端閱讀器不需求任何附加的軟件支持[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第49頁(yè)?!?2〕Delphi/ObjectPascal

〔16〕PascalPascal由瑞士NiklausWirth教授于六十年代末設(shè)計(jì)并創(chuàng)立Pascal言語(yǔ)語(yǔ)法嚴(yán)謹(jǐn),層次清楚,順序易寫,具有很強(qiáng)的可讀性,是第一個(gè)結(jié)構(gòu)化的編程言語(yǔ)Delphi/ObjectPascalDelphi是面向?qū)ο蟮腜ascal言語(yǔ)的集成開發(fā)環(huán)境Delphi和C++Builder是基于不同言語(yǔ)但完全相反的兩種開發(fā)環(huán)境2023/6/1050[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第50頁(yè)?!?3〕Lisp:表處置言語(yǔ)

〔29〕Scheme

〔32〕Prolog

LIStProcessing,即表處置,這種編程言語(yǔ)用來(lái)處置由括號(hào)〔即〝(〞和〝)〞〕構(gòu)成的列表Lisp言語(yǔ)最早是在20世紀(jì)50年代末由麻省理工學(xué)院〔MIT〕研討人工智能針對(duì)圖靈機(jī)順序難以讀懂而開發(fā)的LISP言語(yǔ)的主要現(xiàn)代版本包括CommonLisp和〔29〕Scheme〔32〕Prolog〔ProgramminginLogic〕是一種邏輯編程言語(yǔ),樹立在邏輯學(xué)的實(shí)踐基礎(chǔ)之上,最后被運(yùn)用于自然言語(yǔ)等研討范圍,如今已普遍的運(yùn)用在人工智能的研討中,可以用來(lái)建造專家系統(tǒng)、自然言語(yǔ)了解、智能知識(shí)庫(kù)等。2023/6/1051[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第51頁(yè)?!?5〕Transact-SQL

〔19〕PL/SQLTransact-SQLT-SQL是Microsoft在SQLServer中的SQL-3規(guī)范的完成,是對(duì)SQL的擴(kuò)展具有SQL的主要特點(diǎn),同時(shí)添加了變量,運(yùn)算符,函數(shù),流程控制和注釋等言語(yǔ)元素SQLServer中運(yùn)用圖形界面可以完成的一切功用,都可以運(yùn)用T-SQL來(lái)完成PL/SQLProceduralLanguage/SQLPL/SQL是Oracle數(shù)據(jù)庫(kù)對(duì)SQL語(yǔ)句的擴(kuò)展是把數(shù)據(jù)操作和查詢語(yǔ)句組織在PL/SQL代碼的進(jìn)程性單元中,經(jīng)過(guò)邏輯判別、循環(huán)等操作完成復(fù)雜的功用或許計(jì)算的順序文語(yǔ)2023/6/1052[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第52頁(yè)?!?7〕LuaLua是一個(gè)小巧的腳本言語(yǔ),作者是巴西人,該言語(yǔ)的設(shè)計(jì)目的是為了嵌入運(yùn)用順序中,從而為運(yùn)用順序提供靈敏的擴(kuò)展和定制功用Lua由規(guī)范C編寫而成,腳本可以很容易的被C/C++代碼調(diào)用,也可以反過(guò)去調(diào)用C/C++的函數(shù)一個(gè)完整的Lua解釋器不過(guò)200k,在目前一切腳本引擎中,Lua的速度是最快的這一切都決議了Lua是作為嵌入式腳本的最正確選擇2023/6/1053[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第53頁(yè)?!?8〕AdaAda言語(yǔ)的重要特征:模塊化設(shè)計(jì),編譯反省,平行處置,異常處置及泛型編程。Ada在95年參與了對(duì)面向?qū)ο笤O(shè)計(jì)的支持,包括靜態(tài)內(nèi)存分配與管理Ada言語(yǔ)不只表達(dá)了許多現(xiàn)代軟件的開發(fā)原理,而且將這些原理付諸完成。因此,Ada言語(yǔ)的運(yùn)用可大大改善軟件系統(tǒng)的明晰性、牢靠性、有效性、可維護(hù)性。Ada的出現(xiàn),標(biāo)志著軟件工程成功地進(jìn)入了國(guó)度和國(guó)際的規(guī)模,它被譽(yù)為第四代計(jì)算機(jī)言語(yǔ)的成功代表2023/6/1054[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第54頁(yè)。〔18〕Ada奧古斯特·艾達(dá)·洛夫萊斯伯爵夫人〔AugustaAdaLovlace,1815-1852〕曾對(duì)現(xiàn)代計(jì)算機(jī)技術(shù)之父查爾斯·巴貝奇〔CharlesBabage,1791-1871〕的筆記、手稿中止了整理和修正,從某種意義上說(shuō),她是世界上第一位計(jì)算機(jī)順序員2023/6/1055[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第55頁(yè)?!?0〕MatLabMATLAB是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)剖析以及數(shù)值計(jì)算的初級(jí)技術(shù)計(jì)算言語(yǔ)和交互式環(huán)境主要包括MATLAB和Simulink兩大局部2023/6/1056[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第56頁(yè)。2023/6/1057〔31〕:Scratch這是MIT媒體實(shí)驗(yàn)室開發(fā)的一種面向孩子的言語(yǔ)和編程環(huán)境,圖形化、特性化和社區(qū)化是它的主要特點(diǎn)Scratch言語(yǔ)順序例如,乒乓游戲[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第57頁(yè)。2023/6/10586.3編碼作風(fēng)良好的編碼作風(fēng)能在一定水平上補(bǔ)償言語(yǔ)存在的缺陷,反之,假定不留意作風(fēng),即使運(yùn)用了初級(jí)言語(yǔ)也很難寫出高質(zhì)量的順序。【主要內(nèi)容】6.3.1順序文檔化6.3.2數(shù)聽說(shuō)明6.3.3語(yǔ)句結(jié)構(gòu)6.3.4輸入/輸入6.3.5效率[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第58頁(yè)。2023/6/10596.3.1順序文檔化【1、標(biāo)識(shí)符的命名】【2、布置注釋】【3、順序的視覺組織】【4、自文檔化】[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第59頁(yè)。2023/6/10606.3.1順序文檔化【1、標(biāo)識(shí)符的命名】

匈牙利命名法chNameptrLinkTmpPath。。。匈牙利人CharlesSimonyi首先提出微軟等大公司普遍認(rèn)可[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第60頁(yè)。2023/6/1061匈牙利命名法匈牙利命名法是一種編程時(shí)的命名規(guī)范?;驹敲词牵鹤兞棵綄傩灶愋停珜?duì)象描畫其中每一對(duì)象的稱號(hào)都要求有明白含義,可以取對(duì)象名字全稱或名字的一局部。命名要基于容易記憶容易了解的原那么。在一個(gè)項(xiàng)目和模塊中保證名字的銜接性。舉例來(lái)說(shuō),表單的稱號(hào)為form,那么在匈牙利命名法中可以簡(jiǎn)寫為frm,那么當(dāng)表單變量稱號(hào)為Switchboard時(shí),變量全稱應(yīng)該為frmSwitchboard。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第61頁(yè)。2023/6/10626.3.1順序文檔化【1、標(biāo)識(shí)符的命名】標(biāo)識(shí)符即符號(hào)名,包括模塊名、變量名、常量名、標(biāo)號(hào)名、子順序名、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。名字應(yīng)有一定實(shí)際意義,應(yīng)能反映它所代表的實(shí)際事物。Times——次數(shù)的量; Total——總量;Average——平均值; Sum——和。選擇精煉的、意義明白的名字,必要時(shí)可運(yùn)用縮寫名字。留意縮寫規(guī)那么要分歧,并且要給每一個(gè)名字加注釋。在一個(gè)順序中,一個(gè)標(biāo)識(shí)符只運(yùn)用于一種用途。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第62頁(yè)。2023/6/10636.3.1順序文檔化【2、布置注釋】注釋是順序員與順序讀者之間通訊的重要手段。注釋決不是可有可無(wú)的。一些正軌的順序文本中,注釋行的數(shù)量占到整個(gè)源順序的1/3到1/2,甚至更多。分類:⑴序文性注釋⑵功用性注釋[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第63頁(yè)。2023/6/10646.3.1順序文檔化【2、布置注釋】——⑴序文性注釋置于每個(gè)順序模塊的掃尾局部,給出順序的全體說(shuō)明,關(guān)于了解順序自身具有引導(dǎo)作用。有些軟件開發(fā)部門對(duì)序文性注釋做了明白而嚴(yán)峻的規(guī)那么,要求順序編制者逐項(xiàng)列出。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第64頁(yè)。2023/6/10656.3.1順序文檔化【2、布置注釋】——⑴序文性注釋⑴順序標(biāo)題:有關(guān)本模塊功用和目的的說(shuō)明。⑵主要算法⑶接口說(shuō)明:調(diào)用方式,參數(shù)描畫,⑷有關(guān)數(shù)據(jù)描畫:重要的變量及其用途,約束或限制條件⑸模塊位置:在哪一個(gè)源文件中,或隸屬于哪一個(gè)軟件包⑹開發(fā)簡(jiǎn)歷:模塊設(shè)計(jì)者,復(fù)審者,復(fù)審日期,修正日期等[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第65頁(yè)。2023/6/10666.3.1順序文檔化【2、布置注釋】——⑵功用性注釋嵌在源順序中,用以描畫其后的語(yǔ)句或順序段是在做什么義務(wù)好——對(duì)設(shè)計(jì)思想的準(zhǔn)確表述和明晰展現(xiàn),能提示代碼面前隱藏的重要信息差——解釋下面怎樣做如:i=i+1; //i加1return-1;//前往-1free(p); //釋放p所指的內(nèi)存fclose(fin); //封鎖文件差:在解釋怎樣做[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第66頁(yè)。2023/6/10676.3.1順序文檔化【2、布置注釋】——⑵功用性注釋嵌在源順序中好——對(duì)設(shè)計(jì)思想的準(zhǔn)確表述和明晰展現(xiàn),能提示代碼面前隱藏的重要信息差——解釋下面怎樣做如:/*翻開輸入文件后判別文件長(zhǎng)度能否契合格式要求*/if((fin=fopen("cat.pic","rb")==NULL){puts("翻開文件cat.pic失敗");return-1;}好:描畫其后的順序段在做什么任務(wù)[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第67頁(yè)。2023/6/1068注釋規(guī)范/*下面是圖像轉(zhuǎn)換的算法完成。黑色圖像到灰度圖像的轉(zhuǎn)換主要運(yùn)用RGB顏色空間到Y(jié)UV顏色空間的變換公式來(lái)取得灰度值,公式為Y=0.299*R+0.587*G+0.114*B*/for(i=0;i<400;i++)for(j=0;j<400;j++){y=(299*r+587*g+114*b)/1000;}fclose(fin);[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第68頁(yè)。2023/6/1069注釋規(guī)范函數(shù)的注釋作風(fēng)/**********************************************/ /*功用描畫:本函數(shù)用于完成xxx功用,目的是: *//*入口參數(shù):參數(shù)xx,表示 *//*出口參數(shù):參數(shù)xx,表示 *//*前往值:前往xx值,以后往xx值時(shí),表示 */ /**********************************************//*功用描畫:本函數(shù)用于完成xxx功用,目的是: 入口參數(shù):參數(shù)xx,表示 出口參數(shù):參數(shù)xx,表示 前往值:前往xx值,以后往xx值時(shí),表示 */////////////////////////////////////////// //功用描畫:本函數(shù)用于完成xxx功用,目的是://入口參數(shù):參數(shù)xx,表示 //出口參數(shù):參數(shù)xx,表示 //前往值:前往xx值,以后往xx值時(shí),表示//////////////////////////////////////////[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第69頁(yè)。2023/6/10706.3.1順序文檔化【2、布置注釋】——⑵功用性注釋嵌在源順序中,用以描畫其后的語(yǔ)句或順序段是在做什么義務(wù)好——執(zhí)行了下面的語(yǔ)句會(huì)怎樣樣差——解釋下面怎樣做留意:⑴描畫一段順序,而不是每一個(gè)語(yǔ)句。⑵用縮進(jìn)和空行,使順序與注釋容易區(qū)別。⑵注釋要正確。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第70頁(yè)。2023/6/10716.3.1順序文檔化【3、順序的視覺組織】⑴恰外地運(yùn)用空格、空行突出運(yùn)算的優(yōu)先性,防止發(fā)作運(yùn)算的錯(cuò)誤。如:(A<-17)ANDNOT(B<=49)ORC(A<-17)ANDNOT(B<=49)ORC自然的順序段之間可用空行隔開。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第71頁(yè)。2023/6/10726.3.1順序文檔化【3、順序的視覺組織】⑵移行〔向右縮進(jìn)〕指順序中的各行不用都在左端對(duì)齊,都從第一格起陳列。這樣做使順序完全分不清層次關(guān)系。關(guān)于選擇語(yǔ)句和循環(huán)語(yǔ)句,把其中的順序段向右做階梯式移行。使順序的邏輯結(jié)構(gòu)愈加明晰。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第72頁(yè)。2023/6/10736.3.1順序文檔化【3、順序的視覺組織】⑵移行〔向右縮進(jìn)〕如,兩重選擇結(jié)構(gòu)嵌套,向右縮進(jìn)后層次清楚IF〔…〕THENIF〔…〕THEN……ELSE……ENDIFELSE……ENDIF[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第73頁(yè)。2023/6/10744、自文檔代碼代碼即文檔代碼編寫精巧,注釋適當(dāng)Delphi源順序格式書寫規(guī)范:///bzgf/bzgf2.htm[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第74頁(yè)。2023/6/10756.3.2數(shù)聽說(shuō)明在設(shè)計(jì)階段曾經(jīng)確定了數(shù)據(jù)結(jié)構(gòu)的組織及其復(fù)雜性。使順序中數(shù)據(jù)更易于了解和維護(hù),需求留意數(shù)聽說(shuō)明的作風(fēng)。數(shù)聽說(shuō)明必需留意以下幾點(diǎn):1、數(shù)聽說(shuō)明的次第應(yīng)當(dāng)規(guī)范化2、說(shuō)明語(yǔ)句中變量布置有序化3、運(yùn)用注釋說(shuō)明復(fù)雜數(shù)據(jù)結(jié)構(gòu)[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第75頁(yè)。2023/6/10766.3.2數(shù)聽說(shuō)明【1、數(shù)聽說(shuō)明的次第應(yīng)當(dāng)規(guī)范化】數(shù)聽說(shuō)明的次第與語(yǔ)法有關(guān),其次第是恣意的。出于閱讀、了解和維護(hù)的需求,最好使其規(guī)范化,使說(shuō)明的先后次第固定。方便查找數(shù)據(jù),也有利于測(cè)試,排錯(cuò)和維護(hù)。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第76頁(yè)。2023/6/10776.3.2數(shù)聽說(shuō)明【1、數(shù)聽說(shuō)明的次第應(yīng)當(dāng)規(guī)范化】如,在FORTRAN順序中數(shù)聽說(shuō)明次第⑴常量說(shuō)明⑵復(fù)雜變量類型說(shuō)明⑶數(shù)組說(shuō)明⑷公用數(shù)據(jù)塊說(shuō)明……同一類型的數(shù)聽說(shuō)明按如下順序陳列整型說(shuō)明浮點(diǎn)型說(shuō)明字符型說(shuō)明邏輯型說(shuō)明……[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第77頁(yè)。2023/6/10786.3.2數(shù)聽說(shuō)明【2、說(shuō)明語(yǔ)句中變量布置有序化】當(dāng)多個(gè)變量名在一個(gè)說(shuō)明語(yǔ)句中說(shuō)明時(shí),應(yīng)當(dāng)對(duì)這些變量按字母的順序陳列。如:integersize,length,width,cost,price;integercost,length,price,size,width;[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第78頁(yè)。2023/6/10796.3.2數(shù)聽說(shuō)明【3、運(yùn)用注釋說(shuō)明復(fù)雜數(shù)據(jù)結(jié)構(gòu)】假定設(shè)計(jì)了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)當(dāng)運(yùn)用注釋來(lái)做必要的補(bǔ)充。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第79頁(yè)。2023/6/10806.3.3語(yǔ)句結(jié)構(gòu)在設(shè)計(jì)階段確定了軟件的邏輯結(jié)構(gòu),但結(jié)構(gòu)單個(gè)語(yǔ)句那么是編碼階段的義務(wù)。語(yǔ)句結(jié)構(gòu)力圖復(fù)雜、直接,不能為了片面追求效率而使語(yǔ)句復(fù)雜化。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第80頁(yè)。2023/6/10816.3.3語(yǔ)句結(jié)構(gòu)【1、在一行內(nèi)只寫一條語(yǔ)句】在一行內(nèi)只寫一條語(yǔ)句,并且采取適當(dāng)?shù)囊菩小蚕蛴铱s進(jìn)〕,使順序的邏輯和功用變得愈加明白。許多順序設(shè)計(jì)言語(yǔ)允許在一行內(nèi)寫多個(gè)語(yǔ)句。但這種方式會(huì)使順序可讀性變差,不可取。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第81頁(yè)。2023/6/10826.3.3語(yǔ)句結(jié)構(gòu)【1、在一行內(nèi)只寫一條語(yǔ)句】如,有一段升序陳列順序

FORI:=1TON-1DOBEGINT:=I;FORJ:=I+1TONDOIFA[J]<A[T]THENT:=J;IFT≠ITHENBEGINWORK:=A[T];A[T]:=A[I];A[I]:=WORK;ENDEND;由于一行中包括了多個(gè)語(yǔ)句,掩蓋了順序的循環(huán)結(jié)構(gòu)和條件結(jié)構(gòu),使其可讀性變得很差。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第82頁(yè)。2023/6/10836.3.3語(yǔ)句結(jié)構(gòu)【1、在一行內(nèi)只寫一條語(yǔ)句】FORI:=1TON-1DOBEGINT:=I;FORJ:=I+1TONDOIFA[J]<A[T]THENT:=J;IFT≠ITHENBEGINWORK:=A[T];A[T]:=A[I];A[I]:=WORK;ENDEND改良規(guī)劃1[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第83頁(yè)。2023/6/10846.3.3語(yǔ)句結(jié)構(gòu)【1、在一行內(nèi)只寫一條語(yǔ)句】FORI:=1TON-1DOBEGINT:=I;

FORJ:=I+1TONDOIFA[J]<A[T]THENT:=J;

IFT≠ITHENBEGINWORK:=A[T];

A[T]:=A[I];

A[I]:=WORK;

ENDEND改良規(guī)劃2[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第84頁(yè)。2023/6/10856.3.3語(yǔ)句結(jié)構(gòu)【2、順序編寫首先應(yīng)當(dāng)思索明晰性】【3、順序要能直截了外地說(shuō)明順序員的意圖】順序編寫首先應(yīng)當(dāng)思索明晰性,不要刻意追求技巧性。如,有一個(gè)用Pascal語(yǔ)句寫出的順序段:A[I]:=A[I]+A[T];A[T]:=A[I]-A[T];A[I]:=A[I]-A[T];功用——交流A[I]和A[T]中的內(nèi)容。目的——節(jié)省一個(gè)義務(wù)單元。此段順序能夠不易看懂[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第85頁(yè)。2023/6/10866.3.3語(yǔ)句結(jié)構(gòu)【2、順序編寫首先應(yīng)當(dāng)思索明晰性】【3、順序要能直截了外地說(shuō)明順序員的意圖】順序編寫首先應(yīng)當(dāng)思索明晰性,不要刻意追求技巧性。如,有一個(gè)用Pascal語(yǔ)句寫出的順序段:改寫后WORK:=A[T];A[T]:=A[I];A[I]:=WORK;讀者了如指掌[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第86頁(yè)。2023/6/10876.3.3語(yǔ)句結(jié)構(gòu)【2、順序編寫首先應(yīng)當(dāng)思索明晰性】【3、順序要能直截了外地說(shuō)明順序員的意圖】FORI=1TONDOFORJ=1TONDOV(I,J)=(I/J)*(J/I)除法運(yùn)算〔/〕在除數(shù)和被除數(shù)都是int時(shí),其結(jié)果只取整數(shù)局部。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第87頁(yè)。2023/6/10886.3.3語(yǔ)句結(jié)構(gòu)FORI=1TONDO

FORJ=1TONDO

V(I,J)=(I/J)*(J/I)當(dāng)I≠J時(shí),V(I,J)=(I/J)*(J/I)=0當(dāng)I<J時(shí),I/J=0;當(dāng)J<I時(shí),J/I=0;當(dāng)I=J時(shí),V(I,J)=(I/J)*(J/I)=1[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第88頁(yè)。2023/6/1089初始化單位矩陣寫成以下的方式,就能讓讀者直接了解順序編寫者的意圖。

DO5I=1,N

DO5J=1,N

IF(I.EQ.J)THEN

V(I,J)=1.0

ELSE

V(I,J)=0.0

ENDIF

5CONTINUE[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第89頁(yè)。2023/6/10906.3.3語(yǔ)句結(jié)構(gòu)4、除非對(duì)效率有特殊的要求,順序編寫要做到明晰第一,效率第二。不要為了追求效率而喪失了明晰性。理想上,順序效率的提高主要應(yīng)經(jīng)過(guò)選擇高效的算法來(lái)完成。5、防止采用過(guò)于復(fù)雜的條件測(cè)試。6、盡量添加運(yùn)用〝否認(rèn)〞條件的條件語(yǔ)句。IFNOT((CHAR<‘0’)OR(CHAR>‘9’))THEN……IF(CHAR>='0’)AND(CHAR<='9’)THEN……[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第90頁(yè)。2023/6/10916.3.3語(yǔ)句結(jié)構(gòu)7、IF語(yǔ)句要控制在3層以下,防止運(yùn)用空ELSE語(yǔ)句和IF…THENIF…語(yǔ)句。這種結(jié)構(gòu)容易使讀者發(fā)作曲解。IF(CHAR>='A’)THENIF(CHAR<='Z’)THENPRINT〝Thisisaletter。〞;ELSEPRINT〝Thisisnotaletter。〞能夠發(fā)生二義性效果[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第91頁(yè)。2023/6/10928.嚴(yán)峻控制GOTO語(yǔ)句例:打印A、B、C中的最小值[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第92頁(yè)。2023/6/1093例:打印A、B、C中的最小值順序1if(A<B)goto120;if(B<C)goto110;100write(C);goto140;110write(B);goto140;120if(A<C)goto130;goto100;130write(A);140end[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第93頁(yè)。2023/6/1094例:打印A、B、C中的最小值順序2if((A<B)and(A<C))thenwrite(A);elseif((A≧B)and(B<C))thenwrite(B);elsewrite(C);endifendif[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第94頁(yè)。2023/6/10956.1編碼概念9.運(yùn)用言語(yǔ)中有限的基本控制結(jié)構(gòu)表示順序邏輯順序、選擇、重復(fù);選用的控制結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口;[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第95頁(yè)。2023/6/10966.1編碼概念例:二分法求方程f(x)=0在區(qū)間[a,b]中的根(假定在閉區(qū)間[a,b]上函數(shù)f(x)有獨(dú)一的一個(gè)零)[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第96頁(yè)。2023/6/1097例:二分法求方程f(x)=0在區(qū)間[a,b]中的根順序1f0=f(a);f1=f(b);if(f0*f1<=0){x0=a;x1=b;for(i=1;i<=n;i++){xm=(x0+x1)/2;fm=f(xm);if(abs(fm)<eps||abs(x1-x0)<eps)gotofinish;if(f0*fm>0){x0=xm;f0=fm;}elsex1=xm;}finish:printf();}正常出口非正常出口[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第97頁(yè)。2023/6/1098例:二分法求方程f(x)=0在區(qū)間[a,b]中的根順序2f0=f(a);f1=f(b);if(f0*f1<=0){x0=a;x1=b;for(i=1;i<=n;i++){xm=(x0+x1)/2;fm=f(xm);if(abs(fm)<eps||abs(x1-x0)<eps)break;if(f0*fm>0){x0=xm;f0=fm;}elsex1=xm;}printf();}正常出口非正常出口[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第98頁(yè)。2023/6/1099例:二分法求方程f(x)=0在區(qū)間[a,b]中的根順序3f0=f(a);f1=f(b);if(f0*f1<=0){x0=a;x1=b;i==1;finished=0;while(i<=n&&0==finished){xm=(x0+x1)/2;fm=f(xm);if(abs(fm)<eps||abs(x1-x0)<eps)finished=1;if(0==finished){if(f0*fm>0){x0=xm;f0=fm;}elsex1=xm;}}printf();}正常出口引入變量finished,改for型循環(huán)為while型,將單入口多出口結(jié)構(gòu)改為單入口單出口結(jié)構(gòu)。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第99頁(yè)。2023/6/10100其他語(yǔ)法結(jié)構(gòu)規(guī)范表達(dá)式規(guī)那么與零比擬的規(guī)那么常量規(guī)那么靜態(tài)數(shù)組函數(shù)設(shè)計(jì)原那么成對(duì)編碼內(nèi)存分配方式[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第100頁(yè)。2023/6/101016.3.4輸入/輸入不論是批處置的輸入/輸入方式,還是交互式的輸入/輸入方式,在設(shè)計(jì)和編碼時(shí)都應(yīng)思索以下原那么:⑴對(duì)一切的輸入數(shù)據(jù)都要中止檢驗(yàn),識(shí)別錯(cuò)誤的輸入,以保證每個(gè)數(shù)據(jù)的有效性;⑵反省輸入項(xiàng)的各種重要組合的合理性,必要時(shí)報(bào)告輸入外形信息;⑶使得輸入的步驟和操作盡可以復(fù)雜;⑷堅(jiān)持復(fù)雜的輸入格式,允許用自在格式輸入;⑸順序設(shè)計(jì)言語(yǔ)對(duì)有嚴(yán)峻要求時(shí),應(yīng)堅(jiān)持輸入格式的分歧性;⑹應(yīng)允許缺省值;[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第101頁(yè)。2023/6/101026.3.4輸入/輸入⑺不論是批處置的輸入/輸入方式,還是交互式的輸入/輸入方式,在設(shè)計(jì)和編碼時(shí)都應(yīng)思索以下原那么:⑻輸入一批數(shù)據(jù)時(shí),最好運(yùn)用輸入終了標(biāo)志,不要由用戶指定輸入數(shù)據(jù)數(shù)目;⑼在交互式輸入/輸入時(shí),明白提示可運(yùn)用的選擇項(xiàng)、取值范圍。在數(shù)據(jù)輸入的進(jìn)程中和輸入終了時(shí),也要在屏幕上給出外形信息;⑽給一切的輸入加注解,并設(shè)計(jì)輸入報(bào)表格式。[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第102頁(yè)。2023/6/101036.3.4效率順序運(yùn)轉(zhuǎn)時(shí)間存儲(chǔ)效率輸入/輸入效率首先,效率是功用要求,因此應(yīng)該在需求剖析階段確定效率方面的要求。其次,效率是靠好設(shè)計(jì)來(lái)提高的。第三,順序的效率和順序的復(fù)雜水平是分歧的[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第103頁(yè)。2023/6/101046.4編碼工具[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第104頁(yè)。2023/6/10105代碼管理工具一個(gè)大型軟件開發(fā)項(xiàng)目通常有許多順序員參與編碼順序代碼往往分散在許多不同的文件或庫(kù)中可以即有源順序代碼又有目的代碼在不同時(shí)期會(huì)發(fā)作出同一個(gè)系統(tǒng)的許多不同版本,這些不同的版本區(qū)分適宜于不同環(huán)境的需求與大型軟件系統(tǒng)相聯(lián)絡(luò)的主要效果是,記載順序模塊開發(fā)和維護(hù)的歷程,確定模塊間的相互依賴關(guān)系,保證在同一個(gè)系統(tǒng)的不同版本中的公共代碼是分歧的[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第105頁(yè)。2023/6/10106并行版本系統(tǒng):CVS是(ConcurrentVersionSystem)在一臺(tái)效力器上樹立一個(gè)倉(cāng)庫(kù),倉(cāng)庫(kù)里可以寄存許多不同項(xiàng)目的源順序。由倉(cāng)庫(kù)管理員分歧管理這些源順序。每個(gè)用戶在運(yùn)用倉(cāng)庫(kù)之前,首先要把倉(cāng)庫(kù)里的項(xiàng)目文件下載到本地。用戶做的任何修正首先都是在本地中止,然后用cvs命令中止提交,由cvs倉(cāng)庫(kù)管理員分歧修正??梢宰龅礁櫸募兓?,抵觸控制[軟件工程]CH06編碼全文共119頁(yè),當(dāng)前為第106頁(yè)。2023/6/10107源代碼版本管理軟件:Subversion目錄版本控制Subversion完成了一個(gè)〝虛擬〞文件系統(tǒng),可以追蹤整個(gè)目錄樹的修正,文件和目錄都是版本控制的,結(jié)果就是可以在客戶端對(duì)文件和目錄執(zhí)行移動(dòng)和復(fù)制命令。原子提交提交要么完全進(jìn)入版本庫(kù),要么一點(diǎn)都沒有,這允許開發(fā)者以一個(gè)邏輯塊提交修正。版本控制的元數(shù)據(jù)每個(gè)文件和目錄都有一組附加的〝屬性〞,你可以發(fā)明和保管恣意的鍵

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論