Skip to content

Циклы for и do while

Циклы позволяют выполнять повторяющиеся действия в коде. Мы уже знакомы с циклом while. В этой статье рассмотрим два популярных вида циклов: for и do while.

Пример любого конвеера, бесконечно выполняющего повторяющиеся действия

Циклы

Цикл for

Если известно точное количество повторений, то мы можем записать выражение с циклом for так:

for (int i = 0; i < 5; i++) {
  print('Итерация: \$i');
}

Этот код выполнится 5 раз, выводя числа от 0 до 4.

цикл

Такой способ часто используется в функциональном программировании.

Цикл do while

Цикл do while гарантирует выполнение тела хотя бы один раз, даже если условие ложно.

Пример do while - музыкальный плеер. Песня будет проиграна минимум один раз, а птом будет проверено условие:

music player

do {
  // Тело цикла
} while (условие);

Пример использования

void main() {
  int count = 0;
  do {
    print('Значение: \$count');
    count++;
  } while (count < 3);
}

Этот код выполнит три итерации и выведет значения от 0 до 2.

Разница с циклом while в том, что цикл while сначала думает, потом делает, а do while сначала минимум один раз делает, потом думает.

Какой использовать?

Все. Нужно уметь пользоваться всеми инструментами. Принципиально все циклы это синтаксический сахар к циклу while.

Домашнее задание

Задачи на закрепление основ программирования.

1. Счастливый пельмень

Существует такая традиция: при приготовлении пельменей в один из них кладут монетку на счастье. Считается, что тому, кому попадется пельмень с монеткой, улыбнется удача. Задача: Написать программу, которая ищет счастливый пельмень (пятый по счету) в кастрюле с 10 пельменями.

findLuckyDumpling() -> "Вот счастливый пельмень!"

2. На 3 без остатка

Задача: Вывести на экран все числа от 1 до 100, которые делятся на 3 без остатка.

printNumbersDivisibleByThree() -> "3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99"

3. Последовательность (100)

Задача: Вывести на экран последовательность чисел от 7 до 98, кратных 7.

myLine(100) -> "7 14 21 28 35 42 49 56 63 70 77 84 91 98"

4. Последовательность (1000)

Задача: Необходимо вывести на консоль такую последовательность чисел:

mySecondLine(1000) -> "1 2 4 8 16 32 64 128 256 512"

5. 4 Буквы в строке

Задача: Вывести каждую букву американского алфавита от A-Z по 4 буквы в строке.

printAlphabetInChunks() ->
"ABCD"
"EFGH"
"IJKL"
"MNOP"
"QRST"
"UVWX"
"YZ"

6. Ряд Фибоначчи

Задача: Выведите на экран первые 11 членов последовательности Фибоначчи.

printFibonacciSequence() -> "0 1 1 2 3 5 8 13 21 34 55 89"

7. Числовой палиндром

Задача: Написать метод, который возвращает число, записанное в обратном порядке.

reverseNumber(123) -> 321
reverseNumber(768) -> 867

8. Сумма разрядов

Задача: Написать метод, который возвращает сумму разрядов трехзначного числа.

sumDigits(123) -> 6
sumDigits(768) -> 21

9. Делится на 11

Задача: Найти в заданном диапазоне хотя бы одно натуральное число, которое делится на 11, а при делении на 2, 3, 4, …, 10 дает в остатке 1.

findDigits(99999) -> "25201, 52921, 80641"

10. Степень числа

Задача: Возвести число n во вторую степень, не используя оператор умножения.

digitPowTwo(5) -> 25
digitPowTwo(10) -> 100
digitPowTwo(4) -> 16

11. Чёт/нечет разрядов

Задача: Написать метод, который определит чётность/нечётность разрядов трехзначного числа.

digitParity(123) -> "1 - нечет. 2 - чет. 3 - нечет."
digitParity(768) -> "7 - нечет. 6 - чет. 8 - чет."

12. Повторяка номер n

Задача: Реализовать метод, который выводит на экран заданную строку N раз.

printLineNtimes("hello", 3) -> "hello hello hello"

13. Обратный отсчёт

Задача: Реализовать метод "Обратный отсчёт", который выводит на экран цифры от n до 1, затем выводит строку "start".

countdown(5) -> "5 4 3 2 1 start"

14. Обратный отсчёт - start Задача: Реализовать метод "Обратный отсчёт", который выводит на экран цифры от 5 до 1 текстом, затем выводит строку "start".

countdownStart() -> "five four three two one start"

15. Буква ‘я’

Буква “Я” воистину великая буква. И все слова в которых есть это буква являются великими. Напишите метод, который находит великие слова.

findGreatWords(["яблоко", "дом", "рябина"]) -> ["яблоко", "рябина"]