Циклы — это фундаментальные конструкции в программировании, которые позволяют выполнять блок кода многократно, основываясь на условии или наборе значений. В Dart основными конструкциями для организации циклов являются while
и for
. В этой статье мы подробно рассмотрим эти конструкции и дадим вам знания, необходимые для их эффективного использования в программах на Dart.
Циклы while
Цикл while
выполняет блок кода до тех пор, пока определённое условие истинно. Это полезно, когда количество итераций заранее неизвестно и зависит от условия.
Синтаксис
while (condition) {
// Код выполняется пока condition истинно
}
Пример использования
void main() {
int counter = 0;
while (counter < 5) {
print( 'Counter: $counter');
counter++;
}
}
В этом примере программа выводит значение переменной counter
от 0 до 4. Цикл продолжает выполняться, пока counter
меньше 5.
Бесконечный цикл
Будьте осторожны с циклами while
, чтобы избежать создания бесконечных циклов, где условие никогда не становится ложным.
void main() {
int counter = 0;
while (true) {
print( 'Counter: $counter');
counter++;
if (counter >= 5) {
break;
}
}
}
В этом примере цикл while (true)
управляется оператором break
, который завершает выполнение цикла, когда counter
достигает 5.
Циклы do-while
Цикл do-while
похож на while
, но гарантирует, что блок кода будет выполнен хотя бы один раз, так как условие проверяется после выполнения блока.
Синтаксис
do {
// Исполняемый код
} while (condition);
void main() {
int counter = 0;
do {
print( 'Counter: $counter');
counter++;
} while (counter < 5);
}
В этом примере программа выводит значение переменной counter
от 0 до 4. Цикл гарантирует, что блок кода выполнится хотя бы один раз перед проверкой условия.
Циклы for
Цикл for
обычно используется, когда количество итераций известно заранее. Он состоит из инициализации, условия и операции инкремента/декремента.
for (initialization; condition; increment/decrement) {
// Исполняемый код
}
void main () {
for (int i = 0; i < 5; i++) {
print('i: $i');
}
}
В этом примере программа выводит значение переменной i
от 0 до 4. Цикл инициализирует i
значением 0, проверяет условие i < 5
и увеличивает i
на 1 в каждой итерации.
Вложенные циклы for
Вы можете вкладывать циклы for
друг в друга для обработки более сложных итераций, например, для обхода матрицы.
void main) {
for (int i = 0; i < 3; i++) {
for(intj=0; j<3; j++) {
print('i: $i, j: $j');
}
}
}
В этом примере внешний цикл выполняется 3 раза, и для каждой итерации внешнего цикла внутренний цикл выполняется 3 раза, что в сумме дает 9 итераций и выводит значения i
и j
.
Циклы for-in
Цикл for-in
используется для обхода элементов коллекции, такой как список или множество.
void main ( ) {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
for (var fruit in fruits) {
print(fruit);
}
}
В этом примере программа перебирает список fruits
и выводит в консоль каждый фрукт.
Метод forEach
Коллекции в Dart также предоставляют метод forEach
, который является функциональным подходом для обхода элементов.
void main ( ) {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
fruits. forEach((fruit) => print(fruit));
}
В этом примере метод forEach
перебирает список fruits
и выполняет заданную функцию для каждого элемента.
Лучшие практики при использовании циклов
- Избегайте бесконечных циклов: Убедитесь, что в ваших циклах есть условие завершения, чтобы предотвратить бесконечные циклы.
- Используйте описательные имена переменных: Применяйте понятные имена для переменных-счётчиков и элементов, чтобы улучшить читаемость кода.
- Сохраняйте циклы простыми: Избегайте сложной логики внутри циклов. При необходимости рефакторьте код в функции.
- Используйте
break
иcontinue
разумно: Используйтеbreak
для досрочного выхода из цикла иcontinue
для пропуска текущей итерации. Применяйте их с осторожностью, чтобы избежать путаницы в коде. - Предпочитайте
for-in
иforEach
для коллекций: При обходе коллекций используйтеfor-in
илиforEach
для более чистого и читаемого кода.
Заключение
Понимание и эффективное использование циклов, таких как while
, do-while
, for
и for-in
, имеет решающее значение для управления потоком выполнения программ на Dart. Выбирая подходящую конструкцию цикла для ваших нужд и следуя лучшим практикам, вы сможете писать чистый, эффективный и удобный для поддержки код. Независимо от того, обрабатываете ли вы простые итерации или сложные вложенные циклы, Dart предоставляет все необходимые инструменты для управления повторяющимися задачами в ваших программах.
Источник: https://azimdev.medium.com/mastering-loops-in-dart-while-and-for-4d5e48aa9a03
Гик, хакинтошник, линуксоид, считаю себя flutter разработчиком. Завёл канал, в котором изначально хотел показывать как я с нуля и до бесконечности погрузился в дорвей тематику, а в итоге просто рассказываю о себе, своих успехах и неудачах в сайтах, приложениях, офлайн проектах. Добро пожаловать в