循环语句
通常情况下,程序是按顺序执行的,程序中的第一个语句先执行,接着是第二个语句,依此类推。
但有的时候,我们可能需要多次执行同一个语句或者有多个语句组成的块代码,这是就需要用到循环语句。
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