[NAME] ALL.dao.control.if-else [TITLE] If-Else条件控制 [DESCRIPTION] If-else 控制程序的分支运行,它可以根据条件表达式的不同值 选择执行不同的代码块。 0.1 定义 1 ControlBlock ::= Statement | '{' [ StatementBlock ] '}' 2 3 IfElseStmt ::= 'if' '(' [ LocalVarDeclaration ';' ] Expression ')' ControlBlock 4 { 'else' 'if' '(' [ LocalVarDeclaration ';' ] Expression ')' ControlBlock } 5 [ 'else' ControlBlock ] 0.2 用法 0.2.1 单个语句 这大概是if语句的最简单用法。 这种用法基本如下: 1 if( condition ) statement 这里仅当condition被求值为真(非零数字或枚举值), statement才被执行。 0.2.2 单个代码块 如果需要在if的条件测试为真是执行多个命令语句, 一对大括号可用来将这些语句组织为一个代码块。 当然这样的代码块也可嵌套地包括其他代码块。 1 if( condition ) { 2 block 3 } 0.2.3 带Else分支的语句或代码块 如果需要在if的条件测试为假时执行另一个语句或代码块, else分支语句可用来做到这一点。 1 if( condition ) 2 statement1 3 else 4 statement2 5 6 if( condition ) { 7 block1 8 } else { 9 block2 10 } 0.2.4 多个条件语句和代码块 如果有多个条件且要对他们逐一做测试并决定是否执行与之对应的语句和代码块, 那么else if语句可 被用上。 1 if( condition1 ){ 2 block1; 3 }else if( condition2 ){ 4 block2; 5 }else{ 6 block3; 7 } 如果条件condition1为真,那么代码块block1将被执行; 否则如果条件condition2为真,那么代码块 block2将被执行; 再否则代码块block3将被执行。零个或多个else if语句, 以及零个或一个else语句可 以在一个if else结构里使用。 0.2.5 在条件表达式前声明变量 在每个条件表达式前都可以做声明变量: 1 if( declaration; condition ) { 2 block 3 } For example, 1 if( rnd = rand(100); rnd > 50 ) io.writeln( "random number is >50" ); 2 if( var rnd = rand(100); rnd > 50 ) io.writeln( "random number is >50" ); 0.3 更多例子 1 a = 5 2 if( a > 1 ) io.writeln( 'a > 1' ) 3 4 if( a > 2 ) 5 io.writeln( 'a > 2' ) 6 else 7 io.writeln( 'a <= 2' ) 8 9 if( a < 3 ) 10 io.writeln( 'a < 3' ) 11 else if( a < 4 ) 12 io.writeln( 'a < 4' ) 13 else 14 io.writeln( 'a >= 4' )