龙听期货论坛's Archiver

龙听 发表于 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 年):[code]
repeat

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

until trueFalseExpression = true;
[/code]在第一个循环周期之后,评估真/假表达式。如果为假,则开始新的循环;如果为真,则循环停止。

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

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

此功能的示例如下:[code]Variables:
    z(0);

z = 10;   

repeat
    Print("z = ", z);
    z = z + 1;
until z > 5;[/code][code]//> z =   10.00[/code]这个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)之间添加分号 ( )来选择添加它们,如下所示:[code]repeat begin

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

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

MultiCharts PowerLanguage 的 repeat-until 循环示例

一个基本的重复直到循环如下:[code]Variables:
    x(0);

x = 0;

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

概括

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

页: [1]