循环语句

有其他编程语言基础的可以跳过本章节

循环,指的是在某种条件成立的情况下重复的执行一片代码段。

while 循环语句

  1. while(判断条件)
  2. {
  3. 判断条件成立时重复执行的代码段
  4. }

判断条件可以是任何表达式,任何非零、或非空(null)的值均为true,当判断条件为假false时,循环结束。

例子:

  1. function main(parm)
  2. {
  3. var a = 10;
  4. while(a > 8)
  5. {
  6. print "a = " + a;
  7. a -= 1;
  8. print "a - 1 = " + a;
  9. }
  10. print "while end a = " + a;
  11. }

结果:

  1. a = 10;
  2. a - 1 = 9
  3. a = 9;
  4. a - 1 = 8
  5. while end a = 8;

do/while 循环语句

do/while 循环是 while 循环的变体。该循环会在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会重复这个循环。

  1. do
  2. {
  3. 判断条件成立时重复执行的代码段
  4. }
  5. while(判断条件);

例子:

  1. function main(parm)
  2. {
  3. var a = 10;
  4. do
  5. {
  6. print "a = " + a;
  7. a -= 1;
  8. print "a - 1 = " + a;
  9. }
  10. while(a > 8);
  11. print "do while end a = " + a;
  12. }

结果:

  1. a = 10;
  2. a - 1 = 9
  3. a = 9;
  4. a - 1 = 8
  5. do while end a = 8;

看结果do/while和while没有区别,我们再通过一个。

  1. function main(parm)
  2. {
  3. var a = 10;
  4. while(a > 10) //注意,这次是大于10
  5. {
  6. print "a = " + a;
  7. a -= 1;
  8. print "a - 1 = " + a;
  9. }
  10. print "while end a = " + a;
  11. print "============================";
  12. a = 10;
  13. do
  14. {
  15. print "a = " + a;
  16. a -= 1;
  17. print "a - 1 = " + a;
  18. }
  19. while(a > 10);
  20. print "do while end a = " + a;
  21. }

结果:

  1. while end a = 10;

a = 10 a - 1 = 9 do while end a = 9

while先判断条件,a > 10为false,所以没有进循环,而do/while先进一次循环才判断条件。

for 循环语句

for循环的作用和while,do/while相似,只是语句写法上不同。但是for循环的使用频率在你编码的过程中肯定高于前两种。

  1. for(语句1 ; 判断条件 ; 语句2)
  2. {
  3. 判断条件成立时重复执行的代码段
  4. }

进入循环之前:语句1先执行,且只会被执行一次。

进入循环后:判断条件 -> 判断条件成立时重复执行的代码段 -> 语句2 -> 判断条件 -> 判断条件成立时重复执行的代码段 -> 语句2 ….一直循环

例子:

  1. function main(parm)
  2. {
  3. for(var a = 10 ; a > 8 ; a--)
  4. {
  5. print "for a = " + a;
  6. }
  7. print "for end a = " + a;
  8. }

结果:

  1. for a = 10
  2. for a = 9
  3. for end a = 8

break 语句

break 语句用于跳出循环。对于三种循环语句通用

例子:

  1. function main(parm)
  2. {
  3. for(var a = 10 ; a > 7 ; a--)
  4. {
  5. if(a == 9)
  6. {
  7. print "for a == 10 is true,break";
  8. break;
  9. }
  10. print "for a = " + a;
  11. }
  12. print "for end a = " + a;
  13. }

结果:

  1. for a = 10
  2. for a == 9 is true,break
  3. for end a = 9

可以看出当遇到break时候直接结束了整个循环的执行。

conitnue 语句

conitnue 语句用于结束本次循环。对于三种循环语句通用

例子:

  1. function main(parm)
  2. {
  3. for(var a = 10 ; a > 7 ; a--)
  4. {
  5. if(a == 9)
  6. {
  7. print "for a == 10 is true,conitnue";
  8. conitnue;
  9. }
  10. print "for a = " + a;
  11. }
  12. print "for end a = " + a;
  13. }

结果:

  1. for a = 10
  2. for a == 9 is true,conitnue
  3. for a = 8
  4. for end a = 7

可以看出当遇到continue时候直接结束了a==9这一次的循环,整个循环还在继续。

foreach 与 foreach_reverse

foreach和foreach_reverse是一个特殊的循环语句,用来对容器所管理的元素进行遍历,目前支持Array,Map,List。会在容器章节详细讲解。

foreach为正序遍历foreach_reverse为倒序遍历。

  1. foreach(key,value : 容器对象)
  2. {
  3. 循环语句
  4. }

例子:

  1. function main(parm)
  2. {
  3. var array = [1,2,3];
  4. print "foreach:";
  5. foreach(k,v : array)
  6. {
  7. print "k:" + k + ",v=" + v;
  8. }
  9. print "foreach_reverse:";
  10. foreach_reverse(k,v : array)
  11. {
  12. print "k:" + k + ",v=" + v;
  13. }
  14. }

结果:

  1. foreach:
  2. k:0,v=1
  3. k:1,v=2
  4. k:2,v=3
  5. foreach_reverse:
  6. k:2,v=3
  7. k:1,v=2
  8. k:0,v=1

foreach_del 语句用来在foreach循环中删除当前节点,foreach循环中不支持使用容器对象其他方法来删除元素

例子:

  1. function main(parm)
  2. {
  3. var array = [1,2,3];
  4. foreach(k,v : array)
  5. {
  6. if(v == 2)
  7. {
  8. foreach_del;
  9. break;
  10. }
  11. }
  12. print "foreach_reverse:";
  13. foreach_reverse(k,v : array)
  14. {
  15. print "k:" + k + ",v=" + v;
  16. }
  17. }

结果:

  1. foreach_reverse:
  2. k:1,v=3
  3. k:0,v=1

多线程下,foreach语句中如果包含了foreach_del语句,则需要开发者加同步锁,否则在多个线程同时遍历对象时会抛出异常。