ObjectPascal語(yǔ)言的語(yǔ)法基礎(chǔ)_第1頁(yè)
ObjectPascal語(yǔ)言的語(yǔ)法基礎(chǔ)_第2頁(yè)
ObjectPascal語(yǔ)言的語(yǔ)法基礎(chǔ)_第3頁(yè)
ObjectPascal語(yǔ)言的語(yǔ)法基礎(chǔ)_第4頁(yè)
ObjectPascal語(yǔ)言的語(yǔ)法基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩252頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第2章章 object pascal語(yǔ)言的語(yǔ)法基礎(chǔ)語(yǔ)言的語(yǔ)法基礎(chǔ)2.1 符號(hào)集符號(hào)集2.2 語(yǔ)句語(yǔ)句2.3 常用函數(shù)與過(guò)程常用函數(shù)與過(guò)程2.4 異常處理異常處理2.5 小結(jié)小結(jié)習(xí)題二習(xí)題二2.1 符 號(hào) 集任何一種程序設(shè)計(jì)語(yǔ)言都具有自己的符號(hào)集。符號(hào)集由字母、數(shù)字、特殊字符、關(guān)系運(yùn)算符、賦值運(yùn)算符等組成。2.1.1 字符集字符集object pascal語(yǔ)言的字符集使用的是ascii碼的字符集,它包括英文字母、數(shù)字、特殊字符和字符組合作為特殊符號(hào)等。1英文英文包括26個(gè)大小寫(xiě)英文字母,即“az”和“az”。2數(shù)字?jǐn)?shù)字包括09這10個(gè)數(shù)字。3特殊字符除了英文字母和數(shù)字外的其他字符都屬于特殊字符

2、。(1)可見(jiàn)的特殊字符。 1)單個(gè)字符作為特殊符號(hào):如+ - * / # $ & ( ) = : ; .。 2)字符組合作為特殊符號(hào):是指由兩個(gè)字符組成并表示一定的特殊意義,如/ = := (. .) “” (* *)。(2)不可見(jiàn)的特殊字符。空格字符(ascii碼值為32)和不可見(jiàn)的ascii控制字符(ascii碼值為031),常見(jiàn)的有“enter”符,其ascii碼值為13。其中,有些字符是等價(jià)的,例如:“”等價(jià)于“(*”,“”等價(jià)于“*)”,“”等價(jià)于“(”,“”等價(jià)于“)”。注意:(1)object pascal語(yǔ)言對(duì)英文字母的大小寫(xiě)不敏感,即“a”等價(jià)于“a”,但是字符串中的

3、大小寫(xiě)字母應(yīng)該區(qū)分清楚。一般是將標(biāo)識(shí)符的首字母大寫(xiě),其余的小寫(xiě)。(2)! “ % ? _ | 不屬于特殊字符。2.1.2 標(biāo)識(shí)符標(biāo)識(shí)符標(biāo)識(shí)符(identifiers)是用來(lái)表示常量、常數(shù)、類型、屬性、過(guò)程、函數(shù)、單元和程序等語(yǔ)法成分的符號(hào)。標(biāo)識(shí)符分為標(biāo)準(zhǔn)標(biāo)識(shí)符和用戶自定義標(biāo)識(shí)符兩類。1標(biāo)準(zhǔn)標(biāo)識(shí)符標(biāo)準(zhǔn)標(biāo)識(shí)符具有一定的意義,是事先分配給標(biāo)準(zhǔn)類型、標(biāo)準(zhǔn)常量、標(biāo)準(zhǔn)過(guò)程、標(biāo)準(zhǔn)函數(shù)和標(biāo)準(zhǔn)文件使用的標(biāo)識(shí)符。(1)標(biāo)準(zhǔn)類型:integer,string,char。(2)標(biāo)準(zhǔn)常量:true,false。(3)標(biāo)準(zhǔn)過(guò)程:get,pack,put。(4)標(biāo)準(zhǔn)函數(shù):abs,spr,sin,cos,date。(5)標(biāo)準(zhǔn)

4、文件:output,input。2用戶自定義標(biāo)識(shí)符用戶根據(jù)程序的需要可以自定義標(biāo)識(shí)符,如常量、變量、過(guò)程和函數(shù),用戶自定義標(biāo)識(shí)符須注意以下幾點(diǎn):(1)必須由字母或者下劃線開(kāi)頭,后跟字母、數(shù)字或者下劃線。(2)標(biāo)識(shí)符的長(zhǎng)度可以是任意的,但只有前255個(gè)字符有效。(3)標(biāo)識(shí)符中不允許有空格符。(4)標(biāo)識(shí)符的定義盡可能地避免與標(biāo)準(zhǔn)標(biāo)識(shí)符相同,不能與保留字相同。正確的標(biāo)識(shí)符:d122,d122d,_122ddd,_dd_122和dd_122等。錯(cuò)誤的標(biāo)識(shí)符:122dd,122_dd,dd 122,dd122和dd等。2.1.3 保留字與命令符保留字與命令符保留字與命令符是delphi保留的完成特定功能

5、的字符串。1保留字保留字是系統(tǒng)規(guī)定的具有特殊意義、特殊用途的字符串,它不能被用戶重新定義或者作為其他標(biāo)識(shí)符使用。object pascal語(yǔ)言中的保留字如表2.1所示。表2.1 object pascal語(yǔ)言中的保留字除了上述的保留字外,在對(duì)象定義類型時(shí),private,protected,public,published和automated也可作為保留字,而其他情況下作為命令符。2命令符命令符又稱為指令字。命令符和保留字的區(qū)別是命令符只有在特殊的情況下才有意義,一般情況下可以被用戶定義為變量使用,程序不會(huì)出現(xiàn)錯(cuò)誤,但是程序的條理不清晰。object pascal語(yǔ)言中的命令符如表2.2所示。

6、表2.2 object pascal語(yǔ)言中的命令符2.1.4 常量和變量常量和變量在一段程序中,有兩種不同類型的數(shù)據(jù),即常量和變量。它們的區(qū)別是在程序執(zhí)行過(guò)程中其值是否發(fā)生改變。1常量常量是在程序執(zhí)行過(guò)程中其值一直保持不變的量。使用常量的好處是代碼簡(jiǎn)潔、修改代碼容易。常量可分為直接常量、符號(hào)常量和類型常量。(1)直接常量:在程序中直接引用的常數(shù),如整型常數(shù)、實(shí)型常數(shù)、字符型常數(shù)、字符串型常數(shù)和布爾型常數(shù)。 1)整型常數(shù)即整數(shù),包括正整數(shù)、負(fù)整數(shù)和零。如2005,+2005,2005。 2)實(shí)型常數(shù)即實(shí)數(shù),包括定點(diǎn)實(shí)數(shù)和浮點(diǎn)實(shí)數(shù)。定點(diǎn)實(shí)數(shù)即帶有小數(shù)點(diǎn)形式的實(shí)數(shù),如0.005,0.325,25.3

