第10章 程序設計基礎_第1頁
第10章 程序設計基礎_第2頁
第10章 程序設計基礎_第3頁
第10章 程序設計基礎_第4頁
第10章 程序設計基礎_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第10章程序設計基礎1本章教學目的: 了解程序設計的基本概念、思想和方法,為今后更好地學習程序設計語言打好基礎。2本章教學內(nèi)容:程序設計語言概述2.程序:程序的類型及程序的執(zhí)行方式。3.軟件工程:目前軟件開發(fā)和維護的方法。4.軟件生命周期:軟件開發(fā)的具體步驟。310.1程序設計語言概述軟件是程序、數(shù)據(jù)及相關文檔的集合,是用戶與硬件之間的接口。任何以計算機為處理工具的任務都是對處理對象和處理規(guī)則的完整描述,稱為程序。4機器語言是計算機硬件系統(tǒng)能唯一識別并執(zhí)行的語言,計算機指令。計算機指令是硬件唯一能識別的、實現(xiàn)計算機基本功能的二進制編碼,是指揮計算機工作的基本命令。計算機指令是計算機執(zhí)行命令的最小功能單位,是軟件與硬件的接口。

5一般來說,指令由操作碼和操作數(shù)兩部分組成:操作碼用于指明操作,不同指令具有不同的操作碼。操作數(shù)可以是要操作的數(shù)據(jù)(稱為立即數(shù)),也可以是存放操作數(shù)的內(nèi)存單元地址或寄存器地址等。操作碼操作數(shù)62.指令系統(tǒng)指令系統(tǒng):一臺計算機中全部指令的集合構成指令系統(tǒng)。一臺計算機的指令系統(tǒng)決定了它的基本性能,現(xiàn)代計算機一般都有幾十條到上百條指令。7早期計算機,從簡化計算機硬件結構和降低成本考慮,指令系統(tǒng)都比較簡單,指令條數(shù)少、功能弱。為增加計算機功能及縮小指令系統(tǒng)與高級程序設計語言之間的差異,人們研制了復雜指令系統(tǒng)計算機(CISC,ComplexInstructionSetComputer)。CISC計算機指令條數(shù)多達二三百條,能直接處理多種數(shù)據(jù)類型。8RISC,ReducedInstructionSetComputer,指令系統(tǒng)具有指令少、功能簡單、指令執(zhí)行時間短等特點,RISC成為計算機設計的主流。9101110000000100000000000

000001010000011100000000計算A=8+7機器語言為:匯編語言為:MOVAX,8ADDAX,7;將8存入累加器A中;7與累加器A中的內(nèi)容相加,;結果仍存放在A中10.1.2匯編語言10匯編語言:指令由英文單詞或縮寫構成,用符號和十進制數(shù)代替機器語言中的二進制編碼,便于人們記憶和書寫。11計算機程序設計語言總體上可以分為低級語言和高級語言兩大類,低級語言是指機器語言和匯編語言;低級語言的低級并不是說語言的功能性差,而是指與計算機硬件密切相關,編寫程序難度較大。機器語言和匯編語言都與計算機類型有關;匯編語言一般用于編制系統(tǒng)軟件和過程控制軟件1210.1.3結構化程序設計語言20世紀50年代后期,出現(xiàn)了許多脫離具體計算機硬件結構的程序設計語言,人們稱之為高級程序設計語言或結構化程序設計語言。例如Basic、FORTRAN,Pascal等。例如,計算A=8+7并輸出結果的BASIC語言程序段如下:

A=8+7 PrintA13結構化程序設計語言:脫離具體計算機硬件結構的程序設計語言。程序設計的核心是數(shù)據(jù)結構和算法;通過數(shù)據(jù)結構定義數(shù)據(jù)的存儲形式;通過算法研究如何用快捷、高效的方法來組織解決問題的具體過程。

