Object Pascal 学习笔记,Delphi 11 编程语言的完整介绍 作者: Marco Cantu 笔记:豆豆爸
3.2 If 语句
条件语句用于根据特定测试(或条件)执行其包含的语句中的一个或多个语句,具体取决于该测试是否通过。有两种基本形式的条件语句:if 语句和 case 语句。
if 语句可用于仅在满足特定条件时执行语句(if-then
)或在两个不同的选择之间进行选择(if-then-else
)。条件由一个布尔表达式定义。
让我们通过一个简单的 Object Pascal
示例(称为 IfTest
)演示如何编写条件语句。在此程序中,我们将使用复选框获取用户输入,通过读取其 IsChecked
属性(并将其存储到临时变量中,尽管这并不是严格要求的,因为您可以直接在条件表达式中检查属性值):
var
IsChecked: Boolean;
begin
IsChecked := CheckBox1.IsChecked;
if IsChecked then
Show('Checkbox is checked');
如果复选框被选中,程序将显示一个简单的消息。否则,什么也不会发生。相比之下,使用 C 语言语法的相同语句如下(其中条件表达式必须用括号括起来):
if (IsChecked)
Show("Checkbox is checked");
一些其他语言具有 endif
元素的概念,允许您编写多个语句,在 Object Pascal
语法中,条件语句默认情况下是单个语句。您可以使用 begin-end
块来执行多条语句,作为同一条件的一部分。
如果要根据条件执行不同的操作,可以使用 if-then-else 语句(在这种情况下,我使用了一个直接表达式来读取复选框的状态):
// If-then-else 语句
if CheckBox1.IsChecked then
Show('Checkbox is checked')
else
Show('Checkbox is not checked');
请注意,在第一条语句之后并在 else
关键字之前不能有分号,否则编译器将报出语法错误。原因是 if-then-else 语句是一个单独的语句,因此不能在其中间放置分号。
if 语句可以相当复杂。条件可以是一系列条件(使用 and
、or
和 not
布尔运算符),或者 if 语句可以再嵌套一个 if 语句。除了嵌套 if 语句之外,在存在多个不同条件的情况下,通常会有连续的 if-then-else-if-then 语句。您可以链式地添加任意多个这些 else-if 条件。
IfTest
示例的第三个按钮演示了这些情景,使用编辑框的第一个字符(可能缺失,因此是外部测试的一部分)作为输入:
var
AChar: Char;
begin
// 多重嵌套 if 语句
if Edit1.Text.Length > 0 then
begin
AChar := Edit1.Text.Chars[0];
// 检查小写字符(两个条件)
if (AChar >= 'a') and (AChar <= 'z') then
Show('char is lower-case');
// 后续条件
if AChar <= Char(47) then
Show('char is lower symbol')
else if (AChar >= '0') and (AChar <= '9') then
Show('char is a number')
else
Show('char is not a number or lower symbol');
end;
仔细阅读代码并运行程序,看看你是否理解了它(也可以玩玩你能编写的类似程序,以学习更多知识)。你可以考虑更多的选项和布尔表达式,增加这个小例子的复杂性,进行任何你喜欢的测试。