: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

【repeat-until loop循环语句】

【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 循环是底部测试循环,所以它总是至少执行一次。

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表