7、2,+25.32,0.0;浮點(diǎn)實(shí)數(shù)即以科學(xué)計(jì)數(shù)形式表示的實(shí)數(shù),如5.68e13,+2.65e+3, 6.255e5。 3)字符型常數(shù)是由單撇號(hào)“”括起的字符,如f ,f,2,#。 4)字符串型常數(shù)是由單撇號(hào)“”括起的字符串,如delphi,delphi 8.0和程序設(shè)計(jì)。 5)布爾型常數(shù)僅有兩個(gè)值,即true和false。true表示邏輯判斷的結(jié)果為真;false表示邏輯判斷的結(jié)果為假。(2)符號(hào)常量:它是以標(biāo)識(shí)符形式出現(xiàn)的常量。使用符號(hào)常量可以使程序簡(jiǎn)潔,修改容易。如果在一段程序中同一個(gè)常數(shù)反復(fù)出現(xiàn),此時(shí)可以定義一個(gè)標(biāo)識(shí)符來(lái)表示此常數(shù),這個(gè)標(biāo)識(shí)符稱為符號(hào)常量。定義常量的語(yǔ)法格式如下:cons

8、t常量名1=常量值1;常量名n=常量值n;其中,const是常量聲明的保留字,是常量定義字段的開(kāi)始;常量名是常量的標(biāo)識(shí)符,即常量的名稱;常量值是直接常量或者自定義符號(hào)常量組成的表達(dá)式。例如:const x=15; y=x+3; message=我喜歡delphi;注意:(1)保留字const可以單獨(dú)成行,也可以寫(xiě)成const x=15;。為了使程序的結(jié)構(gòu)更加清晰,建議使用第一種書(shū)寫(xiě)形式。(2)在程序中不可以給常量賦值,否則delphi編譯器將出錯(cuò)。(3)類型常量:具有數(shù)據(jù)類型的符號(hào)常量稱為類型常量,其類型可以定義為標(biāo)準(zhǔn)數(shù)據(jù)類型或高級(jí)數(shù)據(jù)類型。定義類型常量的語(yǔ)法格式如下:const常量名:類型名

9、=常量值;例2.1 常量的聲明。程序代碼如下:const pi:real=3.14; max:integer=89555; dd:string4=name;2變量變量是程序的最基本要素之一,變量是在程序執(zhí)行過(guò)程中其值可以改變的量。它是程序中某個(gè)內(nèi)存地址的標(biāo)識(shí)符,變量中可以存放數(shù)值、字符和字符串等。(1)變量的組成。 1)變量名:即變量的標(biāo)識(shí)符,調(diào)用變量時(shí)直接調(diào)用變量名。 2)變量類型:字符型、字符串型和整型等。 3)變量值:即某一變量所代表的內(nèi)存單元中的數(shù)據(jù)值。(2)變量的聲明。變量聲明的基本語(yǔ)法格式如下:var變量名1:類型名1;變量名n:類型名n;其中,var是變量聲明的保留字;變量名是變

10、量的標(biāo)識(shí)符,即變量名稱;類型名是任何有效的數(shù)據(jù)類型。例如:var x:integer; y:double; z:string;當(dāng)定義多個(gè)相同類型的變量時(shí),定義的語(yǔ)法格式如下:變量名1,變量名2,變量名n:類型名;變量名之間用逗號(hào)隔開(kāi)。例如:var a,b,c:integer;一般情況下,變量聲明要使用保留字var。但有時(shí)在類中聲明變量時(shí)可以不使用保留字var。例2.2 變量聲明不需要保留字var。程序代碼如下:type tform1 = class(tform) button1: tbutton; edit1: tedit; procedure formcreate(sender: tobje

11、ct); procedure button1click(sender: tobject); private d:string; /此處定義變量不需要保留字var private declarations public public declarations end;(3)變量的使用。在程序中變量必須先聲明,后使用。通常先定義變量,然后初始化變量,初始化變量即給變量賦值,然后在程序中使用變量。變量初始化的一般格式如下:var 變量名:類型名=常量表達(dá)式;例如:vari:integer=12; /變量聲明i,并初始化為12(4)變量的作用域。變量的作用域是指變量的作用范圍。根據(jù)作用域范圍的類別變量

12、分為公有變量與私有變量、全局變量與局部變量。 1)公有變量與私有變量。在單元接口(interface)部分聲明的變量屬于公有變量,可以被其他單元引用。如果某些變量從一個(gè)單元傳到另一個(gè)單元,則需要用公有變量。在單元的實(shí)現(xiàn)(implementation)部分聲明的變量屬于私有變量,此變量只能在本單元中使用,不能被其他單元引用。 2)全局變量與局部變量。全局變量又稱為全程變量,作用域是整個(gè)程序。在子程序之前,單元的實(shí)現(xiàn)部分之后聲明的變量可以為本單元任何一個(gè)子程序使用。而局部變量是在一定區(qū)域范圍內(nèi)使用的變量,如果一個(gè)子程序使用,則其他子程序不能使用。全局變量占用內(nèi)存空間時(shí)間較長(zhǎng),貫穿了整個(gè)程序的始終;

13、局部變量則隨著子程序運(yùn)行的結(jié)束而釋放內(nèi)存空間。所以在一般情況下,不要把變量定義為全局變量。例2.3 公有變量與私有變量,全局變量與局部變量的應(yīng)用。單元文件1的程序代碼如下:unit unit1;interfaceuses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, borland.vcl.stdctrls, system.componentmodel; var name1:string;/公有變量可以在單元2中使用,name是命令符,所以定義變量使用name1type t

14、form1 = class(tform) edit1: tedit; button1: tbutton; procedure button1click(sender: tobject); private private declarations public public declarations end;var form1: tform1;implementationuses unit2;/引用unit2 var sex:string; /全局變量$r *.nfmprocedure tform1.button1click(sender: tobject); var age:integer;/

15、局部變量begin name1:=edit1.text ;/把輸入的值賦給變量name1 form2.show ;end;end.單元文件2的程序代碼如下:unit unit2;interfaceuses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, system.componentmodel, borland.vcl.stdctrls;type tform2 = class(tform) button1: tbutton; label1: tlabel; procedur

16、e button1click(sender: tobject); private private declarations public public declarations end;var form2: tform2;implementationuses unit1;/與公有變量name1配合使用$r *.nfmprocedure tform2.button1click(sender: tobject);beginlabel1.caption :=name1;/調(diào)用單元1中的變量并顯示end;end.注意:當(dāng)全局變量和局部變量重名時(shí),局部變量的優(yōu)先級(jí)高于全局變量。在局部變量使用的范圍內(nèi),程