14結構化程序設計語言將注意力從機器轉移到問題本身,它致力于用計算機能理解的邏輯來描述解決問題的具體方法和步驟。151.結構化程序設計語言的基本特征:程序內(nèi)部結構化:程序由順序、選擇(分支)和重復(循環(huán))3種結構組成。程序模塊化:一個大程序由若干個功能獨立的、相互關聯(lián)的程序模塊(子程序、函數(shù)等)組成。程序模塊之間通過調(diào)用關系完成程序的整體功能??梢浦残院茫杭礊橐活愑嬎銠C設計的程序,經(jīng)少量改動后可以在另一類計算機上運行。與低級語言相比,結構化程序具有較好的移植性。16具有代表性的結構化程序設計語言:FORTRAN語言:是FormulaTranslator的縮寫,在工程、數(shù)學和科學研究上是使用最廣泛的語言,尤其是在科學計算中發(fā)揮著極其重要的作用。Pascal語言:作為一門實用程序設計語言和教學工具,Pascal語言在高校計算機軟件教學中一直處于主導地位。

C語言:適合于系統(tǒng)描述,可以用于編寫系統(tǒng)和應用軟件。1710.1.4面向對象的程序設計語言ObjectOrientedProgramming,OOP早在20世紀60年代在實驗室中就提出了面向對象方法,最早的面向對象軟件是1966年開發(fā)的SimulaⅠ它首次提出模擬人類思維方式,將數(shù)據(jù)和相關操作集成在一起。使得數(shù)據(jù)和處理數(shù)據(jù)的方法融為一體,更方便處理現(xiàn)實世界中復雜的事物。18面向對象的程序設計語言:對象:是程序中最基本的運行實體,一個程序由若干個對象組成,各個對象既相互獨立,又通過消息相互聯(lián)系。類:是具有相同特征對象的抽象,是創(chuàng)建對象的模板

192.可視化程序設計在可視化程序設計中,

屬性、事件和方法是用于控制和管理對象的3個要素。屬性:用于描述對象的特征。事件:是對象響應某種操作時的一種反映機制,是響應某種操作的程序代碼入口。方法:一種子程序,調(diào)用時依附于對象,運行時執(zhí)行相關的操作,也稱之為對象函數(shù)。20具有代表性的面向對象程序設計語言:

C++語言:在C語言基礎上增加了面向對象的支持,基本兼容C語言程序。其特點是既支持結構化程序設計方法,又支持面向對象程序設計方法,因此,也稱之為混合型語言。

Delphi語言:是在Pascal基礎上開發(fā)出來的可視化程序設計語言,是真正的面向對象編程語言,執(zhí)行效率高,具有強大的數(shù)據(jù)庫管理功能,是開發(fā)中小型數(shù)據(jù)庫軟件的理想編程工具。

Java語言:Java也是一種跨平臺的程序設計語言,適合開發(fā)基于網(wǎng)絡、多媒體、與平臺無關的應用程序,應用程序可以在網(wǎng)絡上傳輸,并可以運行在任何計算機上。21網(wǎng)頁設計語言:通過網(wǎng)絡瀏覽器瀏覽的網(wǎng)頁可分為動態(tài)網(wǎng)頁、靜態(tài)網(wǎng)頁兩種。標記語言主要用于設計靜態(tài)網(wǎng)頁,利用標記標注信息的類型和位置。HTML腳本語言是介于HTML和編程語言之間的一種語言,主要用于設計動態(tài)網(wǎng)頁。VBScriptJava22在計算機中,通常將結構化程序設計語言和面向對象程序設計語言統(tǒng)稱為高級程序設計語言,簡稱高級語言。2310.2程序任何以計算機為處理工具的任務都是對處理對象和規(guī)則的完整描述,這種描述稱為程序。程序是用計算機語言設計的,為完成某一任務、按一定順序編排的指令序列。

要使程序起作用,必須將其裝入到內(nèi)存中執(zhí)行,程序的實際工作過程稱為執(zhí)行或運行。24

在屏幕上顯示字符串“HelloWorld”DSEG SEGMENTSTRING DB‘HelloWorld’,0DH,OAH,’$’;定義緩沖區(qū)

