程序設計語言-chap1_第1頁
程序設計語言-chap1_第2頁
程序設計語言-chap1_第3頁
程序設計語言-chap1_第4頁
程序設計語言-chap1_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第1章 程序語言設計問題學習目標:初步掌握程序語言的基本概念,了解程序語言的發展;了解編程環境對語言的影響。理解學習程序設計語言的作用;了解幾種語言的特點;了解對程序語言影響的主要要素;了解語言標準問題;學習程序設計語言的基本計算模式;1重點和難點:本章的重點是:程序設計語言的基本概念;好的程序語言的基本特征;本章的難點是:程序設計語言的一般計算模型;知識點:程序;算法;數據結構;機器語言;匯編語言;高級語言;翻譯;可讀性;可維護型;使用代價;計算模型;21.1為什么學習程序設計語言(學習程序語言有何作用)?1.2 程序設計語言的發展簡史1.3 對程序語言影響的主要因素1.4 好語言的特征1.

2、5 程序設計語言的基本計算模型1.6 語言標準1.7 編程環境第1章 程序語言設計問題31.1 為什么學習程序設計語言?增強設計高效率算法的能力;(如遞歸)提高對現存程序語言的運用能力;增加有用程序結構的詞匯表;可以對程序語言有更好的選擇;更容易學習新語言;更容易設計出一種新語言; 返回41.2 程序語言發展簡史機器語言匯編語言高級語言;基于數字計算的語言,如Fortran; 基于商業語言,如COBOL;人工智能語言,如LISP;系統語言,如C語言;5語言的應用領域商業:COBOL,C+,Java,Excel,Delphi科學:Fortran,C,C+,Java,Delphi,Basic系統:

3、C,C+,Java,Ada人工智能:LISP,Prolog出版:Tex,Postscript,Word處理:Unix shell,TCL, Perl, Javascript 返回61.3 對程序語言影響的主要因素1)計算機性能:計算機性能價格比在不斷提高,嵌入了OS,使用高級語言成為可能。2)應用:從軍事、科技、商業、工業領域計算機游戲、個人計算機,乃至各個領域。3)編程方法:簡單程序復雜程序; 技巧性可讀性。4)實現方法:設計新的數據結構和算法, 實現高效性可維護性。5)理論研究:采用形式化的數學方法進行語言數據結構、算法等設計、實現方面的研究。6)標準化:強調可移植性。 返回71.4 好語

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

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

6、教學性的語言較為強調。 程序創建、測試和使用的代價:程序員設計、編碼、調試、修改、集成、測試和使用時投入的總時間與工作量。這是目前最關心的代價之一。如Perl,Smalltalk程序維護的代價:在程序的使用過程中對程序反復修改、修復和升級擴充所花費的代價。這是目前最關心的代價之一。 返回101.5 程序設計語言的基本計算模型命令式語言(過程式語言)是命令驅動和面向語句的語言。程序由一系列的語句組成,其一般語法形式為:語句1;語句2;每條語句執行的結果是的計算機改變一個或多個存儲單元的值,即進入一個新的狀態。其操作過程如圖所示。模型的優點:效率較高。語言實例:C,Pascal,Fortran,C

7、OBOL等。應用領域:科學計算、系統設計、商業應用、工業控制等領域。11應用式語言(函數式語言)以數據為驅動的強調程序(函數)執行的初始狀態和處理(輸出)結果。不是將計算看成連續的機器狀態的轉換,而是看成為了得到答案而應用于數據的連續的函數轉換。其一般語法形式為: functionn(function2(function1(data)該模型可看成是一個以原始數據作為輸入,對內存進行操作以產生答案的透鏡。其操作過程如圖所示模型的優點:較好的靈活性和可靠性。語言實例:側重于人工智能的LISP,ML語言等。應用領域:人工智能。12基于規則語言(邏輯編程語言)以條件作為驅動而執行相應動作的語言。規則=

8、條件+動作類似于命令式語言,但語句不是連續的,啟用條件決定語句的 執行順序。其一般語法形式為:啟用條件1 動作1啟用條件2 動作2該模型可看作是應用于數據的一個過濾器集合。通過使用過濾器來改變狀態。其操作過程如圖所示。模型的優點:較好的靈活性和決策推理性。語言實例:Prolog語言。應用領域:人工智能和決策支持。13面向對象語言以對象為程序單元。通過建立復雜的數據對象,并且設計有限的函數集對對象實施操作。模型的優點:結合命令式和應用式語言的優點。具有較高的效率以及較好的靈活性和可靠性。語言實例:VC+, Java等應用領域:科學計算、系統設計、商業應用、工業控制等領域。14計算模型的一般性意大

9、利面條代碼程序沒有明顯的結構,程序的控制跳轉隨意。程序模塊可能存在多個入口和出口。缺點:模塊之間的分解不易確定,分工協作較困難。程序運行時難以確定任何點上的計算機狀態。程序的可讀性和可維護性較差。15結構化程序代碼屬于應用式模型,程序具有明顯的結構,程序的控制跳轉不是隨意的。程序模塊只有存在一個入口和出口。優點:模塊之間的分界易確定,易于分工協作。程序的可讀性和可維護性較好。16 返回171.6 語言標準int i; i=(1&2)+3; 該C代碼有效? i的值?方法:閱讀C語言手冊?編程試驗?按語言標準理解?18語言開發商可能希望加入新的特征以增加功能,增加的特性是否合法?用戶是否能夠對語言

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論