17、序使用局部變量則不使用全局變量。2.1.5 數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)是描述客觀世界的字符、數(shù)字和所有輸入到計(jì)算機(jī)中并能被程序加工、運(yùn)算的符號(hào)集。數(shù)據(jù)類型是描述變量的表示形式和取值范圍及數(shù)據(jù)能夠參加的各種運(yùn)算。在object pascal語(yǔ)言中變量聲明必須確定變量的類型。在object pascal語(yǔ)言中,用戶可以根據(jù)需要定義自己需要的數(shù)據(jù)類型。object pascal語(yǔ)言具有豐富的數(shù)據(jù)類型,包括簡(jiǎn)單類型、結(jié)構(gòu)類型、指針類型、過(guò)程類型、可變類型,如圖2.1.1所示。1簡(jiǎn)單類型簡(jiǎn)單類型可分為有序類型、實(shí)數(shù)類型、字符串類型和日期時(shí)間類型四大類。(1)有序類型又包括整數(shù)類型、字符類型、布爾類型、枚舉類型

18、和子界類型。 圖2.1.1 數(shù)據(jù)類型 1)整數(shù)類型:它是全體整數(shù)的統(tǒng)稱,包括所有的正整數(shù)、負(fù)整數(shù)和零。整數(shù)類型可分為基本整數(shù)類型和通用整數(shù)類型。 基本整數(shù)類型包括shortint,smallint,longint,int64,byte,word和longword等類型,基本整數(shù)類型的名稱、類型、長(zhǎng)度和取值范圍如表2.3所示。表2.3 基本整數(shù)類型通用整數(shù)類型包括integer和cardinal兩種。它們的長(zhǎng)度都是32位,其區(qū)別是integer類型表示有符號(hào)整數(shù);cardinal類型表示無(wú)符號(hào)整數(shù)。通用整數(shù)類型的名稱、類型、長(zhǎng)度和取值范圍如表2.4所示。表2.4 通用整數(shù)類型不同的整數(shù)類型占用內(nèi)

19、存空間的大小也不同,所以在定義整數(shù)變量時(shí)要根據(jù)自己的需要選擇合適的整數(shù)數(shù)據(jù)類型,定義的太小將出現(xiàn)內(nèi)存溢出,太大會(huì)造成內(nèi)存空間的浪費(fèi)。例如,編一個(gè)循環(huán)10次的程序,用byte類型定義變量就足夠了。適用于整數(shù)類型的運(yùn)算如下:算術(shù)運(yùn)算:+,*,div,mod。關(guān)系運(yùn)算:=,=,。在delphi中,不同變量類型之間的運(yùn)算有可能出錯(cuò),當(dāng)位數(shù)少的向位數(shù)多的方向賦值時(shí)不會(huì)出錯(cuò),反過(guò)來(lái)就要出錯(cuò)。例2.4 變量聲明的應(yīng)用。程序代碼如下:procedure tform1.button1click(sender: tobject);var i:integer;/定義i是整型變量 j:byte;/定義j是字節(jié)型變量b

20、egin j:=255; i:=j;/不會(huì)出錯(cuò) i:=5985;j:=i;/超出了j的取值范圍,出錯(cuò)end; 2)字符類型:所有ascii碼都屬于字符類型,一般的字符只占用1個(gè)字節(jié)的內(nèi)存空間。字符類型可分為ansichar和widechar。ansichar是單字節(jié)字符,占用1個(gè)字節(jié),它是ansi字符集中的字符;widechar占用2個(gè)字節(jié)的空間(即16位),是unicode字符集中的字符。char是一般字符類型,即通用類型。在不同的cpu和不同的操作系統(tǒng)下占用的內(nèi)存空間不同,可能是1個(gè)字節(jié),也可能是2個(gè)字節(jié)。字符數(shù)據(jù)類型的名稱、類型、長(zhǎng)度和取值范圍如表2.5所示。ansi字符集是ascii字

21、符集的擴(kuò)展,每個(gè)字符占用1個(gè)字節(jié),即8位。unicode字符集中前256個(gè)字符是ansi字符集,最常用的字符類型是char類型。表2.5 字符數(shù)據(jù)類型適用于字符類型的運(yùn)算符如下:關(guān)系運(yùn)算:=,=,。 3)布爾類型:它是最簡(jiǎn)單、最常用的數(shù)據(jù)類型之一,用于邏輯運(yùn)算,布爾類型的值等于兩個(gè)預(yù)先定義的常量標(biāo)識(shí)符true,false。布爾類型可分為3種基本類型,即bytebool,wordbool和longbool,其通用類型是boolean。布爾數(shù)據(jù)類型的名稱、類型、長(zhǎng)度和取值范圍如表2.6所示。bytebool和boolean類型占用內(nèi)存空間為1個(gè)字節(jié);wordbool類型占用內(nèi)存空間為2個(gè)字節(jié);lo

22、ngbool類型占用內(nèi)存空間為4個(gè)字節(jié)。在一般編程時(shí)最好使用boolean,而bytebool,wordbool,longbool主要用于其他語(yǔ)言和windows環(huán)境兼容。表2.6 布爾數(shù)據(jù)類型適用于布爾類型的運(yùn)算符如下:關(guān)系運(yùn)算:=,=,。邏輯運(yùn)算:and,or,not。關(guān)于布爾數(shù)據(jù)類型的邏輯運(yùn)算,例如,設(shè)a,b是兩個(gè)變量,兩者之間進(jìn)行的邏輯運(yùn)算結(jié)果如表2.7所示。表2.7 a,b邏輯運(yùn)算 4)枚舉類型:它是通過(guò)列舉表示其值的標(biāo)識(shí)符來(lái)定義的有序集合。有時(shí)需要變量引用一個(gè)固定集合中的值,如一周七天,week可以表示sunday,monday,tuesday,saturday。此種情況就要用枚舉

23、類型。使用枚舉類型用戶可以定義一組具有特殊意義的值,最多可定義255個(gè)子項(xiàng)。枚舉類型的定義格式如下:type類型定義符=標(biāo)識(shí)符1,標(biāo)識(shí)符2,標(biāo)識(shí)符n;其中,type是定義枚舉類型的保留字;類型定義符是枚舉變量的名稱;標(biāo)識(shí)符1,標(biāo)識(shí)符n是自定義的一組有意義的標(biāo)識(shí)符,且n必須小于等于255。例如:type week=(sunday,monday,tuesday,wednesday,thursday,friday,saturday);week被定義為枚舉類型,括號(hào)中的值稱為枚舉常量。即可以使用枚舉類型week定義變量。例如:var d:week;/定義d是week類型的變量也可以同時(shí)定義枚舉類型和變

