循环语句

通常情况下,程序是按顺序执行的,程序中的第一个语句先执行,接着是第二个语句,依此类推。
但有的时候,我们可能需要多次执行同一个语句或者有多个语句组成的块代码,这是就需要用到循环语句。
Silk语言有while和for两种类型的循环语句:

while循环语句
while循环语句由一个条件表达式后跟一个或多个语句组成,多个语句用大括号括起来组成代码块,如果只有一个语句大括号可以省略。
while语句的语法:
while(condition)
{
   statement(s);
}

condition可以是任意的表达式,当表达式的结果为 true 时执行循环,为 false 时,退出循环。
statement(s) 可以是一个单独的语句,也可以是多个语句组成的代码块。

while 语句例子:
i=0;
while(i<10//条件表达式
{
  // 如果表达式为true将执行的语句
  print("i=",i);
  i++;
}

如果表达式为 true,则 while 语句内的代码块将被反复循环执行。上面程序while循环执行了10次,结果如下:
i= 0
i= 1
i= 2
i= 3
i= 4
i= 5
i= 6
i= 7
i= 8
i= 9



for循环语句
for循环允许您编写一个执行指定次数的循环控制结构。
for语句语法:
for ( init; condition; update )
{
   statement(s);
}

 for 循环的控制流:
  • init为初始化语句, 会首先被执行,且只会执行一次。这里可以初始化任何循环控制变量。init可以为多条语句,用逗号分隔。
  • condition为任意的条件表达式。如果为true,则执行循环里的语句或语句块statement(s)。如果为 false,则不执行statement(s)。
  • 当执行完statement(s),控制流会跳回上面的 update 语句。update语句会更新循环控制变量。update可以为多条语句,用逗号分隔。
  • condition再次被判断。如果为true,则执行循环,这个过程会不断重复(循环主体statement(s),然后 update,然后再判断condition)。当条件变为false时, 循环终止。
init,condition,update都可以省略,这样for语句就变成for(;;),condition永远为true,相当于while (1),这样就进入了死循环,需要在循环体里面条件判断并用break语句退出循环。

for循环语句例子:
for(i=0;i<10;i++)
{
    print("i=",i);
}
结果如下:
i= 0
i= 1
i= 2
i= 3
i= 4
i= 5
i= 6
i= 7
i= 8
i= 9


嵌套循环
如果在一个循环内使用另一个循环,就变成嵌套循环。嵌套循环可以有2重,3重,甚至n重循环。
嵌套for循环例子:
 
for (i=1;i<10;i++)
{
    for(j=1;j<=i;j++)
    {
        result=j*i;
        print(j,"x",i,"=",result);
    }
    print("");
}
这段嵌套for循环代码将打印乘法口诀表。

有时我们需要主动跳出循环或跳过当前循环而执行下一次循环,这时我们将用到break和continue循环控制语句:

break语句

当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
如果是嵌套循环,break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。
break语句例子:
  
 //while 循环执行
   a = 1;
   while( a < 10 )
   {
      print("a =", a);
      a++;
      if( a > 5)
      {
          //使用 break 语句终止循环
          break;
      }
      print("while");
   }
   print("end");

结果如下:
a = 1
while
a = 2
while
a = 3
while
a = 4
while
a = 5
end

continue 语句
continue它不是终止循环,而是会跳过当前循环中的代码,强迫开始下一次循环。
对于 for 循环,continue 语句执行后update语句仍然会执行;而对于 while 循环,continue 语句会重新执行条件判断语句。
continue语句例子:
  
a = 1;
while( a < 10 )
{
    if( a == 5)
    {
        a++;
        continue;
    }
    printf("a = %d\n", a);
    a++;
}
结果如下:
a = 1
a = 2
a = 3
a = 4
a = 6
a = 7
a = 8
a = 9