【流程结构详解】
一、操作符
语言操作符必须对执行完成任务的一些运算法操作进行描述。程序本身是这样的序列语句。
语句逐个随后以分号分离。
操作符
| 描述
| 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操作符终止 switch, while, do-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);
}
|
|