前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MQL5从入门到精通【第四章】(二)循环语句

MQL5从入门到精通【第四章】(二)循环语句

作者头像
程序员小助手
发布2020-04-08 11:19:24
7390
发布2020-04-08 11:19:24
举报

# 循环语句

程序中除了条件判断,就属循环用的多。为什么?同样的动作,你做一万次,累不累呀?用个循环,装一个变量,让计算机自己算去。您还别说,计算机就爱这个循环操作,那是他的老本行啊。【CPU执行周期了解下】

MQL5中提供了3中循环方式,while, do - while, for。

## while语句

这是MQL内最简单的循环句子。判断条件成立,一直执行下去。说的不明白,看例子:

bool c = true;
int count = 1;
while(c==true) // 当然成立
{
    Print(count);
    if(count == 5) c = false; // 注意,就靠这个赋值操作,while循环得以终止
    count ++;
}

这是在while内部使用判断,然后修改循环标志位c,终结了while循环。您也可以使用下面的方式:

int count = 1;
while(count <= 5)
{
    Print(count);
    count ++;
}

因为count自加,那么到6的时候,while内的判断条件编程 6 <= 5,不成立,终止了while。也成功跳出了循环。

优化之后的程序,少了一个变量,少了一句条件判断和赋值,代码量减少了2行。效率丝毫不差,代码更易阅读了。所以下方代码更好。

## do-while语句

while语句是判断条件为假,直接退出,不执行。下面说一说 do - while。这个与while略不同。是直接执行,先执行再判断。看例子:

int count = 1;
do
{
    Print(count); // 输出: 1, 2, 3, 4, 5
    count++;
}
while(count < 5)

看到了吗,如果想要输出与while相同的语句,此处的判断变为 count < 5,没有判断=。因为先执行了do语句块。输出count=5后,执行了count++,此时count=6。接着while执行判断 count < 5,不成立,退出。如果条件写成 count <= 5,那就会多输出一个6。

您记清楚这一点区别了吗?

如果让我说,更倾向于while语句直接来,符合直觉,写起来结构也比do-while简洁。

## for语句

这个放最后介绍,其实是程序里第一受欢迎的语句。无论哪种编程语言,无一例外均提供了for循环的实现,而且,与c最早发明的用法,基本无二。

for(int count = 1; count <= 5; count++){
    Print(count);
}

第一个表达式,在循环开始前无条件求值(并执行)一次;

第二个表达式,在每次循环开始前求值。如果值为TRUE,则继续循环,执行嵌套的循环语句。如果值为FALSE,则终止循环。

第三个表达式,在每次循环之后被求值(并执行)。

这个for循环丧心病狂到什么地步,这是哪个表达式,可以一个都不用写,单纯写个分号就可以。

for(;;){}

请问这个玩意儿能干什么?等价于 while(true){},等价于 do{}while(true)。无限循环!

书归正传。

for循环很好用,良心之作,遵循其定义方式,您可以写出万花筒式的操作语句:

for(int a = 1, b = 2; a <= 5; a++, b += 2)
{
    Print("a=",a," b=",b); // 输出: "a=1 b=2", "a=2 b=4", ...
}

第一个表达式,初始化 a=1,b=2

第二个表达式,如果满足,for循环结束。

第三个表达式,让每次a = a+1, b = b + 2。

所以基于上述分析,输出结果也确切可期。

## break语句

手动跳出循环,或者提前跳出循环,就是break了。名字与其含义相同。

for(int count = 1; count <= 5; count++)
{
    if(count == 3) break;
    Print(count); // 输出: 1, 2
}

当循环进行到count = 3时,break,跳出整个循环。

## continue语句

上面的break终止了循环并跳出,那有没有说这轮循环我不用执行某些语句,让for接续执行下一轮呢?有的,continue就是做这个的。

int count = 1;
while(count <= 5)
{
    if(count == 3) continue;
    Print(count); // 输出: 1, 2, 4, 5
    count++
}

还是这个例子。=3的时候,这一轮可以不用执行。那么直接continue,告诉for,下一个吧,这轮到这儿就可以了。

以上语句可灵活使用,共同控制程序运行。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 循环语句
  • ## while语句
  • ## do-while语句
  • ## for语句
  • ## break语句
  • ## continue语句
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档