Dart-循环

    目录

有时,某些指令需要重复执行。循环是一种理想的方法。循环表示必须重复的一组指令。在循环的上下文中,重复被称为迭代 。
下图说明了循环的分类
循环分类迭代次数是确定/固定的循环称为确定循环 。

循环描述
for 循环for循环是一个明确的循环的实现
for循环执行代码块指定的次数
它可用于迭代一组固定的值,例如数组
for ... in 循环for … in循环用于循环对象的属性

当循环中的迭代次数不确定或未知时,将使用不定循环。可以使用以下方式实现确定循环:

循环描述
while 循环每次指定的条件求值为true时,while循环都会执行指令
换句话说,循环在执行代码块之前评估条件
do…while循环do … while循环类似于while循环
只是do … while循环不会在第一次循环执行时评估条件

Dart的 循环控制语句:

循环描述
break 语句break语句用来作为控制了结构的
在循环中使用break会导致程序退出循环
continue 语句continue语句跳过当前迭代的后续语句
并采取控制回到循环的开始

 

for 循环

 
for循环是一个明确的循环的实现。for循环执行代码块指定的次数。它可用于迭代一组固定的值,例如数组。
以下是 for 循环的语法。

for (initial_count_value; termination-condition; step) {
   //statements
}

例如

  var num = 5;
  var factorial = 1;
  
  for( var i = num ; i >= 1; i-- ) {
    print("${(factorial)} * ${(i)} = ${(factorial *= i)}");
  }

输出

1 * 5 = 5
5 * 4 = 20
20 * 3 = 60
60 * 2 = 120
120 * 1 = 120

for 循环有三个部分:初始化(i = num),所述条件(i> = 1)和最终个表达式(i--)。

程序计算数字5的阶乘并显示相同的阶乘。for循环生成从5到1的数字序列,计算每次迭代中数字的乘积。

通过使用逗号运算符可以在for循环中组合多个赋值和最终表达式。

例如

  for(var temp, i = 0, j = 1; j<30; temp = i, i = j, j = i + temp) {
    print('temp-${(temp)}; i-${(i)},j-${(j)}');
  }

输出

temp-null; i-0,j-1
temp-0; i-1,j-1
temp-1; i-1,j-2
temp-1; i-2,j-3
temp-2; i-3,j-5
temp-3; i-5,j-8
temp-5; i-8,j-13
temp-8; i-13,j-21

 

for...in 循环

 
for ... in循环用于循环对象的属性。
以下是for ... in循环的语法。

for (variablename in object){  
   statement or block to execute  
}

在每次迭代中,来自对象的一个​​属性被分配给变量名称,并且此循环继续,直到对象的所有属性都用完为止。
例如:

  var obj = [12,13,14];

  for (var prop in obj) {
    print(prop);
  }

输出结果:

12
13
14

 

while 循环

 
while 循环执行指令指定的每个条件计算为真时。换句话说,循环在执行代码块之前评估条件。
下图显示了 while 循环的流程图
while 循环以下是 while 循环的语法。

while (expression) {
   Statement(s) to be executed if expression is true  
}

例如

  var num = 5;
  var factorial = 1;

  while(num >=1) {
    print("before - num:${(num)}, factorial:${(factorial)}");
    factorial = factorial * num;
    num--;
    print("after - num:${(num)}, factorial:${(factorial)}");
  }

输出结果:

before - num:5, factorial:1
after - num:4, factorial:5
before - num:4, factorial:5
after - num:3, factorial:20
before - num:3, factorial:20
after - num:2, factorial:60
before - num:2, factorial:60
after - num:1, factorial:120
before - num:1, factorial:120
after - num:0, factorial:120

 

do...while 循环

 
do ... while循环类似于while循环,只是do ... while循环不会在第一次循环执行时评估条件。但是,将对后续迭代评估条件。换句话说,代码块将在do ... while循环中至少执行一次。
do-while 循环以下是do-while循环的语法。

do {  
   Statement(s) to be executed;  
} while (expression);

例如

  var n = 0;
  do {
    print(n);
    n--;
  } while(n>0);

输出结果

0

 

break 语句

 
break 语句用来作为控制了结构的。在循环中使用 break 会导致程序退出循环。以下是 break 语句的示例。

  var i = 1;
  while(i<=10) {
    print(i);
    if (i % 5 == 0) {
      print("The first multiple of 5  between 1 and 10 is : ${(i)}");
      break ;
      //exit the loop if the first multiple is found
    }
    i++;
  }

上面的代码打印出1到10之间的数字范围的5的第一个倍数。

如果发现一个数字可被5整除,则if结构强制控件使用break语句退出循环。成功执行上述代码后,将显示以下 输出 。

1
2
3
4
5
The first multiple of 5  between 1 and 10 is : 5

 

continue 语句

continue 语句跳过当前迭代的后续语句,并采取控制回到循环的开始。与 break 语句不同, continue 语句不会退出循环。它终止当前迭代并开始后续迭代。

  var num = 0;
  var count = 0;

  for(num = 0;num<=20;num++) {
    if (num % 2==0) {
      continue;
    }
    print(num);
    count++;
  }

输出结果:

1
3
5
7
9
11
13
15
17
19

 

使用标签来控制程序流程

 
标签是只是一个标识符,后跟一个冒号(:)被加到一个语句或代码块。标签可以与breakcontinue一起使用,更精确地控制流量。
continuebreak语句与其标签名称之间不允许换行符。此外,标签名称和关联循环之间不应该有任何其他语句。

break 的标签
  outerloop: // This is the label name
  for (var i = 0; i < 5; i++) {
    print("Outerloop-i: ${(i)}");
    innerloop:
    for (var j = 0; j < 5; j++) {
      if (j > 3 ) break ;

      // Quit the innermost loop
      if (i == 2) break innerloop;

      // Do the same thing
      if (i == 4) break outerloop;

      // Quit the outer loop
      print("Innerloop-j: ${(j)}");
    }
  }

输出结果:

Outerloop-i: 0
Innerloop-j: 0
Innerloop-j: 1
Innerloop-j: 2
Innerloop-j: 3
Outerloop-i: 1
Innerloop-j: 0
Innerloop-j: 1
Innerloop-j: 2
Innerloop-j: 3
Outerloop-i: 2
Outerloop-i: 3
Innerloop-j: 0
Innerloop-j: 1
Innerloop-j: 2
Innerloop-j: 3
Outerloop-i: 4
continue 的标签
  outerloop: // This is the label name

  for (var i = 0; i < 3; i++) {
    print("Outerloop - i: ${(i)}");

    for (var j = 0; j < 5; j++) {
      if (j == 3){
        continue outerloop;
      }
      print("Innerloop - j: ${(j)}");
    }
  }
Innerloop - j: 0
Innerloop - j: 1
Innerloop - j: 2
Outerloop - i: 1
Innerloop - j: 0
Innerloop - j: 1
Innerloop - j: 2
Outerloop - i: 2
Innerloop - j: 0
Innerloop - j: 1
Innerloop - j: 2

 


参考链接:

https://www.codingdict.com/article/21915

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值