2 2 1高級語言的一般特性 - 高級語言的一般特性_第1頁
2 2 1高級語言的一般特性 - 高級語言的一般特性_第2頁
2 2 1高級語言的一般特性 - 高級語言的一般特性_第3頁
2 2 1高級語言的一般特性 - 高級語言的一般特性_第4頁
2 2 1高級語言的一般特性 - 高級語言的一般特性_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、1,編譯原理,第二章 高級語言及其語法描述,2,第二章 高級語言及其語法描述,程序語言的定義 高級語言的一般特性 程序語言的語法描述,3,第二章 高級語言及其語法描述,程序語言的定義 高級語言的一般特性 程序語言的語法描述,4,2.2 高級語言的一般特性,高級語言的分類 程序結構 數據結構與操作 語句與控制結構,5,數據類型與操作,一個數據類型通常包括三種要素 用于區別這種類型數據對象的屬性 這種類型的數據對象可以具有的值 可以作用于這種類型的數據對象的操作,6,數據類型與操作,初等數據類型 數值類型 整型、實型、復數、雙精度 運算:+,-,*,/等 邏輯類型 true、false 布爾運算:

2、,等 字符類型:符號處理 指針類型,7,測試:標識符與名字,下面哪種說法正確? ( ) A. 標識符是語義概念,名字是語法概念 B. 標識符是語法概念,名字是語義概念,8,標識符與名字,標識符 以字母開頭的,由字母數字組成的字符串 標識符與名字兩者有本質區別 標識符是語法概念 名字有確切的意義和屬性,9,Jordan,標識符,名字,10,標識符與名字,名字 值:單元中的內容 屬性:類型和作用域 名字的性質的說明方式 由說明語句來明確規定的 隱含說明 FORTRAN 以I,J,K,N為首的名字代表整型,否則為實型 動態確定 走到哪里,是什么,算什么,11,數據結構,數組 邏輯上,數組是由同一類型

3、數據所組成的某種n維矩形結構,沿著每一維的距離,稱為下標 數組可變與不可變 編譯時能否確定其存貯空間的大小 訪問 給出數組名和下標值 存放方式 按行存放,按列存放,12,數組元素地址計算,數組A10,20的A1,1為a,各維下標為1,按行存放,那么Ai,j地址為: a+(i-1)*20+(j-1) 數組元素地址計算公式,13,數組元素地址計算,設A為n維數組,按行存放,每個元素寬度為w lowi 為第i維 的下界 upi 為第i維 的上界 ni 為第i維 可取值的個數(ni = upi -lowi + 1), base為A的第一個元素相對地址 元素Ai1,i2,ik相對地址公式 (i1 n2+

4、i2)n3+i3)nk+ik)w + base-(low1 n2+low2)n3+low3)nk+lowk)w,記為Con,14,內情向量,內情向量 維數,各維的上、下限,首地址,以及數組(元素)的類型,15,記錄,邏輯上說,記錄結構由已知類型的數據組合在一起的一種結構 record char NAME20; integer AGE; bool MARRIED; 訪問:復合名 CARDk.NAME 存儲:連續存放 域的地址計算 相對于記錄結構起點的相對數OFFSET,CARD1000,16,字符串、表格、棧,字符串:符號處理、公式處理 表格:本質上是一種記錄結構 線性表:一組順序化的記錄結構

5、棧:一種線性表,后進先出,POP, PUSH,17,抽象數據類型,抽象就是忽略一個主題中與當前問題無關的那些方面,以便更充分地注意與當前問題有關的方面 提取和表現事物的核心特性,忽略細節,18,抽象數據類型,抽象數據類型(Abstract Data Type) A set of data values and associated operations that are precisely specified independent of any particular implementation.,美國標準與技術研究院NIST /dads/HTML/abs

6、tractDataType.html,19,抽象數據類型,一個抽象數據類型包括 數據對象的一個集合 作用于這些數據對象的抽象運算的集合 這種類型對象的封裝,即,除了使用類型中所定義的運算外,用戶不能對這些對象進行操作 程序設計語言對抽象數據類型的支持 Ada通過程序包(package)提供了數據封裝的支持,20,package STACKS is type ELEM is private; type STACK is limited private; procedure push (S: in out STACK; E: in ELEM); procedure pop (S: in out S

7、TACK; E: out ELEM); end STACK;,package body STACKS is procedure push(S: in out STACK; E: in ELEM); begin 實現細節 end push; procedure pop (S: in out STACK; E: out ELEM); begin 實現細節 end pop; end;,規范說明,程序包體,21,抽象數據類型,一個抽象數據類型包括 數據對象的一個集合 作用于這些數據對象的抽象運算的集合 這種類型對象的封裝,即,除了使用類型中所定義的運算外,用戶不能對這些對象進行操作 程序設計語言對抽象

8、數據類型的支持 Ada通過程序包(package)提供了數據封裝的支持 Smalltalk、C+和Java則通過類(Class)對抽象數據類型提供支持,22,class Car int color_number; int door_number; int speed; push_break ( ) add_oil ( ) class Trash_Car extends car double amount; fill_trash ( ) ,23,2.2 高級語言的一般特性,高級語言的分類 程序結構 數據結構與操作 語句與控制結構,24,語句與控制結構,表達式 表達式由運算量(也稱操作數,即數據引

9、用或函數調用)和算符(操作符)組成 形式:中綴、前綴、后綴 X*Y -A P 表達式形成規則,25,算符的優先次序,一般的規定 PASCAL:左結合A+B+C=(A+B)+C FORTRAN:對于滿足左、右結合的算符可任取一種,如A+B+C就可以處理成(A+B)+C,也可以處理成A+(B+C) 注意兩點 代數性質能引用到什么程度視具體的語言不同而不同 在數學上成立的代數性質在計算機上未必完全成立,26,語句,賦值語句 A := B 名字左值:該名字代表的那個單元(地址)稱為該名字的左值(所代表的存貯單元的地址) 右值:一個名字的值稱為該名字的右值(所代表的存貯單元的內容),27,測試:左值與右值,在C語言中,下面選項只具有右值、不具有左值的是 ( )。 A. 變量 B. 下標變量 C. a + 5 D. 指針變量P E. *P (P是指針變量),28,語句,控制語句,無條件轉移語句 goto L,條件語句 if B then S if B then S1 else S2,循環語句 while B do S repeat S until B for i:=E1 step E2 until E3 do S,過程調用語句 call P(X1, X2, . ,Xn),返回語句 r

溫馨提示

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

評論

0/150

提交評論