Object Pascal語(yǔ)言基礎(chǔ)課件_第1頁(yè)
Object Pascal語(yǔ)言基礎(chǔ)課件_第2頁(yè)
Object Pascal語(yǔ)言基礎(chǔ)課件_第3頁(yè)
Object Pascal語(yǔ)言基礎(chǔ)課件_第4頁(yè)
Object Pascal語(yǔ)言基礎(chǔ)課件_第5頁(yè)
已閱讀5頁(yè),還剩24頁(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)介

ObjectPascal語(yǔ)言基礎(chǔ)2.1基本概念

Delphi7.0是一個(gè)基于ObjectPascal語(yǔ)言的Windows應(yīng)用程序開(kāi)發(fā)系統(tǒng),在所有的事件處理過(guò)程和應(yīng)用程序中都是使用它來(lái)編寫(xiě)程序代碼。ObjectPascal編程語(yǔ)言是在Pascal語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的,它繼承了Pascal語(yǔ)法嚴(yán)謹(jǐn)、數(shù)據(jù)結(jié)構(gòu)豐富等優(yōu)點(diǎn),同時(shí)融入了面向?qū)ο缶幊痰恼Z(yǔ)法要素,使之成為一種優(yōu)秀的面向?qū)ο缶幊陶Z(yǔ)言。2.1.1保留字

首先介紹ObjectPascal語(yǔ)言的最基本內(nèi)容:保留字和標(biāo)志符。保留字(ReservedWords)是由系統(tǒng)規(guī)定的、具有特定意義的單詞。在編程時(shí)不能被重新定義或另作他用。ObjectPascal語(yǔ)言規(guī)定的保留字有65個(gè),詳見(jiàn)本教程P23頁(yè)表2-1。

除了上述的保留字外,Private、Protected、Public、Published和Automated在定義對(duì)象類型時(shí)也作為保留字,而在其他場(chǎng)合則作為指令符。單詞at和on也具有特殊的含義。

注意:ObjectPascal編程語(yǔ)言和許多編程語(yǔ)言不同,它對(duì)單詞的大小寫(xiě)是不敏感的。ObjectPascal不區(qū)分大小寫(xiě)。IN、in和In都被看做是同樣的意義。2.1.2標(biāo)識(shí)符

標(biāo)識(shí)符是ObjectPascal語(yǔ)言中用來(lái)表示應(yīng)用程序量的名稱。包括:變量(Var)、常量(Const)、類型(Type)、過(guò)程(Procedure)、方法(Method)等。標(biāo)識(shí)符分為標(biāo)準(zhǔn)標(biāo)識(shí)符和自定義標(biāo)識(shí)符兩類。

標(biāo)準(zhǔn)標(biāo)識(shí)符是ObjectPascal語(yǔ)言系統(tǒng)預(yù)先分配給標(biāo)準(zhǔn)常量、標(biāo)準(zhǔn)類型、標(biāo)準(zhǔn)函數(shù)、標(biāo)準(zhǔn)過(guò)程及標(biāo)準(zhǔn)文件使用的標(biāo)識(shí)符。如標(biāo)準(zhǔn)常量:False、True;標(biāo)準(zhǔn)類型:integer、char、real;標(biāo)準(zhǔn)函數(shù):Abs、Sqr、Cos等。自定義標(biāo)識(shí)符是程序員根據(jù)需要為自己定義的常量、變量、類型、函數(shù)、過(guò)程以及所編寫(xiě)的程序名等。ObjectPascal標(biāo)識(shí)符由字母、數(shù)字、下劃線組成,其規(guī)定為:(1)必須以字母或下劃線開(kāi)始;(2)不能與保留字相同;(3)避免與ObjectPascal已經(jīng)使用的標(biāo)準(zhǔn)標(biāo)識(shí)符相同。2.1.3指令符

指令符(directives)也是具有特殊意義的單詞,但與保留字不同的是可以將指令符定義為標(biāo)識(shí)符,ObjectPascal不會(huì)指示出錯(cuò),但這容易混淆。ObjectPascal規(guī)定的指令符見(jiàn)表2-2。absoluteabstractassemblerautomatedcdcelcontainsdefaultdispiddynamicexportexternalfarforwardimplementsindexmessagenamenearnodefaultoverloadoverridepackagepascalprivateprotectedpublicreadreadonlyregisterretroducerequiresresidentsafecallstdcallstoredvirtualwritewriteonly表2-2ObjectPascal語(yǔ)言規(guī)定的指令字2.2數(shù)據(jù)類型

