Комментарии (2)
🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
While в Dart
While — это цикл (loop), который повторяет блок кода пока выполняется определённое условие. Когда условие становится ложным, цикл прерывается.
Синтаксис While
while (условие) {
// код, который будет повторяться
}
Порядок выполнения:
- Проверка условия
- Если условие истинно — выполнить код в блоке
- Повторить с пункта 1
- Если условие ложно — выход из цикла
Простой пример
int counter = 0;
while (counter < 5) {
print('Counter: $counter');
counter++;
}
// Вывод:
// Counter: 0
// Counter: 1
// Counter: 2
// Counter: 3
// Counter: 4
Практические примеры
Пример 1: Ввод данных пока не введено правильное значение
String? getUserInput() {
String? input;
while (input == null || input.isEmpty) {
print('Пожалуйста, введите что-то:');
input = stdin.readLineSync();
if (input == null || input.isEmpty) {
print('Ошибка: текст не может быть пустым!');
}
}
return input;
}
Пример 2: Обработка списка
void printList(List<int> numbers) {
int index = 0;
while (index < numbers.length) {
print('Элемент $index: ${numbers[index]}');
index++;
}
}
final numbers = [10, 20, 30, 40];
printList(numbers);
// Вывод:
// Элемент 0: 10
// Элемент 1: 20
// Элемент 2: 30
// Элемент 3: 40
Пример 3: Поиск элемента
int findElement(List<int> list, int target) {
int index = 0;
while (index < list.length) {
if (list[index] == target) {
return index;
}
index++;
}
return -1; // Не найдено
}
final numbers = [5, 12, 8, 23, 15];
print(findElement(numbers, 23)); // Вывод: 3
print(findElement(numbers, 100)); // Вывод: -1
Do-While цикл
Do-while отличается от while тем, что код в блоке выполняется сначала, а потом проверяется условие. Этот цикл выполнится минимум один раз:
do {
// код, который будет повторяться
} while (условие);
Пример do-while
int count = 0;
do {
print('Повтор: $count');
count++;
} while (count < 3);
// Вывод:
// Повтор: 0
// Повтор: 1
// Повтор: 2
Управление циклом: break и continue
Break — выход из цикла
int i = 0;
while (i < 10) {
if (i == 5) {
break; // Выходим из цикла
}
print(i);
i++;
}
// Вывод:
// 0
// 1
// 2
// 3
// 4
Continue — переход к следующей итерации
int i = 0;
while (i < 5) {
i++;
if (i == 3) {
continue; // Пропускаем итерацию
}
print(i);
}
// Вывод:
// 1
// 2
// 4
// 5
While в Flutter приложениях
Пример: валидация пароля
class PasswordValidator {
static String? validatePassword(String password) {
int index = 0;
bool hasUppercase = false;
bool hasLowercase = false;
bool hasDigit = false;
while (index < password.length) {
final char = password[index];
if (char.contains(RegExp(r'[A-Z]'))) {
hasUppercase = true;
}
if (char.contains(RegExp(r'[a-z]'))) {
hasLowercase = true;
}
if (char.contains(RegExp(r'[0-9]'))) {
hasDigit = true;
}
index++;
}
if (!hasUppercase) return 'Требуется заглавная буква';
if (!hasLowercase) return 'Требуется строчная буква';
if (!hasDigit) return 'Требуется цифра';
return null; // Валидно
}
}
While vs For
While используется, когда количество итераций неизвестно заранее:
// While — количество итераций неизвестно
while (userInput != 'exit') {
userInput = stdin.readLineSync() ?? '';
}
// For — количество итераций известно
for (int i = 0; i < 5; i++) {
print(i);
}
Опасность бесконечного цикла
Осторожнее с while! Забыли обновить условие — получите бесконечный цикл:
// ОПАСНО! Бесконечный цикл
while (true) {
print('Это будет вечно...');
// Нет break!
}
// ПРАВИЛЬНО
while (true) {
print('Что-то делаем');
if (someCondition) {
break; // Выход
}
}
While — фундаментальный инструмент для работы с циклами в Dart, незаменим для итерации с неизвестным количеством повторений.