24、量聲明。例如:var d:(sunday,monday,tuesday,wednesday,thursday,friday,saturday); d:=sunday; /對(duì)枚舉類型變量d賦值注意:枚舉類型不能進(jìn)行輸入、輸出操作。 5)子界類型:它是在有序類型的取值范圍內(nèi)重新定義部分取值范圍。枚舉類型需要把所有的項(xiàng)逐一寫(xiě)出來(lái),當(dāng)數(shù)量較少時(shí)不太復(fù)雜,而當(dāng)數(shù)量較多時(shí)枚舉類型非常煩瑣。例如,定義1100之間的整數(shù),使用枚舉類型:1,2,3,100,要寫(xiě)100個(gè)數(shù),這不是用戶所想要的。此種情況用子界類型定義非常簡(jiǎn)單,子界類型的定義格式如下:type 子界類型=常量下界.常量上界;var 子界類型變量:子

25、界類型;其中,常量下界和常量上界必須是同一種有序類型,常量下界要小于等于常量上界,下面通過(guò)一個(gè)例子來(lái)說(shuō)明子界類型。例如:type num=1.15; letter=a.z;var i:num;因此,子界類型必須要求是有序類型,如整型、布爾型、字符型、枚舉型等。而無(wú)序類型不能作為子界類型的元素。對(duì)num賦值應(yīng)為在115之間的整數(shù),超出這個(gè)范圍編譯器將提示出錯(cuò)。(2)實(shí)數(shù)類型:又稱為浮點(diǎn)類型,包括整數(shù)部分和小數(shù)部分。實(shí)數(shù)不是有序類型,因?yàn)樗闹涤蚴菬o(wú)限的,主要用于數(shù)值較大或者精度較高的運(yùn)算。運(yùn)算時(shí)占用大量的cpu資源,運(yùn)算的速度也低于整型。實(shí)數(shù)類型包括以下幾種基本類型,double,real48,

26、single,extended,currency和real,它們之間的區(qū)別主要是取值范圍、占用空間的大小不同。實(shí)數(shù)類型的類型、名稱、取值范圍、有效數(shù)字和長(zhǎng)度如表2.8所示。表2.8 實(shí)數(shù)類型除此之外,還有comp也屬于實(shí)數(shù)類型,但很少使用。其中double,real48,single,extended,currency為基本類型;real為一般類型。注意:(1)extended類型比real類型的精度高,但是它與其他語(yǔ)言或者操作平臺(tái)的兼容性較差,盡可能的避免使用。(2)real類型與double類型是等價(jià)的。(3)currency類型是專為財(cái)務(wù)貨幣處理設(shè)計(jì)的,此類型至少有4位有效小數(shù)位。(3)

27、字符串類型:它是存儲(chǔ)字符串?dāng)?shù)據(jù)的類型,可分為shortstring,ansistring,widestring和string,字符串類型的類型、名稱、最大長(zhǎng)度和所需的內(nèi)存空間如表2.9所示。表2.9 字符串類型其中,shortstring,ansistring,widestring是基本字符類型;string是一般字符類型,即通用類型。當(dāng)編譯開(kāi)關(guān)的狀態(tài)為$h-時(shí),用保留字string聲明的是短字符串,即shortstring;當(dāng)編譯開(kāi)關(guān)的狀態(tài)為$h+時(shí),用保留字string聲明的是長(zhǎng)字符串,即ansistring。在默認(rèn)情況下,編譯開(kāi)關(guān)的狀態(tài)為$h+。字符串變量聲明的語(yǔ)法格式如下:var 類型

28、標(biāo)識(shí)符:string長(zhǎng)度;在程序中一般使用string,很少使用shortstring,ansistring和widestring來(lái)聲明字符串變量。例如:var str1:string; str2:string10;其中,可以通過(guò)字符串的下標(biāo)來(lái)訪問(wèn)字符串中的字符,10是限制字符串的長(zhǎng)度不能超過(guò)10,如果賦初值時(shí)字符串的長(zhǎng)度超過(guò)了10,則系統(tǒng)自動(dòng)識(shí)別前10位,剩余的字符將被丟失,但是ansistring和widestring類型的字符串沒(méi)有長(zhǎng)度的限制。例2.5 超過(guò)定義字符串范圍的長(zhǎng)度將被丟失的應(yīng)用。程序代碼如下:procedure tform1.button1click(sender: tob

29、ject);var str:string2;begin str:=asdjgh; /給str賦值 label1.caption:=str;end;執(zhí)行這段程序后結(jié)果是as。說(shuō)明變量str把字符串a(chǎn)sdjgh中的后4位數(shù)據(jù)“djgh”丟失。在一段程序中如果字符串變量str賦的值是漢字,則用str來(lái)顯示其字符可能是亂碼,下面通過(guò)一個(gè)例子說(shuō)明這個(gè)問(wèn)題。例2.6 輸出“我喜歡delphi”的第一個(gè)字節(jié)。程序代碼如下:procedure tform1.button1click(sender: tobject); var str:string10;begin str:=我喜歡delphi;/給str賦值

30、label1.caption:=str1;end;執(zhí)行這段程序顯示的不是“我”,而是亂碼,可改為下面的程序:procedure tform1.button1click(sender: tobject); var str:string;begin str:=我喜歡delphi ;/給str賦值 label1.caption:=str1;end;執(zhí)行這段程序后顯示字符“我”。(4)日期時(shí)間類型:該類型是delphi常用的一種類型,用來(lái)存儲(chǔ)、控制日期和時(shí)間,和日期時(shí)間類型相似的是日期類型和時(shí)間類型。日期時(shí)間類型實(shí)際上是浮點(diǎn)類型的一種,在變量中存儲(chǔ)年、月、日、小時(shí)、分和秒這些信息。聲明一個(gè)日期時(shí)間型的

31、變量和聲明其他變量類似。例如:var mydatetime:datetime;例2.7 日期時(shí)間類型的應(yīng)用。程序代碼如下:procedure tform1.button1click(sender: tobject); var my:datetime;/定義變量begin my:=now();/獲取系統(tǒng)日期時(shí)間 label1.caption:=datetimetostr(my);/顯示系統(tǒng)日期時(shí)間end;這段程序的作用是顯示當(dāng)前系統(tǒng)的日期時(shí)間。其中,now()是獲取系統(tǒng)日期時(shí)間的函數(shù),而datetimetostr()是將日期時(shí)間類型轉(zhuǎn)換成字符類型。2結(jié)構(gòu)類型結(jié)構(gòu)類型比簡(jiǎn)單類型的數(shù)據(jù)復(fù)雜,結(jié)構(gòu)類型

32、在程序中也是非常重要的。它包含很多類型,下面重點(diǎn)介紹集合類型、數(shù)組類型和記錄類型。(1)集合類型:它是把一組相關(guān)的對(duì)象作為一個(gè)整體參加運(yùn)算,每一個(gè)對(duì)象稱為集合的一個(gè)元素。這點(diǎn)和枚舉類型、子界類型類似,但是它們之間也有區(qū)別,集合類型是一個(gè)整體,而枚舉類型和子界類型的變量只是它的一個(gè)元素;集合類型中元素沒(méi)有先后順序關(guān)系,相同的元素不能在同一個(gè)集合中出現(xiàn)。 1)定義集合類型。其類型的格式如下:type 集合標(biāo)識(shí)符=set of 基本類型;其中,集合元素的個(gè)數(shù)不能超過(guò)256個(gè)字符,type,set of是保留字;基本類型可以是任意有序類型,如整數(shù)類型、字符類型、布爾類型、枚舉類型和子界類型,但不能是實(shí)

33、數(shù)類型。例如:type num=set of 1.10;/以子界類型為基類 mychar=set of char;/以字符類型為基類 orient=(east,west,south,north);/以枚舉類型為基類需要注意的是在使用集合類型時(shí),要先定義集合類型,集合類型的變量聲明與其他類型變量的聲明類似。例如:var mynum:num;也可以同時(shí)聲明集合類型和變量。例如:var mynum:set of 1.10;注意:集合中元素上界應(yīng)大于等于下界,集合元素的個(gè)數(shù)不能超過(guò)256個(gè)字符,如mychar=set of widechar;是錯(cuò)誤的,因?yàn)閣idechar的位數(shù)為2,包含65 535個(gè)

34、字符。 2)集合類型變量賦值。給集合類型變量賦值時(shí)用方括號(hào)表示。例如:type num=set of 1.10;var mynum:num;begin mynum:=1,2,3,4,5;end;先定義了集合類型num,然后聲明集合變量,最后給它賦值。其中mynum是num的類型變量,集合類型允許值為空集,如mynum:=;。 3)集合類型的運(yùn)算。該運(yùn)算包括等于“=”與不等于“”關(guān)系運(yùn)算,集合類型的關(guān)系運(yùn)算返回結(jié)果是布爾值:真或假,元素的排列順序和集合沒(méi)有關(guān)系。例如:1,2,3,4=2,3,4,1;/真(true)1,2,3,4=2,3,4,5;/假(false)小于等于“=”關(guān)系運(yùn)算,集合a中

35、的元素在集合b中都存在,稱為集合a小于等于集合b,反之稱為集合a大于等于集合b。例如:a, b, c= a, b, c, d;/真(true)c, b, a= a, b, c, d;/假(false)注意:集合的運(yùn)算關(guān)系不存在大于、小于,只存在大于等于和小于等于。(2)數(shù)組類型:該類型是一組具有相同類型的元素并按一定的順序組成的序列。數(shù)組中的每一個(gè)元素都通過(guò)數(shù)組名和下標(biāo)來(lái)存取。數(shù)組可分為一維數(shù)組和多維數(shù)組,也可分為靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組。 1)一維數(shù)組:它是數(shù)組中最簡(jiǎn)單的數(shù)組,定義一個(gè)一維數(shù)組類型的格式如下:數(shù)組標(biāo)識(shí)符=array下標(biāo)號(hào)下限.下標(biāo)號(hào)上限of元素類型;其中,“下標(biāo)號(hào)下限.下標(biāo)號(hào)上限”

36、指的是類型變量的分量個(gè)數(shù),其下標(biāo)的類型是任何有序類型,一般的下標(biāo)類型是整數(shù)類型;元素類型可以是任何類型。例2.8 定義一個(gè)一維數(shù)組。程序代碼如下:type myarray=array1.10of integer; mychar=arraya.zof char;聲明一維數(shù)組變量:vari:myarray;數(shù)組賦初值:procedure tform1.button1click(sender: tobject);type myarray=array1.10of integer;var i:myarray;begin i1:=55; i2:=5; label1.caption :=inttostr(i

37、2);end;其中,數(shù)組變量i得到55和5這兩個(gè)值,其余的數(shù)組元素值系統(tǒng)默認(rèn)為0,label1的標(biāo)題顯示5。一般采用循環(huán)語(yǔ)句給數(shù)組賦值,關(guān)于循環(huán)語(yǔ)句將在后面章節(jié)中講解。 2)多維數(shù)組:它是指數(shù)組中的元素本身也是一維數(shù)組。其中二維數(shù)組屬于多維數(shù)組,二維數(shù)組是一維數(shù)組的推廣,它是最常用的多維數(shù)組。定義二維數(shù)組的格式如下:type 數(shù)組標(biāo)識(shí)符=array下標(biāo)號(hào)下限.下標(biāo)號(hào)上限,下標(biāo)號(hào)下限.下標(biāo)號(hào)上限of元素類型其中,數(shù)組標(biāo)識(shí)符和一維數(shù)組的標(biāo)識(shí)符相同,只是增加了一個(gè)“下標(biāo)號(hào)下限.下標(biāo)號(hào)上限”定義二維數(shù)組。例如:type myarray=array1.5,1.5of integer;var i:myar

38、ray;定義了一個(gè)二維數(shù)組myarray,聲明數(shù)組變量i。例2.9 二維數(shù)組的賦值和應(yīng)用。程序代碼如下:procedure tform1.button1click(sender: tobject);type myarray=array1.5,1.5of integer;var i:myarray;begin i1,1:=55;/給數(shù)組賦值 i2,2:=5;/給數(shù)組賦值 label1.caption :=inttostr(i1,1); /顯示數(shù)組1,1中的值end;執(zhí)行這段程序后,結(jié)果是55。除數(shù)組中1,1,2,2元素外,其他的元素值均為0,賦值方法和一維數(shù)組相同,一般采用循環(huán)語(yǔ)句給數(shù)組賦值。注

39、意:i1,1等價(jià)于i11。(3)記錄類型:前面介紹的枚舉類型、子界類型和數(shù)組類型都是相同數(shù)據(jù)類型的集合。然而,在實(shí)際應(yīng)用中,常把一些不同數(shù)據(jù)類型的數(shù)據(jù)集中在一起,作為一個(gè)整體。因此,引入了記錄類型,記錄類型和數(shù)據(jù)庫(kù)的記錄相似。如一個(gè)通信錄由下列字段組成:編號(hào):(整型)姓名:(字符串型)年齡:(整型)地址:(字符串型)電話:(整型)這是數(shù)據(jù)庫(kù)中的字段,同樣記錄類型也可以定義這組數(shù)據(jù)。定義記錄類型在聲明時(shí),需要為每個(gè)字段定義名稱和類型,定義記錄類型的一般格式如下:type 記錄類型標(biāo)識(shí)符=record 字段標(biāo)識(shí)符1:類型1; 字段標(biāo)識(shí)符2:類型2; 字段標(biāo)識(shí)符n:類型n;end;其中,record