描述客觀事物的數(shù)、字符以及所有能輸入到計(jì)算機(jī)中并被計(jì)算機(jī)程序加工處理的符號(hào)的集合稱為數(shù)據(jù)。數(shù)據(jù)的一個(gè)重要特征就是其所屬的數(shù)據(jù)類型,數(shù)據(jù)類型不僅確定了該類數(shù)據(jù)的表示形式和取值范圍,而且還確定了數(shù)據(jù)所能夠參加的各種運(yùn)算。ObjectPascal提供了多種數(shù)據(jù)類型,包括標(biāo)準(zhǔn)數(shù)據(jù)類型和高級(jí)數(shù)據(jù)類型。標(biāo)準(zhǔn)數(shù)據(jù)類型屬于ObjectPascal內(nèi)部約定的數(shù)據(jù)類型,無(wú)需定義就可以直接使用。標(biāo)準(zhǔn)數(shù)據(jù)類型有整型(Integer)、實(shí)型(Real)、字符型(Character)、字符串型(String)、布爾型(Boolean)五種。高級(jí)數(shù)據(jù)類型體現(xiàn)了特殊的數(shù)據(jù)結(jié)構(gòu),在使用之前必須由用戶自己進(jìn)行定義。高級(jí)數(shù)據(jù)類型有枚舉型(Enumerated)、子界型(Subrange)、集合類型(Set)、數(shù)組類型(Array)、記錄類型(Record)文件類型(File)、類類型(Class)、類引用類型(ClassReference)、接口類型(Interface)、指針類型(Pointer)、過(guò)程類型(Procedural)、可變類型(Variant)。2.2.1整型

整數(shù)包括正整數(shù)、負(fù)整數(shù)和零。整型是存儲(chǔ)整數(shù)數(shù)據(jù)的類型。ObjectPascal包括9種形式的整型數(shù)據(jù),詳見(jiàn)本教程P25頁(yè)表2-3。

前2種為一般整型,后7種為基本整型,應(yīng)盡量使用Integer、Cardinal兩種基本類型,因?yàn)樗鼈冊(cè)诟鞣NCPU和操作系統(tǒng)中都提供最佳的性能。通常,作用于整數(shù)的算術(shù)運(yùn)算符返回Integer類型的值。在當(dāng)前執(zhí)行中,等價(jià)于32位的長(zhǎng)整型(LongInt)。僅當(dāng)對(duì)Int64類型執(zhí)行運(yùn)算時(shí),運(yùn)算結(jié)果返回Int64類型。因此,下面的代碼執(zhí)行后得到的結(jié)果是不正確的:vari:Integer;j:Int64;...i:=High(Integer);//取Integer類型中的最大值j:=i+1;要使返回值是Int64類型,在上面的情況中可以將

i轉(zhuǎn)換為Int64。代碼如下:...j:=Int64(i)+1;2.2.2實(shí)型

實(shí)數(shù)是最常用的數(shù)據(jù)類型。在ObjectPascal中實(shí)數(shù)有兩種表示方法:小數(shù)表示法和科學(xué)計(jì)數(shù)法。例如:-3.6,2.4e0,–1.2e-5,3E7

小數(shù)表示法與日常數(shù)學(xué)中所用表示方法相同。科學(xué)計(jì)數(shù)法中,e之前表示有效數(shù)字,e之后數(shù)字表示10的冪。即–1.2e-5=(-1.2)×10-5=-0.000012

需要注意的是小數(shù)表示法中小數(shù)點(diǎn)前后都必須有數(shù)字,科學(xué)計(jì)數(shù)法中e前后都必須有數(shù)字,e可以大寫(xiě)成E。實(shí)型是存儲(chǔ)實(shí)數(shù)數(shù)據(jù)的類型。ObjectPascal包括5種形式的實(shí)型數(shù)據(jù),詳見(jiàn)本教程P26表2-4。

(圖1-2)

