1-2 程序設(shè)計概述_第1頁
1-2 程序設(shè)計概述_第2頁
1-2 程序設(shè)計概述_第3頁
1-2 程序設(shè)計概述_第4頁
1-2 程序設(shè)計概述_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

程序設(shè)計概述主要內(nèi)容什么是程序什么是程序設(shè)計程序設(shè)計范式程序設(shè)計步驟程序設(shè)計語言用計算機來解決實際問題是通過用計算機程序?qū)Ψ从硨嶋H問題的一些數(shù)據(jù)進行處理來實現(xiàn)的。程序的組成:

程序

=算法

+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)(datastructure)是對反映待解問題的數(shù)據(jù)的描述。算法(algorithm)是指對數(shù)據(jù)的加工處理步驟的描述。程序(Program)程序設(shè)計(Programming)要使得計算機能完成各種任務(wù),就必須為它編寫相應(yīng)的程序。程序設(shè)計就是為計算機編寫程序的過程(有時簡稱為編程)。程序設(shè)計要涉及:程序設(shè)計范式程序設(shè)計步驟程序設(shè)計語言等程序設(shè)計范式如何看待和組織算法和數(shù)據(jù)結(jié)構(gòu)存在著不同的做法,從而形成不同的程序設(shè)計范式(programmingparadigms)。程序設(shè)計范式是設(shè)計、組織和編寫程序的一種方式,它包含了一組理論、原則和概念。不同的范式將采用不同的程序結(jié)構(gòu)和程序元素來描述程序。范式具有針對性,不同的范式往往適合于解決不同類型的問題。典型的程序設(shè)計范式有:過程式對象式函數(shù)式邏輯式過程式程序設(shè)計一種以功能或操作為中心、基于功能分解和復(fù)合的程序設(shè)計范式。程序由一些子程序構(gòu)成,每個子程序?qū)?yīng)一個子功能;子程序由一系列的操作(操作步驟)構(gòu)成,它是操作的封裝體,實現(xiàn)了過程抽象。程序的執(zhí)行過程體現(xiàn)為一系列的子程序調(diào)用。在過程式程序中,數(shù)據(jù)處于附屬地位,它獨立于子程序,在子程序調(diào)用時通過參數(shù)或全局變量傳給子程序使用。早期的程序設(shè)計大都采用了過程式程序設(shè)計范式,它與馮?諾依曼計算模型有著直接的對應(yīng)。本課程重點介紹過程式程序設(shè)計范式。對象式(面向?qū)ο螅┏绦蛟O(shè)計一種以數(shù)據(jù)為中心、基于對象的程序設(shè)計范式。程序由一些對象構(gòu)成,對象是由一些數(shù)據(jù)及可施于這些數(shù)據(jù)上的操作所組成的封裝體,實現(xiàn)了數(shù)據(jù)抽象。對象的特征由相應(yīng)的類來描述,一個類描述的對象特征可以從其它的類獲得(繼承)。程序的執(zhí)行過程體現(xiàn)為各個對象之間相互發(fā)送和處理消息。在面向?qū)ο蟪绦蛑校瑪?shù)據(jù)表現(xiàn)為對象的屬性,對數(shù)據(jù)的操作是通過向包含數(shù)據(jù)的對象發(fā)送消息之后調(diào)用對象類提供的操作來實現(xiàn)的。函數(shù)式與邏輯式函數(shù)式程序設(shè)計圍繞函數(shù)來進行的,計算過程體現(xiàn)為一系列的函數(shù)應(yīng)用(FunctionApplication),它基于了遞歸函數(shù)理論和lambda演算,其中,函數(shù)也被作為值來看待,即,函數(shù)的參數(shù)和計算結(jié)果也可以是函數(shù)。邏輯式程序設(shè)計把程序組織成一組事實和一組推理規(guī)則,在事實基礎(chǔ)上運用推理規(guī)則來實施計算,它基于的是謂詞演算(PredicateCalculus)。上述兩種程序設(shè)計范式有良好的數(shù)學(xué)理論支持,易于保證程序的正確性。設(shè)計出的程序比較精煉和具有潛在的并行性。適合于需要大量地進行復(fù)雜的符號處理(非數(shù)值計算)的人工智能領(lǐng)域的應(yīng)用。程序設(shè)計步驟明確問題搞清楚要解決的問題并給出問題的明確定義,即:做什么?系統(tǒng)設(shè)計 從計算機角度給出問題的解決方案,即:如何做?包括概要設(shè)計:給出程序的總體結(jié)構(gòu)。詳細(xì)設(shè)計:給出具體的數(shù)據(jù)結(jié)構(gòu)和算法。系統(tǒng)設(shè)計的結(jié)果往往是以某種抽象的不依賴于具體程序設(shè)計語言的形式來描述的。如:功能模塊結(jié)構(gòu)圖、流程圖、類圖以及偽代碼等。不同的程序設(shè)計范式?jīng)Q定了不同的設(shè)計方案和設(shè)計結(jié)果。實現(xiàn)選擇用某種程序語言把系統(tǒng)設(shè)計的結(jié)果表示出來,即編程(coding)。由于程序設(shè)計的大量工作是花在編程上的,常常把程序設(shè)計又稱為編程。(編程有廣義和狹義兩個含義)良好的編程風(fēng)格可以通過學(xué)習(xí)和訓(xùn)練來獲得。測試與調(diào)試程序可能含有錯誤,其中包括邏輯錯誤和運行異常錯誤。測試(test)是通過一些測試數(shù)據(jù)來運行程序,查看結(jié)果與預(yù)期是否相符。如果程序發(fā)現(xiàn)程序有錯,就需要對錯誤進行定位,這個過程稱為調(diào)試(debug)。程序設(shè)計步驟(續(xù)1)程序設(shè)計步驟(續(xù)2)運行維護所有的測試手段只能發(fā)現(xiàn)程序有錯誤,而不能證明程序沒有錯誤!在程序使用中發(fā)現(xiàn)錯誤并改正錯誤的過程稱為維護,包括:正確性維護:改正程序中的錯誤。完善性維護:完善程序的功能。適應(yīng)性維護:把程序移植到其它平臺上。程序設(shè)計語言程序設(shè)計的結(jié)果需要用一種能被計算機接受的語言(稱為編程語言或程序語言)表示出來(Coding)。根據(jù)與計算機指令系統(tǒng)和人們解決問題所采用的描述語言(如:數(shù)學(xué)語言)的接近程度,常常把編程語言分為:低級語言高級語言低級語言低級語言是指特定計算機能夠直接理解的語言(或與之直接對應(yīng)的語言)。包括:機器語言用二進制編碼來表示操作以及操作數(shù)的存儲位置。匯編語言用符號名來表示操作和操作數(shù)的存儲位置,使得程序容易編寫和增加程序的易讀性。匯編語言與機器語言有一一對應(yīng)的關(guān)系,但它需要翻譯成機器語言才能執(zhí)行,這個過程叫做匯編。高級語言高級語言是指人容易理解和有利于人對解題過程進行描述的程序語言。典型的高級語言有:FORTRAN、COBOL、Basic、Pascal、C、Ada、Modula-2、Lisp、Prolog、Simula、Smalltalk、C++、Java、Python等高級語言需要翻譯成機器語言或匯編語言才能執(zhí)行。通常所講的程序設(shè)計語言往往指的是高級語言。低級語言與高級語言程序的比較計算r=a+b*c-d的值用匯編語言可寫成:

