第2章 Delphi語法基礎_第1頁
第2章 Delphi語法基礎_第2頁
第2章 Delphi語法基礎_第3頁
第2章 Delphi語法基礎_第4頁
第2章 Delphi語法基礎_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、青島世隆創新軟件科技有限公司- 平臺開發部 學習培訓文檔第2章 Delphi語法基礎2.1標識符與保留字2.1.1 標識符標識符是Object Pascal語言中各種成分的名稱,這些成分包括變量(Var)、常量(Const)、類型(Type)、過程(Procedure)、函數(Function)、方法(Method)、單元(Unit)等。 標識符可以分為三類:標準標識符、自定義標識符和限定標識符。1標準標識符 § (1)標準常量,如False、True等;§ (2)標準類型,如Boolean、Char等; § (3)標準函數,如Sin、Cos、Abs等;§

2、; (4)標準過程,如Dispose、Get、New、Pack、Put等;§ (5)標準文件,如Input、Output等。 2自定義標識符:自定義標識符可以由任意長的一個不帶空格的字符串組成,包括字母AZ 、az 、數字09 和下劃線“_”等。定義標識符需要遵循以下規則:§ (1)標識符不區分大小寫;§ (2)標識符只能以字母或下劃線開頭,不能以數字開頭;§ (3)標識符可任意長度,但只有前225個字符有效;§ (4)標識符中間不允許有空格; § (5)不允許使用Object Pascal語言的保留字作為標識符。 3限定標識符在De

3、lphi程序中可引用多個單元,而各個單元中全局變量、函數、過程等可能會同名,在引用時需用限定標識符來區分它們:Var Y:real;Y:=System.cos(pi);其中System稱為限定符 ,而System.cos稱為限定標識符。 2.1.2 保留字保留字由系統規定具有特定意義,不能被重新定義或作他用,定義了65個保留字 。注意:1單詞at和on具有特殊含義,不要與它們同名。2保留字和Object Pascal一樣不區分大小寫。 Object Pascal的保留字andarrayasasmbegincaseclassconstconstructordestructordispinterf

4、acedivdodowntoelseendexceptexportsfilefinalizationfinallyforfunctiongotoifimplementationininheritedinitializationinlineinterfaceislabellibrarymodnilnotobjectoforoutpackedprocedureprogrampropertyraiserecordrepeatresourcestringsetshlshrstringthenthreadvartotrytypeunituntilusesvarwhilewithxor2.1.3 指令符指

5、令字只在特殊的程序位置、或當上下文關聯時有意義的程序區段有自己特殊的意義,而在其他場合,用戶可對其重新定義,即可將其定義為標識符,Object Pascal不會指示出錯,當用戶重新定義這些指令字后,在作用域內它們就失去了原來的意義了。Object Pascal中規定的指令符有39個說明:指令符private、protected、public、published和automated在定義對象類型時也作為保留字,而在其他場合則作為指令符。2.1.4 注釋注釋可增加程序的可讀性和可維護性.1、組合符號“”與“”的成對使用表示它們之間的內容為注釋部分,不支持注釋的嵌套2、符號“/ ”的單個使用表示所在

