在上一课我们已经知道了循环是改变程序正常流程(自上而下)的两种方式的一种,第二种方式是选择。
选择在程序中依靠一个表达式的值使其一次性跳转到程序的不同的部分。
下面是MQL4中可用到的几种选择声明:
If语句。
If语句是最简单的选择声明,例:
if(x<100)
Print("hi");
if关键字后面是小括号,小括号里是测试表达式(x<100)。当测试表达式的值为真的时候,if主体将被执行(print(“hi”);)。如果测试表达式的值为假,将跳转到if语句后面执行其后的语句。
下面是if声明的流程图:
if主体中的多语句:
像循环一样,if声明也可以通过大括号{}来包含多个语句,例:
if(current_price==stop_lose)
{
Print("youhavetoclosetheorder");
PlaySound("warning.wav");
}
嵌套:
选择和循环可以互相嵌套。你可以在循环中嵌套一个选择语句,或者在选择语句中嵌套一个循环,或者循环中嵌套一个循环,或者选择语句嵌套选择语句。例:
for(inti=2;i<10;i++)
if(i%2==0)
{
Print(“这不是一个素数。”);
PlaySound(“wrian.wav”);
}
上面的例子中,for循环嵌套了一个if语句。
注意:循环的主体部分并没有用大括号包围,这是因为if语句和它的主体被认为是一个单独的语句。
if….else语句
if语句使我们在条件为真是做某些事情,设想我们还想在条件为假的时候做另外的事情,该怎么办呢?这时就用到了if……else语句。
例如:
if(current_price>stop_lose)
Print("It’stoolatetostop,pleasestop!");
else
Print("youplayingwelltoday!");
在上例中,如果测试表达式为真,程序给出一个消息;如果测试表达式为假,程序给出另一个消息。
下面是if……else语句的流程图:
if…..else语句的嵌套:
你可以在if语句中嵌套if….else语句,也可以在if….else语句中嵌套if…..else语句。例:
if(current_price>stop_lose)
Print("It’stoolatetostop,pleasestop!");
if(current_price==stop_lose)
Print("It’stimetostop!");
else
Print("youplayingwelltoday!");
在if…else语句的嵌套中有一个潜在的问题,你可能不经意的把else匹配给一个错误的if。
有两种办法来解决这个问题:
你可以用大括号包含中if….else语句。例:
if(current_price>stop_lose)
{
Print("It’stoolatetostop,pleasestop!");
if(current_price==stop_lose)
Print("It’stimetostop!");
else
Print("youplayingwelltoday!");
}
把else匹配给最近的if(在上面的例子中是if(current_price==stop_lose))。
switch语句
如果你有一个巨大的选择树,并且所有的选择依赖一个相同变量的值,那么你可以使用switch语句。
例:
switch(x)
{
case''A'':
Print("CASEA");
break;
case''B'':
case''C'':
Print("CASEBorC");
break;
default:
Print("NOTA,BorC");
break;
}
在上面的例子中,switch跟着一个小括号,小括号里包含switch常数,switch可以是一个整数,一个字符或者一个常数表达式。常数表达式不能包含变量,例如:
caseX+Y:非法的switch常数。
switch语句匹配常量X到case常量中的一个。
当case==’A’,程序将输出CASEA并且break语句将告诉控制跳出switch代码段。
当case==’B’或者case==’C’,程序将输出CASEBORC,这是因为CASE‘B’后面没有break语句。
如果casex!=任何CASE常量,switch将执行defaultcase,并输出NOTA,BorC。
下面是switch语句的流程图:
最后感谢大家,欢迎回帖批评指正。
|
|