40、,end是保留字,記錄類型以end結(jié)束;記錄類型標(biāo)識(shí)符是記錄類型名;字段標(biāo)識(shí)符是字段名;類型是該字段的數(shù)據(jù)類型,可以是任意類型。例如,上述通信錄可以定義成下列程序:type friend=record id:integer; name:string; age:integer; addr:string; tele:integer;end;其中,定義了friend類型的記錄,該記錄由5個(gè)字段組成,且每個(gè)字段都有其標(biāo)識(shí)符和類型。聲明記錄類型變量和聲明其他變量類似,聲明記錄類型變量的格式如下:var 記錄變量:記錄類型標(biāo)識(shí)符;例如:var fri:friend;聲明記錄變量后就可以訪問(wèn)記錄中的任何一個(gè)

41、字段,訪問(wèn)記錄中某字段的語(yǔ)法格式如下:記錄變量名.字段名例如:fri.id :=1;f:=張宏進(jìn);fri.age:=20;fri.addr:=陜西;fri.tele:=86525652;由程序可見(jiàn),給記錄字段賦值,每個(gè)字段前都有“fri”,這樣重復(fù)的工作量增大。用with語(yǔ)句可以解決這個(gè)問(wèn)題,with語(yǔ)句的語(yǔ)法格式如下:with記錄變量名do begin end;with后的記錄變量名允許有多個(gè),且記錄變量名之間要用逗號(hào)隔開(kāi);do后一般是復(fù)合句,使用begin和end括起來(lái)。with語(yǔ)句的功能是為了節(jié)約輸入量,如果with語(yǔ)句后面只跟一條語(yǔ)句,這樣增加了用戶的輸入量。例2.10

