条件语句

条件语句


条件语句通过条件检测,判断是否执行该条件语句中包含的语句。条件语句可有两种基本形式:if语句和case语句。

If 语句

对 if-then 型语句,仅当条件满足时,语句才执行;对 if-then-else 型,if 语句在两条语句中选择一条执行。条件用布尔表达式建立,这里通过一个简单的 Delphi 例子来示范如何写条件语句。首先,创建一个应用程序,在 form 上面放两个复选框(check box)和四个按钮(button),不要改变复选框和按钮的名字,双击按钮为其 OnClick 事件添加响应程序。下面是第一个按钮事件代码中一条简单的 if 语句:

procedure TForm1.Button1Click(Sender: TObject);
begin
 // simple if statement
 if CheckBox1.Checked then
   ShowMessage ('CheckBox1 is checked')
end;

当点击 button1,如果第一个复选框中有复选标记,那么这个程序将显示一条消息(见图5.1)。我用了 ShowMessage 函数,因为它是 Delphi 中最简单的短信息显示函数。

图 5.1: 例IfTest显示的信息

如果点击按钮后没有反应,表明复选框未被选中。对于这种情况,最好能交代得更清楚些,为此在第二个按钮的代码中,我用了if-then-else 语句:

procedure TForm1.Button2Click(Sender: TObject);
begin
 // if-then-else statement
 if CheckBox2.Checked then
   ShowMessage ('CheckBox2 is checked')
 else
   ShowMessage ('CheckBox2 is NOT checked');
end;

要注意的是,不能在第一句之后、else 关键词之前加分号,否则编译器将告知语法错误。实际上,if-then-else 语句是单纯的一条语句,因此不能在语句中间加分号。

if 语句可以很复杂,句子中的条件部分可以是一系列条件(用 and、 or 、 not 等布尔操作符联接起来),if 语句又可以嵌套另一个 if 语句,见例 If Test 中其它两个按钮的示范代码:

procedure TForm1.Button3Click(Sender: TObject);
begin
 // statement with a double condition
 if CheckBox1.Checked and CheckBox2.Checked then
   ShowMessage ('Both check boxes are checked')
end;

procedure TForm1.Button4Click(Sender: TObject);
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 语句

如果你的 if 语句变得非常复杂,有时可以用 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;


联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678