Delphi 编程/流程控制
如果布尔表达式返回 True,则 if 结构将执行命令块。更易于理解的解释是:如果条件为真,它将执行一个块或单个命令。示例
begin
if a = False then
WriteLn('a is false')
else WriteLn('a is true');
end.
不要写 "if a = True",只需写 "if a"。写 "if a = False" 是正确的,但你也可以写 "if not a" 或(带括号)"if (((((a)))))"(或你想要的任意数量的括号),还有 "(if (not(a)))"。
结构
begin
if CONDITION then
DO_ANYTHING
else DO_THIS;
end.
或(用于执行多个命令)
begin
if CONDITION then
begin
DO_ANYTHING;
end
else begin
DO_THIS;
end;
end.
或不带 else
begin
if CONDITION then
begin
DO_THIS;
end;
end.
除了最后一个 end 之外,end 后面总是有分号。else 前面永远不会有分号!
示例
var
_Answer: string;
begin
WriteLn('Do you want to order a pizza?');
ReadLn(_Answer);
if _Answer = 'Yes' then
WriteLn('You decided for yes!')
else WriteLn('Don''t want to have a pizza?');
end.
你可以用单引号 ('
) 或双引号 ("
) 开始和结束字符串。如何在字符串中写单引号或双引号?它将在中间结束字符串!如果你必须在文本中写单引号,你可以用双引号开始和结束字符串,或者像第 8 行那样将单引号写两次。对双引号做同样的事情。
Case 结构与 if 结构非常相似,但有以下区别:你可以更轻松地询问多个 case!
结构
case VARIABLE_NAME of
VALUE_1:
DO_THIS;
VALUE_N:
DO_THIS
else
DO_THIS
end;
end;
但使用 case 结构,你只能询问整数和字符。
你可以使用几个运算符扩展你的条件
- AND(如 C 中的
&&
):逻辑 'and':if (a = 1) and (b = 2)
。表达式 "(a = 1) and (b = 2)
" 的值为 TRUE,如果 a 为 1 且 b 为 2。否则,值为 FALSE,并将执行 ELSE 部分(而不是 THEN 后的部分)。不要忘记括号!
- OR(如 C 中的
||
):'or':if (a = 1) or (b = 1)
。如果 a 为 1,b 为 1 或两者都为 1,则表达式的值为 TRUE。 - XOR:如果只有一个条件为真:
if (a = 1) xor (b = 2)
。如果 a 为 1 或 b 为 2,则表达式为真。如果 a 为 1 且 b 为 2,则值为 **FALSE**! - NOT:表达式的反义。
也可以将这些运算符相互关联。但不要忘记括号!
顺便说一下:每个条件都会返回一个布尔值。如果为 TRUE,则执行 then 部分。如果不是,则处理器转到 else 部分。
诸如 '=' 的运算符是
- = 等于
- > 大于
- < 小于
- <= 小于等于
- >= 大于等于
- <> 不等于(小于或大于,不相同)
and 连接或 disjunction xor 排他性 disjunction
- 你可以使用 ( 和 ) 作为括号。
- / 表示 '除以',结果为浮点数
- div 表示 '除以',结果为四舍五入的整数
- * 表示 '乘'
- + 表示 '加'
- - 表示 '减'
+ 也表示连接字符串或字符
- string + string : string
- string + char : string
- char + char : string
- char + string : string
- string + number : 错误
- number + string : 错误
- number + number : number
- number + char : 错误
- char + number : 错误
循环表示:一个块将被执行多次。有四种类型的循环
for [var] := [start] to [end] do
begin
[execute the following code]
end;
var 将从 [start] 计数到 [end],并且在每次计数步骤后都会执行代码。通常,[var] 被定义为 i、j 或 k,但你也可以选择counting_var_with_this_name或任何名称。
for [var] := [end] downto [start] do
begin
[execute the following code]
end;
var 将从 [end] **向下** 计数到 [start],并且在每次计数步骤后都会执行代码。
while [condition] do
begin
[code]
end;
只要条件为真,代码就会被执行。条件是 TRUE 还是 FALSE 将在执行代码 **之前** 检查。
repeat
[code]
until [condition];
代码将被执行,直到条件为真。条件是 TRUE 还是 FALSE 将在执行代码 **之后** 检查。
设置值的运算符是:=
a := b;
通过执行,a 将获得 b 的值。
示例
a 等于 1;b 等于 3
执行后
a 等于 3;b 等于 3
而不是
a 等于 1;b 等于 1
注意顺序!