前六種為基本數(shù)據(jù)類型,Real為一般實(shí)型。最常用的實(shí)型是Real類型,它與Double等價(jià)。Currency是專為處理貨幣而設(shè)計(jì)的,該類型與其他實(shí)型進(jìn)行運(yùn)算時(shí),Delphi自動(dòng)將結(jié)果轉(zhuǎn)化為Currency類型。2.2.3字符型

字符型是存儲(chǔ)單個(gè)字符的類型。ObjectPascal包括3種形式的字符型數(shù)據(jù),詳見(jiàn)表2-5?;咀址愋褪茿nsiChar和WideChar。AnsiChar的尺寸是一個(gè)字節(jié)(8位),其值參照本地字符集。AnsiChar最初模仿ANSI字符集,但現(xiàn)在用于擴(kuò)大到當(dāng)前的本地字符集。WideChar字符用多于一個(gè)字節(jié)來(lái)表示每個(gè)字符。WideChar的尺寸是一個(gè)字(16位),其字符順序參照Unicode字符集,Unicode字符集中的前256個(gè)字符對(duì)應(yīng)ANSI字符。一般字符類型是Char,等價(jià)于AnsiChar。字符類型數(shù)據(jù)的表示方法是用兩個(gè)單引號(hào)括起單個(gè)字符如:'A'、'6'、'.'。

''表示空格符。表2-5ObjectPascal語(yǔ)言的字符型類型名稱字節(jié)數(shù)取值范圍Ansi字符型AnsiChar1擴(kuò)展ANSI字符集寬字符型WideChar2UniCode字符集字符型Char1(2)擴(kuò)展ANSI字符集2.2.4字符串型

字符串型是存儲(chǔ)字符串?dāng)?shù)據(jù)的類型。ObjectPascal包括4種形式的字符串型數(shù)據(jù),詳見(jiàn)本教程P27頁(yè)表2-6。

保留字string的作用如一般類型的標(biāo)識(shí)符。例如: varS:string;

創(chuàng)建了變量S,用于保存串。在默認(rèn)的編譯指示{$H+}狀態(tài)下,編譯器將string(后面沒(méi)有跟隨方括號(hào)和數(shù)字)解釋為AnsiString;使用編譯指示{$H-}時(shí),解釋為ShortString。

ShortString類型串的長(zhǎng)度在0到255之間。ShortString串的長(zhǎng)度可以動(dòng)態(tài)改變,其占用的內(nèi)存是靜態(tài)的,總是256字節(jié);第一個(gè)字節(jié)存儲(chǔ)串的長(zhǎng)度,其余255個(gè)字節(jié)存儲(chǔ)串中的字符。

AnsiString也叫做長(zhǎng)串(longstring),用來(lái)表示動(dòng)態(tài)分配的串。

WideString類型表示16位Unicode字符的動(dòng)態(tài)分配的串。WideString類型大部分的特性與AnsiString類型相似。

ObjectPascal還支持其他最大長(zhǎng)度在0到255之間的短串??梢酝ㄟ^(guò)在保留字string后邊附加方括號(hào)括起來(lái)的數(shù)字來(lái)表示。例如: varMyString:string[100];

創(chuàng)建了一個(gè)叫做MyString的變量,其最大長(zhǎng)度為100個(gè)字符。2.2.5布爾型

布爾型數(shù)據(jù)用于進(jìn)行邏輯運(yùn)算,布爾型數(shù)據(jù)的值只有兩個(gè):True(真)和False(假)。ObjectPascal包括4種形式的布爾型數(shù)據(jù),詳見(jiàn)表2-7。Boolean類型是編程時(shí)常用的布爾類型,其他三種類型是為了兼容其他語(yǔ)言而設(shè)置的。Boolean類型的取值為False和True兩個(gè)符號(hào)常量。在ObjectPascal中,布爾表達(dá)式不能被等同為整數(shù)或?qū)崝?shù)。因此,如果x是一個(gè)整數(shù)類型的變量,那么語(yǔ)句 ifxthen...;將產(chǎn)生一個(gè)編譯錯(cuò)誤??梢詫⑸蟼€(gè)語(yǔ)句改為: ifx=1then...;

表2-7ObjectPascal語(yǔ)言的布爾型類型名稱字節(jié)數(shù)取值布爾型Boolean1只能為False(0)或True(1)字節(jié)布爾型ByteBool1False或True(非False)寬布爾型WordBool2False或True(非False)長(zhǎng)布爾型LongBool4False或True(非False)2.2.6序數(shù)類型1.序數(shù)類型

序數(shù)類型包括整數(shù)、字符、布爾、枚舉、子界等類型。序數(shù)類型定義了一個(gè)有序的值的集合。集合中的每個(gè)值(除第一個(gè))都有一個(gè)唯一的前驅(qū)值,每個(gè)值(除最后一個(gè))都有一個(gè)唯一的后繼值。對(duì)于第一個(gè)序數(shù)的前趨和最后一個(gè)序數(shù)的后繼在此不做討論。此外,每個(gè)值都有一個(gè)序號(hào),類型中的序號(hào)決定值在類型中的順序。大多數(shù)情況下,如果一個(gè)值的序號(hào)為n,那么它的前驅(qū)值的序號(hào)為n–1,后繼值的序號(hào)為n+1。

2.序數(shù)函數(shù)(1)序數(shù)函數(shù)Ord()返回?cái)?shù)據(jù)的序數(shù)。例如:Ord(6)的返回值為6,表示整數(shù)6的序數(shù)是其本身。(2)前趨函數(shù)Pred()返回?cái)?shù)據(jù)的前趨值。例如:Pred('e')的返回值為'd',表示字符e的前趨是字符d。(3)后繼函數(shù)Succ()返回?cái)?shù)據(jù)的后繼值。例如:Succ(False)的返回值為T(mén)rue,表示布爾型數(shù)據(jù)True是False的后繼。(4)首序數(shù)函數(shù)Low()返回序數(shù)類型的數(shù)據(jù)中序數(shù)最小的一個(gè)數(shù)據(jù)。(5)末序數(shù)函數(shù)High()返回序數(shù)類型的數(shù)據(jù)中序數(shù)最大的一個(gè)數(shù)據(jù)。2.3常量與變量

在程序設(shè)計(jì)中常用到兩種形式的數(shù)據(jù),一種是在程序執(zhí)行過(guò)程中其值保持不變的數(shù)據(jù),稱為常量;另一種是在程序執(zhí)行過(guò)程中其值可以改變的數(shù)據(jù),稱為變量。

常量是一種在程序執(zhí)行進(jìn)程中其值保持不變的數(shù)據(jù)。根據(jù)使用的方式不同,程序中的常量分為直接常量、真實(shí)常量與類型常量。2.3.1常量1.直接常量直接常量是指在程序中直接引用的整數(shù)、實(shí)數(shù)、字符、字符串或其他不同類型的常數(shù)。下列常數(shù)均屬于直接常量。(1)帶有正負(fù)號(hào)的整數(shù)或無(wú)符號(hào)的整數(shù),如:-1,+2,2003,0。(2)實(shí)數(shù),包括定點(diǎn)實(shí)數(shù)與浮點(diǎn)實(shí)數(shù)兩種表示形式。定點(diǎn)實(shí)數(shù)即小數(shù)形式,如:0.03,-32.48,+102.9,0.0。浮點(diǎn)實(shí)數(shù)即指數(shù)形式,如:+2.56E-5,-1.2E+8,3.2E12。2.3.1常量(2)2.真實(shí)常量真實(shí)常量是指一個(gè)被聲明的標(biāo)識(shí)符,它的值不能改變。如果在一個(gè)程序中,某一個(gè)常數(shù)反復(fù)多次出現(xiàn)可以定義一個(gè)標(biāo)識(shí)符來(lái)代表該常數(shù)。定義常量時(shí)使用常量說(shuō)明語(yǔ)句,語(yǔ)法格式為:const<常量名1>=<常量值1>…<常量名n>=<常量值n>

其中const是ObjectPascal的保留字,表示常量定義的開(kāi)始。<常量名>即常量的標(biāo)識(shí)符,<常量值>是直接常量或常量組成的表達(dá)式。例如:constPI=3.1415926;K=PI/180;

不能在程序中給常量另行賦值,否則會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。(3)字符,由單撇號(hào)括起來(lái)的單個(gè)字符,如:'a','C','6','+'。(4)字符串,由雙撇號(hào)括起來(lái)的字符串,如:"hello","abc123","3.234"。(5)布爾型常數(shù),只有兩個(gè)值True和False。2.3.1常量(3)3.類型常量類型常量不同于真實(shí)常量,它能保存數(shù)組、記錄等高級(jí)數(shù)據(jù)類型的值。定義類型常量的語(yǔ)法格式如下:

const <常量名>:<類型名>=<常量值>;例如:constHello:string='Hello';Max:Integer=100;Digits:array[0..9]ofChar=('0','1','2','3','4','5','6','7',‘8’,‘9’);//定義了一個(gè)常量用于保存數(shù)組在缺省的編譯狀態(tài){$J-}中,類型常量不能被賦予新的值,這時(shí)的類型常量相當(dāng)于只讀變量。然而,如果編譯指示{$J+}有效,那么類型常量可以被賦予新的值,這時(shí)的類型常量相當(dāng)于被初始化過(guò)的變量。

變量是程序代碼中代表一個(gè)內(nèi)存地址的標(biāo)識(shí)符,而此地址的內(nèi)存內(nèi)容在程序代碼執(zhí)行時(shí)可以被改變。在使用變量前必須對(duì)它進(jìn)行說(shuō)明,即對(duì)它進(jìn)行命名,并說(shuō)明它的類型。變量就像數(shù)據(jù)容器,而且由于變量被定義了類型,只能用于儲(chǔ)存與其定義類型相兼容的數(shù)據(jù)。2.3.2變量(1)變量有如下三個(gè)主要特征。(1)變量名:即變量的標(biāo)識(shí)符,用于對(duì)所代表的內(nèi)存單元的引用。(2)類型:變量的類型決定了變量中所存放數(shù)據(jù)的范圍、有效的操作、存儲(chǔ)空間的大小和格式。(3)變量值:變量所代表的內(nèi)存單元中的數(shù)據(jù)值。程序中的變量必須先聲明才能使用。1.變量的聲明變量在單元、函數(shù)或過(guò)程的聲明部分進(jìn)行聲明,聲明位置決定了變量的作用范圍。變量聲明的格式為:2.3.2變量(2)

聲明多個(gè)同類型的變量時(shí)可采用如下格式:

var<變量名1>…<變量名n>:<類型名>

其中var是ObjectPascal的保留字,表示變量定義的開(kāi)始,<變量名>可以是任意合法的標(biāo)識(shí)符,<類型名>可以是ObjectPascal的基本數(shù)據(jù)類型也可以是由用戶定義的高級(jí)數(shù)據(jù)類型。聲明在過(guò)程或函數(shù)內(nèi)部的變量有時(shí)叫做局部變量,而在應(yīng)用程序開(kāi)始聲明的變量叫做全局變量。全局變量可以在聲明時(shí)對(duì)它進(jìn)行初始化,格式為:

var<變量名>:<類型名>=<常量表達(dá)式>

其中常量表達(dá)式的值必須與變量定義的類型相兼容。var<變量名1>:<類型名1>…<變量名n>:<類型名n>2.變量使用

變量經(jīng)過(guò)聲明之后,就可以在程序中使用了,通??梢酝ㄟ^(guò)賦值語(yǔ)句給變量賦值。如果沒(méi)有明確初始化全局變量,那么編譯器將對(duì)其初始化為0。不同的是,局部變量不能在其聲明中被初始化并且在其被賦值之前包含的是隨機(jī)數(shù)據(jù)。一旦聲明了一個(gè)變量,應(yīng)及時(shí)對(duì)它賦值進(jìn)行初始化,未經(jīng)初始化的變量的值是一個(gè)不確定的隨機(jī)數(shù),如果該變量參與運(yùn)算或是出現(xiàn)程序流程中將會(huì)產(chǎn)生意想不到的后果。初始化變量的最簡(jiǎn)單方法就是給變量賦值。2.3.2變量(3)2.4運(yùn)算符與表達(dá)式

運(yùn)算是對(duì)數(shù)據(jù)進(jìn)行加工處理的過(guò)程,描述各種不同運(yùn)算的符號(hào)稱為運(yùn)算符,而參與運(yùn)算的數(shù)據(jù)稱為操作數(shù)。表達(dá)式是表示某個(gè)求值規(guī)則的運(yùn)算公式,它由運(yùn)算符和圓括號(hào)將常量、變量等操作數(shù)以合理的形式組合而成。表達(dá)式可以用來(lái)執(zhí)行運(yùn)算、操作或測(cè)試數(shù)據(jù),每個(gè)表達(dá)式都會(huì)產(chǎn)生惟一的值。表達(dá)式的類型由運(yùn)算符的類型決定。在ObjectPascal中有以下幾種運(yùn)算符:算術(shù)運(yùn)算符、位運(yùn)算符、字符串運(yùn)算符、關(guān)系運(yùn)算符、布爾運(yùn)算符、集合運(yùn)算符、指針運(yùn)算符、類運(yùn)算符和@運(yùn)算符。本章中先介紹幾種常用的運(yùn)算符。1.算術(shù)運(yùn)算符

ObjectPascal有8?jìng)€(gè)算術(shù)運(yùn)算符,在這8?jìng)€(gè)算術(shù)運(yùn)算符中,除取正“+”、取負(fù)“-”是單目運(yùn)算符外,其他均為雙目運(yùn)算符,詳見(jiàn)本教程P31頁(yè)表2-8。其中+、-、*運(yùn)算的含義與數(shù)學(xué)中的相同,參加運(yùn)算的數(shù)可以是整型也可以是實(shí)型,結(jié)果由Delphi7.0自動(dòng)向精度高的數(shù)據(jù)類型轉(zhuǎn)化。參加除法運(yùn)算“/”的數(shù)無(wú)論是整型或是實(shí)型,結(jié)果都是實(shí)型。參加整數(shù)除法“div”和求余運(yùn)算“mod”的數(shù)必須是

2.4.1算術(shù)運(yùn)算符2.4.1算術(shù)運(yùn)算符

2.算術(shù)表達(dá)式算術(shù)表達(dá)式是由算術(shù)運(yùn)算符、數(shù)值型常量、變量、圓括號(hào)組成,其運(yùn)算結(jié)果為一數(shù)值。 例如:3*4+(90-5)/4*2的值為54.5。在書(shū)寫(xiě)算術(shù)表達(dá)式時(shí)應(yīng)當(dāng)注意以下兩點(diǎn):(1)在數(shù)學(xué)中可以省略乘號(hào),但在算術(shù)表達(dá)式書(shū)寫(xiě)中不可以省略,如在數(shù)學(xué)中相乘可以寫(xiě)成2x,但在編程中必須寫(xiě)成2*x;(2)所有括號(hào)都用小括號(hào)(),括號(hào)必須配對(duì),例如數(shù)學(xué)式3[x+(y-z)]在編程中必須寫(xiě)成3*(x+(y-z))。整型,結(jié)果也是整型,分別是除法的商和余數(shù)。在表達(dá)式a/b、adivb、amodb中,如果b的值為0將會(huì)觸發(fā)一個(gè)錯(cuò)誤。 例如:10mod3的值為1,10div3的值為3。2.4.2位運(yùn)算符

位運(yùn)算符是指對(duì)操作數(shù)進(jìn)行的按位邏輯運(yùn)算。其運(yùn)算對(duì)象是整數(shù),運(yùn)算結(jié)果也是整數(shù),ObjectPascal有6個(gè)邏輯運(yùn)算符,詳見(jiàn)表2-9。and、or、not和xor運(yùn)算符當(dāng)運(yùn)算符兩側(cè)為數(shù)值數(shù)據(jù),則將數(shù)值數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制數(shù)(補(bǔ)碼形式)進(jìn)行按位運(yùn)算。設(shè)x值為3,y值為5,在內(nèi)存中按二進(jìn)制保存,即x,y值分別為00000011,00000101。按位計(jì)算結(jié)果如下:notx的值為 11111100(十進(jìn)制數(shù)–4)xandy的值為 00000001(十進(jìn)制數(shù)1)xory的值為 00000111(十進(jìn)制數(shù)7)xxory的值為 00000110(十進(jìn)制數(shù)6)xshl2的值為 00001100(十進(jìn)制數(shù)12)xshr1的值為 00000010(十進(jìn)制數(shù)2)運(yùn)算符名稱舉例運(yùn)算符取值名稱舉例not按位取反notxxor按位異或xxoryand按位與xandyshl左移位xshl2or按位或xoryshr右移位yshr1表2-9ObjectPascal語(yǔ)言的位運(yùn)算符2.4.3字符串運(yùn)算符ObjectPascal只有一種字符串運(yùn)算符,即連接運(yùn)算符“+”。該運(yùn)算符用于連接兩個(gè)或更多的字符串。當(dāng)兩個(gè)字符串用連接運(yùn)算符連接起來(lái)后,第二個(gè)字符串直接添加到第一個(gè)字符串的尾部,結(jié)果是一個(gè)更長(zhǎng)的包含兩個(gè)字符串的全部?jī)?nèi)容的字符串,也可以把多個(gè)字符串連接起來(lái),每?jī)蓚€(gè)字符串之間都要用“+”號(hào)分隔。例如:'abcdef'+'123'連接后結(jié)果為:'abcdef123''abc'+'123'+'xyz'連接后結(jié)果為:'abc123xyz‘

