Циклы 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 - музыкальный плеер. Песня будет проиграна минимум один раз, а птом будет проверено условие:
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(["яблоко", "дом", "рябина"]) -> ["яблоко", "рябина"]