MT5,外汇,人工神经网络,编程,EA,简洁之1.9「流程结构详解」

论坛 期权论坛 期权     
期权匿名问答   2022-6-21 01:12   7723   1
【流程结构详解】

一、操作符

语言操作符必须对执行完成任务的一些运算法操作进行描述。程序本身是这样的序列语句。

语句逐个随后以分号分离。

操作符

描述

Compound operator {}

花括号 {}括起来的一个或者多个任一类型操作符

Expression operator (;)

分号 (;)结尾的表达式

return 操作符

终止当前函数和返回控制访问程序

if-else 假设操作符

需要作出选择时使用

?: 假设操作符

if-else假设操作符的简单类似物

switch 选择操作符

控制与表达式值一致的操作符

while 循环操作符

执行操作符直到表达式变成错误。每次重复前都要检查表达式。

for 循环操作符

执行操作符直到表达式变成错误。每次重复前都要检查表达式。

do-while 循环操作符

执行操作符直到表达式变成错误。每次循环后进行检测。循环主体至少执行一次。

break 操作符

终止执行最近的外部操作符, while,do-while 或者 for

continue 操作符

控制最近的外部循环操作符 while,do-while 或者for的起点。

new 操作符

创建大小合适的对象以及返回创建对象的描述符。

delete 操作符

删除新操作符创建的对象


二、详解与例子

?

格式

(条件)?值1:值2;

例子

int a=0;

int b=0;

int c=(a==b)?0:1;

结果c=0


if

格式

if (条件)

{语句;}

else

{语句;}

例子

if(x>1)

if(y==2)

z=5;

else

z=6;

例子

if(x>l)

{

if(y==2)

z=5;

}

else

z=6;

例子

if(x=='a')

{

y=1;

}

else

if(x=='b')

{

y=2;

z=3;

}

else

if(x=='c')

{

y=4;

}

else

Print("ERROR");

例子

void OnStart()

{

int a=1;

if((a==2) && f()==true) //注意:当(a==2)条件不成立时,系统不调用f()

Print("&");

else

Print("%");

}

bool f()

{

Print("*");

return(true);

}

例子

if(a==1)

Print("a=1");


while

格式

while(条件)

{

语句;

}

例子

while(k<n && !IsStopped()) //条件处理就循环运行

{

if(IsStopped())

break; //退出whlie

...

k++;

}


do..while

格式

do

{

语句;

}

while(条件);

例子

do

{

...

i++; // 没有这个操作符会出现一个无限循环!

break;//退出do..while

}

while(i<counterFibonacci && !IsStopped());

例子

//计算斐波纳契数列

int counterFibonacci=15;

int i=0,first=0,second=1;

int currentFibonacciNumber;

do

{

currentFibonacciNumber=first+second;

Print("i = ",i," currentFibonacciNumber = ",currentFibonacciNumber);

first=second;

second=currentFibonacciNumber;

i++; // 没有这个操作符会出现一个无限循环!

}

while(i<counterFibonacci && !IsStopped());


switch(x) "x"只能是"整数常数" ,每项都必须有break退出,要不然会一直执行下去

格式

switch(整数常数变量名)

{

case'A':

语句;

break;

case'B':

语句;

break;

default:

语句;

}

例子

switch(x) // "x"只能是"整数常数"

{

case'A':

Print("CASE A");

break;

case'B': //将执行" case 'C'"的语句

case'C':

Print("CASE B or C");

break;

default:

Print("NOT A, B or C");

break;

}

例子

string res="";

int i=0;

switch(i) //"i"只能是"整数常数"

{

case1:

res=i;

break;

default:

res="default";

break;

case2:

res=i;

break;

case3:

res=i;

break;

}

Print(res);

/*

结果

默认

*/


for

格式

for(初始化值;条件;改变值)

{

语句;

}

例子

for(x=1;x<=7000;x++)

{

if(IsStopped()) //mql5程序被令停止操作,IsStopped()返回true

break; //退出for

...

}

//--------------------------例子--------------------------

for(x=1;x<=7000;x++)

{

if(IsStopped()) //mql5程序被令停止操作,IsStopped()返回true

break;

Print(MathPower(x,2));

}

//--------------------------例子--------------------------

for(;!IsStopped();)

{

Print(MathPower(x,2));

x++;

if(x>10) break;

}

//--------------------------例子--------------------------

//mql5程序被令停止操作,IsStopped()返回true

for(i=0,j=n-l;i<n && !IsStopped();i++,j--) a=a[j];

//--------------------------例子--------------------------

for (int i=0;i<5;i++)

{

Print(i);

}

//输出:

0

1

2

3

4


break与continue

break操作符终止 switchwhiledo-while 或者 for 的执行

continue跳入下一次 while, do-while 或者 for操作符的循环

格式

continue;

break;

例子

for(int i=0; i<array_size; i++)

{

if(a==0)

continue;

if(a==1)

break;

}

例子

//搜索第一个零元素

for(i=0; i<array_size; i++)

if(array==0)

break;////退出循环(while,do-while 或者 for)

例子

//所有非零元素总和

int func(int array[])

{

int array_size=ArraySize(array);

int sum=0;

for(int i=0; i<array_size; i++)

{

if(a==0)

continue; //重新循环(while,do-while 或者 for)

sum+=a;

}

return(sum);

}

分享到 :
0 人收藏

1 个回复

倒序浏览
2#
期权匿名回答  16级独孤 | 2022-6-21 01:13:13 发帖IP地址来自 北京
转发了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP