1.常量:固定值,不可變數。
1) const
常量名 = 常量值(運算式);
2) resourcestring
常量名 = 字串(常量);
2.變數
1)定義
Var 名字1,名字2,…名字n:類型;
2)命名原則(參考)
變數名字 = 類型(縮寫) + 範圍(簡稱) + 確切含義名稱
3)三種賦值格式
變數名:= 值;
變數名1: = 變數2;
變數名:= 過程或函數的調用;
3.類型常量
1)類型常量是全域變數並不是一個常量,它進行了預初始化值。
2)定義
Const
名字:類型 = 值;
3)種類
簡單的類型常量
數群組類型常量
記錄類型常量
集合類型常量
指標類型常量
過程類型常量
4.資料類型
簡單類型(Simple) |
|
|
|
有序類型(Ordinal) |
|
|
|
整數(Integer) |
|
|
字元(Character) |
|
|
布爾(Boolean) |
|
|
枚舉(Enumerated) |
|
|
子域(SubRange) |
|
實數(Real) |
|
結構類型(Structured) |
|
|
|
集合(Set) |
|
|
數組(Array) |
|
|
記錄(Record) |
|
|
檔案(File) |
|
|
類(Class) |
|
|
類指標(ClassReference) |
|
|
介面(Interface) |
|
字串類型(String) |
|
|
指標類型(Pointer) |
|
|
過程類型(Procedural) |
|
|
可變類型(Variant) |
|
|
5.使用者自訂類型
子域類型
Type 名稱 = 初值…終值;
枚舉類型
Type 名稱 = (值1,值2,值3…值N);
數群組類型
Type 名稱 = Array[下標定義]of類型名
Type 名稱 = [下標定義1,下標定義2…下標定義N] of元素類型
或名稱 = [下標定義1of…Array [下標定義N] of元素類型
集合類型
Type 名稱 = set of 元素類型
指標類型
Type 名稱 = ^結點類型
記錄類型
Type 名稱 = Record
網域名稱1:類型;
網域名稱1:類型;
……
網域名稱N:類型;
end;
檔案類型
Type 名稱 = file of 元素類型
6.語句
簡單語句
X := Y + Z; // assignment
Randomize;// procedure call
複合陳述式
begin
A := B;
C := A * 2;
end;
end之前的最後一條語句末尾分號不是必需的,你可以寫成:
begin
A := B;
C := A * 2
end;
指派陳述式
在Pascal 語言中指派陳述式用冒號-等號操作符“:=”,
條件陳述式
If語句
對if-then型語句,僅當條件滿足時,語句才執行;
if CheckBox1.Checked then
ShowMessage ('CheckBox1 is checked')
對if-then-else型,if語句在兩條語句中選擇一條執行
if CheckBox2.Checked then
ShowMessage ('CheckBox2 is checked')
else
ShowMessage ('CheckBox2 is NOT checked');
要注意的是,不能在第一句之後、else 關鍵詞之前加分號,否則編譯器將告知語法錯誤。實際上,if-then-else 語句是單純的一條語句,因此不能在語句中間加分號。if 語句可以很複雜,句子中的條件部分可以是一系列條件(用and、 or 、 not等布爾操作符聯結起來),if語句又可以嵌套另一個if語句
begin
// compound if statement
if CheckBox1.Checked then
if CheckBox2.Checked then
ShowMessage ('CheckBox1 and 2 are checked')
else
ShowMessage ('Only CheckBox1 is checked')
else
ShowMessage (
'Checkbox1 is not checked, who cares for Checkbox2?')
end;
Case語句
case語句包括用來選值的運算式、可能值序列或一個取值範圍。這些值應該是常量,並且它們必須唯一,而且應屬於有序類型。
Case語句最後可以帶一個else 語句,當沒有一個標籤與選取器的值一致時,執行else語句。下面是兩個簡單的例子:
case Number of
1: Text := 'One';
2: Text := 'Two';
3: Text := 'Three';
end;
case MyChar of
'+' : Text := 'Plus sign';
'-' : Text := 'Minus sign';
'*', '/': Text := 'Multiplication or division';
'0'..'9': Text := 'Number';
'a'..'z': Text := 'Lowercase character';
'A'..'Z': Text := 'Uppercase character';
else
Text := 'Unknown character';
end;
For迴圈
for迴圈嚴格地建立在計數器基礎上,迴圈每執行一次,計數器不是增加一個值就是減小一個值。下面是一個for語句的
簡例,用來將前十個數加起來:
var
K, I: Integer;
begin
K := 0;
for I := 1 to 10 do
K := K + I;
同樣的for語句可以用正好相反的計數器來寫:
var
K, I: Integer;
begin
K := 0;
for I := 10 downto 1 do
K := K + I;
for迴圈語句其靈活性比其他語言小(它不能指定1之外的步長),不過簡單也容易理解。如果需判斷的條件比較複雜,
或想自訂計數器,你可以用while語句或 repeat 語句,而不是for迴圈語句。
注意:for迴圈計數器不必非是數字,它可以是任何有序類型的值,例如一個字元或一個枚舉類型值。
while語句和repeat語句
while-do 迴圈語句和 repeat-until 語句的不同點在於repeat 迴圈語句的代碼至少要執行一次。從下面的簡例很容易理解這一點
while (I <= 100) and (J <= 100) do
begin
// use I and J to compute something...
I := I + 1;
J := J + 1;
end;
repeat
// use I and J to compute something...
I := I + 1;
J := J + 1;
until (I > 100) or (J > 100);
從上可見即使 I 或 J 的初始值大於100,repeat-until迴圈中的代碼也仍會執行一次。
注意:兩種迴圈另一個關鍵的不同點是,repeat-until 迴圈的條件是反向的條件,只要不滿足這個條件,迴圈就執行;當條件滿足
時,迴圈終止。這正好與while-do 迴圈相反,while-do 迴圈當條件是真值時才執行。為此,我不得不在上面代碼中用反向條件來
獲得相同的結果。
注意:用 Break 和 Continue 系統過程可以改變迴圈執行的標準流程。Break 中斷迴圈;Continue直接跳至迴圈測試句,或使計數
器增加一個步長,然後繼續迴圈(除非條件為空白或計數器達到最大值)。還有兩個系統過程 Exit 和 Halt,讓你立即從函數或過程
中返回,或者終止程式。
With語句
with BirthDay do
begin
Year := 1995;
Month := 2;
Day := 14;
end;