分支与循环
分支
if 分支语句
if 分支有两种形式,一种是 if-then
,一种是 if-then-else
if-then
语句的表现形式如下:
1 | if 条件 then |
if-then
语句的复合表现形式如下:
1 | if 条件 then begin |
if-then-else
语句的表现形式如下:
1 | if 条件 then |
if-then-else
语句的复合表现形式如下:
1 | if 条件 then begin |
每个 else 后面又可以跟 if 语句,组合成无限的 if-else-if 的形式
1 | if 条件1 then |
case 分支语句
case
用于选择语句,表现形式如下:
1 | case 选择表达式 of |
上述 case
语句相当于 C 语言的 switch..case
语句。
C 语言的常量匹配之后,需要加上 break
来跳出选择,否则会继续执行后面的条件处理语句。Delphi 不需要这样,Delphi 只会执行指定的条件处理语句。
带缺省处理的 case
语句表现形式如下:
1 | case 选择表达式 of |
case
语句中的处理语句可以使用 begin .. end 复合语句。
多值匹配的表现形式如下:
1 | case 选择表达式 of |
循环
while 循环
while
循环语句的表现形式如下:
1 | while 条件表达式 do |
while
循环语句复合语句表现形式如下:
1 | while 条件表达式 do |
当条件成立时,执行循环体语句。
repeat 循环
repeat .. until
循环语句的表现形式如下:
1 | repeat |
先执行一次循环体,然后判断条件表达式,成立的话,则结束循环;不成立的话,继续循环。
repeat .. until
跟 C 语言的do .. while
的循环很相似,至少会执行一次循环体- 但是 Delphi 是判断条件成立时结束循环, C 语言是判断条件成立时继续循环;刚好相反。
for 循环
for
循环语句的表现形式如下:
1 | for 计数器 := 初值 to/downto 终值 do |
for
循环语句复合语句表现形式如下:
1 | for 计数器 := 初值 to/downto 终值 do |
to 终值
时:
- 先执行计数器的初始化
- 计数器与终值比较,如果计数器小于或者等于终值,执行循环体
- 计数器自增 1
- 循环结束后,计数器的值为终值 + 1
downto 终值
时:
- 先执行计数器的初始化
- 计数器与终值比较,如果计数器大于或者等于终值,执行循环体
- 计数器自减 1
- 循环结束后,计数器的值为终值 - 1
其他tips:
- 对于
for
语句而言,当初值与终值相等时,系统只执行一次循环。 - 计数器必须是有序类型
与 C
语言的 for
循环相比,Delphi
的 for
循环的弹性比较小,每次循环的变化量只能单步加 1
或者减 1
,但是 Delphi
的可阅读性更好。需要特殊变化处理的循环,可以用 repeat
和 while
处理。
for-in 循环
for-in 循环可以用于数组、列表、字符串等一系列容器的遍历。与 C#
不同的是,并不要求实现 IEnumerator
这个接口,但编译器内部会以相似的作法来实现。
for-in
循环语句的表现形式如下:
1 | for 变量 in 集合 do |
for
循环语句复合语句表现形式如下:
1 | for 变量 in 集合 do |
break 和 continue
- break 用来终止循环
- continue 用来结束当次循环,重新进行循环判断
goto
goto
语句用于绝对跳转到指定的标签。一般用于跳出多重循环。表现形式如下:
1 | goto 标签; |
标签是一个范围 0~9999 的数字。具体使用需要先用 label
语句声明标签列表,然后在程序代码中插入标签。例子如下:
1 | label 1,2,3; // 先声明标签 1,2,3 三个 |