DSEG ENDSCSEG SEGMENT ASSUMECS:CSEG,DS:DSEGSTART: MOVAX,DSEG MOVDS,AX LEADX,STRING MOVAH,09H INT21H MOVAH,4CH INT21HCSEG ENDS ENDSTART25【例8.1】計算階乘的C語言程序JSJC.C。Longfun(Intx) /*函數(shù)fun,用來計算x的階乘*/{LongResult=1; /*result是變量,用來保存計算結果*/

IntI; /*i為循環(huán)控制變量*/

For(i=2;i<=x;i++) /*循環(huán)控制語句,用于實現(xiàn)語句的多次執(zhí)行*/Result=Result*i; /*循環(huán)體,實現(xiàn)計算*/Returnresult; /*返回語句,將計算結果提交給調(diào)用者*/}Main() /*C語言主程序*/{

Inti=1; /*i為循環(huán)控制變量*/Longs; /*s是變量,保存計算結果*/

While(i!=0) /*循環(huán)語句,用于實現(xiàn)多次計算*/{

Printf("PleaseInputI(I=0Over):");/*輸入數(shù)據(jù)提示*/

Scanf(“%d”,&i); /*輸入數(shù)據(jù)語句,輸入數(shù)據(jù)保存在變量i中*/

If(i==0) /*分支語句,用于輸入數(shù)據(jù)判斷*/Exit(0); /*輸入i值為0,調(diào)用函數(shù)exit結束程序*/Else /*分支否定條件,當輸入i值不為零時*/If(i<0||i>10) /*判斷輸入數(shù)據(jù)范圍*/{Printf(“Datamustbewteen1and10.\n”); /*數(shù)據(jù)超界,提示合理范圍*/Continue; /*回到循環(huán)開始位置,繼續(xù)判斷循環(huán)條件*/}s=fun(i); /*調(diào)用函數(shù)fun計算i階乘,結果存于變量s中*/

Printf("%d!=%ld\n",I,s); /*在屏幕上輸出計算結果*

}}26DimaAsIntegerDimbAsIntegerPrivateSubCommand1_Click()k=InStr(a,Text2,Text1)Ifk>0ThenCommand1.Caption="查找下一個"a=k+Len(Text1)Text2.SetFocusText2.SelStart=k-1Text2.SelLength=Len(Text1)b=b+1Else

MsgBox"查找完畢!共找到"&b&"個"&Text1Command1.Caption="查找“

a=1EndIf'PrintkEndSub27根據(jù)程序所處的開發(fā)階段或運行方式的不同,程序主要有源程序、可執(zhí)行程序和動態(tài)鏈接庫3種類型。人們將利用程序設計語言設計的內(nèi)容稱為源程序。將保存這些內(nèi)容的文件稱為源程序文件。28可執(zhí)行程序是由源程序翻譯(編譯)生成的、真實的機器語言程序。在Windows中,最常用的可執(zhí)行程序文件擴展名為EXE和COM。29動態(tài)鏈接庫是由源程序生成的機器語言程序的另一種形式,主要作為可執(zhí)行程序的輔助文件,不能獨立運行。主要作用:(1)提供應用程序接口(API),User32.dll(2)程序動態(tài)加載305.源程序的翻譯方式:編譯方式:通過程序設計語言提供的編譯器或生成工具,系統(tǒng)自動對整個源程序逐句進行詞法分析、語法分析并翻譯成機器語言指令。解釋方式:在程序設計語言環(huán)境中直接運行源程序,在執(zhí)行每條語句前,系統(tǒng)先分析語句的詞法和語法,若語句正確,則生成并執(zhí)行機器語言指令,直到程序運行結束。3110.3軟件工程基礎軟件工程是將系統(tǒng)的、規(guī)范的、可度量的方法應用于軟件開發(fā)和維護整體過程的一門科學,用數(shù)學、計算機科學和管理科學的原理,借助傳統(tǒng)工程科學的原則和方法創(chuàng)建與維護軟件,從而達到提高軟件質(zhì)量、降低軟件成本的目的。軟件工程學出現(xiàn)的目的是為緩解軟件危機。32軟件工程的誕生背景程序設計時代:用機器語言和匯編語言進行程序設計的時代。軟件開發(fā)主要是個體手工勞動,完全依賴程序設計者的個人技能,不重視程序設計方法。

程序系統(tǒng)時代:高級程序設計語言出現(xiàn)后,提出了結構化程序設計的方法,并成為軟件開發(fā)的主要工具,稱此階段為程序系統(tǒng)時代。

33供需矛盾;開發(fā)成本和時間失控;質(zhì)量難以保障;維護困難。主要表現(xiàn)

:軟件危機是泛指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。

軟件發(fā)展速度落后于硬件發(fā)展水平,人們對軟件的需求得不到滿足。管理人員缺少開發(fā)軟件的經(jīng)驗,需求描述不準確,而開發(fā)人員又缺少管理經(jīng)驗,二者之間缺乏交流工具,過分依賴開發(fā)人員在軟件開發(fā)過程中的技巧和創(chuàng)造力,因此,很難開發(fā)出高質(zhì)量的實用軟件。由于缺乏軟件開發(fā)規(guī)范和技術文檔,人們很難閱讀和修改其他人開發(fā)的軟件,使軟件維護、移植和升級困難,導致軟件重復開發(fā)問題嚴重,軟件復用性降低。

34軟件工程主要包括軟件開發(fā)技術和軟件工程管理。

軟件工程是一門交叉科學,包含方法、工具和過程3個要素。35軟件工程包括三個要素:方法、工具和過程。

1.方法:完成軟件工程項目的技術手段,如支持項目計劃和估算、系統(tǒng)和軟件需求分析、軟件設計、編碼、測試和維護。

2.工具:支持軟件的開發(fā)和管理,支持各種軟件文檔的生成。人們將用于軟件開發(fā)的軟、硬件工具和軟件工程數(shù)據(jù)庫集成在一起,建立了集成軟件工程環(huán)境;

3.過程:支持軟件開發(fā)各個環(huán)節(jié)的控制、管理。36軟件工程的基本目標是付出較低的開發(fā)成本,達到要求的軟件功能;按時完成開發(fā)任務,及時交付使用;開發(fā)出來的軟件具有良好的穩(wěn)定性、可靠性、適應性和可操作性,易于移植和維護。

37在軟件開發(fā)過程中,必須遵循抽象性、信息隱藏性、模塊化、局部化、一致性、完整性和可驗證性等原則。抽取事物最基本的特性和行為,忽略某些無關緊要的細節(jié)。

模塊化是程序中邏輯上相對獨立的成分,是功能相對獨立的程序單位(VB語言中的子程序、窗體等),具有良好的接口定義(如子程序的形式參數(shù)、對象的事件等)。隱藏信息模塊的實現(xiàn)細節(jié)(如子程序實現(xiàn)代碼、對象的構造代碼等),通過模塊接口實現(xiàn)操作,將注意力集中在更高層次的對象上。一個模塊的功能盡量獨立和完整,不受其他模塊運行的干擾,其他模塊只能通過接口與之建立聯(lián)系。在一個軟件系統(tǒng)的各個模塊中,使用規(guī)范、統(tǒng)一的符號和術語;模塊內(nèi)外接口一致;系統(tǒng)規(guī)格說明書與軟件系統(tǒng)的行為一致等。

軟件系統(tǒng)不丟失任何重要成分,完全實現(xiàn)系統(tǒng)所需要的功能。

開發(fā)大型軟件系統(tǒng)需要逐步分解,系統(tǒng)分解應遵循系統(tǒng)容易檢查、測試和評審的原則,以保證系統(tǒng)的可驗證性。

3810.4軟件生命周期軟件產(chǎn)品從形成概念開始,經(jīng)過開發(fā)、使用和維護,直到最后退役的全過程稱為軟件的生命周期。39在“計算機軟件開發(fā)規(guī)范”的國家標準中,將軟件生存周期劃分為可行性研究、需求分析、概要設計、詳細設計、代碼實現(xiàn)、軟件測試、使用與維護7個階段,在每個階段中都明確規(guī)定了任務、實施方法、步驟和完成標志等,并要求產(chǎn)生相關的文檔。40軟件定義階段:1.可行性研究:也稱軟件計劃或策劃階段

。此階段主要對待開發(fā)系統(tǒng)涉及到的經(jīng)費、軟/硬件技術、效益和法律等方面的問題進行可行性論證,制定系統(tǒng)開發(fā)任務的實施計劃。

2.需求分析:需求是用戶對目標軟件系統(tǒng)在功能、行為、性能和約束等方面的要求或期望。需求分析是對應用問題及其環(huán)境的理解與分析,為應用問題涉及的事物、功能及系統(tǒng)行為建立模型,將需求精確化和完整化,最終形成需求規(guī)格說明書。

41需求分析的主要工作:獲取資料系統(tǒng)分析員與用戶進行業(yè)務交流和探討,理解需求,澄清模糊的概念,對有爭議的業(yè)務環(huán)節(jié)達成共識等。資料分析

系統(tǒng)分析員對收集的資料進行綜合分析和總結,確認業(yè)務范圍和處理細節(jié),規(guī)劃業(yè)務流程,排除不合理的需求,確定應用問題的解決方案、目標系統(tǒng)的功能模塊以及數(shù)據(jù)模型(如E–R圖形),建立各功能模塊之間的關聯(lián)等。42形成需求規(guī)格說明書

需求分析的成果是需求規(guī)格說明書,通常包括數(shù)據(jù)描述、功能描述和性能描述等信息。它是待開發(fā)軟件系統(tǒng)的預期目標,同時作為系統(tǒng)功能測試、評估和驗收的依據(jù)。需求評審對需求規(guī)格說明書進行審核,驗證文檔的一致性、完整性、正確性、可行性和有效性。43軟件開發(fā)階段:3.概要設計:也稱結構設計或總體設計,根據(jù)需求確定軟件和數(shù)據(jù)的總體框架。數(shù)據(jù)結構設計:也稱數(shù)據(jù)對象設計,主要任務是依據(jù)需求分析的數(shù)據(jù)模型,結合程序中涉及的算法,設計數(shù)據(jù)文件的邏輯結構。軟件結構設計:按自頂向下、逐步求精和模塊化的設計原則,將一個軟件分解和規(guī)劃成若干個模塊,確定各模塊之間的關聯(lián)信息。

概要文檔:概要設計說明書、數(shù)據(jù)結構或數(shù)據(jù)庫設計說明書和軟件集成調(diào)試計劃等。

44軟件開發(fā)階段3.概要設計:也稱結構設計或總體設計,根據(jù)需求確定軟件和數(shù)據(jù)的總體框架。數(shù)據(jù)結構設計:也稱數(shù)據(jù)對象設計,主要任務是依據(jù)需求分析的數(shù)據(jù)模型,結合程序中涉及的算法,設計數(shù)據(jù)文件的邏輯結構。軟件結構設計:按自頂向下、逐步求精和模塊化的設計原則,將一個軟件分解和規(guī)劃成若干個模塊,確定各模塊之間的關聯(lián)信息。

概要文檔:概要設計說明書、數(shù)據(jù)結構或數(shù)據(jù)庫設計說明書和軟件集成調(diào)試計劃等。

45軟件開發(fā)階段4.詳細設計:主要任務是設計軟件功能結構圖中每個最低層模塊的局部算法(如數(shù)據(jù)排序、查找、統(tǒng)計等算法)和數(shù)據(jù)結構(如需要的變量、數(shù)組等),確定每個模塊調(diào)用和數(shù)據(jù)傳輸接口(如參數(shù)、函數(shù)返回值、存儲數(shù)據(jù)的文件或表名等)。描述算法的常用工具有偽代碼(ProcedureDesignLanguage,PDL)、程序流程圖和N–S圖等,設計成果是詳細設計說明書。46軟件開發(fā)階段5.編碼實現(xiàn):需要選擇一種程序設計語言,進入程序設計階段。通常利用菜單或窗口結合工具欄設計軟件功能結構圖的總體框架,依據(jù)詳細設計中的算法和數(shù)據(jù)結構設計每個功能模塊的程序代碼,設計成果是源程序。47軟件開發(fā)階段6.軟件測試:是對需求規(guī)格說明書、概要設計說明書及程序代碼等內(nèi)容的最后復審。軟件質(zhì)量保證貫穿于軟件開發(fā)的整個過程,其中關鍵步驟是軟件測試;軟件測試目的是在軟件產(chǎn)品交付使用之前盡可能發(fā)現(xiàn)潛在的錯誤;軟件測試主要檢測和更正語義和功能錯誤

。48軟件開發(fā)階段軟件測試的方法:靜態(tài)測試:不需要運行軟件,由人工直接進行閱讀和檢查源程序,包括代碼檢查、靜態(tài)結構分析和代碼質(zhì)量度量等。動態(tài)測試:是基于計算機的測試,通過運行軟件發(fā)現(xiàn)錯誤。這種方法需要測試人員根據(jù)軟件開發(fā)規(guī)格說明和程序內(nèi)部結構精心地設計測試用例,通過輸入數(shù)據(jù)和預期的輸出結果發(fā)現(xià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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論