While 循环可用于执行固定的语句块,并且可以无限次地执行。
两种类型的 While 循环
循环的类型
|
解释
|
示例
|
---|---|---|
While ... Do
|
While ... Do 循环对条件求值,如果条件为 true,则对 Do 后面的表达式求值。
完成对表达式的求值后,再次对该条件求值,如果条件为 true,则再次对 Do 后面的表达式求值。 它不断重复该过程,直到条件为 false 时为止。 |
While condition Do expression |
Do ... While
|
Do ... While 循环对任何表达式求值一次。
然后对条件求值,如果条件为 true,则再次对表达式求值。该过程持续进行,直到条件为 false 时为止。 |
Do expression While condition |
注意 |
---|
While 循环支持可立即跳出循环的 Exit While 语句。该语句的作用与 For 循环中的 Exit For 相似。与 For 循环一样,While 循环在被看作是表达式时,始终返回布尔值 True。 |
While ... Do 循环示例
下例搜索输入字符串中数字第一次出现的位置。如果发现了数字,则返回该数字的位置,否则返回 -1。在此示例中,输入字符串被显式设置为字符串常量,但它也可被设置为等于字符串类型的数据库字段。
例如,对于输入字符串“The 7 Dwarves”,公式返回 5,即数字 7 的位置。
Local StringVar inString :
=
"
The 7 Dwarves
"
;
Local NumberVar strLen : = Length (inString);
Local NumberVar result : = - 1 ;
Local NumberVar i : = 1 ;
While i <= strLen And result = - 1 Do
(
Local StringVar c : = inString [i];
If NumericText (c) Then
result : = i;
i : = i + 1 ;
);
result
Local NumberVar strLen : = Length (inString);
Local NumberVar result : = - 1 ;
Local NumberVar i : = 1 ;
While i <= strLen And result = - 1 Do
(
Local StringVar c : = inString [i];
If NumericText (c) Then
result : = i;
i : = i + 1 ;
);
result