2.1.4.1 if語(yǔ)句
if語(yǔ)句會(huì)計(jì)算一個(gè)表達(dá)式,并根據(jù)計(jì)算結(jié)果決定程序流程。在上文的例程中,根據(jù)ColorDialog.Execute的返回值,決定窗體的背景顏色。if保留字后跟隨一個(gè)生成Boolean值True或False的表達(dá)式。一般用“=”作為關(guān)系運(yùn)算符,比較產(chǎn)生一個(gè)布爾型值。當(dāng)表達(dá)式為T(mén)rue時(shí),執(zhí)行then后的語(yǔ)句。否則執(zhí)行else后的代碼,if語(yǔ)句也可以不含else部分,表達(dá)式為False時(shí)自動(dòng)跳到下一行程序。
if語(yǔ)句可以嵌套,當(dāng)使用復(fù)合語(yǔ)句表達(dá)時(shí),復(fù)合語(yǔ)句前后需加上begin…end。else保留字前不能加“;”,而且,編譯器會(huì)將else語(yǔ)句視為屬于最靠近的if語(yǔ)句。必要時(shí),須使用begin…end保留字來(lái)強(qiáng)迫else部分屬于某一級(jí)的if語(yǔ)句。
2.1.4.2 case語(yǔ)句
case語(yǔ)句適用于被判斷的變量或?qū)傩允钦巍⒆址、枚舉型或子界型時(shí)(LongInt除外)。用case語(yǔ)句進(jìn)行邏輯跳轉(zhuǎn)比編寫(xiě)復(fù)雜的if語(yǔ)句容易閱讀,而且程序代碼整形較快。
下面的例程顯示一個(gè)使用case語(yǔ)句的窗體:
建立如下的事件處理過(guò)程:
procedure TForm1.Button1Click(Sender: TObject);
var
Number : Integer;
begin
Number := StrToInt(Edit1.Text);
case Number of
1,3,5,7,9: Label2.Caption := '奇數(shù)';
0,2,4,6,8: Label2.Caption := '偶數(shù)';
10..100:
begin
Label2.Caption := '在10到100之間';
Form1.Color := clBlue;
end;
else
Label2.Caption := '大于100或?yàn)樨?fù)數(shù)';
end;
end;
執(zhí)行程序,當(dāng)Edit1部件接受到一個(gè)值,并按動(dòng)“OK”按鈕觸發(fā)程序后,Number便被賦值為用戶(hù)輸入的數(shù)值。case語(yǔ)句根據(jù)Number的值判斷該執(zhí)行哪一條語(yǔ)句。象if語(yǔ)句一樣。case語(yǔ)句也有可選擇的else部分。case語(yǔ)句以end結(jié)尾。
2.1.5 循環(huán)語(yǔ)句
Object Pascal的循環(huán)語(yǔ)句有三種:repeat、while和for語(yǔ)句。
2.1.5.1 repeat語(yǔ)句
repeat語(yǔ)句會(huì)重復(fù)執(zhí)行一行或一段語(yǔ)句直到某一狀態(tài)為真。語(yǔ)句以repeat開(kāi)始,以u(píng)ntil結(jié)束,其后跟隨被判斷的布爾表達(dá)式。參閱以下的例程:
i := 0;
repeat
i := i+1;
Writen(i);
until i=10;
當(dāng)此語(yǔ)句被執(zhí)行時(shí),窗體的下方會(huì)出現(xiàn)1到10的數(shù)字。布爾表達(dá)式 i=10 (注意,與其他語(yǔ)言不同的是,“=”是關(guān)系運(yùn)算符,而不能進(jìn)行賦值操作)直到repeat..until程序段的結(jié)尾才會(huì)被計(jì)算,這意味著repeat語(yǔ)句至少會(huì)被執(zhí)行一次。
2.1.5.2 while語(yǔ)句
while語(yǔ)句和repeat語(yǔ)句的不同之處是,它的布爾表達(dá)式在循環(huán)的開(kāi)頭進(jìn)行判斷。while保留字后面必須跟一個(gè)布爾表達(dá)式。如果該表達(dá)式的結(jié)果為真,循環(huán)被執(zhí)行,否則會(huì)退出循環(huán),執(zhí)行while語(yǔ)句后面的程序。
下面的例程達(dá)到和上面的repeat例程達(dá)到同樣的效果:
i := 0;
while i<10 do
begin
i := i+1;
writeln(i);
end;
2.1.5.3 for語(yǔ)句
for語(yǔ)句的程序代碼會(huì)執(zhí)行一定的次數(shù)。它需要一個(gè)循環(huán)變量來(lái)控制循環(huán)次數(shù)。您需要說(shuō)明一個(gè)變量,它的類(lèi)型可以是整形、布爾型、字符型、枚舉型或子界型。
下面的程序段會(huì)顯示1到5的數(shù)字,i為控制變量:
var
i : integer;
for i := 1 to 5 do
writeln(i);
以上介紹了三種循環(huán)語(yǔ)句。如果您知道循環(huán)要執(zhí)行多少次的話(huà),可以使用for語(yǔ)句。for循環(huán)執(zhí)行速度快,效率比較高。如果您不知道循環(huán)要執(zhí)行多少次,但至少會(huì)執(zhí)行一次的話(huà),選用repeat..until語(yǔ)句比較合適;當(dāng)您認(rèn)為程序可能一次都不執(zhí)行的話(huà),最好選用while..do語(yǔ)句。
2.1.6 程序模塊
程序模塊在Object Pascal中是很重要的概念。它們提供了應(yīng)用程序的結(jié)構(gòu),決定了變量、屬性值的范圍及程序執(zhí)行的過(guò)程。它由兩個(gè)部分組成:可選擇的說(shuō)明部分和語(yǔ)句部分。如果有說(shuō)明部分,則必在語(yǔ)句部分之前。說(shuō)明部分包括變量說(shuō)明、常量說(shuō)明、類(lèi)型說(shuō)明、標(biāo)號(hào)說(shuō)明、程序,函數(shù),方法的說(shuō)明等。語(yǔ)句部分?jǐn)⑹隽丝蓤?zhí)行的邏輯行動(dòng)。
在Delphi中,最常見(jiàn)的程序模塊便是事件處理過(guò)程中的程序模塊。下面的事件處理過(guò)程是含有變量說(shuō)明部分的程序模塊:
procedure TForm.Button1Click(Sender Tobject);
var {程序模塊的說(shuō)明部分}
Name : string;
begin {程序模塊的語(yǔ)句部分}
Name := Edit1.Text;
Edit2.Text := 'Welcome to Delphi'+Name;
end; {程序模塊結(jié)束}
庫(kù)單元也是程序模塊。庫(kù)單元的interface部分含有庫(kù)函數(shù)、類(lèi)型、私有,公有域的說(shuō)明,也可以含有常量、變量的說(shuō)明。這一部分可以作為程序模塊的說(shuō)明部分。在庫(kù)單元的implementation部分中通常含有各種事件處理過(guò)程,它們可以視為模塊的語(yǔ)句部分,是事件處理模塊。庫(kù)單元模塊結(jié)束于庫(kù)單元結(jié)束的end.處。
程序模塊中可以包含其他的程序模塊。上文庫(kù)單元模塊中含有事件處理模塊。而庫(kù)單元模塊實(shí)際是在工程程序模塊中。
所有的Delphi應(yīng)用程序都有相同的基本結(jié)構(gòu)。當(dāng)程序逐漸復(fù)雜時(shí),在程序中加入模塊即可。例如在庫(kù)單元模塊中加入事件處理模塊,向工程中加入庫(kù)單元模塊等。模塊化編程使得程序結(jié)構(gòu)良好,并且對(duì)數(shù)據(jù)具有保護(hù)作用。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專(zhuān)題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |