跳轉語句
Object Pascal的跳轉語句有if和case兩個
語句
if語句會計算一個表達式並根據計算結果決定程序流程在上文的例程中根據ColorDialogExecute的返回值決定窗體的背景顏色if保留字後跟隨一個生成Boolean值True或False的表達式一般用=作為關系運算符比較產生一個布爾型值當表達式為True時執行then後的語句否則執行else後的代碼if語句也可以不含else部分表達式為False時自動跳到下一行程序
if語句可以嵌套當使用復合語句表達時復合語句前後需加上begin…endelse保留字前不能加而且編譯器會將else語句視為屬於最靠近的if語句必要時須使用begin…end保留字來強迫else部分屬於某一級的if語句
case語句
case語句適用於被判斷的變量或屬性是整形字符型枚舉型或子界型時(LongInt除外)用case語句進行邏輯跳轉比編寫復雜的if語句容易閱讀而且程序代碼整形較快
下面的例程顯示一個使用case語句的窗體
建立如下的事件處理過程
procedure TFormButtonClick(Sender: TObject);
var
Number : Integer;
begin
Number := StrToInt(EditText);
case Number of
: LabelCaption := 奇數;
: LabelCaption := 偶數;
:
begin
LabelCaption := 在到之間;
FormColor := clBlue;
end;
else
LabelCaption := 大於或為負數;
end;
end;
執行程序當Edit部件接受到一個值並按動OK按鈕觸發程序後Number便被賦值為用戶輸入的數值case語句根據Number的值判斷該執行哪一條語句象if語句一樣case語句也有可選擇的else部分case語句以end結尾
循環語句
Object Pascal的循環語句有三種repeatwhile和for語句
repeat語句
repeat語句會重復執行一行或一段語句直到某一狀態為真語句以repeat開始以until結束其後跟隨被判斷的布爾表達式參閱以下的例程
i := ;
repeat
i := i+;
Writen(i);
until i=;
當此語句被執行時窗體的下方會出現到的數字布爾表達式 i= (注意與其他語言不同的是=是關系運算符而不能進行賦值操作)直到repeatuntil程序段的結尾才會被計算這意味著repeat語句至少會被執行一次
while語句
while語句和repeat語句的不同之處是它的布爾表達式在循環的開頭進行判斷while保留字後面必須跟一個布爾表達式如果該表達式的結果為真循環被執行否則會退出循環執行while語句後面的程序
下面的例程達到和上面的repeat例程達到同樣的效果
i := ;
while i< do
begin
i := i+;
writeln(i);
end;
for語句
for語句的程序代碼會執行一定的次數它需要一個循環變量來控制循環次數您需要說明一個變量它的類型可以是整形布爾型字符型枚舉型或子界型
下面的程序段會顯示到的數字i為控制變量
var
i : integer;
for i := to do
writeln(i);
以上介紹了三種循環語句如果您知道循環要執行多少次的話可以使用for語句for循環執行速度快效率比較高如果您不知道循環要執行多少次但至少會執行一次的話選用repeatuntil語句比較合適當您認為程序可能一次都不執行的話最好選用whiledo語句
程序模塊
程序模塊在Object Pascal中是很重要的概念它們提供了應用程序的結構決定了變量屬性值的范圍及程序執行的過程它由兩個部分組成可選擇的說明部分和語句部分如果有說明部分則必在語句部分之前說明部分包括變量說明常量說明類型說明標號說明程序函數方法的說明等語句部分敘述了可執行的邏輯行動
在Delphi中最常見的程序模塊便是事件處理過程中的程序模塊下面的事件處理過程是含有變量說明部分的程序模塊
procedure TFormButtonClick(Sender Tobject);
var {程序模塊的說明部分}
Name : string;
begin {程序模塊的語句部分}
Name := EditText;
EditText := Welcome to Delphi+Name;
end; {程序模塊結束}
庫單元也是程序模塊庫單元的interface部分含有庫函數類型私有公有域的說明也可以含有常量變量的說明這一部分可以作為程序模塊的說明部分在庫單元的implementation部分中通常含有各種事件處理過程它們可以視為模塊的語句部分是事件處理模塊庫單元模塊結束於庫單元結束的end處
程序模塊中可以包含其他的程序模塊上文庫單元模塊中含有事件處理模塊而庫單元模塊實際是在工程程序模塊中
所有的Delphi應用程序都有相同的基本結構當程序逐漸復雜時在程序中加入模塊即可例如在庫單元模塊中加入事件處理模塊向工程中加入庫單元模塊等模塊化編程使得程序結構良好並且對數據具有保護作用
關於作用范圍
標識符的作用范圍
一個變量常量方法類型或其他標識符的范圍定義了這個標識符的活動區域對於說明這個標識符的最小程序模塊而言此標識符是局部的當您的應用程序在說明一個標識符的程序模塊外執行時該標識符就不在此范圍內這意味著此時執行的程序無法訪問這個標識符只有當程序再度進入說明這個標識符的程序模塊時才可以訪問它
下面的示意圖表示一個含有兩個庫單元的工程每個庫單元中又各有三個過程或事件處理過程
訪問其他程序模塊中的說明
您可以在當前的程序模塊中訪問其他程序模塊中的說明例如您在庫單元中編寫一個事件處理過程來計算利率則其他的庫單元可以訪問這個事件處理過程要訪問不在當前庫單元中的說明應在這個說明之前加上其他應用程序的名稱和一個點號()例如在庫單元Unit中有事件處理過程CalculateInterest過程現在您想在庫單元Unit中調用這一過程則可以在Unit的uses子句中加入Unit並使用下面的說明
UnitCalculateInterest(PrincipalInterestRate : Double)
應用程序的代碼不能在一個模塊外訪問它說明的變量事實上當程序執行跳出一個模塊後這些變量就不存在於內存中了這一點對於任何標識符都是一樣的不管事件處理過程過程函數還是方法都具有這一性質這樣的標識符稱為局部變量
From:http://tw.wingwit.com/Article/program/Delphi/201311/8504.html