42、with語(yǔ)句的應(yīng)用。程序代碼如下:with fri do begin id :=1; name:= 張宏進(jìn); age:=20; addr:= 陜西; tele:=86525652; end;3指針類型指針類型是一種特殊的類型。前面講述的類型變量都是靜態(tài)的,程序運(yùn)行時(shí)占用固有的內(nèi)存空間,運(yùn)行結(jié)束后才釋放內(nèi)存空間。指針類型不太復(fù)雜,但是在任何一種語(yǔ)言中都比較難理解,因?yàn)樗撵`活性很高。指針類型是以“”開(kāi)始,后跟類型名,定義指針類型的語(yǔ)法格式如下:type 指針類型=類型名; 其中,類型名是指針?biāo)赶虻臄?shù)據(jù)類型。例如:type pinteger=integer; pchar=char;其中,定義了兩

43、個(gè)指針類型,一個(gè)是pinteger,指向integer類型的數(shù)據(jù);另一個(gè)是pchar,指向char類型的數(shù)據(jù)。先定義指針,再聲明指針變量。例如:var ip:pinteger; cp:pchar;定義指針和變量聲明也可以同時(shí)進(jìn)行。例如:var ip:integer; cp:char;指針類型可以是簡(jiǎn)單類型,也可以是構(gòu)造類型。4可變類型可變類型又稱為變體類型。主要用于支持ole自動(dòng)化操作,還用于經(jīng)常變動(dòng)的類型,它是一種功能強(qiáng)大的類型,聲明可變類型的變量如下:var myvar:variant;可變類型變量myvar聲明后,默認(rèn)初始化為一個(gè)特殊的值unassigned,表示myvar沒(méi)有被賦值;當(dāng)

44、變量myvar的值為特殊值null時(shí),表明變量myvar的值未知或者是數(shù)據(jù)丟失??勺冾愋偷淖兞靠梢允钦汀?shí)型、日期時(shí)間型、字符型和布爾型等,編譯器自動(dòng)進(jìn)行類型轉(zhuǎn)換??勺冾愋偷闹饕猛臼强梢詣?dòng)態(tài)地改變其數(shù)據(jù)類型。例2.11 可變類型變量的聲明和應(yīng)用。程序代碼如下:procedure tform1.button1click(sender: tobject); var v1,v2,v3,v4,v5:variant;begin v1:=123;/v1整型 v2:=asd; /v2字符串型 v3:=25.36;/v3實(shí)數(shù)型 v5:=v1+v2;/v5字符串型 v4:=v3+v1;/v4實(shí)數(shù)型 labe

45、l1.caption:=v5;/v5字符串型 label2.caption:=v4;/v4字符串型end;在按鈕單擊事件中,可變類型使用整型、字符串型、實(shí)數(shù)型,label1的標(biāo)題顯示“123asd”;label2的標(biāo)題顯示“148.36”。2.1.6 類型的轉(zhuǎn)換類型的轉(zhuǎn)換兩個(gè)數(shù)據(jù)在賦值或者計(jì)算時(shí)類型必須相同,不相同將出現(xiàn)錯(cuò)誤。這時(shí)就需要將不同類型的數(shù)據(jù)轉(zhuǎn)換成同一種類型。數(shù)據(jù)類型的轉(zhuǎn)換分為自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。1自動(dòng)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換是指系統(tǒng)自動(dòng)將一種類型a轉(zhuǎn)換成另一種類型b。自動(dòng)轉(zhuǎn)換的條件是類型a在類型b的取值范圍內(nèi),從精度低的方向向精度高的方向轉(zhuǎn)換。例2.12 自動(dòng)類型轉(zhuǎn)換的應(yīng)用。程

46、序代碼如下:procedure tform1.rclick(sender: tobject); var i:integer; f:real; c:char; s:string;begin i:=3; f:=i+2.22; /編譯時(shí)不會(huì)出錯(cuò) c:=j; s:=c;/編譯時(shí)不會(huì)出錯(cuò) label1.caption:=s; label2.caption:=floattostr(f);end;其中,f:=i+2.22;在編譯時(shí)不會(huì)出錯(cuò),如果i:=f;將出現(xiàn)錯(cuò)誤。2強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換是指從一種類型強(qiáng)制轉(zhuǎn)換成另一種類型,并不是所有的類型都可以強(qiáng)制轉(zhuǎn)換成另一種類型。例2.13 強(qiáng)制類型轉(zhuǎn)換的應(yīng)用。程序代

47、碼如下:procedure tform1.rclick(sender: tobject); var i:integer; c:char;begin c:=a; i:=integer(c);/強(qiáng)制轉(zhuǎn)換成整型 label1.caption:=inttostr(i);/inttostr是類型轉(zhuǎn)換函數(shù) i:=98; label2.caption:=char(i); /強(qiáng)制轉(zhuǎn)換成字符型end;執(zhí)行該段程序后,label1的標(biāo)題是“97”;label2的標(biāo)題是“b”。注意:強(qiáng)制類型轉(zhuǎn)換有可能造成數(shù)據(jù)的丟失。2.1.7 標(biāo)號(hào)、數(shù)值和字符串標(biāo)號(hào)、數(shù)值和字符串在object pascal語(yǔ)言中標(biāo)號(hào)、數(shù)值和字符串

48、是常用的,并對(duì)它們做了相應(yīng)的規(guī)定。1標(biāo)號(hào)在delphi語(yǔ)言中,保留了goto語(yǔ)句。goto語(yǔ)句的語(yǔ)法格式如下:goto標(biāo)號(hào);其中,標(biāo)號(hào)是09 999之間的整數(shù),并允許使用標(biāo)識(shí)符作為標(biāo)號(hào)。goto語(yǔ)句的功能是轉(zhuǎn)到有“標(biāo)號(hào)”的語(yǔ)句執(zhí)行。使用goto語(yǔ)句前必須先聲明標(biāo)號(hào),且在同一段程序中不允許跳出過(guò)程和函數(shù)。例2.14 goto語(yǔ)句定義的應(yīng)用。程序代碼如下:implementation var i:integer;$r *.nfmprocedure tform1.button1click(sender: tobject); label asd;begin asd: i:=1+i; label1.ca

49、ption:=inttostr(i); sleep(1000);/暫停1000毫秒 goto asd;end;該程序的功能是實(shí)現(xiàn)i的累加。在結(jié)構(gòu)化程序中一般不使用goto語(yǔ)句。因?yàn)槭褂胓oto語(yǔ)句容易使程序混亂,可讀性差。2數(shù)值在delphi語(yǔ)言中,一般使用的數(shù)值是十進(jìn)制數(shù),但也可寫(xiě)成十六進(jìn)制數(shù)。(1)十進(jìn)制數(shù):一般的書(shū)寫(xiě)都是十進(jìn)制數(shù),如10,526,21.58等;也可用科學(xué)計(jì)數(shù)法表示,如54.25e+3表示54 250。(2)十六進(jìn)制數(shù):十六進(jìn)制數(shù)值可以表示整數(shù),以“$”開(kāi)始,例如:$54b表示十進(jìn)制整數(shù)1 355。3字符串字符串是用單撇號(hào)括起來(lái)的一串字符。單撇號(hào)內(nèi)可以是特殊字符,如:!,#

50、和¥等;也可以是字符串的表示形式,如我喜歡delphi、你好。如果要表示單撇號(hào)時(shí),需要使用兩個(gè)單撇號(hào)表示為一個(gè)單撇號(hào),例如:“”表示“”。在delphi語(yǔ)言中允許在字符串中嵌入控制符,控制符是由特殊符號(hào)“#”和緊跟其后的0255之間的無(wú)符號(hào)整數(shù)構(gòu)成,表示ascii碼中的字符。例如:#97/表示字符a#97#98#99/表示abc注意:書(shū)寫(xiě)“#97”時(shí),不要用單撇號(hào)括起來(lái),如#97,輸出的是#97,而不是字母“a”。直接書(shū)寫(xiě)#97即可輸出字母“a”。2.1.8 運(yùn)算符運(yùn)算符運(yùn)算是對(duì)數(shù)據(jù)進(jìn)行加工的過(guò)程,而運(yùn)算符是各種運(yùn)算的符號(hào),例如,加、減、乘、除運(yùn)算符。在object pascal語(yǔ)言中,運(yùn)算符

51、主要包括賦值運(yùn)算符、算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、字符串運(yùn)算符、關(guān)系運(yùn)算符和布爾運(yùn)算符等。1賦值運(yùn)算符賦值運(yùn)算符比較簡(jiǎn)單,在前面大多數(shù)程序中都用到了賦值運(yùn)算符,在此不再贅述。賦值運(yùn)算符是用“:=”來(lái)表示的。例2.15 賦值運(yùn)算符的應(yīng)用。程序代碼如下:var i,d:integer; i:=25; d:=i;其中,i賦值為25,i又賦值給d,所以d的值是25。2算術(shù)運(yùn)算符(1)算術(shù)運(yùn)算符:它可分為單目運(yùn)算符和雙目運(yùn)算符。單目運(yùn)算符如表2.10所示;雙目運(yùn)算符如表2.11所示。表2.11 雙目運(yùn)算符表2.10 單目運(yùn)算符說(shuō)明:1)取正、取負(fù)與加減乘除的運(yùn)算和數(shù)學(xué)中的運(yùn)算相同,操作數(shù)可以是整型或

52、實(shí)型。 2)除的結(jié)果是實(shí)型。 例2.16 除法的應(yīng)用。程序代碼如下:procedure tform1.button1click(sender: tobject);vari:integer;f:real;begini:=5;f:=i/4;/“i/4”值是實(shí)型label1.caption:=floattostr(f);end; 3)參加整數(shù)除法和求余運(yùn)算的操作數(shù)必須是整型,其結(jié)果也是整型。例2.17 div和mod的應(yīng)用。程序代碼如下:5 div 2;/整除取商,結(jié)果為2-5 div -2; /整除取商,結(jié)果為25 div -2; /整除取商,結(jié)果為2-5 div 2; /整除取商,結(jié)果為25 m

53、od 2; /整除取余,結(jié)果為15 mod -2;/整除取余,結(jié)果為1-5 mod 2;/整除取余,結(jié)果為1-5 mod -2;/整除取余,結(jié)果為1 4)在除、整數(shù)除、整數(shù)求余運(yùn)算的表達(dá)式中除數(shù)不能為0。(2)算術(shù)表達(dá)式:它是由常量、變量、函數(shù)、運(yùn)算符和括號(hào)組成的,運(yùn)算結(jié)果是一個(gè)數(shù)值。如2+59*8+6/5,其結(jié)果自動(dòng)轉(zhuǎn)換成實(shí)數(shù)型,結(jié)果為63.8。算術(shù)表達(dá)式和數(shù)學(xué)中的表達(dá)式十分相似,但也有一些區(qū)別。 1)數(shù)學(xué)中x平方的表達(dá)式為x2,而在算術(shù)表達(dá)式中為x*x。 2)在數(shù)學(xué)表達(dá)式中,小括號(hào)外面還可以有中括號(hào)或大括號(hào),但在算術(shù)表達(dá)式中不允許,只能使用多重小括號(hào)。如數(shù)學(xué)表達(dá)式中65+23(23+36)

54、+66表示成算術(shù)表達(dá)式為65+23*(23+36)+66)。 3)算術(shù)表達(dá)式不能簡(jiǎn)寫(xiě),如8x需要表示成8*x。(3)算術(shù)運(yùn)算符的優(yōu)先級(jí)。算術(shù)表達(dá)式運(yùn)算符包括加、減、乘、除、取正、取負(fù)、mod和div,它們的優(yōu)先級(jí)順序從高到低如下:取正/取負(fù)乘/除mod/div加/減在算術(shù)表達(dá)式中,同一級(jí)別運(yùn)算符的結(jié)合性是自左向右;如果表達(dá)式中包括括號(hào),先運(yùn)算括號(hào)中的表達(dá)式;如果是多重括號(hào),最里面括號(hào)中表達(dá)式的優(yōu)先級(jí)最高。3邏輯運(yùn)算符邏輯運(yùn)算又稱為布爾運(yùn)算,其運(yùn)算結(jié)果是布爾型。邏輯運(yùn)算符可以連接若干表達(dá)式,如不等式0 x99表示成0 x and x99。邏輯運(yùn)算符如表2.12所示。表2.12 邏輯運(yùn)算符其中,除

55、not是單目運(yùn)算符外,其余的均為雙目運(yùn)算符。設(shè)a,b為邏輯值,其運(yùn)算結(jié)果如表2.13所示。表2.13 a,b邏輯運(yùn)算在邏輯運(yùn)算中,如果兩個(gè)表達(dá)式均為真,兩個(gè)表達(dá)式進(jìn)行and邏輯運(yùn)算,其結(jié)果為真,否則為假;如果兩個(gè)表達(dá)式均為假,兩個(gè)表達(dá)式進(jìn)行or邏輯運(yùn)算,其結(jié)果為假,否則為真;如果兩個(gè)表達(dá)式的布爾值不同,兩個(gè)表達(dá)式進(jìn)行xor邏輯運(yùn)算,其結(jié)果為真,否則為假;not運(yùn)算是由真變假,由假變真。4位運(yùn)算符位運(yùn)算是二進(jìn)制運(yùn)算,即把整數(shù)先換算成二進(jìn)制的形式,然后再運(yùn)算,結(jié)果是整型,并按二進(jìn)制形式進(jìn)行位的移動(dòng)和比較。位運(yùn)算符如表2.14所示。表2.14 位運(yùn)算符其中,除not是單目運(yùn)算符外,其余的位運(yùn)算符都是

56、雙目運(yùn)算符。下面講述各個(gè)位運(yùn)算符的運(yùn)算過(guò)程。(1)not位運(yùn)算符,是按位非,即把操作數(shù)的每一位都取反,0變成1,1變成0。例如:i:=not 6;i的值是7(6的二進(jìn)制形式是00000110,而7的二進(jìn)制形式是11111001)。(2)and位運(yùn)算符,是按位與。當(dāng)兩個(gè)數(shù)都為1時(shí),結(jié)果才為1。例如:v1:=2;/00000010v2:=3;/00000011i:=v1 and v2;/00000010所以i的值是2。(3)or位運(yùn)算符,是按位或,兩位中有一位是1時(shí),其結(jié)果為1。例如:v1:=2;/00000010v2:=3;/00000011i:=v1 or v2; /00000011所以i的值

57、是3。(4)xor位運(yùn)算符,兩位相異或時(shí),其結(jié)果為1。例如:v1:=5;/00000101v2:=3;/00000011i:=v1 xor v2; /00000110所以i的值是6。(5)shl位運(yùn)算符,左移,即每個(gè)二進(jìn)制的數(shù)值向左移。例如:i:=7 shl 2;/00000111左移2位i的結(jié)果是28,即00011100。(6)shr位運(yùn)算符,右移,即每個(gè)二進(jìn)制的數(shù)值向右移。例如:i:=7 shr 2;/00000111右移2位i的結(jié)果是1即00000001。5字符串運(yùn)算符在object pascal語(yǔ)言中,字符串運(yùn)算符只有一種,即連接運(yùn)算符“+”,該運(yùn)算符可以使兩個(gè)或兩個(gè)以上的字符串連接起

58、來(lái)。連接運(yùn)算符可以連接字符常量、字符串常量、字符變量和字符串變量等。字符串表達(dá)式的語(yǔ)法格式如下:字符串表達(dá)式+字符串|字符例如:str:= 我喜歡+delphi;/str的值是“我喜歡delphi”str:= 123+delphi+456;/str的值是“123delphi456”str:= a+ + bcdef ; /str的值是“a bcdef”6關(guān)系運(yùn)算符關(guān)系運(yùn)算符又稱為比較運(yùn)算符,是用來(lái)比較兩個(gè)表達(dá)式的值,其結(jié)果是布爾型。在object pascal語(yǔ)言中關(guān)系運(yùn)算符有7種,如表2.15所示。注意:(1)關(guān)系運(yùn)算符的優(yōu)先級(jí)別相同。(2)關(guān)系運(yùn)算符兩側(cè)的表達(dá)式的類型可以是任意的,但是類型必

59、須一致。在比較兩個(gè)字符串時(shí),如果第一個(gè)字符大,其字符串也大,如果第一個(gè)字符相同再比較第二個(gè),依此類推。常見(jiàn)字符值的大小如下:表2.15 關(guān)系運(yùn)算符空格09azaz任何漢字7運(yùn)算符的優(yōu)先級(jí)前面講述了object pascal的基本運(yùn)算符,在object pascal語(yǔ)言中可以使用任意的運(yùn)算符來(lái)連接任意表達(dá)式。例如:f:=6+3*6/89*(5 mod 3);如果不知道其優(yōu)先級(jí),就無(wú)法計(jì)算整個(gè)算術(shù)表達(dá)式。下面講述它們的優(yōu)先級(jí)別,優(yōu)先級(jí)由高到低的順序如下:(1)()(2)函數(shù)(3)not(4)*,/,div,mod,and,shl,shr(5)+,or,xor(6)=,=,in例如:f:=6+3*6

60、/89*(5 mod 3);/f值是640 449 438 202 247(6-3)5) /結(jié)果是true(6-3)5)/語(yǔ)法錯(cuò)誤8 in 2,8 /結(jié)果是true88+99 /結(jié)果是88992.1.9 注釋注釋程序的注釋是對(duì)一段程序或者一行程序的解釋。在編譯過(guò)程中不參與編譯,用來(lái)增強(qiáng)程序的可讀性。程序中常使用“/”注釋程序。注釋有兩種方式,即整行注釋和行內(nèi)注釋。1整行注釋整行注釋是以“/”開(kāi)始,“/”后的所有內(nèi)容都屬于注釋的內(nèi)容。一般情況下都采用整行注釋,用來(lái)注釋此行的內(nèi)容。2行內(nèi)注釋行內(nèi)注釋常使用“”或“(*)”。只要在“”或者“(*)”中的部分都屬于注釋?!?”與“”和“(*)”的區(qū)別是“/”只

溫馨提示

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