6、行的該符號之后的內容為注釋3、在注釋符“”或“( *”后緊接著是一個美元符號“$”時,表示該句是一個編譯器指令,它與普通的注釋不同,通常用來對編譯過程進行設置。2.2 數據類型§ 1標準數據類型屬于Object Pascal內部約定的數據類型,無需定義就可以直接使用。§ 2高級數據類型體現了特殊的數據結構,在使用之前必須由用戶自己定義。§ 3數據類型中整型、字符型、布爾型、枚舉型和子界型被稱為順序類型,其取值是一個有序集合,每一個可能取值都與順序有關。2.2.1 數值型數據數值型數據可分為整數類型和實數類型。1.整數類型整數類型是存儲整數數據的類型 ,分為基本整形

7、和一般整形。基本整形:短整型 、小整型 、長整型 、64位整型 、字節型 、字型 、長字型 一般整形:整型 、序數型 注意:盡量使用一般整型Integer和Cardinal,可以最大限度發揮CPU和操作系統的性能。 2.實數類型實數類型是存儲實數數據的類型 ,分為基本實型和一般實型。基本實型:單精度實型 、擴展型 、雙精度實型 、貨幣型 一般實型:實型 注意:Real 類型與Double 類型完全等價。Currency類型至少有4位有效的小數位。2.2.2 字符型數據Object Pascal中的字符型數據可以分為字符型和字符串型2類7種。1.字符類型Object Pascal包括3種形式的字

8、符型數據 類型 名稱 字節數 取值范圍 Ansi字符型 AnsiChar 擴展ANSI字符集 寬字符型 WideChar UniCode字符集 字符型 Char ()擴展ANSI字符集 說明:(1)前2種為基本字符類型后一種為一般類型。(2)Char與AnsiChar完全等價,但Char常用。(3)常用的特殊字符: #9 跳格(Tab鍵) #10 換行 #13 回車(Enter鍵)2.字符串類型字符串類型是存儲字符串數據的類型 ,Object Pascal包括了4種形式的字符串型數據類型 名稱 最大長度 所需內存空間 短字符串型 ShortString 255個字符 2256B 長字符串型 A

9、nsiString 231個字符 42GB 寬字符串型 WideString 230個字符 42GB 字符串型 String 231個字符 42GB 說明: ()AnsiString類型的定義是動態分配的,內容由AnsiChar類型的字符組成,長度僅受可用內存空間的限制,以空字符Nul作為結尾。()String字符串類型,既可以是ShortString類型也可以是AnsiString類型,默認定義是AnsiString類型。2.2.3 布爾型數據布爾型數據用于關系運算和條件語句的邏輯運算,包括4種形式的布爾型數據。 類型 名稱 字節數 取值 布爾型 Boolean 只能為0(False)或1(

10、True) 字節布爾型 ByteBool 0(False)或非0(True) 寬布爾型 WordBool 0(False)或非0(True) 長布爾型 LongBool 0(False)或非0(True) 說明: (1)后3種類型是為了兼容其他語言而設置的,編程時應盡量使用Boolean類型。(2)Boolean取值為False和True兩個符號常量。2.2.4 類型映射及類型轉換 注意:在最近版本的Delphi Pascal 編譯器中,Round 函數是以 CPU 的 FPU (浮點部件) 處理器為基礎的。這種處理器采用了所謂的 "銀行家舍入法",即對中間值 (如 5.5

11、、6.5) 實施Round函數時,處理器根據小數點前數字的奇、偶性來確定舍入與否,如 5.5 Round 結果為 6,而 6.5 Round 結果也為6, 因為 6 是偶數。2.3 常量與變量2.3.1 常量常量即在程序的執行過程中其值不能改變的量。 常量有兩種,一種是常量值本身,也稱為直接常量;另一種是要用聲明定義的標識符表示的常量,也稱為聲明常量。聲明常量又可以分為符號常量和類型常量。1.直接常量直接常量是指在程序中直接引用的常數,如整型常數、實型常數、字符型常數、字符串型常數和布爾型常數。2.聲明常量(1)符號常量在程序中,某一個常數反復多次出現,可以定義一個標識符來代表該常數,這個標識

12、符就是符號常量,其值在定義后不會改變。也稱純常量。定義符號常量使用常量說明語句,其語法格式為: Const <常量名1>=<常量值1>; <常量名n>=<常量值n>; 示例: const Thousand = 1000; Pi = 3.14; AuthorName = 'Marco Cantù'其中Const是保留字,表示常量定義段開始 。注意:保留字Const可單獨一行也可與常量一行。不能在程序中給常量另行賦值,否則將導致語法錯誤。Delphi由常量值判斷常量名屬于哪種類型。(2)類型常量類型常量用于保存數組、記錄、過

13、程以及指針等類型的值,不能出現在常量表達式中。在默認的編譯器狀態下,類型常量的值可改變,但當在程序中加入編譯命令$j-時,則類型常量的值在運行期就無法改變。 聲明類型常量的語法規則為: Const <類型常量名>:<類型>=<常量值>;示例: const Thousand: Integer = 1000;其中類型是除文件型和可變型的所有類型,常量值可以是和類型相應的常量表達式。2.3.2 變量1.變量的聲明變量在單元、函數或過程的聲明部分進行聲明,聲明的位置決定了變量的作用域。聲明包括兩部分:變量名和它所屬的類型,變量聲明的語法格式為:Var <變量名

14、1>:<類型名1>;<變量名n>:<類型名n>;示例: var Value: Integer; IsCorrect: Boolean; A, B: Char;當多個變量具有相同數據類型時,格式如下: Var <變量名1>,<變量名2>,<變量名n>:<類型名>;其中,Var是保留字,表示變量聲明段的開始;同類型的<變量名>可超過一個,<變量名>間用“,”分隔;<類型名>可以是基本數據類型或是由用戶定義的高級數據類型; 2.變量的使用一旦聲明了一個變量應及時對它進行初始化

15、,最簡單方法就是給變量賦值,在表達式中使用變量。 2.4 運算符與表達式按照操作數數目的多少來分,運算符分為下面兩類:單目運算符和雙目運算符。單目運算符一般放在操作對象的前面,雙目運算符都放在兩個操作數之間。表達式是表示某個求值規則的運算公式,由運算符和配對的圓括號將常量、變量、函數、對象等操作數以合理的形式組合而成。 2.4.1 算術運算符與算術表達式1.算術運算符算術運算符對浮點數和整數進行加、減、乘、除和取模運算,取正“+”和取負“-”是單目運算符,其他均為雙目運算符。§ 說明:(1)+、-、*運算中,參加運算的數可以是整型和實型,結果自動向精度高的類型轉化。(2)參加除法運算

16、“/”,結果都是實型的商。(3)參加整數除法“Div”和求余運算“Mod”的數必須是整型,結果也是整型數,符號與被除數的符號相同,小數部分被舍去。(4)在表達式a/b、a Div b和a Mod b中,如果b的值為0,將會觸發一個錯誤。 2.算術運算符的優先級 同級運算自左至右,如果含有括號,則先計算括號內表達式的值。3.算術表達式 將數學式改寫為算術表達式,考慮三個問題:一是語法,二是優先級,三是類型。 § 說明:(1)數學式中省略的運算符和表示函數參數的括號必須添加上去 (2)必須注意優先級的處理 ,恰當利用標準函數 ,注意數據類型。 2.4.2 邏輯運算符與布爾表達式邏輯運算符

17、可分為布爾運算符、位運算符和關系運算符。1.布爾運算符只能對兩個布爾型操作數進行運算,結果仍為布爾型,True或False。其中,NOT是求“非”,為一元運算符 ; AND是求“與”,OR是求“或”,XOR是求“異或”,均為二元運算符 。 2.位運算符運算符 舉例 操作數類型 結果類型 功能說明 NOT NOT x integer integer 即按二進制形式將每位求反 AND a AND b integer integer 將兩者相對應的位進行AND運算OR a OR b integer integer 將兩者相對應的位進行OR運算XOR a XOR b integer integer 將

18、兩者相對應的位進行取XOR運算,兩者不同時結果為1 SHL a SHL b integer integer 將a的二進制值向左移動b位,左移一位相當于乘2 SHR a SHR b integer integer 將a的二進制向右移動b位,右移一位相當于除2 注意:右移操作時原值的低位丟失,高位補0;左移操作時原值的高位丟失,低位補0。 3.關系運算符及優先級關系符 操作 操作數類型 結果類型 = 等于 簡單類型,字符串或可變類型,類,類引用,指針,集合類型 Boolean <> 不等于 簡單類型,字符串或可變類型,類,類引用,指針,集合類型Boolean < 小于 簡單類型,

19、字符串或可變類型 Boolean > 大于 簡單類型,字符串或可變類型 Boolean <= 小于等于 簡單類型,字符串或可變類型 Boolean >= 大于等于 簡單類型,字符串或可變類型 Boolean 4.布爾表達式布爾表達式由布爾運算符和布爾類型的操作數所組成,包括關系運算表達式和運算結果為布爾類型的函數,如Odd(x)、FileExists(x)、等。但位運算符的結果是整數類型,不能直接作為布爾操作數。2.4.3 字符串運算符 連接運算符“+”主要用于連接兩個或更多的字符串。最簡單的字符串表達式是字符常量、字符串常量、字符變量、字符串變量或字符函數的引用。字符串表達

20、式格式為:§ <字符串表達式>+<字符串>|<字符>當兩個字符串用連接運算符連接起來后,第二個字符串直接添加到第一個字符串的尾部,結果是包含兩個源字符串全部內容的新字符串。如果要把多個字符串連接起來,每兩個字符串之間都要用“+”號分隔。 2.4.4 運算符的優先級優先順序 運算符 分類描述 1(取地址),NOT,- 一元運算符 2*,/,DIV,MOD,AND,SHL,SHR 乘除及類型強制轉換運算符 3+,OR,XOR 加減運算符 4=,< >,<,>,< =,> =,in,is 關系、集合成員及類型比較運算符

21、 2.5常用系統函數與過程2.5.1 數值運算函數 Delphi的數值運算函數包含了常用的數學函數(如三角函數、對數函數等)和適合計算機數據處理的其他函數(如求數組中的最大值、求三角形的斜邊長等)。2.5.2 字符處理函數 對字符的處理主要包括:大小寫轉換、比較先后順序、合并、查找、截取、插入、求長度以及類型轉換等。2.5.3 日期時間函數 調用日期時間函數可對日期和時間進行處理 為了顯示怎樣使用日期時間類型及其相關例程,例:procedure TFormTimeNow.FormCreate(Sender: TObject); begin StartTime := Now; ListBox1.

22、Items.Add (TimeToStr (StartTime); ListBox1.Items.Add (DateToStr (StartTime); ListBox1.Items.Add ('Press button for elapsed time');end; 講解: 第一句中調用了Now 函數,這個函數返回當前的日期和時間,它的值保存在StartTime 變量中,StartTime 變量是全程變量,其聲明如下: var FormTimeNow: TFormTimeNow; StartTime: TDateTime;只添加了第二個聲明,第一個是由Delphi自動添加的。

23、默認情況下的代碼如下: var Form1: TForm1;窗體名改變后,這個聲明被自動更新。2.5.4 順序類型函數 1.順序類型 順序類型指整型、字符型、布爾型、枚舉型、子界型5種數據類型,如下所述:(1)整數的的序數是其自身;(2)字符的序數是其ASCII 碼;(3)布爾型數據:False序數為0,True為1;(4)枚舉型第一個數據序數為0,其余類推;(5)子界型第一個數據序數為1,其余類推。 除第一個序數,每一個都有一個前趨值;除最后一個序數,每一個都有一個后繼值。2.順序函數 順序函數 引用形式 函數功能描述 序數函數 Ord(x); 返回數據x的序數 前趨函數 Pred(x);

24、返回數據x的前趨值。如果將Pred函數用于第一個數據,就可能產生一個編譯時的錯誤 后繼函數 Succ(x); 返回數據x的后繼值。如果將Succ函數用于最后一個數據,就可能產生一個編譯時的錯誤 首序數函數 Low(x); 返回順序型數據x取值集合中的第一個值(序數最小)。它還可以返回數組的第一個元素 末序數函數 High(x); 返回順序型數據x取值集合中的最末一個值(序數最大),它還可以返回數組的最末一個元素 Dec將例程中的參數值遞減1或一個特定值,其中特定值可在第二個可選參數中定義Odd如果參數為奇數返回真Inc將例程中的參數值增加1或一個特定值2.6語句2.6.1 語句的基本概念按執行

25、時間可分為:聲明語句和可執行語句。聲明語句包括單元說明語句、類型說明語句、變量說明語句、過程說明語句、函數說明語句和程序區段標識語句等。 可執行語句包括賦值語句、運行控制語句和結構控制語句等。 按語句的描述形式,可分為簡單語句、結構語句和復合語句等。 簡單語句只含有一個語句定義符或特殊標志;結構語句往往含有多于一個的語句動詞;復合語句則是由begin和end括起來的若干個簡單語句、結構語句和復合語句,允許復合語句多層嵌套,或為空,也就是在begin和end之間沒有其他語句。 2.6.2 常見聲明語句1.標號聲明語句標號聲明語句即用一個整型數來表示程序的某個執行語句,一行標號聲明語句可以同時聲明

26、幾個標號,其用法如下所示:label Aa,Ab; var I:integer; begin /語句 if(I=0) then goto Aa; /語句 Aa:begin /語句 end;end;2.類型聲明語句在Object Pascal中,所有的變量必須是某種特定的數據類型,類型決定了它所能包含的數值和可進行的操作,用類型聲明語句可以定義新的數據類型。例如: Type TmyDim:Array1.10,1.5 of Double;3.過程聲明語句 過程可以被看成一段小程序,用來實現某種特定的目標,在完整的程序中它被當作一個語句來執行。在建立過程之前應先聲明。procedure NumStr

27、ing(N:Integr;Var S:string);4.函數聲明語句函數與過程相似,主要區別在于函數必須有返回值,函數的聲明參見下面的語句,其中,最后的Real表示函數的返回數據類型。 Function Power(X:Real;Y:Integer):Real;2.6.3 賦值語句和程序的順序結構1.賦值語句賦值語句的語法格式為:<變量名>:=<表達式>;例: begin A := B; C := A * 2; end;2.類型兼容類型兼容是指數據類型不完全相同的量之間能進行的運算和賦值操作。 3.利用賦值語句給對象屬性賦值由于屬性總是歸屬于對象才有實際意義,所以引用

28、屬性時用符號“.”來連接表示其隸屬關系。如組件Editl的字體的顏色屬性表示為:Editl.Font.Color。 4.順序結構順序結構是最簡單、最常用的結構。在該結構中,各操作塊按照出現的先后順序依次執行,不產生程序流程的其他轉移。它是任何程序的主體結構,即使在選擇結構或循環結構中,也常以順序結構作為其子結構。通常由若干個賦值語句或其他簡單語句構成 。2.6.4 條件語句和程序的選擇結構實現選擇結構的是IF語句和Case語句,這兩種語句又稱條件語句,條件語句的功能就是根據表達式的值有選擇地執行一組語句。1.if語句通過條件的布爾表達式值選擇執行路徑。if <條件> then &l

29、t;語句1>else <語句2>;if語句分為簡單條件語句和復合條件語句。簡單條件語句的<語句>中不包含其他的條件語句 。如果在If語句格式中的<語句>或<語句>本身又是一個If語句,則稱為If語句的嵌套,嵌套的If語句又被稱為復合條件語句。例如: procedure TForm1.Button1Click(Sender: TObject); begin / simple if statement if CheckBox1.Checked then ShowMessage ('CheckBox1 is checked') e

30、nd; 2.Case語句Case語句用來實現多分支選擇結構。Case語句描述了多路擇一的功能,它根據“選擇器表達式”的值決定執行相應的語句。Case語句的語法格式為: case <選擇器表達式> of <情況常量表>:<語句>;<情況常量表n>:<語句n>;else <其他語句列>; end;說明:<選擇器表達式>的值必須是順序類型 。示例: case Number of 1: Text := 'One' 2: Text := 'Two' 3: Text := 'Thre

31、e' end; case MyChar of '+' : Text := 'Plus sign' '-' : Text := 'Minus sign' '*', '/': Text := 'Multiplication or division' '0'.'9': Text := 'Number' 'a'.'z': Text := 'Lowercase character' '

32、;A'.'Z': Text := 'Uppercase character' else Text := 'Unknown character'end;2.6.5 循環語句和程序的循環結構從某處開始有規律地反復執行某一程序塊的現象稱為“循環”,完成這一功能的程序結構為“循環結構,”而其中重復執行的程序塊稱為“循環體”。循環結構語句有3種,它們分別是:While 語句、Repeat語句以及For語句。 1.While語句While語句屬于前測型循環結構。首先判斷條件,根據條件決定是否執行循環,執行循環的最少次數為0。其語法格式為:while

33、<條件> do <循環體>;說明:可在(循環體)中任何位置Break語句來終止While 循環,Break 語句通常位于IF語句后。可在循環體中任何位置放置Continue語句,以便在整個循環體沒有執行完就重新判斷(條件),以決定是否開始新的循環。Continue語句通常位于IF 語句之后。2.Repeat語句Repeat語句屬于后測型循環結構,首先執行循環體,然后判斷條件,根據條件決定是否繼續執行循環,執行循環的最少次數為1。repeat § <循環體> until <條件>;示例: while (I <= 100) and (J <= 100) do begin / use I and J to compute something. I := I + 1; J := J + 1; end; repeat / use I and J to compute something. I := I + 1; J := J + 1; until (I > 100) or (J > 100);注意:兩種循環另一個關鍵的不同點是,repeat-until 循環的條件是反向的條件,只要不滿足這個

溫馨提示

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

評論

0/150

提交評論