版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
KZS、,
第2章"Delphi的編程語言
2.1保留字和標識符
2.2ObjectPascal的數(shù)據(jù)類型
2.3常量和變量的定義
2.4運算符和表達式
2.5語句
2.6過程與函數(shù)
2.7實驗4
第2章Delphi的偏程語多?一
2.1保留字和標識符
2.1.1保留字和標準指令符
保留字(ReservedWords)是由系統(tǒng)規(guī)定的具有特定意義
和特定用途的單詞。這些單詞在編程中不能被重新定義或作
為其他用途。ObjectPascal中的保留字有65個,表2-1列出
了Delphi中的保留字。
指令符((Directives)也是由系統(tǒng)規(guī)定的具有特定意義的單
詞。但是它們可以被重新定義,重新定義后,在該定義的作
用域之內(nèi),它們就失去了原來的意義,而采用了新的含義限
ObjectPascal中的指令符有39個,具體見相關(guān)工具書。
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
表2-1ObjectPascal中的保留字
andarrayasasmbegin
caseclassconstconstructordestructor
dispinterfacedivdodowntoelse
endexceptexportsfilefinalization
finallyforfunctiongotoif
implementationininheritedinitializationinline
interfaceislabellibrarymod
nilnotobjectofor
outpackedprocedureprogramprqperty
raiserecordrepeatresourcestringset
shlshrstringthenthreadvar
tottytypeunituntil
usesvarwhilewithxor
delphi程序設(shè)計基礎(chǔ)教程
第2多Delphi的偏程語含
2.1.2標識符
標識符(Identifiers)是用來表示常量、變量、屬性、對象、
類型、過程、函數(shù)、單元、對象等語法實體的名稱的符號。
ObjectPascal中的標識符的命名規(guī)則如下。
標識符可以由字母(A?Z、a?z)、數(shù)字(0?9)和下劃線
組成。
標識符必須由字母或下劃線開頭。
標識符的長度不應(yīng)該超過255個字符,如果超過,則只
有前255個字符有效。
不能使用保留字作為自定義標識符,盡量不要使用指令
字作為自定義標識符。
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
需要注意的是:在ObjectPascal中,標識符不區(qū)分大、
小寫,例如,標識符Abe和標識符abc被認為是同一個標識
符。
另外,在Delphi庫文件中還預(yù)先定義了一些標識符,如
標準數(shù)學(xué)函數(shù)Sqrt與Sin,標準數(shù)據(jù)類型Boolean和Char等,
在編程時,應(yīng)該盡量避免使用這些標識符作為自定義的標識
符,以免引起混淆。
在使用標識符的時候,必須首先聲明,否則在編譯時,
系統(tǒng)會顯示錯誤信息,提示該標識符沒有定義。
delphi程序設(shè)計基礎(chǔ)教程
第章的偏程語音
1i2Delphi、
2.1.3注釋
注釋是關(guān)于程序或程序段的含義或功能的文字說明。它
在程序中不會被執(zhí)行,僅作說明用。好的編程風(fēng)格是在程序
的相應(yīng)位置加上適當(dāng)?shù)淖⑨?,以增加程序的可讀性。
ObjectPascal支持以下3種類型的注釋。
⑴大括號:“{”和
(2)小括號和星號的組合:“(*”和“*),
(3)雙斜線:
其中,前兩種注釋方法必須成對使用,可用于多行注釋,
即注釋符號開頭到注釋符號結(jié)尾之間的內(nèi)容都是注釋。雙斜
線風(fēng)格的注釋只能用于單行,即雙斜線后到該行結(jié)尾的內(nèi)容
為注釋。
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏移語音、
【例2.1】3種注釋的用法。
ProgramPhello;
{本程序用于說明注釋的用法}
Uses
Forms,
Umainin'Umain.pas'{frmHello};〃單元模塊說明
{$R*.res}
Begin
Application.Initialize;〃主程序開始
Application.CreateForm(TfrmHello,fnnHello);//創(chuàng)建主窗體
Application.Run;(*啟動主程序,將控制權(quán)交給主窗體*)
End.//主程序結(jié)束
delphi程序設(shè)計基礎(chǔ)教程
第章的偏程語音
1i2Delphi、
2.1.4控制臺程序中的屏幕輸入和輸出
【例2.2】控制臺HelloWorld程序。
(1)生成控制臺程序工程。在主菜單上選擇【File]->
[New]->[Other],彈出[NewItems]對話框,選擇
[ConsoleApplication]類型。系統(tǒng)將自動生成工程文件(在
控制臺程序中工程文件也就是主程序文件)的框架代碼。
(2)在代碼編輯器中begin和end之間輸入如下代碼:
Writeln('Hello,Delphiworld!!);
Readln;
第一行是將字符串輸出到標準輸出設(shè)備,第二行是等待
鍵盤輸入,此處的作用是讓程序暫停運行,以便觀察效果。
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏程箱音、
(3)選擇菜單[File]->[SaveAll],或者在工具欄上
單擊日按鈕,彈出【保存工程】對話框,選擇保存的路徑,
再輸入工程文件名PhelloConsole.dpr,單擊【保存】按鈕即
可。
(4)選擇菜單【Run]->[Run]或單擊工具欄上的》
按鈕,運行程序,運行結(jié)果如圖2.1所示。
圖2.1控制臺應(yīng)用程序運行結(jié)果
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
2.2ObjectPascal的數(shù)據(jù)類型
ObjectPasca皮持豐富的數(shù)據(jù)類型,大致可分為6大類。
(1)簡單類型:包括有序類型和實數(shù)型。其中有序類型
是指整數(shù)類型、字符類型、布爾類型、枚舉類型以及子界類
型。
(2)字符串類型。
(3)結(jié)構(gòu)類型:包括集合類型、數(shù)組類型、記錄類型、
文件類型、類類型、類引用類型、接口類型等。
(4)指針類型。
(5)過程類型。
(6)可變類型。
delphi程序設(shè)計基礎(chǔ)教程
第2多Delphi的偏程語含
2.2.1簡單數(shù)據(jù)類型
簡單數(shù)據(jù)類型包括整型、字符型、布爾型、枚舉型、子
界型和實型。其中,整型、字符型、布爾型、枚舉型和子界
型這5種被稱為有序數(shù)據(jù)類型(Ordinal)。有序數(shù)據(jù)類型定義
了一個有序的值的集合,其中的每一個值,除了第一個之外,
都有一個唯一的直接前驅(qū);每一個值,除了最后一個之外,
都有一個唯一的直接后繼。也就是說,每個值都有一個序號,
可以比較兩個有序數(shù)據(jù)類型的大小,而且可以求出給定有序
值的前驅(qū)和后繼,或者計算它們的最大值和最小值。
對于有序數(shù)據(jù)類型,常用的操作函數(shù)見表2-2。
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
表2-2有序數(shù)據(jù)類型的常用操作函數(shù)
函數(shù)參數(shù)返回值
Dec有序數(shù)據(jù)類型變量變量減1后的值
Inc有序數(shù)據(jù)類型變量變量加1后的值
Pred有序表達式表達式前驅(qū)的值
Suce有序表達式表達式后繼的值
Ord有序表達式有序表達式的值
Low有序類型標識符或有序類型變量該類型的最小值
High有序類型標識符或有序類型變量該類型的最大值
Odd有序表達式判斷是否為奇數(shù)
delphi程序設(shè)計基礎(chǔ)教程
j(第2章Delphi的偏移語含、
【例2.3】有序類型函數(shù)的用法。
var
MyTest:Byte;〃定義一個Byte類型的變量MyTest
begin
MyTest:=6;
Writeln。變量的上限是:[High(Byte));〃顯示Byte類型的上限是255
WritelnC變量的上限是:*,Low(Byte));〃顯示Byte類型的下限是0
WHtelnCMyTest的序號是:[Ord(MyTest));//顯示變量MyTest的序號是6
Wi1teln('MyTest的前驅(qū)是:",Pred(MyTest));〃顯示變量MyTest的
前驅(qū)是5
Writeln((MyTest的后繼是:',Succ(MyTest));〃顯示變量MyTest的
后繼是7
WHteln('MyTest是奇數(shù):'Qdd(MyTest));〃顯示變量MyTest不
是奇數(shù)
Readln;
end.
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
1.整型(Integer)
整型數(shù)據(jù)類型描述了整個數(shù)字集合的一個子集。從跨平
臺方面而言,可以將整型分為通用整型和基本整型兩類?;?/p>
本類型(Fundamental)不管是什么操作系統(tǒng)和硬件,其格式
和取值范圍都一樣;而通用類型(Generic)的取值范圍和格式
會隨著操作系統(tǒng)和硬件等平臺的不同而改變,而且可能隨著
編譯器實現(xiàn)的不同而有所差異。雖然通用類型有可能會導(dǎo)致
兼容性的問題,但是它能夠提供優(yōu)化的性能,可以最好地發(fā)
揮CPU和操作系統(tǒng)的性能,因此建議盡量使用通用類型。
通用的整型是Integer,基本整型包括Shortint、Longint
和Int64,它們在所有ObjectPascal語言中都保持一致,而
不依賴于操作系統(tǒng)和硬件。一般情況下,通用整型已經(jīng)能夠
滿足大多數(shù)的應(yīng)用,只有在數(shù)據(jù)范圍超過了其取值范圍時才
使用其他的數(shù)據(jù)類型。
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
表2-3給出了32位的Delphi編譯器所支持的各種
整型的存儲格式和取值范圍。
表2-3整型的存儲格式和取值范圍
類型名稱字節(jié)數(shù)取值范圍
短整型Shortint8位符號數(shù)-128-127
長整型Longint32位符號數(shù)-2147483648~2147483647
64位整型Int6464位符號數(shù)一263?263T
整型Integer32位符號數(shù)-2147483648—2147483647
通常情況下,對整型數(shù)據(jù)所做的算術(shù)運算將返回
一個Integer類型,它等效于32位的Longint。只有當(dāng)操作數(shù)中
包含一個或多個Int64的數(shù)據(jù)時,才返回一個Int65類型的運算
結(jié)果。
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏程語含、
下面的例子說明了這種情況。
var
IJnteger;
J:lnt64;
■■■
l:=High(lnteger);//l=2147483647
J:=l+1;
運行結(jié)果是-2147483648,而不是2147483648。
由于I是Integer類型,因止匕1+1的運算結(jié)果仍然是Integer
類型,而該結(jié)果超過了Integer類型的取值范圍,所以無法得
到正確結(jié)果。要得到正確結(jié)果,應(yīng)該將整型變量I強制類型轉(zhuǎn)
換為Int64,即:
J:=lnt64(l)+1;
delphi程序設(shè)計基礎(chǔ)教程
第2章Delphi的偏程箱音、
另外需要注意的是,當(dāng)變量的值為該數(shù)據(jù)類型的最大值
時,如果增加其值,將會溢出,并返回到其取值范圍的最小
值;當(dāng)變量的值為該數(shù)據(jù)類型的最小值時,如果減少其值,
將返回到其取值范圍的最大值。下面的例子說明了這種情況。
VarkShortint;
l:=High(Shortint);
l:=l+1;
程序運行后I的值為一128。
但是,如果編譯器允許范圍檢查的話,這段程序?qū)a(chǎn)生
一個運行期的錯誤。要打開范圍檢查,可以單擊【Project】
菜單中的[Option]命令,在系統(tǒng)彈出彷[ProjectOption]
對話框的[Compiler)選項卡中選中[RangeChecking]
艮口可。
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏移語音、
2.字符型(Character)
字符型是存儲單個字符數(shù)據(jù)的類型。表2-4描述
TObjectPascal中支持的字符型數(shù)據(jù)。其中基本字符類型是
AnsiCharWideChar,通用字符類型是Char,相當(dāng)于基本字
符類型的AnsiChar。
表2-4字符型的存儲格式和取值范圍
類型名稱字節(jié)數(shù)取值范圍
Ansi字符
AnsiChar1擴展ANSI字符集
型
寬字符型WideChar2UniCode字符集
字符型Char1擴展ANSI字符集
delphi程序設(shè)計基礎(chǔ)教程
Y(第2多Delphi的偏彩語多f
UniCode字符集和擴展ANSI字符集所占用的字節(jié)數(shù)不同,
而UniCode字符集的前256個字符和ANSI字符集相同。因為
各種字符類型所需的字節(jié)數(shù)不盡相同,所以要獲得字符型變
量的大小時,最好采用SizeOf函數(shù)。
常量字符可用代表它們的符號表示,如也可以用
數(shù)字符號表示,如#78。后者還可以用Chr函數(shù)表示,Chr函
數(shù)返回數(shù)字對應(yīng)于AnsiChar或WideChar中的字符值,如
Chr(78)返回值為小寫字母k。函數(shù)Ord則可以做相反的轉(zhuǎn)換,
用于獲得字符在其字符集中的序號。
下面列出了一些常用的特殊字符。
#9:跳格(Tab鍵)。
#10:換行。
#13:回車(Enter鍵)。
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
類似于整型數(shù)據(jù),當(dāng)編譯器不進行范圍檢查時,字符型
的數(shù)據(jù)如果在其取值范圍的最小值時做減1的操作,將會溢
出,得到取值范圍的最大值;如果在月取值范圍的最大值時
做加1操柞,將首得到取值范圍的最不值。下面端例程弛
了這種情況。
varkinteger
Letter:char;
begin
Letter:二High(Letter);〃Lette「的值為取值范圍的最大值
Forl:=1to66do
Inc(Letter);//Letter的值從。依次增加到65
Writein(Letter);
Readln;
end;
最終Letter的值為A,它對應(yīng)于ASCAII碼的65。
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏程語音、
3.布爾型(Boolean)
布爾型數(shù)據(jù)用于邏輯運算,表示真或假的情況。
布爾型變量的值為系統(tǒng)預(yù)定義的常量True和False。見表2-5。
表2-5布爾型格式和取值范圍
類型名稱字節(jié)數(shù)取值
布爾型Boolean1True或False
布爾類型也屬于有序類型,當(dāng)其值為False時,
其序數(shù)為“0”,當(dāng)其值為True時,其序數(shù)為“1”。
需要注意的是,在Delphi中,布爾類型的表達式
不能換算為整型值,下面的例子說明了這個問題。
delphi程序設(shè)計基礎(chǔ)教程
i?第2章Delphi的偏程箱音、
varkinteger;
begin
|:=2-
ifIthen
Writeln(l);
Readln;
end;
在C語言中,這種寫法是可以的,表示當(dāng)I的值不為。時
則輸出I,但是在Delphi中,將產(chǎn)生一個編譯錯誤,系統(tǒng)會提
示此處必須要求一個布爾類型的表達式。可以將if語句修改
為
IfI<>0then...;
這里的1<>0是一個表達式,其值為布爾類型,同樣可以
實現(xiàn)原來的目的。
delphi程序設(shè)計基礎(chǔ)教程
第章的偏移語音
1j2Delphi、
4.枚舉型(Enumerated)
枚舉類型采用列舉出該類型所有可能取值的方式定義了
一個有序的值的集合。其定義的語法格式為
type
v類型名>=(值1,值2,…,值n);
其中,類型名和每個值都必須是合法的標識符。例如,
不能將數(shù)字1、2、3作為枚舉類型的值,因為合法的標識符
不能以數(shù)字開頭。
例如:
Type
Weekday=(Sunday,Monday,Tuesday,Wednesday,
Thursday,Friday,Saturday);
delphi程序設(shè)計基礎(chǔ)教程
j(第2章Delphi的偏程語畬、
這里定義了一個名為Weekday的枚舉型,其可能的值在
括號中,如Sunday、Monday、Tuesday等。
枚舉類型也是有序類型,因此,在定義中列出的每個值
都有其對應(yīng)的序數(shù),每個值的序數(shù)是由其被列出的順序決定
的,而與值本身的含義無關(guān),可以使用Ord函數(shù)得到。如
Ord(Sunday)將會得到0,Ord(Monday)將會得至U1,以此類
推,Ord(Saturday)的值為6。
注意:默認情況下,枚舉值是從0開始的有序整數(shù),但是可
以通過直接賦值的方式打破這種限制。例如:
typeMyColor=(red=2,yellow=3,green=6,white=7);
這時,Ord(red)的值為2,Ord(white)的值為7。
delphi程序設(shè)計基礎(chǔ)教程
丫『第2章Delphi的偏程語多]
除了采用前面介紹的方式定義枚舉類型的變量之外,還
可以將枚舉類型的定義和枚舉類型變量的聲明合并在一起,
例如:
var
l:(red=2,green=6,white=7,black=9);
但是用這種方法定義枚舉類型變量之后,就不能夠聲明
其他使用這些枚舉常量定義的相同范圍的枚舉型變量,例如:
varCoIori:(red=2,green=6,white=7,black=9);
varColor2:(red=2,green=6,white=7,black=9);
一這樣定義兩個枚舉型變量將產(chǎn)生一個編譯錯誤。系統(tǒng)會
提不類似于"Identifierredeclare于'recT這樣的錯誤。
也就是說,枚舉類型一旦聲明,此枚舉類型的任一元素
都不能再重復(fù)被聲明為其他枚舉類型的元素之一,這會導(dǎo)致
編譯錯誤。
delphi程序設(shè)計基礎(chǔ)教程
第2津Delphi的偏程語言.一]
5.子界型(Subrange)
子界類型定義了某種類型的取值范圍,是另一種有序類
型(稱為基類型)的子集。子界類型是以“低..高”的形式構(gòu)成
的,其中的“低”和“高”要求是基類型的常量表達式,并
且低值要小于高值。子界類型所有的取值都必須在最低值和
最高值之間。子界類型定義的語法格式為
Type
v類型名>=起始值..終止值;
例如:下面的聲明語句定義了1個枚舉類型day和2個子界類
型day1,number。
type
day=(Sun,Mon,Tue,Wed,Thu,Fri,Sat);
day=Sun..Wed;
dumber=O..1OO;
delphi程序設(shè)計基礎(chǔ)教程
*j第2章Delphi的偏彩語多?
使用子界類型,需注意以下幾點。
(1)子界類型的上界和下界必須是同一類型,并且是有
序類型,如整型、布爾型、字符型或枚舉類型等,不能是實
數(shù)類型或其他無序類型。
(2)子界類型的上界和下界不僅可以是常數(shù),也可以是
能夠計算出具體值的常數(shù)表達式。
(3)子界類型的下限的序數(shù)值不能超過其上限值。
6.實型(Real)
實數(shù)類型是帶有小數(shù)部分的數(shù)值,用于存儲實數(shù)。有6
種不同的實數(shù)類型,它們在范圍精確度、大小等方面都不相
同。實數(shù)類型包括Real48、Single、Double、Extended>
Comp和Currency。通常使用的Real與Double類型是等價的。
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
2.2.2字符串類型
字符串類型包括String、AnsiString和WideString
這3種類型,見表2-6。String類型中的每個元素都是AnsiChar
類型,不以NULL作為結(jié)束標記;AnsiString類型也是基于
AnsiChar類型,可被動態(tài)分配存儲空間,字符個數(shù)幾乎不受
限制,以NULL作為結(jié)束標記;WideString與AnsiString類似,
只是所包含的字符是WideChar類型字符。習(xí)慣上使用String的
默認為AnsiString類型。
表2-6字符串類型
類型最大長度所需內(nèi)存存儲的字符
String255個字符2?256BAnsiChar
AnsiString231個字符4B-2GBAnsiChar
WideString23。個字符4B?2GBWideChar
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏程箱音、
說明一個字符串變量時,應(yīng)指明該字符串的大小,例如:
typeString1:string[20];
varMyString:String1;
其中,變量MyString被說明成最多可以包含20個字符。
字符串的默認大小為255。給字符串賦值可以直接使用單引
號括起的字符串,例如:
MyString:二'tony';
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
2.2.3結(jié)構(gòu)類型
結(jié)構(gòu)類型在內(nèi)存中存儲一組相關(guān)的數(shù)據(jù)項,而不是像簡
單數(shù)據(jù)類型那樣單一的數(shù)值。ObjectPascal結(jié)構(gòu)類型包括集
合類型、數(shù)組類型、記錄類型、文件類型、類類型、類引用
類型、接口類型等。
這里,只介紹集合類型、數(shù)組類型、記錄類型和類類型。
1.集合類型
集合類型是指一群相同類型元素的集合,這些類型必須
是有限類型,元素的類型可以為Integer、Boolean>Char>
枚舉型或子界型等。當(dāng)要檢查一個值是否屬于一個特定集合
時,集合類型非常有用。
delphi程序設(shè)計基礎(chǔ)教程
1i第2章Delphi的偏移語音、
2.數(shù)組類型
數(shù)組是某種數(shù)據(jù)類型的有序組合,其中每一個元素的值由其相對位
置來指定,可以在數(shù)組的某個位置上放置數(shù)據(jù),并在需要時使用這些數(shù)
據(jù)。下面的類型說明了一個Real型的數(shù)組變量。
Var
titleStrl:Array[1..10]ofReal;
上例中,數(shù)組類型的標識符是TlleStrl,下標類型是整型,共有10
個元素,元素下標從1?10,每一個元素類型都是Real類型。我們也可
以把數(shù)組定義為類型。
type
TdoubleArray=Array[1..10]ofDouble;
則變量說明改為:"
Var
X:TdoubleArray;
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
3.記錄類型
記錄是一系列相關(guān)的變量,這些變量被稱為域,它們放
在::起,作為一個整體使用。它是用戶程序可以成組訪問的
一群數(shù)據(jù)的集合。
記錄中可以包含多個數(shù)據(jù)域,每一個域都有自己的數(shù)據(jù)
類型,我們既可以單獨訪問這些域,也可以把記錄作為一個
整體來使用,例如:
Type
Temployee=Record;
Name:String[20];
EmpNoJnteger;
Salary:Double;
End;
在上面例子中記錄Temployee類型就含有3個域。在定
義了記錄類型后,用戶就可以說明記錄行的變量。
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
4.類類型
在Delphi的編程中,類是非常重要的一種數(shù)據(jù)結(jié)構(gòu)類型。
它不僅包含數(shù)據(jù)的域(Field),也包含作為方法的過程和函數(shù)。
在Delphi中,當(dāng)用戶向窗體中加入一個控件,也就是向窗體
類中加入了一個域;每一個控件也是類,每當(dāng)用戶建立一個
事件句柄使得控件可以響應(yīng)一個事件時,系統(tǒng)會自動地在窗
體中加入一個方法。
delphi程序設(shè)計基礎(chǔ)教程
第2多Delphi的偏程語含
2.2.4指針類型
指針類型對程序員來說可能是最復(fù)雜和最靈活的數(shù)據(jù)類
型。
在Delphi中創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu)時,首先要分配內(nèi)存空間。
分配的內(nèi)存空間用于存儲數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)。而指針就是指
向分配空間的內(nèi)存地址。使用指針可以使程序不必每次需要
時都去分配,只要申請一次,其他過程或函數(shù)使用同一塊內(nèi)
存空間時,只需使用該內(nèi)存空間的地址即可。
在運算上,指針變量與一般變量無區(qū)別,如"p:=q;"。
當(dāng)要引用指針所指向的變量時,必須在指針后使用下
面是一個帶有指針類型聲明的例子。
delphi程序設(shè)計基礎(chǔ)教程
i?第2章Delphi的偏程箱音、
Type
WordPtr=AWord;
RealPtr=AReal;
PersonType=Record;
LastName:String;
FirstName:String;
AgeJnteger;
End;
PersonPointer=APersonType;
上例中,聲明了3個指針類型,一個是WordPtr指向
AWord,一個是RealPtr指向AReal,還有一個是
PersonPointer指向一個標識符,而該標識符標識一個記錄
類型。
delphi程序設(shè)計基礎(chǔ)教程
第章的偏移語音
1i2Delphi、
2.2.5過程與函數(shù)類型
過程類型變量相當(dāng)于指針的角色,它可以指向一個過程
或函數(shù),并且可以作為另一過程或函數(shù)的參數(shù)使用。其定義
的方式如下例:
Type
TProcedure=procedure;
TlntegerFunction=Function:Integer;
TStringProcedure=Procedure(constS:String);
Var
Proc:Tprocedure
IntF:TintegerFunction
StrP:TstringProcedure
delphi程序設(shè)計基礎(chǔ)教程
第2章Delphi的偏程箱音、
任何一個過程變量都可以取nil值,但試圖通過一個具有nil值的過程
變量來調(diào)用一個函數(shù)或過程是錯誤的,因為它不指向任何函數(shù)或過程。
所以可以先用Avssigned函數(shù)來對此過程變量進行測試,然后再使用過
程變量調(diào)用函數(shù)或過程。也就是說必須先把一個過程或函數(shù)通過賦值語
句賦給這個過程類型變量,舉例如下。
Var
F:Function(X,Y):Integer;
I:Integer
FunctionFunAdd(X,Y:Integer):Integer;
Begin
Result:=X+Y;
End;
ProcedureTform1.ButtonClick(Sender:Tobject);
Begin
F:=FunAdd;
IfAssigned(F)ThenI:=F(2,3);
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
過程類型也可作為參數(shù),例如:
Type
TlntegerFunction=Function:Integer;
ProcedureProc(F:TintegerFunction);
其中,Proc是一個過程,F(xiàn)是這個過程的參數(shù)。而參數(shù)F的類
型是一個過程類型,由過程類型的聲明而知,它是一個無參
數(shù)的函數(shù),并且返回一個整型數(shù)。實際上就是這個無參數(shù)的
函數(shù)返回的整數(shù)值作為Proc過程的參數(shù)。
事實上,程序員很少使用過程變量來調(diào)用過程或函數(shù),
因為更多的時候可直接使用要調(diào)用的過程名或函數(shù)名即可,
所以有關(guān)過程類型變量的使用更多的是在指向類對象的方法
上。
delphi程序設(shè)計基礎(chǔ)教程
第2多Delphi的偏程語含
2.2.6可變類型
有時要對一些數(shù)據(jù)類型變化的數(shù)據(jù)進行操作,并且在編
譯期間不能確定數(shù)據(jù)的類型,這時就可以使用可變類型的數(shù)
據(jù)。這些數(shù)據(jù)的數(shù)據(jù)類型可以在運行期間進行改變,但是它
們比固定類型的數(shù)據(jù)占用更多的空間和更多的操作時間。另
外,可變類型不能包含記錄型、集合類型、靜態(tài)數(shù)組、文件
類型、類、指針類型以及長整型等數(shù)據(jù)類型。
可變類型變量聲明的語法格式為:
var變量名表:Variant;
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語音一]
2.3常量和變量的定義
2.3.1常量
常量是在程序的運行過程中不發(fā)生變化的量。說明常量
時,不需要指定其數(shù)據(jù)類型,需給出具體的值。編譯器會根
據(jù)值確定正確的類型。常量分為兩種。
⑴一般常量。如123,-10,-19.56,“abc”,
TRUE等都是一般常量。
(2)符號常量。在實際編程時,有時會反復(fù)使用一些相
同的值。例如,在一個計算運費的程序中,單位價格標準
(假設(shè)為0.20元/kg.km)可能會使用多次,一旦標準調(diào)整,將
要在程序中對多處進行修改,這樣不僅工作量大、效率低,
而且容易漏掉。在應(yīng)用程序開發(fā)中,通常定義一個符號常量
來表示這些反復(fù)使用的相同量來解決上述問題。
delphi程序設(shè)計基礎(chǔ)教程
第2章Delphi的偏彩語音、
在ObjectPascal中,用const關(guān)鍵字來聲明常量。語法格式
如下:
const常量名二表達式;
例如:
const
pi=3.14;
m=20;
st='lamastudent.';
n=m+10;
說明:
(1)常量在說明時就被賦予了一個值,在程序執(zhí)行過程
中是不可改變的。
(2)等號的右邊只能出現(xiàn)一般常量、已聲明的常量或者
常量表達式。
delphi程序設(shè)計基礎(chǔ)教程
第2多Delphi的偏程語含
2.3.2變量
變量是程序代碼中代表一個內(nèi)存地址的標識符,而此地
址中的內(nèi)容在程序代碼執(zhí)行時可以被改變。在使用變量前必
須對它進行說明,即對它進行命名,并說明它的類型。系統(tǒng)
根據(jù)變量的數(shù)據(jù)類型為每一個變量分配一定的內(nèi)存空間。用
戶可以通過變量名對內(nèi)存單元進行讀或?qū)憽?/p>
在ObjectPascal中,用var關(guān)鍵字聲明變量。語法格式
如下:
var變量名表:類型名;
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
說明:
(1)類型名是ObjectPascal中任何有效的數(shù)據(jù)類型。
(2)變量名表中的變量與變量之間用逗號分隔開,變量與類
型名之間用冒號分隔,例如:
vari,j:Integer;//定義2個整型變量i和j
(3)當(dāng)有幾個連續(xù)的變量聲明語句時,可以不必在每個聲明
語句前都用保留字var,只需在最開始處使用var,例如:
var
x,y:real;〃定義2個實型變量x和y
k,j:integer://定義2個整型變量k和j
flag:boolean:〃定義1個邏輯型變量flag
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
2.4運算符和表達式
ObjectPascal中的運算符可以分為算術(shù)運算符、邏輯運
算符、關(guān)系運算符、位運算符、指針運算符和集合運算符等。
每種運算符結(jié)合其操作數(shù)的數(shù)據(jù)類型能夠?qū)崿F(xiàn)特定的功能。
而表達式是由常量、變量、數(shù)值、運算符和函數(shù)調(diào)用等
按照一定的語法規(guī)則組合起米的,可以用于確定賦給一個變
量的值、計算函數(shù)或過程的簍數(shù),或判斷一個條件結(jié)
寸O
ObjectPascal中的運算符按照優(yōu)先級的不同可以分為5級,
見表2-7。
需要注意的是,在ObjectPascal中,“and”和“or”運算
符的優(yōu)先級比關(guān)系運算符高,因此,對于表達式“avband
c<d\編譯器會首先編譯“and”運算符,由此導(dǎo)致編譯錯誤。
因此,應(yīng)該把該裝運式用小拈號括超萊,即:(avb)and(cvd,。
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
表2-7ObjectPascal中運算符的優(yōu)先級
級另1」運算符
第一級(最高級)A
第二級@not
第三級*/divmodandasshlshr
第四級+—orxor
第五級(最低級)=<><><=>=inis
另外,同一種運算符用于不同的操作數(shù)時,其作
用也可能不同,例如,“十”運算符可以用來計算兩個數(shù)字的和,
還可以用來連接兩個字符串,當(dāng)用在集合類型的運算中時,還
可以表示求兩個集合的并集,因此,必須要結(jié)合操作數(shù)來理解
運算符的作用。
按照操作數(shù)的個數(shù)不同,可以將運算符分為單目
運算符和雙目運算符兩類,其中,只有八、@、not是單目運算
符,其他都是雙目運算符。________________________________
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
2.4.1算術(shù)運算符
算術(shù)運算符(+、一、*、/、div、mocO都是雙目運算符,
其作用是對兩個操作數(shù)進行加、減、乘、除、整除和取模運
算。比較特殊的是和“一”運算符,它們也可以作為單
目運算符來使用,即放在操作數(shù)的前面,表示正數(shù)和負數(shù)。
需要注意區(qū)別的是”和“div”,“/”運算符用于進行浮
點除運算,其操作數(shù)既可以是整型也可以是實型,而運算結(jié)
果是實型;“div”運算符用于進行整除運算,要求兩個操作
數(shù)都是整型,運算結(jié)果為經(jīng)過四舍五入后得到的整數(shù)值;取
?!癿od”運算符也要求兩個操作數(shù)都是整型,運算結(jié)果為兩
數(shù)相除后的余數(shù)。這3個運算符都要求第二個操作數(shù)的值不
能為0。
例如:
5/2=2.55div2=25mod2=1
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏程語音、
2.4.2邏輯運算符
邏輯運算符(not、and、or、xor)的作用是進行
邏輯運算,其操作數(shù)類型都要求是邏輯型,運算結(jié)果也是邏
輯型。其中,not運算符的作用是邏輯取反;and運算符的作
用是邏輯與;or運算符的作用是邏輯或;xor運算符的作用是
邏輯異或。表2-8給出了邏輯運算的規(guī)則。
表2-8邏輯運算符的運算規(guī)則
操作數(shù)not(操作數(shù)
操作數(shù)2andorxor
11)
TrueTrueFalseTrueTmeFalse
TrueFalseFalseFalseTrueTrue
FalseTrueTrueFalseTrueTrue
FalseFalseTrueFalseFalseFalse
delphi程序設(shè)計基礎(chǔ)教程
第2章Delphi的偏程箱音、
在ObjectPascal中,對于由and和or組成的表達式支持
兩種求值方式,即完全求值方式和部分求值方式。
完全求值是對表達式中的每一個運算對象都進行計算,
而不管是否已經(jīng)可以得出結(jié)果。而部分求值是嚴格按照從左
到右進行計算,如果表達式已經(jīng)有了結(jié)果,則停止計算。這
種求值方式可以節(jié)省計算時間,在編寫程序時,可以將最能
決定表達式結(jié)果的運算對象放在表達式的前面。例如下面的
表達式:
(a>b)or(c<d)
當(dāng)a=5,b=3時,由于“a>b”的結(jié)果為True,因此,可以
得出表達式的結(jié)果必定為True,而不必考慮c和d的值。如果
采用部分求值的方式,則”(cvd)”就不用計算了。
delphi程序設(shè)計基礎(chǔ)教程
第章的偏移語音
1i2Delphi、
2.4.3關(guān)系運算符
關(guān)系運算符(=、<>>V、>、<=>>=)反映的是兩個操作
數(shù)之間的關(guān)系,其操作數(shù)可以是一般的數(shù)據(jù)類型,但運算結(jié)
果只能是True和False兩種邏輯型。
需要注意的是,在ObjectPascal中,判斷不等使用的運
算符是“<>",而其他語言,如C語言中,使用的是“!二,
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏程語含、
2.4.4位運算符
位運算符(not、and、or、xor、shl、shij的作
用是對整型數(shù)據(jù)進行按位操作,其運算結(jié)果也是整型。位運
算符的作用見表2-9。
表2-9位運算符的作用
運算符作用舉例
not按位取反notx
and按位與xandy
or按位或xory
xor按位異或xxory
shr按位右移xshry
shl按位左移xshly
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
2.4.5指針運算符
指針運算符(八、+、-、=、v>)的作用是對指針類
型的數(shù)據(jù)進行操作,各指針運算符的作用見表2-10。
表2-10指針運算符的作用
運算
作用操作數(shù)類型結(jié)果類型
符
A取指針地址的內(nèi)容指針指針指向內(nèi)容的類型
@返回操作數(shù)的地址地址
delphi程序設(shè)計基礎(chǔ)教程
第章的偏移語音
1i2Delphi、
2.4.6集合運算符
集合運算符(+、一、*、=、<>、in、<=>>=)的
作用是對集合類型的數(shù)據(jù)進行操作,各集合運算符的作用見
表2-11。
表2-11集合運算符的作用
運算結(jié)果類
作用操作數(shù)類型
符型
十取兩個集合的并集集合型集合型
—取兩個集合不同的元素,即差集合型集合型
*取兩個集合共同的元素,即交集合型集合型
=判斷兩個集合是否相等集合型布爾型
<>判斷兩個集合是否不等集合型布爾型
判斷左邊集合與右邊集合是否有從屬關(guān)
In集合型布爾型
系
v=判斷左邊集合是否是右邊集合的子集集合型布爾型
>=判斷左邊集合是否是右邊集合的母集集合型布爾型
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含一]
2.5語句
2.5.1簡單語句
常見的簡單語句有賦值語句、過程和函數(shù)調(diào)用語句以及
goto語句3種。
1.賦值語句
在ObjectPascal中賦值語句使用的賦值符號是表
示將賦值符號右邊表達式的值賦給左邊的變量,這與其他語
言中的賦值符號是不同的,例如C語言中賦值使用“二",而
在ObjectPascal中“二”是關(guān)系運算符,表示判斷是否相等。
需要注意的是,賦值符號左邊必須是變量,不能是常量
或者表達式。
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏程語音、
2.goto語句
通過goto語句可以在程序中非常方便地從一個地方直接
跳轉(zhuǎn)到另一個地方,一般是通過goto語句將程序的執(zhí)行轉(zhuǎn)移
到由某個特定標號標識的語句。從結(jié)構(gòu)化程序設(shè)計的角度來
考慮,盡量不要使用goto語句。
goto語句的語法格式為:
goto標號;
在使用goto語句之前,要首先聲明出現(xiàn)在goto語句中的
標號,并且聲明語句一定要與goto語句處于同一個程序塊中。
另外,不能用got。語句從一個過程跳轉(zhuǎn)到另一個過程中。過
多地使用got。語句,會使得程序在運行過程中頻繁地跳來跳
去,使整個程序變得混亂無序。建議在編程時,盡量不要使
用goto語句。
delphi程序設(shè)計基礎(chǔ)教程
第2多Delphi的偏程語含
2.5.2條件語句
條件語句通過條件檢測,判斷是否執(zhí)行該條件語句中包
含的語句。在ObjectPascal中,條件語句有兩種基本形式:
if語句和case語句。
1.if語句
if語句有兩種基本形式。
if條件表達式then語句
if條件表達式then語句1else語句2
對于前者而言,僅當(dāng)條件表達式的值為真,即條件滿足
時,語句才執(zhí)行;對于后者,當(dāng)條件表達式的值為真時,執(zhí)
行語句1,為假時,執(zhí)行語句2。
delphi程序設(shè)計基礎(chǔ)教程
?i第2津Delphi的偏程語含
【例2.4]編程實現(xiàn)如下分支功能。
"x2+2x(x>0)
y=y
L1-2X(x<0)
x,y:integer;
begin
readln(x);
ifx>=0then
y:=x*x+2*x;
else
y:=1-2*x;
writeln('y=',y);
readln;
end.
delphi程序設(shè)計基礎(chǔ)教程
jj第2章Delphi的偏程語含
注意:
(1)條件表達式的值必須是布爾類型的,結(jié)果只能為True或False。
而語句既可以是簡單語句,也可以是復(fù)合語句。
(2)在第二種形式的語句中,語句1的結(jié)尾不能有分號,否則,編
譯器會提示語法錯誤。實際上,if…then...else是一條語句,因此,不
能在語句中間添加分號。
(3)if語句可以多重嵌套,即if語句中條件為真或假時,要執(zhí)行的
語句也可以是一個語句。
2.case語句
case語句與if語句功能相似,但case語句執(zhí)行的是對一
個結(jié)果的多種分支進行判斷,由case語句中的表達式的值
來決定具體執(zhí)行哪個操作。當(dāng)if語句非常復(fù)雜的時候,可以
考慮用case語句來代替它。
delphi程序設(shè)計基礎(chǔ)教程
?j第2章Delphi的偏程語含
case語句的語法格式為:
caseSwitchExpressionof
easel:Expression1;
case2:Expression2;
■■■
caseN:Expressionn;
else
Statement;
end;
delphi程序設(shè)計基礎(chǔ)教程
j(第2章Delphi的偏彩語畬、
執(zhí)行case語句時,首先計算出SwitchExpression表達式
的值,然后判斷Sw讓chExpression表達式的值與下面的
easel?caseN的哪一個癰同,如果有相同的,則執(zhí)行該
case值后對應(yīng)的語句;如果都不相同,則執(zhí)行else之后的語
句。其中,else和它之后的語句可以省略,省略后的格式為:
caseSwitchExpressionof
easel:Expression1;
case2:Expression2;
■■■
caseN:Expressionn;
end;
delphi程序設(shè)計基礎(chǔ)教程
1?第2章Delphi的偏程語音、
注意:
(1)Sw讓chExpression應(yīng)該是一個有序類型的表達式(如
整型、字符型、布爾型、子界類型等),不能是實型或字符
串類型。
(2)caseN的值也應(yīng)該是一個有序類型的值。而且每個值
必須是常量,且必須是唯一的。
delphi程序設(shè)計基礎(chǔ)教程
?j第2章Delphi的偏程語含
【例2.5]本例說明了case語句的用法。
var
kinteger;
begin
readln(i);
caseIof
1:writeln('one');
2:writeln('two');
3:writeln('three');
else
writeln('OtherNumber');
end;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年農(nóng)業(yè)國際公關(guān)服務(wù)合同
- 2026年醫(yī)院古醫(yī)療云計算模型館合作合同
- 2025年全國性網(wǎng)絡(luò)安全服務(wù)平臺建設(shè)項目可行性研究報告
- 2025年高校在線學(xué)習(xí)平臺搭建項目可行性研究報告
- 2025年新型替代蛋白質(zhì)研發(fā)項目可行性研究報告
- 2025年健身產(chǎn)業(yè)數(shù)字化轉(zhuǎn)型項目可行性研究報告
- 紋身定金合同范本
- 做監(jiān)理合同協(xié)議
- 福建省百校2026屆高三上學(xué)期12月聯(lián)合測評英語試卷(含答案詳解)
- 程序設(shè)計崗位面試要點及參考答案
- 醫(yī)學(xué)科研誠信專項培訓(xùn)
- 電力通信培訓(xùn)課件
- 第五版FMEA控制程序文件編制
- 藥物致癌性試驗必要性指導(dǎo)原則
- 軟骨肉瘤護理查房
- 高級生物化學(xué)知識要點詳解
- 肌電圖在周圍神經(jīng)病中的應(yīng)用
- 2025春季學(xué)期國開電大??啤独砉び⒄Z1》一平臺機考真題及答案(第五套)
- GB/T 45683-2025產(chǎn)品幾何技術(shù)規(guī)范(GPS)幾何公差一般幾何規(guī)范和一般尺寸規(guī)范
- CJ/T 107-2013城市公共汽、電車候車亭
- 可靠性測試標準試題及答案
評論
0/150
提交評論