movax,b mulax,c addax,a subax,d movr,axmov、mul、add、sub是計算機指令ax是cpu內(nèi)部的一個寄存器a、b、c、d、r表示數(shù)據(jù)的內(nèi)存地址用高級語言可直接寫成:

r=a+b*c-da、b、c、d、r是變量名=、+、*、-是操作符低級語言的優(yōu)、缺點優(yōu)點:寫出的程序效率比較高,包括執(zhí)行速度快和占用空間少。缺點:程序的編寫、理解與維護比較困難,難以保證程序的正確性;可移植性差(與運行的平臺相關(guān))。高級語言的優(yōu)、缺點優(yōu)點:程序的編寫、理解與維護比較容易,有利于保證程序正確性;可移植性好(與運行的平臺無關(guān))。缺點:用其編寫的程序相對于用低級語言編寫的程序效率要低,翻譯成的機器指令數(shù)量較大。高級語言的翻譯高級語言的翻譯有編譯與解釋兩種方式。編譯方式把高級語言程序(稱為源代碼程序,簡稱源程序)首先翻譯成功能上等價的機器語言程序(稱為目標(biāo)代碼程序)或匯編語言程序(再通過匯編程序把它翻譯成目標(biāo)代碼程序)。然后執(zhí)行目標(biāo)代碼程序。在目標(biāo)代碼程序的執(zhí)行中不再需要源程序。翻譯工作由編譯程序完成。解釋方式對源程序中的語句逐條進行翻譯成目標(biāo)代碼并執(zhí)行,翻譯完了程序也就執(zhí)行完了。這種翻譯方式不產(chǎn)生目標(biāo)代碼程序,程序的每次執(zhí)行都需要源程序。翻譯工作由解釋程序完成?;旌戏绞揭越忉尫绞綀?zhí)行高級語言程序比較靈活,對編程語言的限制較少,但效率比較低??梢韵韧ㄟ^編譯方式把高級語言程序翻譯成功能上等價的、相對簡單的某種中間語言程序,然后用解釋方式執(zhí)行這個中間語言程序。高級語言的分類按照適用的應(yīng)用類型,可分為:科學(xué)計算語言(如FORTRAN)商務(wù)處理語言(如COBOL)系統(tǒng)程序語言(如C/C++)網(wǎng)絡(luò)應(yīng)用語言(如Java、Python)按照所支持的程序設(shè)計范式,可分為:過程式語言(如FORTRAN、COBOL、Basic、Pascal、C)面向?qū)ο笳Z言(如Simula、Smalltalk、Java)函數(shù)式語言(如Lisp)邏輯式語言(如Prolog)混合式語言(如C++,Python)按執(zhí)行方式,可分為:編譯型語言(如FORTRAN、COBOL、Pascal、C、Ada、Modula-2、Simula、C++)解釋型語言(如Basic、Lisp、Prolog、Simula、Smalltalk、Java、Python)語言的設(shè)計和實現(xiàn)語言的設(shè)計:給出語言的定義,包括語言的語法、語義和語用等。語法:是指構(gòu)作結(jié)構(gòu)正確的語言成分所需遵循的規(guī)則。語義:是指語言各個成分的含義。語用:是指語言成分的使用場合及所產(chǎn)生的實際效果。(初學(xué)者最不容易掌握)語言的實現(xiàn)

溫馨提示

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

評論

0/150

提交評論