使用 if .. then 或是 if .. then .. else,當條件成立時執行對應程式碼。與 C 系列語言不同:Pascal 的條件運算式不需要用括號包覆。
var
A: Integer;
B: boolean;
begin
// 條件成立僅執行單行敘述,不用 begin end
if A > 0 then
DoSomething;
// 條件成立需執行多行敘述,必須以 begin end 包覆成程式區塊
if A > 0 then
begin
DoSomething;
AndDoSomethingMore;
end;
// 單行敘述 if-else 結構
if A > 10 then
DoSomething
else
DoSomethingElse;
// 與上方程式邏輯完全相等:先將判斷結果存入布林變數再使用
B := A > 10;
if B then
DoSomething
else
DoSomethingElse;
end;Code language: JavaScript (javascript)
else 綁定規則
else 會和離它最近、尚未配對 else 的 if 綁定。以下這段程式邏輯符合預期:
if A <> 0 then
if B <> 0 then
AIsNonzeroAndBToo
else
AIsNonzeroButBIsZero;Code language: HTML, XML (xml)
這裡的 else 屬於內層 if B <> 0。
上述這種未使用程式區塊包覆的巢狀 if 語法雖然合法,但可讀性很差。建議使用 begin … end 把內層巢狀判斷完整包覆,讓程式邏輯邊界清晰;就算縮排排版混亂,閱讀者也能一眼分辨歸屬,新增、刪除分支時更不容易產生臭蟲。
標準優化寫法:
if A <> 0 then
begin
if B <> 0 then
AIsNonzeroAndBToo
else
AIsNonzeroButBIsZero;
end;Code language: HTML, XML (xml)
- if 後方的判斷條件不用括號(C/C++/Java 必須加括號,Pascal 剛好相反);
- then 後只有一行程式:可省略
begin end;多行程式一定要包覆; else就近配對內層 if,巢狀判斷建議強制加上區塊消除語意模糊;- 比較運算式(例如
A>10)可直接指派給布林變數。
底下是可直接執行的完整範例:分數等級判斷
邏輯規則:
- ≥90 → A
- ≥80 且 <90 → B
- ≥60 且 <80 → C
- <60 → D
{$ifdef FPC} {$mode objfpc} {$H+} {$endif}
{$codepage utf8}
program ScoreLevel;
var
score: Integer;
begin
Write('請輸入考試分數:');
ReadLn(score);
if score >= 90 then
Writeln('等級:A')
else if score >= 80 then
Writeln('等級:B')
else if score >= 60 then
Writeln('等級:C')
else
Writeln('等級:D');
ReadLn;
end.Code language: PHP (php)
編譯完成後執行
請輸入考試分數:96
等級:A
程式會提示你輸入分數,輸入完畢後,會輸出對應等級。
若顯示非英文文字出現亂碼,可以新增這一行:{$codepage utf8}
也可以將取得等級的邏輯封裝成獨立函式。
{$ifdef FPC} {$mode objfpc} {$H+} {$endif}
{$codepage utf8}
program ScoreLevelFunc;
function GetLevel(s: Integer): string;
begin
if s >= 90 then
Result := 'A'
else if s >= 80 then
Result := 'B'
else if s >= 60 then
Result := 'C'
else
Result := 'D';
end;
var
score: Integer;
begin
Write('Your score:');
ReadLn(score);
Writeln('Your level:', GetLevel(score));
ReadLn;
end.Code language: PHP (php)

if 條件判斷
Previous: 函式、程序與基礎原生型別
Next: 邏輯、關係與位元運算子