[NAME]
ALL.dao.control.for

[TITLE]
For循环控制

[DESCRIPTION]

道语言支持以下几种for循环控制: 
  *  For-in 循环;
  *  区间 for 循环;
  *  C 风格 for 循环; 

 0.1   定义  
     
   1  ForIn ::= 'for' '(' ['var'|'invar'] Identifier 'in' Expression {';' Identifier 'in' Expression} ')'
   2                ControlBlock
   3  
   4  RangeFor ::= 'for' '(' ['var'|'invar'] Identifier '=' Expression ':' [Expression ':'] Expression ')'
   5                ControlBlock
   6  
   7  CFor  ::= 'for' '(' [ LocalVarDeclaration ] ';' [ Expression ] ';' [ ExpressionList ] ')'
   8                ControlBlock
   9  
  10  ForStmt ::= ForIn | RangeFor | CFor
     


 0.2   For-In  

For-in循环通常可用来历遍容器类对象里的元素。

它最常用于历遍列表的元素: 
     
   1  numbers = { 1, 2, 3, 4, 5 }
   2  for( num in numbers ) io.writeln( num )
     


For-in 循环也可用来历遍关联表的键值: 
     
   1  mapping = { 'AA'=>11, 'BB'=>22, 'CC'=>33 }
   2  for( pair in mapping ) io.writeln( pair )
     
这里的循环变量pair将以元组的形式表示关联表里的一对键值。

在同一个for-in 循环,多个in表达式可用来同时历遍多个容器类对象: 
     
   1  numbers = { 1, 2, 3, 4, 5 }
   2  mapping = { 'AA'=>11, 'BB'=>22, 'CC'=>33 }
   3  for( num in numbers; pair in mapping ) io.writeln( num, pair )
     


 0.3   区间For循环  

区间For循环使用算术级数确定一个循环的循环方式。 这种算术级数的定义由一初始值,一可选的步长值
和一终止值构成。 
     
   1  for( index = 1 : 2 : 10 ) { # 步长值 = 2;
   2      io.writeln( index )
   3  }
   4  for( index = 1 : 10 ) {  # 步长值 = 1;
   5      io.writeln( index )
   6  }
     
这里的循环由index=1开始,然后每个循环周期里, 循环变量index的值都加二或者一, 当其值大于10时
,循环将终止。

 0.4   C风格For循环  

C风格For循环是一个非常灵活的循环结构。 它的基本用法如下: 
     
   1  for( init; condition; step ){
   2     block;
   3  }
     
这种循环执行步骤的关键逻辑顺序如下: 
  1. 执行初始表达式init;
  2. 检查条件表达式condition;
  3. 如果检查结果为真,执行下一步,否则退出循环;
  4. 执行代码块block;
  5. 执行步长表达式step,然后跳到第二步; 
这种循环的具体执行步骤将取决于实现, 但其逻辑步骤不变。

例子: 
     
   1  for(i=0; i<3; ++i){
   2     io.writeln( i );
   3  }
   4  for(var i, j=0; i<10; ++i, j+=2){
   5      io.writeln( i, j );
   6  }