betacode

Циклы в Dart

View more Tutorials:

Следуйте за нами на нашей фан-странице, чтобы получать уведомления каждый раз, когда появляются новые статьи. Facebook

1- Что такое цикл?

В языках программирования циклы позволяют многократно выполнять блок кода.
Язык Dart предоставляет следующие типы циклов:
  • for
  • for..in
  • while
  • do..while
Инструкции  (statement)  break и continue могут появляться внутри цикла:
break
При обнаружении инструкции break программа немедленно завершит цикл.
continue
При обнаружении инструкции continue программа пропустит строки ниже инструкции continue и выполнит следующую итерацию (если условие цикла все еще верно).

2- Цикл for

Синтаксис цикла for

for (initialValues; condition; updateValues) {
    // Statements to be executed repeatedly
}
  • InitialValues: Инициализируйте значения для связанных переменных в цикле.
  • condition: Условие для выполнения блока.
  • updateValues:  Обновите новые значения переменных.
Например:
loop_for_ex1.dart

void main() {
  print('For loop example');
 
  for (var i = 0; i < 10; i = i + 3) {
    print('i= $i');
  }
}
Output:

For loop example
i= 0
i= 3
i= 6
i= 9
Например: Две переменные участвуют в условии цикла for:
loop_for_ex2.dart

void main() {
  print('For loop example');

  for (var i = 0, j = 0; i + j < 10; i = i + 1, j = j + 2) {
    print('i = $i, j = $j');
  }
}
Output:

For loop example
i = 0, j = 0
i = 1, j = 2
i = 2, j = 4
i = 3, j = 6

3- Цикл for..in

Цикл for..in используется для перебора элементов объекта t Iterable.
В языке программирования Dart, List является потомком of Iterable, который обладает той же функцией, что и массив других языков программирования.
Например: Используйте for..in цикл для перебора элементов of  List:
loop_for_in_list_ex1.dart

void main() {
  // Create a List:
  var names = ['Tom', 'Jerry', 'Donald'];
 
  for (var name in names) {
    print('name: $name');
  }
}
Output:

name: Tom
name: Jerry
name: Donald
Например: Используйте for..in цикл для перебора элементов объекта Set.
loop_for_in_set_ex1.dart

void main() {
  // Create a Map object:
  // (key, value) <--> (Emloyee Number, Salary).
  var salaryMap = {'E01': 1200,
                   'E02': 1500,
                  'E03': 900};
  // The Set object.
  var keySet = salaryMap.keys;

  for (var key in keySet) {
    print('Employee Number: $key, salary: ${salaryMap[key]}');
  }
}
Output:

Employee Number: E01, salary: 1200
Employee Number: E02, salary: 1500
Employee Number: E03, salary: 900

4- Цикл while

Синтаксис цикла while:

while (condition)  {
    // Do something here..
}
Например:
loop_while_ex1.dart

void main() {
  print('While loop example');
  var x = 2;
  while (x < 10) {
    print('Value of x = $x');
    x = x + 3;
  }
  print('Done!');
}
Output:

While loop example
Value of x = 2
Value of x = 5
Value of x = 8
Done!

5- Цикл do..while

Цикл do..while используется для многократного выполнения сегмента программы. Особенностью do..while является то, что блок кода всегда выполняется хотя бы один раз. После каждой итерации (iteration), программа снова проверяет условие, если условие по-прежнему верно, будет выполнена следующая итерация.
Синтаксис цикла do..while:

do {  
   // Do something
}
while(condition);
Например:
loop_do_while_ex1.dart

void main() {
  var value = 3;
  do {
    print('Value = $value');
    value = value + 3;
  } while (value < 10);
}
Output:

Value = 3
Value = 6
Value = 9

6- Инструкция break в цикле

break - это инструкция, которая может появляться в блоке цикла. Это инструкция для безусловного завершения цикла.
Например:
loop_break_ex1.dart

void main() {
  print('Break example');
  var x = 2;
  while (x < 15) {
    print('----------------------');
    print('x = $x');
    // If y = 5 then exit the loop.
    if (x == 5) {
      break;
    }
    // Increase value of x by 1
    x = x + 1;
    print('x after + 1 = $x');
  }
  print('Done!');
}
Output:

Break example
----------------------
x = 2
x after + 1 = 3
----------------------
x = 3
x after + 1 = 4
----------------------
x = 4
x after + 1 = 5
----------------------
x = 5
Done!

7- Инструкция continue в цикле

continue - это инструкция, которая может появляться в цикле. При обнаружении инструкции continue программа пропустит строки ниже инструкции continue и начнет новую итерацию (если условие все еще выполняется).
Например:
loop_continue_ex1.dart

void main() {
  print('Continue example');
  var x = 2;
  while (x < 7) {
    print('----------------------');
    print('x = $x');

    if (x % 2 == 0) {
      x = x + 1;
      continue;
    } else {
      x = x + 1;
      print('x after + 1 = $x');
    }
  }
  print('Done!');
}
Output:

Continue example
----------------------
x = 2
----------------------
x = 3
x after + 1 = 4
----------------------
x = 4
----------------------
x = 5
x after + 1 = 6
----------------------
x = 6
Done!

8- Помеченные Loops

Dart позволяет вам поставить метку (Label) для цикла. Это способ назвать цикл, и он удобен при использовании нескольких вложенных циклов в программе.
  • Вы можете использовать инструкцию "break labelX", чтобы break цикл с надписью labelX.
  • Вы можете использовать инструкцию "continue labelX", чтобы continue цикл с меткой labelX.
Синтаксис для объявления цикла с метками.

// for loop with Label.
label1: for( ... )  {
    
}
// while loop with Label.
label2: while ( ... )  {

}
// do-while loop with Label.
label3: do  {
    
} while ( ... );
Например: Используйте помеченные циклы и инструкцию break.
loop_break_labelled_ex1.dart

void main() {
  print('Labelled Loop Break example');
  var i = 0;
  label1:
  while (i < 5) {
    print('----------------------');
    print('i = $i');
    i++;
    label2:
    for (var j = 0; j < 3; j++) {
      print('  --> $j');
      if (j > 0) {
        // Exit the loop with label1.
        break label1;
      }
    }
  }
  print('Done!');
}
Output:

Labelled Loop Break example
----------------------
i = 0
  --> 0
  --> 1
Done!
Например: Используйте помеченные циклы и инструкцию continue.
loop_continue_labelled_ex1.dart

void main() {
  var i = 0;
  label1:
  while (i < 5) {
    print('outer i=  $i');
    i++;
    label2:
    for (var j = 0; j < 3; j++) {
      if (j > 0) {
        continue label2;
      }
      if (i > 1) {
        continue label1;
      }
      print('inner i= $i, j= $j');
    }
  }
}
Output:

outer i=  0
inner i= 1, j= 0
outer i=  1
outer i=  2
outer i=  3
outer i=  4

View more Tutorials: