程序設(shè)計(jì)語言-chap1_第1頁
程序設(shè)計(jì)語言-chap1_第2頁
程序設(shè)計(jì)語言-chap1_第3頁
程序設(shè)計(jì)語言-chap1_第4頁
程序設(shè)計(jì)語言-chap1_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第1章 程序語言設(shè)計(jì)問題學(xué)習(xí)目標(biāo):初步掌握程序語言的基本概念,了解程序語言的發(fā)展;了解編程環(huán)境對(duì)語言的影響。理解學(xué)習(xí)程序設(shè)計(jì)語言的作用;了解幾種語言的特點(diǎn);了解對(duì)程序語言影響的主要要素;了解語言標(biāo)準(zhǔn)問題;學(xué)習(xí)程序設(shè)計(jì)語言的基本計(jì)算模式;1重點(diǎn)和難點(diǎn):本章的重點(diǎn)是:程序設(shè)計(jì)語言的基本概念;好的程序語言的基本特征;本章的難點(diǎn)是:程序設(shè)計(jì)語言的一般計(jì)算模型;知識(shí)點(diǎn):程序;算法;數(shù)據(jù)結(jié)構(gòu);機(jī)器語言;匯編語言;高級(jí)語言;翻譯;可讀性;可維護(hù)型;使用代價(jià);計(jì)算模型;21.1為什么學(xué)習(xí)程序設(shè)計(jì)語言(學(xué)習(xí)程序語言有何作用)?1.2 程序設(shè)計(jì)語言的發(fā)展簡(jiǎn)史1.3 對(duì)程序語言影響的主要因素1.4 好語言的特征1.

2、5 程序設(shè)計(jì)語言的基本計(jì)算模型1.6 語言標(biāo)準(zhǔn)1.7 編程環(huán)境第1章 程序語言設(shè)計(jì)問題31.1 為什么學(xué)習(xí)程序設(shè)計(jì)語言?增強(qiáng)設(shè)計(jì)高效率算法的能力;(如遞歸)提高對(duì)現(xiàn)存程序語言的運(yùn)用能力;增加有用程序結(jié)構(gòu)的詞匯表;可以對(duì)程序語言有更好的選擇;更容易學(xué)習(xí)新語言;更容易設(shè)計(jì)出一種新語言; 返回41.2 程序語言發(fā)展簡(jiǎn)史機(jī)器語言匯編語言高級(jí)語言;基于數(shù)字計(jì)算的語言,如Fortran; 基于商業(yè)語言,如COBOL;人工智能語言,如LISP;系統(tǒng)語言,如C語言;5語言的應(yīng)用領(lǐng)域商業(yè):COBOL,C+,Java,Excel,Delphi科學(xué):Fortran,C,C+,Java,Delphi,Basic系統(tǒng):

3、C,C+,Java,Ada人工智能:LISP,Prolog出版:Tex,Postscript,Word處理:Unix shell,TCL, Perl, Javascript 返回61.3 對(duì)程序語言影響的主要因素1)計(jì)算機(jī)性能:計(jì)算機(jī)性能價(jià)格比在不斷提高,嵌入了OS,使用高級(jí)語言成為可能。2)應(yīng)用:從軍事、科技、商業(yè)、工業(yè)領(lǐng)域計(jì)算機(jī)游戲、個(gè)人計(jì)算機(jī),乃至各個(gè)領(lǐng)域。3)編程方法:簡(jiǎn)單程序復(fù)雜程序; 技巧性可讀性。4)實(shí)現(xiàn)方法:設(shè)計(jì)新的數(shù)據(jù)結(jié)構(gòu)和算法, 實(shí)現(xiàn)高效性可維護(hù)性。5)理論研究:采用形式化的數(shù)學(xué)方法進(jìn)行語言數(shù)據(jù)結(jié)構(gòu)、算法等設(shè)計(jì)、實(shí)現(xiàn)方面的研究。6)標(biāo)準(zhǔn)化:強(qiáng)調(diào)可移植性。 返回71.4 好語

4、言的特征1)透明性、簡(jiǎn)單性和統(tǒng)一性:從語法上的區(qū)別就能體現(xiàn)語義上的區(qū)別。2)正交性:是指能將一種語言的各種特征以所有可能的情況加以組合,并且每一種組合均有意義。例,假設(shè)某種語言(如C)提供了能夠產(chǎn)生值的表達(dá)式,而且也提供了條件語句以計(jì)算一個(gè)表達(dá)式的值是真或假。如果任何一個(gè)表達(dá)式在條件語句中都能使用(和計(jì)算),那么這種語言中的這兩個(gè)特征,即表達(dá)式和條件語句就具有正交性。正交性的好處:需要記憶的特殊情況較少,易于學(xué)習(xí)和編程。缺點(diǎn):可能包含邏輯不連貫性的特征組合。83)應(yīng)用的自然性:使得程序結(jié)構(gòu)能夠反映出算法的邏輯結(jié)構(gòu)基礎(chǔ)。理想情況下,能夠?qū)⒊绦蛟O(shè)計(jì)直接轉(zhuǎn)化成正確的反映算法結(jié)構(gòu)的程序語句(自然語言描

5、述的算法可直接轉(zhuǎn)化成程序語句)。4)抽象性的支持:能夠支持抽象性的數(shù)據(jù)結(jié)構(gòu)(如包含有“學(xué)生、班級(jí)、教師、教室”等成員的記錄Record,結(jié)構(gòu)Struct等)以及抽象的操作(如給一個(gè)班級(jí)分配教室)。程序員的一項(xiàng)重要工作就是:設(shè)計(jì)抽象類、實(shí)現(xiàn)抽象類。5)程序的易驗(yàn)證性:語義和語法的簡(jiǎn)單性是簡(jiǎn)化程序驗(yàn)證的一個(gè)基本要素。6)編程環(huán)境:集成化的編程環(huán)境。如VB、VC、VJ、JBuilder、Delphi等。97) 可移植性:能將一臺(tái)機(jī)器上開發(fā)的程序在另一臺(tái)機(jī)器上運(yùn)行。如Java程序。8)使用代價(jià)程序執(zhí)行代價(jià):運(yùn)行時(shí)占用系統(tǒng)資源代價(jià)。如今,不是關(guān)心的主要問題。翻譯的代價(jià):翻譯的速度和占用系統(tǒng)資源代價(jià),對(duì)于

6、教學(xué)性的語言較為強(qiáng)調(diào)。 程序創(chuàng)建、測(cè)試和使用的代價(jià):程序員設(shè)計(jì)、編碼、調(diào)試、修改、集成、測(cè)試和使用時(shí)投入的總時(shí)間與工作量。這是目前最關(guān)心的代價(jià)之一。如Perl,Smalltalk程序維護(hù)的代價(jià):在程序的使用過程中對(duì)程序反復(fù)修改、修復(fù)和升級(jí)擴(kuò)充所花費(fèi)的代價(jià)。這是目前最關(guān)心的代價(jià)之一。 返回101.5 程序設(shè)計(jì)語言的基本計(jì)算模型命令式語言(過程式語言)是命令驅(qū)動(dòng)和面向語句的語言。程序由一系列的語句組成,其一般語法形式為:語句1;語句2;每條語句執(zhí)行的結(jié)果是的計(jì)算機(jī)改變一個(gè)或多個(gè)存儲(chǔ)單元的值,即進(jìn)入一個(gè)新的狀態(tài)。其操作過程如圖所示。模型的優(yōu)點(diǎn):效率較高。語言實(shí)例:C,Pascal,Fortran,C

7、OBOL等。應(yīng)用領(lǐng)域:科學(xué)計(jì)算、系統(tǒng)設(shè)計(jì)、商業(yè)應(yīng)用、工業(yè)控制等領(lǐng)域。11應(yīng)用式語言(函數(shù)式語言)以數(shù)據(jù)為驅(qū)動(dòng)的強(qiáng)調(diào)程序(函數(shù))執(zhí)行的初始狀態(tài)和處理(輸出)結(jié)果。不是將計(jì)算看成連續(xù)的機(jī)器狀態(tài)的轉(zhuǎn)換,而是看成為了得到答案而應(yīng)用于數(shù)據(jù)的連續(xù)的函數(shù)轉(zhuǎn)換。其一般語法形式為: functionn(function2(function1(data)該模型可看成是一個(gè)以原始數(shù)據(jù)作為輸入,對(duì)內(nèi)存進(jìn)行操作以產(chǎn)生答案的透鏡。其操作過程如圖所示模型的優(yōu)點(diǎn):較好的靈活性和可靠性。語言實(shí)例:側(cè)重于人工智能的LISP,ML語言等。應(yīng)用領(lǐng)域:人工智能。12基于規(guī)則語言(邏輯編程語言)以條件作為驅(qū)動(dòng)而執(zhí)行相應(yīng)動(dòng)作的語言。規(guī)則=

8、條件+動(dòng)作類似于命令式語言,但語句不是連續(xù)的,啟用條件決定語句的 執(zhí)行順序。其一般語法形式為:?jiǎn)⒂脳l件1 動(dòng)作1啟用條件2 動(dòng)作2該模型可看作是應(yīng)用于數(shù)據(jù)的一個(gè)過濾器集合。通過使用過濾器來改變狀態(tài)。其操作過程如圖所示。模型的優(yōu)點(diǎn):較好的靈活性和決策推理性。語言實(shí)例:Prolog語言。應(yīng)用領(lǐng)域:人工智能和決策支持。13面向?qū)ο笳Z言以對(duì)象為程序單元。通過建立復(fù)雜的數(shù)據(jù)對(duì)象,并且設(shè)計(jì)有限的函數(shù)集對(duì)對(duì)象實(shí)施操作。模型的優(yōu)點(diǎn):結(jié)合命令式和應(yīng)用式語言的優(yōu)點(diǎn)。具有較高的效率以及較好的靈活性和可靠性。語言實(shí)例:VC+, Java等應(yīng)用領(lǐng)域:科學(xué)計(jì)算、系統(tǒng)設(shè)計(jì)、商業(yè)應(yīng)用、工業(yè)控制等領(lǐng)域。14計(jì)算模型的一般性意大

9、利面條代碼程序沒有明顯的結(jié)構(gòu),程序的控制跳轉(zhuǎn)隨意。程序模塊可能存在多個(gè)入口和出口。缺點(diǎn):模塊之間的分解不易確定,分工協(xié)作較困難。程序運(yùn)行時(shí)難以確定任何點(diǎn)上的計(jì)算機(jī)狀態(tài)。程序的可讀性和可維護(hù)性較差。15結(jié)構(gòu)化程序代碼屬于應(yīng)用式模型,程序具有明顯的結(jié)構(gòu),程序的控制跳轉(zhuǎn)不是隨意的。程序模塊只有存在一個(gè)入口和出口。優(yōu)點(diǎn):模塊之間的分界易確定,易于分工協(xié)作。程序的可讀性和可維護(hù)性較好。16 返回171.6 語言標(biāo)準(zhǔn)int i; i=(1&2)+3; 該C代碼有效? i的值?方法:閱讀C語言手冊(cè)?編程試驗(yàn)?按語言標(biāo)準(zhǔn)理解?18語言開發(fā)商可能希望加入新的特征以增加功能,增加的特性是否合法?用戶是否能夠?qū)φZ言

10、進(jìn)行擴(kuò)充,擴(kuò)充后的語言能否在其它系統(tǒng)上運(yùn)行?標(biāo)準(zhǔn)化分類:專有化標(biāo)準(zhǔn):語言開發(fā)商定義。一般不適用于已經(jīng)流行并廣泛使用的語言。由于在使用過程中很快有許多增強(qiáng)但不兼容的語言版本出現(xiàn)。共識(shí)性標(biāo)準(zhǔn):相關(guān)組織定義。是使一種語言在幾個(gè)實(shí)現(xiàn)中保證相同性的主要方法。19標(biāo)準(zhǔn)化組織:美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI);電子電器工程師協(xié)會(huì)(IEEE);計(jì)算機(jī)商業(yè)設(shè)備制造商聯(lián)盟的X3委員會(huì)(CBEMA);英國(guó)標(biāo)準(zhǔn)協(xié)會(huì)(BSI)。國(guó)際標(biāo)準(zhǔn)化組織(ISO);20影響標(biāo)準(zhǔn)化的因素:時(shí)機(jī)性:什么時(shí)候標(biāo)準(zhǔn)化一個(gè)語言最合適? 不能太早,否則人們還沒有足夠的使用經(jīng)驗(yàn),難以被接受(如Ada語言);也不能太晚,否則已經(jīng)了許多不兼容的版本,在

11、標(biāo)準(zhǔn)化較為困難(如Fortran語言)。而應(yīng)該在它們正在發(fā)展的時(shí)候標(biāo)準(zhǔn)化最為合適,如C和Pascal。21一致性:對(duì)于一個(gè)符合標(biāo)準(zhǔn)的程序和能編譯標(biāo)準(zhǔn)程序的編譯器,它意味著什么? 在標(biāo)準(zhǔn)化的保證下,符合該語言標(biāo)準(zhǔn)的程序能夠正確執(zhí)行,即程序具有一致性;對(duì)于一致性程序能夠產(chǎn)生正確執(zhí)行結(jié)果的編譯器,稱之為一致性編譯器。時(shí)效性:標(biāo)準(zhǔn)的有效性有多久? 一般在5-10年就需要修改,注意語言的向后兼容性。 22 返回國(guó)際化 語言進(jìn)行國(guó)際化問題排序問題:不同的字符在不同的國(guó)家具有不同的意義。大小寫:有些國(guó)家的字符具有大小寫區(qū)分,而有寫國(guó)家的字符不具有大小寫區(qū)分,如日文,中文,阿拉伯語。讀取方向:左到右、右到左、

12、上到下等。日期格式:如美國(guó)10/25/2003、英國(guó)25/10/2003、法國(guó)25.10.2003、意大利25_X_2003、中國(guó)2003.10.25時(shí)間格式:如美國(guó)3:30p.m;中國(guó)15:30;法國(guó)15h30時(shí)區(qū):格林威治時(shí)間,夏時(shí)制。貨幣:不同國(guó)家具有不同的貨幣單位。231.7 編程環(huán)境編程環(huán)境:程序一般在編程環(huán)境下開發(fā)和測(cè)試。什么是編程環(huán)境?支持工具(編輯器、編譯器、調(diào)試器、驗(yàn)證器、測(cè)試數(shù)據(jù)產(chǎn)生器、打印器等)+命令。每一種支持工具其本身既是一個(gè)程序。編程環(huán)境對(duì)語言設(shè)計(jì)的影響 主要表現(xiàn)在兩個(gè)方面: 1)單獨(dú)編譯和匯編 2)測(cè)試和調(diào)試24分別編譯:將程序的各個(gè)組成部分分別進(jìn)行設(shè)計(jì)、編碼、編

13、譯、測(cè)試、調(diào)試,然后連接成一個(gè)完整的程序。 要求:程序具有結(jié)構(gòu)化的特性。 實(shí)現(xiàn)的難點(diǎn): 一、程序的各個(gè)模塊本身具有相互關(guān)聯(lián)性,當(dāng)編譯一個(gè)子程序時(shí),編譯器可能需要其他子程序或共享數(shù)據(jù)對(duì)象的信息,比如: 1)調(diào)用外部子程序的參數(shù)的數(shù)量、順序和 類型等信息。 2)應(yīng)用的外部變量的類型、存儲(chǔ)形式等。 3)與局部變量同名的外部變量信息。25解決方法: 1)將信息在子程序中重定義,如fortran語言。多人編程時(shí),有些困難,也易出錯(cuò)。 2)規(guī)定特別的編譯順序:要求每個(gè)程序的編譯跟在所有調(diào)用則程序和共享數(shù)據(jù)的聲明之后,如pascal語言。 3)用一個(gè)專門的運(yùn)行庫包含所有的相關(guān)聲明信息。 分別編譯的缺點(diǎn):在一

14、般情況下,無法檢查外部子程序相關(guān)信息的一致性以及在子程序中重新聲明的數(shù)據(jù)。26 二、同名問題:不同編程人員使用相同子程序、全局變量名字。 解決方法: 1)各個(gè)編程人員(小組)在程序編制之前相互溝通和協(xié)調(diào),避免使用相同的名字,每個(gè)編程人員(小組)用它們約定的特殊字符作為名字的開頭,如a組用前綴aa, b組用前綴bb。C中#include文件中的名字一般用前綴_. 2)使用范圍規(guī)則來屏蔽名字,如一個(gè)子程序包含在另一個(gè)子程序中,則只有最外層子程序中的名字對(duì)其他分別編譯的子程序右影響。如Pascal。 3)通過從外部庫中顯式增加名字定義,如面向?qū)ο笳Z言中的繼承機(jī)制。利用重載技術(shù),允許不同的對(duì)象使用相同

15、的名字。27測(cè)試與調(diào)試:跟蹤執(zhí)行、斷點(diǎn)、斷言。跟蹤執(zhí)行:提供對(duì)特殊語句及變量作標(biāo)記以便在程序中跟蹤的特性。斷點(diǎn):提供在程序中某處設(shè)立斷點(diǎn)的特性。斷言(assertions):程序中作為單獨(dú)語句插入的條件表達(dá)式。如 assert(X0 and A=1) or (X=0 and AB+10); 當(dāng)斷言激活時(shí),編譯器會(huì)判斷條件,如條件不滿足,則中斷程序進(jìn)入異常處理。程序調(diào)試后,斷言可被屏蔽而成為程序中有用的注釋。28本章小節(jié)通過學(xué)習(xí)本章:我們知道學(xué)習(xí)程序設(shè)計(jì)語言可以增強(qiáng)我們?cè)O(shè)計(jì)高效算法的能力,能夠提高我們對(duì)現(xiàn)存程序語言的運(yùn)用能力,使我們更容易學(xué)習(xí)和掌握新的語言。程序設(shè)計(jì)語言經(jīng)過了低級(jí)語言(機(jī)器語言、匯編語言)到高級(jí)語言的發(fā)展,而且仍在繼續(xù)不斷的發(fā)展和變化。各種不同的語言具有不同的特點(diǎn)和在不同應(yīng)用領(lǐng)域具有各自的優(yōu)勢(shì)。29影響程序設(shè)計(jì)語言的主要因素有:計(jì)算機(jī)性能,應(yīng)用領(lǐng)域的要求,編程方法,實(shí)現(xiàn)方法和標(biāo)準(zhǔn)化。程序設(shè)計(jì)已經(jīng)涉及到社會(huì)各個(gè)領(lǐng)域的應(yīng)用,經(jīng)歷著應(yīng)用程序的“簡(jiǎn)單性” 到“復(fù)雜性”;編程強(qiáng)調(diào)“技巧性”到“可讀性”;追求實(shí)現(xiàn)的“高效性”到“可維護(hù)性”和強(qiáng)調(diào)“可移植性”的演變。程序一般計(jì)算模型有:命令式語言、應(yīng)用式語言、基于規(guī)則語言和面向?qū)ο笳Z言四種,各自具有優(yōu)點(diǎn)。目前主要使用的仍

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論