控制语句概述
控制语句设计用来组织其他语句的非线性执行,包括声明、表达式和嵌套的控制语句。它们可以分为三种类型:
- 重复语句,也称为循环结构
- 条件语句,用于从多个备选操作分支中选择一个
- 跳转语句,在必要情况下改变前两种语句的标准行为
重复语句和选择语句包含一个头(每个头有不同的语法),后接一个受控语句。如果受控部分需要指定多个语句,它会使用复合语句。此特性不适用于跳转语句。跳转语句只移动内部指针,程序会根据特定规则(这些我们将在后续章节中讨论)基于内部指针决定当前要执行哪条语句。
在最简单的情况下,如果没有控制语句,这些语句将按照代码块中的编写顺序依次执行(一个接一个)(尤其是在脚本的 OnStart 主函数的函数体中)。如果在代码块中遇到调用另一个函数的表达式,程序根据相同的线性原理,开始执行被调用函数内部的语句,全部执行完毕后,程序将回到调用代码块,继续执行函数调用后的下一条语句。控制语句可以显著改变这种工作逻辑。
你可以在循环结构内部使用选择语句,也可以在选择语句内使用循环结构,并且嵌套层级不受限制。然而,嵌套过多会让程序员难以理解程序。因此,建议将代码块分配(转移)到(一个或多个)函数中:在每个函数内部,保持嵌套层级不超过 2 到 3 层比较合理。
MQL5 支持以下重复语句:
- for 循环结构
- while 循环结构
- do 循环结构
所有循环允许一个或多个语句被执行给定的次数,或者直到满足某个布尔条件。循环语句内容执行一次就称为一次迭代。数组通常在循环结构中处理或者执行周期性的重复操作(通常在 脚本 或 服务中)。
条件语句包括:
- 选择时基于 if
- 选择时基于 switch
前者允许你指定一个或多个条件,根据这些条件的真假来执行分配给它们的选项(一个或多个语句)后者计算整数类型的表达式,并根据其值从中选择一个选项。
最后是跳转语句,如下所示:
- break
- continue
- return
稍后我们将逐个详细分析。
与 C++ 不同,MQL5 不使用 go to 语句。