![Object Pascal语言基础课件_第1页](http://file4.renrendoc.com/view14/M00/13/0A/wKhkGWeQ3C2ANTk3AADiDYOLlKA616.jpg)
![Object Pascal语言基础课件_第2页](http://file4.renrendoc.com/view14/M00/13/0A/wKhkGWeQ3C2ANTk3AADiDYOLlKA6162.jpg)
![Object Pascal语言基础课件_第3页](http://file4.renrendoc.com/view14/M00/13/0A/wKhkGWeQ3C2ANTk3AADiDYOLlKA6163.jpg)
![Object Pascal语言基础课件_第4页](http://file4.renrendoc.com/view14/M00/13/0A/wKhkGWeQ3C2ANTk3AADiDYOLlKA6164.jpg)
![Object Pascal语言基础课件_第5页](http://file4.renrendoc.com/view14/M00/13/0A/wKhkGWeQ3C2ANTk3AADiDYOLlKA6165.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ObjectPascal語言基礎2.1基本概念
Delphi7.0是一個基於ObjectPascal語言的Windows應用程式開發系統,在所有的事件處理過程和應用程式中都是使用它來編寫程式代碼。ObjectPascal編程語言是在Pascal語言的基礎上發展起來的,它繼承了Pascal語法嚴謹、數據結構豐富等優點,同時融入了面向對象編程的語法要素,使之成為一種優秀的面向對象編程語言。2.1.1保留字
首先介紹ObjectPascal語言的最基本內容:保留字和標誌符。保留字(ReservedWords)是由系統規定的、具有特定意義的單詞。在編程時不能被重新定義或另作他用。ObjectPascal語言規定的保留字有65個,詳見本教程P23頁表2-1。
除了上述的保留字外,Private、Protected、Public、Published和Automated在定義對象類型時也作為保留字,而在其他場合則作為指令符。單詞at和on也具有特殊的含義。
注意:ObjectPascal編程語言和許多編程語言不同,它對單詞的大小寫是不敏感的。ObjectPascal不區分大小寫。IN、in和In都被看做是同樣的意義。2.1.2識別字
識別字是ObjectPascal語言中用來表示應用程式量的名稱。包括:變數(Var)、常量(Const)、類型(Type)、過程(Procedure)、方法(Method)等。識別字分為標準識別字和自定義識別字兩類。
標準識別字是ObjectPascal語言系統預先分配給標準常量、標準類型、標準函數、標準過程及標準檔使用的識別字。如標準常量:False、True;標準類型:integer、char、real;標準函數:Abs、Sqr、Cos等。自定義識別字是程式員根據需要為自己定義的常量、變數、類型、函數、過程以及所編寫的程式名等。ObjectPascal識別字由字母、數字、下劃線組成,其規定為:(1)必須以字母或下劃線開始;(2)不能與保留字相同;(3)避免與ObjectPascal已經使用的標準識別字相同。2.1.3指令符
指令符(directives)也是具有特殊意義的單詞,但與保留字不同的是可以將指令符定義為識別字,ObjectPascal不會指示出錯,但這容易混淆。ObjectPascal規定的指令符見表2-2。absoluteabstractassemblerautomatedcdcelcontainsdefaultdispiddynamicexportexternalfarforwardimplementsindexmessagenamenearnodefaultoverloadoverridepackagepascalprivateprotectedpublicreadreadonlyregisterretroducerequiresresidentsafecallstdcallstoredvirtualwritewriteonly表2-2ObjectPascal語言規定的指令字2.2數據類型
描述客觀事物的數、字元以及所有能輸入到電腦中並被電腦程式加工處理的符號的集合稱為數據。數據的一個重要特徵就是其所屬的數據類型,數據類型不僅確定了該類數據的表示形式和取值範圍,而且還確定了數據所能夠參加的各種運算。ObjectPascal提供了多種數據類型,包括標準數據類型和高級數據類型。標準數據類型屬於ObjectPascal內部約定的數據類型,無需定義就可以直接使用。標準數據類型有整型(Integer)、實型(Real)、字元型(Character)、字串型(String)、布爾型(Boolean)五種。高級數據類型體現了特殊的數據結構,在使用之前必須由用戶自己進行定義。高級數據類型有枚舉型(Enumerated)、子界型(Subrange)、集合類型(Set)、數組類型(Array)、記錄類型(Record)檔類型(File)、類類型(Class)、類引用類型(ClassReference)、介面類型(Interface)、指針類型(Pointer)、過程類型(Procedural)、可變類型(Variant)。2.2.1整型
整數包括正整數、負整數和零。整型是存儲整數數據的類型。ObjectPascal包括9種形式的整型數據,詳見本教程P25頁表2-3。
前2種為一般整型,後7種為基本整型,應儘量使用Integer、Cardinal兩種基本類型,因為它們在各種CPU和操作系統中都提供最佳的性能。通常,作用於整數的算術運算符返回Integer類型的值。在當前執行中,等價於32位的長整型(LongInt)。僅當對Int64類型執行運算時,運算結果返回Int64類型。因此,下麵的代碼執行後得到的結果是不正確的:vari:Integer;j:Int64;...i:=High(Integer);//取Integer類型中的最大值j:=i+1;要使返回值是Int64類型,在上面的情況中可以將
i轉換為Int64。代碼如下:...j:=Int64(i)+1;2.2.2實型
實數是最常用的數據類型。在ObjectPascal中實數有兩種表示方法:小數表示法和科學計數法。例如:-3.6,2.4e0,–1.2e-5,3E7
小數表示法與日常數學中所用表示方法相同。科學計數法中,e之前表示有效數字,e之後數字表示10的冪。即–1.2e-5=(-1.2)×10-5=-0.000012
需要注意的是小數表示法中小數點前後都必須有數字,科學計數法中e前後都必須有數字,e可以大寫成E。實型是存儲實數數據的類型。ObjectPascal包括5種形式的實型數據,詳見本教程P26表2-4。
(圖1-2)
前六種為基本數據類型,Real為一般實型。最常用的實型是Real類型,它與Double等價。Currency是專為處理貨幣而設計的,該類型與其他實型進行運算時,Delphi自動將結果轉化為Currency類型。2.2.3字元型
字元型是存儲單個字元的類型。ObjectPascal包括3種形式的字元型數據,詳見表2-5。基本字元類型是AnsiChar和WideChar。AnsiChar的尺寸是一個位元組(8位),其值參照本地字元集。AnsiChar最初模仿ANSI字元集,但現在用於擴大到當前的本地字元集。WideChar字元用多於一個位元組來表示每個字元。WideChar的尺寸是一個字(16位),其字元順序參照Unicode字元集,Unicode字元集中的前256個字元對應ANSI字元。一般字元類型是Char,等價於AnsiChar。字元類型數據的表示方法是用兩個單引號括起單個字元如:'A'、'6'、'.'。
''表示空白字元。表2-5ObjectPascal語言的字元型類型名稱位元組數取值範圍Ansi字元型AnsiChar1擴展ANSI字元集寬字元型WideChar2UniCode字元集字元型Char1(2)擴展ANSI字元集2.2.4字串型
字串型是存儲字串數據的類型。ObjectPascal包括4種形式的字串型數據,詳見本教程P27頁表2-6。
保留字string的作用如一般類型的識別字。例如: varS:string;
創建了變數S,用於保存串。在默認的編譯指示{$H+}狀態下,編譯器將string(後面沒有跟隨方括號和數字)解釋為AnsiString;使用編譯指示{$H-}時,解釋為ShortString。
ShortString類型串的長度在0到255之間。ShortString串的長度可以動態改變,其佔用的記憶體是靜態的,總是256位元組;第一個位元組存儲串的長度,其餘255個位元組存儲串中的字元。
AnsiString也叫做長串(longstring),用來表示動態分配的串。
WideString類型表示16位Unicode字元的動態分配的串。WideString類型大部分的特性與AnsiString類型相似。
ObjectPascal還支持其他最大長度在0到255之間的短串。可以通過在保留字string後邊附加方括號括起來的數字來表示。例如: varMyString:string[100];
創建了一個叫做MyString的變數,其最大長度為100個字元。2.2.5布爾型
布爾型數據用於進行邏輯運算,布爾型數據的值只有兩個:True(真)和False(假)。ObjectPascal包括4種形式的布爾型數據,詳見表2-7。Boolean類型是編程時常用的布爾類型,其他三種類型是為了相容其他語言而設置的。Boolean類型的取值為False和True兩個符號常量。在ObjectPascal中,布爾運算式不能被等同為整數或實數。因此,如果x是一個整數類型的變數,那麼語句 ifxthen...;將產生一個編譯錯誤。可以將上個語句改為: ifx=1then...;
表2-7ObjectPascal語言的布爾型類型名稱位元組數取值布爾型Boolean1只能為False(0)或True(1)位元組布爾型ByteBool1False或True(非False)寬布爾型WordBool2False或True(非False)長布爾型LongBool4False或True(非False)2.2.6序數類型1.序數類型
序數類型包括整數、字元、布爾、枚舉、子界等類型。序數類型定義了一個有序的值的集合。集合中的每個值(除第一個)都有一個唯一的前驅值,每個值(除最後一個)都有一個唯一的後繼值。對於第一個序數的前趨和最後一個序數的後繼在此不做討論。此外,每個值都有一個序號,類型中的序號決定值在類型中的順序。大多數情況下,如果一個值的序號為n,那麼它的前驅值的序號為n–1,後繼值的序號為n+1。
2.序數函數(1)序數函數Ord()返回數據的序數。例如:Ord(6)的返回值為6,表示整數6的序數是其本身。(2)前趨函數Pred()返回數據的前趨值。例如:Pred('e')的返回值為'd',表示字元e的前趨是字元d。(3)後繼函數Succ()返回數據的後繼值。例如:Succ(False)的返回值為True,表示布爾型數據True是False的後繼。(4)首序數函數Low()返回序數類型的數據中序數最小的一個數據。(5)末序數函數High()返回序數類型的數據中序數最大的一個數據。2.3常量與變數
在程式設計中常用到兩種形式的數據,一種是在程式執行過程中其值保持不變的數據,稱為常量;另一種是在程式執行過程中其值可以改變的數據,稱為變數。
常量是一種在程式執行進程中其值保持不變的數據。根據使用的方式不同,程式中的常量分為直接常量、真實常量與類型常量。2.3.1常量1.直接常量直接常量是指在程式中直接引用的整數、實數、字元、字串或其他不同類型的常數。下列常數均屬於直接常量。(1)帶有正負號的整數或無符號的整數,如:-1,+2,2003,0。(2)實數,包括定點實數與浮點實數兩種表示形式。定點實數即小數形式,如:0.03,-32.48,+102.9,0.0。浮點實數即指數形式,如:+2.56E-5,-1.2E+8,3.2E12。2.3.1常量(2)2.真實常量真實常量是指一個被聲明的識別字,它的值不能改變。如果在一個程式中,某一個常數反復多次出現可以定義一個識別字來代表該常數。定義常量時使用常量說明語句,語法格式為:const<常量名1>=<常量值1>…<常量名n>=<常量值n>
其中const是ObjectPascal的保留字,表示常量定義的開始。<常量名>即常量的識別字,<常量值>是直接常量或常量組成的運算式。例如:constPI=3.1415926;K=PI/180;
不能在程式中給常量另行賦值,否則會導致語法錯誤。(3)字元,由單撇號括起來的單個字元,如:'a','C','6','+'。(4)字串,由雙撇號括起來的字串,如:"hello","abc123","3.234"。(5)布爾型常數,只有兩個值True和False。2.3.1常量(3)3.類型常量類型常量不同於真實常量,它能保存數組、記錄等高級數據類型的值。定義類型常量的語法格式如下:
const <常量名>:<類型名>=<常量值>;例如:constHello:string='Hello';Max:Integer=100;Digits:array[0..9]ofChar=('0','1','2','3','4','5','6','7',‘8’,‘9’);//定義了一個常量用於保存數組在缺省的編譯狀態{$J-}中,類型常量不能被賦予新的值,這時的類型常量相當於只讀變數。然而,如果編譯指示{$J+}有效,那麼類型常量可以被賦予新的值,這時的類型常量相當於被初始化過的變數。
變數是程式代碼中代表一個記憶體地址的識別字,而此地址的記憶體內容在程式代碼執行時可以被改變。在使用變數前必須對它進行說明,即對它進行命名,並說明它的類型。變數就像數據容器,而且由於變數被定義了類型,只能用於儲存與其定義類型相相容的數據。2.3.2變數(1)變數有如下三個主要特徵。(1)變數名:即變數的識別字,用於對所代表的記憶體單元的引用。(2)類型:變數的類型決定了變數中所存放數據的範圍、有效的操作、存儲空間的大小和格式。(3)變數值:變數所代表的記憶體單元中的數據值。程式中的變數必須先聲明才能使用。1.變數的聲明變數在單元、函數或過程的聲明部分進行聲明,聲明位置決定了變數的作用範圍。變數聲明的格式為:2.3.2變數(2)
聲明多個同類型的變數時可採用如下格式:
var<變數名1>…<變數名n>:<類型名>
其中var是ObjectPascal的保留字,表示變數定義的開始,<變數名>可以是任意合法的識別字,<類型名>可以是ObjectPascal的基本數據類型也可以是由用戶定義的高級數據類型。聲明在過程或函數內部的變數有時叫做局部變數,而在應用程式開始聲明的變數叫做全局變數。全局變數可以在聲明時對它進行初始化,格式為:
var<變數名>:<類型名>=<常量運算式>
其中常量運算式的值必須與變數定義的類型相相容。var<變數名1>:<類型名1>…<變數名n>:<類型名n>2.變數使用
變數經過聲明之後,就可以在程式中使用了,通常可以通過賦值語句給變數賦值。如果沒有明確初始化全局變數,那麼編譯器將對其初始化為0。不同的是,局部變數不能在其聲明中被初始化並且在其被賦值之前包含的是亂數據。一旦聲明了一個變數,應及時對它賦值進行初始化,未經初始化的變數的值是一個不確定的亂數,如果該變數參與運算或是出現程式流程中將會產生意想不到的後果。初始化變數的最簡單方法就是給變數賦值。2.3.2變數(3)2.4運算符與運算式
運算是對數據進行加工處理的過程,描述各種不同運算的符號稱為運算符,而參與運算的數據稱為運算元。運算式是表示某個求值規則的運算公式,它由運算符和圓括號將常量、變數等運算元以合理的形式組合而成。運算式可以用來執行運算、操作或測試數據,每個運算式都會產生惟一的值。運算式的類型由運算符的類型決定。在ObjectPascal中有以下幾種運算符:算術運算符、位運算符、字串運算符、關係運算符、布爾運算符、集合運算符、指針運算符、類運算符和@運算符。本章中先介紹幾種常用的運算符。1.算術運算符
ObjectPascal有8個算術運算符,在這8個算術運算符中,除取正“+”、取負“-”是單目運算符外,其他均為雙目運算符,詳見本教程P31頁表2-8。其中+、-、*運算的含義與數學中的相同,參加運算的數可以是整型也可以是實型,結果由Delphi7.0自動向精度高的數據類型轉化。參加除法運算“/”的數無論是整型或是實型,結果都是實型。參加整數除法“div”和求餘運算“mod”的數必須是
2.4.1算術運算符2.4.1算術運算符
2.算術運算式算術運算式是由算術運算符、數值型常量、變數、圓括號組成,其運算結果為一數值。 例如:3*4+(90-5)/4*2的值為54.5。在書寫算術運算式時應當注意以下兩點:(1)在數學中可以省略乘號,但在算術運算式書寫中不可以省略,如在數學中相乘可以寫成2x,但在編程中必須寫成2*x;(2)所有括弧都用小括弧(),括弧必須配對,例如數學式3[x+(y-z)]在編程中必須寫成3*(x+(y-z))。整型,結果也是整型,分別是除法的商和餘數。在運算式a/b、adivb、amodb中,如果b的值為0將會觸發一個錯誤。 例如:10mod3的值為1,10div3的值為3。2.4.2位運算符
位運算符是指對運算元進行的按位邏輯運算。其運算對象是整數,運算結果也是整數,ObjectPascal有6個邏輯運算符,詳見表2-9。and、or、not和xor運算符當運算符兩側為數值數據,則將數值數據轉換為二進位數(補數形式)進行按位運算。設x值為3,y值為5,在內存中按二進位保存,即x,y值分別為00000011,00000101。按位計算結果如下:notx的值為 11111100(十進位數–4)xandy的值為 00000001(十進位數1)xory的值為 00000111(十進位數7)xxory的值為 00000110(十進位數6)xshl2的值為 00001100(十進位數12)xshr1的值為 00000010(十進位數2)運算符名稱舉例運算符取值名稱舉例not按位取反notxxor按位異或xxoryand按位與xandyshl左移位xshl2or按位或xoryshr右移位yshr1表2-9ObjectPascal語言的位運算符2.4.3字串運算符ObjectPascal只有一種字串運算符,即連接運算符“+”。該運算符用於連接兩個或更多的字串。當兩個字串用連接運算符連接起來後,第二個字串直接添加到第一個字串的尾部,結果是一個更長的包含兩個字串的全部內容的字串,也可以把多個字串連接起來,每兩個字串之間都要用“+”號分隔。例如:'abcdef'+'123'連接後結果為:'abcdef123''abc'+'123'+'xyz'連接後結果為:'abc123xyz‘
加號(+)運算符對串的操作與其對數字的操作有很大差異。對於數字a、b,運算式a+b與b+a是等價的,對於字串s1、s2運算式s1+s2與s2+s1不是等價的。例如,當s1為'hello'、s2為'world'時,s1+s2返回的值是'helloworld',而s2+s1返回的值是'worldhello'。也就是說,當加號(+)作為字串運算符時,運算元的位置順序直接影響運算結果。2.4.4關係運算符
關係運算符又稱為比較運算符,用來對兩個運算式的值進行比較,比較的結果是一個布爾值(True或False)。關係運算式是指用關係運算符將兩個運算式連接起來的式子。ObjectPascal提供的關係運算符有9種,詳見表2-10。表2-10ObjectPascal語言的關係運算符運算符名稱舉例運算符取值名稱舉例=等於4=5值為False>大於4>5值為False<>不等於4<>5值為True<=小於或等於4<=5值為True<小於4<5值為True>=大於或等於4>=5值為False
關係運算符兩側可以是數值運算式、字元型運算式或其他運算式,也可以是常量、變數或函數,但其兩側的數據類型必須是相容的標準數據類型或順序類型。各關係運算符的運算級別相同。運算次序為:先分別求出關係運算符兩側運算式的值,然後再把兩者的值進行比較,兩者的關係若與關係運算符指示的一樣,則關係運算的結果為真(True),否則結果為假(False)。數值型數據按其數值大小進行比較;字元型數據按其ASCII碼值進行比較,比較字串時先比較第一個字元,其中ASCII碼值較大的字元所在的字串大。若第一個字元相同時比較第二個字元,…以此類推。順序類型數據的比較按照其序數進行比較。2.4.5布爾運算符
在表示較為複雜的條件判斷時,必須使用布爾表示式。布爾運算式是指用布爾運算符連接若干關係運算式或布爾值組成的式子,如a≤x≤b可以表示為:a<=xAndx<=b,布爾運算式的值也是一個布爾值。ObjectPascal提供4種布爾運算符,詳見表2-11。表2-11ObjectPascal語言的布爾運算符運算符名稱舉例說明and與(4>5)and(3<4)該運算式值為False。當兩個運算式的值均為真,結果才為真,否則結果為假。or或(4>5)or(3<4)該運算式值為True。兩個運算式中只要有一個運算式的值為真,結果就為真,兩個運算式的值均為假時結果為假。not非not(4>5)該運算式值為True。進行取“反”操作,由真變成假或由假變成真。xor異或(4>5)xor(3<4)該運算式值為True。當兩個布爾運算式值不同時結果為True。2.4.6運算符的優先順序
在一個運算式中進行多種操作時,ObjectPascal會按一定的順序進行求值,這個順序稱為運算符的優先順序。在運算式中運算符的優先順序決定了運算被執行的順序。常用運算符的優先順序如本教程P34頁表2-12所示。
當一個運算式中含有多個算術運算符時,將按優先順序由高到低的順序求值。優先順序高的運算符在優先順序低的運算符之前求值,優先順序相同時自左向右求值,如果運算式中含有括弧,則先計算括弧內運算式的值,如果有多層,先計算最內層括弧中的運算式。例 如運算式:
x+y*z
先運算y乘以z,然後將乘積(運算結果)與x相加;運算符*先被執行,因為它比運算符+優先。可以使用圓括號超越所有的優先順序規則。圓括號中的運算式最先被求值,因此可以被視為一個單獨的運算元。例如運算式:
(x>y)and(x>z)
首先判斷x是否大於y,然後判斷x是否大於z,最後將兩次判斷的結果相與,只有當x的值比y、z的值都大時此運算式的值才為true。該運算式不能書寫為:
x>yandx>z
根據運算符的優先順序,該運算式將解釋為:
(x>(yandx))>z
若x,y,z均為實型或整型數據時將產生編譯錯誤。圓括號通常使代碼更容易讀寫,在編程過程中應當合理使用圓括號。2.5語句
語句是執行具體操作的指令,是由ObjectPascal的保留字、變數名、函數名及Delphi7.0編輯器可以識別的指令符號組成,建立正確的語句必須遵從ObjectPascal的語法規則。ObjectPascal程式語句書寫比較自由,可以把多個語句放在一個程式行中,也可把一個語句分多行書寫,但需要記住ObjectPascal的每個語句都必須以分號“;”結束。在編寫自己的ObjectPascal程式時,要注意程式的可讀性。Pascal語言是英式結構語言,在程式中選擇合適的縮排、大小寫風格,並在需要時將程式代碼分行,會使得程式代碼能夠很容易地被自己和他人讀懂。對於較為複雜的程式常用到複合語句,複合語句是指將多個語句用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 8《池子与河流》(说课稿)-2023-2024学年统编版语文三年级下册
- 2025锅炉拆除安全施工合同
- 2025有关电梯广告的合同范本
- Unit 6 Disaster and Hope Understanding ideas 说课稿-2023-2024学年外研版高中英语(2019)必修第三册
- 代理制 合同范本
- 农业保险代购合同范例
- 2024年春七年级地理下册 第9章 第1节 美国说课稿 (新版)新人教版001
- 保安正式合同范例
- 买卖合同物业服务合同范例
- ucc国际洗衣合同范例
- 玻璃反应釜安全操作及保养规程
- 高中英语新课标词汇表(附词组)
- 2023年心理咨询师之心理咨询师基础知识考试题库附完整答案【有一套】
- 证券公司信用风险和操作风险管理理论和实践中金公司
- 一级建造师继续教育最全题库及答案(新)
- 2022年高考湖南卷生物试题(含答案解析)
- GB/T 20909-2007钢门窗
- GB/T 17854-1999埋弧焊用不锈钢焊丝和焊剂
- GB/T 15593-2020输血(液)器具用聚氯乙烯塑料
- 直线加速器专项施工方案
- 储能设备项目采购供应质量管理方案
评论
0/150
提交评论