加號(hào)(+)運(yùn)算符對(duì)串的操作與其對(duì)數(shù)字的操作有很大差異。對(duì)于數(shù)字a、b,表達(dá)式a+b與b+a是等價(jià)的,對(duì)于字符串s1、s2表達(dá)式s1+s2與s2+s1不是等價(jià)的。例如,當(dāng)s1為'hello'、s2為'world'時(shí),s1+s2返回的值是'helloworld',而s2+s1返回的值是'worldhello'。也就是說(shuō),當(dāng)加號(hào)(+)作為字符串運(yùn)算符時(shí),操作數(shù)的位置順序直接影響運(yùn)算結(jié)果。2.4.4關(guān)系運(yùn)算符

關(guān)系運(yùn)算符又稱為比較運(yùn)算符,用來(lái)對(duì)兩個(gè)表達(dá)式的值進(jìn)行比較,比較的結(jié)果是一個(gè)布爾值(True或False)。關(guān)系表達(dá)式是指用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子。ObjectPascal提供的關(guān)系運(yùn)算符有9種,詳見(jiàn)表2-10。表2-10ObjectPascal語(yǔ)言的關(guān)系運(yùn)算符運(yùn)算符名稱舉例運(yùn)算符取值名稱舉例=等于4=5值為False>大于4>5值為False<>不等于4<>5值為T(mén)rue<=小于或等于4<=5值為T(mén)rue<小于4<5值為T(mén)rue>=大于或等于4>=5值為False

關(guān)系運(yùn)算符兩側(cè)可以是數(shù)值表達(dá)式、字符型表達(dá)式或其他表達(dá)式,也可以是常量、變量或函數(shù),但其兩側(cè)的數(shù)據(jù)類型必須是相容的標(biāo)準(zhǔn)數(shù)據(jù)類型或順序類型。各關(guān)系運(yùn)算符的運(yùn)算級(jí)別相同。運(yùn)算次序?yàn)椋合确謩e求出關(guān)系運(yùn)算符兩側(cè)表達(dá)式的值,然后再把兩者的值進(jìn)行比較,兩者的關(guān)系若與關(guān)系運(yùn)算符指示的一樣,則關(guān)系運(yùn)算的結(jié)果為真(True),否則結(jié)果為假(False)。數(shù)值型數(shù)據(jù)按其數(shù)值大小進(jìn)行比較;字符型數(shù)據(jù)按其ASCII碼值進(jìn)行比較,比較字符串時(shí)先比較第一個(gè)字符,其中ASCII碼值較大的字符所在的字符串大。若第一個(gè)字符相同時(shí)比較第二個(gè)字符,…以此類推。順序類型數(shù)據(jù)的比較按照其序數(shù)進(jìn)行比較。2.4.5布爾運(yùn)算符

在表示較為復(fù)雜的條件判斷時(shí),必須使用布爾表示式。布爾表達(dá)式是指用布爾運(yùn)算符連接若干關(guān)系表達(dá)式或布爾值組成的式子,如a≤x≤b可以表示為:a<=xAndx<=b,布爾表達(dá)式的值也是一個(gè)布爾值。ObjectPascal提供4種布爾運(yùn)算符,詳見(jiàn)表2-11。表2-11ObjectPascal語(yǔ)言的布爾運(yùn)算符運(yùn)算符名稱舉例說(shuō)明and與(4>5)and(3<4)該表達(dá)式值為False。當(dāng)兩個(gè)表達(dá)式的值均為真,結(jié)果才為真,否則結(jié)果為假。or或(4>5)or(3<4)該表達(dá)式值為T(mén)rue。兩個(gè)表達(dá)式中只要有一個(gè)表達(dá)式的值為真,結(jié)果就為真,兩個(gè)表達(dá)式的值均為假時(shí)結(jié)果為假。not非not(4>5)該表達(dá)式值為T(mén)rue。進(jìn)行取“反”操作,由真變成假或由假變成真。xor異或(4>5)xor(3<4)該表達(dá)式值為T(mén)rue。當(dāng)兩個(gè)布爾表達(dá)式值不同時(shí)結(jié)果為T(mén)rue。2.4.6運(yùn)算符的優(yōu)先級(jí)

