Board logo

标题: 【repeat-until loop循环语句】 [打印本页]

作者: 龙听    时间: 2021-9-12 18:22     标题: 【repeat-until loop循环语句】

for-to loop and down-to 重复的编程代码的循环周期的一个固定的量。只要表达式为真,while 循环就会继续。但都要求循环的表达式在执行循环代码之前至少为真一次。如果您总是想执行至少一个循环周期怎么办?

PowerLanguage 中的重复直到循环

该repeat-until循环重复,直到真/假表达式为真编程代码(亨利MultiCharts,2014)。repeat-until 循环具有以下默认模式(MultiCharts Support,personal communication,2014 年 10 月 16 日;TJ,2010 年):
  1. repeat

  2.     // Code to execute repeatedly
  3.     // and that makes the 'trueFalseExpression'
  4.     // true at some point.

  5. until trueFalseExpression = true;
复制代码
在第一个循环周期之后,评估真/假表达式。如果为假,则开始新的循环;如果为真,则循环停止。

经过底部测试的 PowerLanguage repeat-until 循环

repeat-until 循环是底部求值循环,就像 C#(参见 Dorman,2010)和 C++(参见 Lischner,2003)中的 do-while 循环一样。此类循环在执行循环内的代码后测试真/假表达式,因此无论真/假表达式如何,它们总是至少运行一次。

此功能的示例如下:
  1. Variables:
  2.     z(0);

  3. z = 10;   

  4. repeat
  5.     Print("z = ", z);
  6.     z = z + 1;
  7. until z > 5;
复制代码
  1. //> z =   10.00
复制代码
这个repeat-until 循环运行直到z大于5。但是当这个变量在第一个循环周期中的值为10 时,循环内的代码仍然被执行。这是因为在第一个循环周期后z > 5第一次测试表达式。

换句话说,PowerLanguage 不知道不应在第一个循环周期执行循环,因为这是在之后进行测试的。

重复直到循环编程错误

与while循环一样,程序员应该确保repeat-until循环在某个时刻退出以防止无限循环。向下循环和for-to 循环不太可能出现这种错误,因为它们会在每个循环周期后自动更改计数器变量(参见 MultiCharts Wiki,2012)。

如果真/假表达式永远不会变为真,则重复直到循环可以永远持续下去。在执行脚本之前,请仔细检查您的编程代码,尤其是当 repeat-until 循环具有复杂逻辑时。要修复无限循环错误,请参阅对无限 PowerLanguage 循环进行故障排除。

重复直到循环和开始和结束关键字

repeat-until 循环是唯一不需要beginandend关键字的PowerLanguage 循环。但是可以通过;在end和until(Henry MultiCharts, 2014)之间添加分号 ( )来选择添加它们,如下所示:
  1. repeat begin

  2.     // Code to execute repeatedly
  3.     // and that makes the 'trueFalseExpression'
  4.     // true at some point.

  5. end; until trueFalseExpression = true;
复制代码
为那个分号对我来说不合适并且可能会引起混淆,所以其他重复直到循环示例不使用beginandend关键字。

MultiCharts PowerLanguage 的 repeat-until 循环示例

一个基本的重复直到循环如下:
  1. Variables:
  2.     x(0);

  3. x = 0;

  4. repeat
  5.     Print("x = ", x);
  6.     x = x + 1;
  7. until x > 4;
复制代码
  1. //> x =    0.00
  2. //> x =    1.00
  3. //> x =    2.00
  4. //> x =    3.00
  5. //> x =    4.00
复制代码
这个repeat-until循环输出x带有Print()关键字的值,然后在每个循环周期中将此变量增加1。循环继续直到 的值x大于 4。

概括

重复直到循环一直持续到它的真/假表达式为真。当此表达式永远不会变为真时,可能会触发无限循环。因为repeat-until 循环是底部测试循环,所以它总是至少执行一次。




欢迎光临 龙听期货论坛 (http://www.qhlt.cn/) Powered by Discuz! 7.2