在一個(gè)表達(dá)式中進(jìn)行多種操作時(shí),ObjectPascal會(huì)按一定的順序進(jìn)行求值,這個(gè)順序稱為運(yùn)算符的優(yōu)先順序。在表達(dá)式中運(yùn)算符的優(yōu)先級(jí)決定了運(yùn)算被執(zhí)行的順序。常用運(yùn)算符的優(yōu)先順序如本教程P34頁(yè)表2-12所示。

當(dāng)一個(gè)表達(dá)式中含有多個(gè)算術(shù)運(yùn)算符時(shí),將按優(yōu)先級(jí)由高到低的順序求值。優(yōu)先級(jí)高的運(yùn)算符在優(yōu)先級(jí)低的運(yùn)算符之前求值,優(yōu)先級(jí)相同時(shí)自左向右求值,如果表達(dá)式中含有括號(hào),則先計(jì)算括號(hào)內(nèi)表達(dá)式的值,如果有多層,先計(jì)算最內(nèi)層括號(hào)中的表達(dá)式。例 如表達(dá)式:

x+y*z

先運(yùn)算y乘以z,然后將乘積(運(yùn)算結(jié)果)與x相加;運(yùn)算符*先被執(zhí)行,因?yàn)樗冗\(yùn)算符+優(yōu)先??梢允褂脠A括號(hào)超越所有的優(yōu)先級(jí)規(guī)則。圓括號(hào)中的表達(dá)式最先被求值,因此可以被視為一個(gè)單獨(dú)的操作數(shù)。例如表達(dá)式:

(x>y)and(x>z)

首先判斷x是否大于y,然后判斷x是否大于z,最后將兩次判斷的結(jié)果相與,只有當(dāng)x的值比y、z的值都大時(shí)此表達(dá)式的值才為true。該表達(dá)式不能書(shū)寫(xiě)為:

x>yandx>z

根據(jù)運(yùn)算符的優(yōu)先級(jí),該表達(dá)式將解釋為:

(x>(yandx))>z

若x,y,z均為實(shí)型或整型數(shù)據(jù)時(shí)將產(chǎn)生編譯錯(cuò)誤。圓括號(hào)通常使代碼更容易讀寫(xiě),在編程過(guò)程中應(yīng)當(dāng)合理使用圓括號(hào)。2.5語(yǔ)句

語(yǔ)句是執(zhí)行具體操作的指令,是由ObjectPascal的保留字、變量名、函數(shù)名及Delphi7.0編輯器可以識(shí)別的指令符號(hào)組成,建立正確的語(yǔ)句必須遵從ObjectPascal的語(yǔ)法規(guī)則。ObjectPascal程序語(yǔ)句書(shū)寫(xiě)比較自由,可以把多個(gè)語(yǔ)句放在一個(gè)程序行中,也可把一個(gè)語(yǔ)句分多行書(shū)寫(xiě),但需要記住ObjectPascal的每個(gè)語(yǔ)句都必須以分號(hào)“;”結(jié)束。在編寫(xiě)自己的ObjectPascal程序時(shí),要注意程序的可讀性。Pascal語(yǔ)言是英式結(jié)構(gòu)語(yǔ)言,在程序中選擇合適的縮排、大小寫(xiě)風(fēng)格,并在需要時(shí)將程序代碼分行,會(huì)使得程序代碼能夠很容易地被自己和他人讀懂。對(duì)于較為復(fù)雜的程序常用到復(fù)合語(yǔ)句,復(fù)合語(yǔ)句是指將多個(gè)語(yǔ)句用

溫馨提示

  • 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)論