Оператор повтору (циклу) призначений для неодноразового повторення виконання окремої ділянки коду.
Існує три різних циклу: for, while і repeat, кожен з яких працює з умовою поста (Repeat) і передумовою (For, While). Цикл з передумовою означає, що програма виконує цикл тільки після перевірки умови, а для циклу з умовою поста умова перевіряється тільки після виконання циклу. Умова в циклі необхідно для його завершення. Щоб перервати будь-який цикл під час виконання, необхідно всередині нього помістити функцію break (з англ. «Перервати»). Однак break призначена для зупинки лише одного циклу, отже, щоб неодмінно зупинити два вкладених циклу необхідно всередину кожного з них помістити break.
Структура даного циклу for наступна:
...
for i: = 1 to 10 do
s: = s + 10;
...
Спочатку ставимо ключове слово for. Мінлива i - лічильник (завжди цілий (integer) числовий тип змінної). В даному прикладі лічильник збільшується з 1 до 10. При цьому змінна s кожен раз збільшується на 10. Щоб даний цикл зменшувати з більшого числа до меншого, замість to поставимо downto:
...
for i: = 10 downto 1 do
s: = s + 1;
...
Другий рядок у прикладі повторюється десять разів. Щоб повторювати кілька дій потрібно поставити begin:
...
for i: = 1 to 10 do
begin
if i = 5 then
break;
writeln (i);
end;
...
В даному прикладі цикл виведе числа в порядку зростання від 1 до 4. Під час п'ятого повторення циклу, він перерветься функцією break.
Структура циклу while наступна:
Спочатку ставимо ключове слово while. Потім прописуємо умову, за якої буде виконуватися цикл і ставимо ключове слово do, після якого прописуємо дії, які необхідно повторити. Як тільки логічне значення умови стане false (брехня), цикл автоматично завершиться. В даному прикладі дію a: = a + 1 буде повторюватися до тих пір, поки змінна a не стане більше 10.
Структура циклу repeat наступна:
Спочатку ставимо ключове слово repeat. Потім виконується частина коду до ключового слова until, після якого задається умова. Між repeat і until begin і end, на відміну від циклів for і while, ставити не потрібно. В даному прикладі цикл завершується тільки тоді, коли значення змінної a стане рівним 10.
Для представлення структур трьох циклів розглянемо наступну таблицю, в якій кожен цикл знаходить суму п'яти чисел, починаючи з двох:
- Знайти квадрат непарних чисел.
- Вивести на екран середнє арифметичне чисел, що вводяться, скільки введено чисел і їх суму.
- Знайти суму дільників числа a.
- Перевірити, чи є число досконалим (що дорівнює сумі всіх його подільників).
- З'ясувати, чи є введене число неповним (ділиться тільки на себе і на одиницю).
Відповіді до завдань попередньої статті:
- Написати програму, яка буде показувати на екрані пори року, при введенні номера місяця.
Для складання цієї програми необхідно не тільки добре знати кожен місяць по порядку, але і знати для кожного місяця свого часу року. Однак не виключено, що користувач може ввести число, яке не відповідає числу місяця. В цьому випадку опрацюємо оператор case таким чином, щоб в решті випадків (крім цифр 1-12) програма виводила помилку при введенні. В результаті вийде наступний код:
- Написати програму перетворення цифр (0-10) в слова.
Так як нічого більше, крім того, що потрібно перевести всі цифри в слова, не потрібно, переведемо кожну цифру, використовуючи case:
- Скласти програму, яка змінювала б закінчення, в залежності від віку людини ( «мені 1 рік», «мені 4 роки», «мені 75 років»).
Перед складанням програми необхідно проаналізувати, в якому випадку закінчення пропозиції буде «рік», в якому «року», а в якому «років». Після ретельного перебору цифр було з'ясовано, що завжди, коли остання цифра віку стає «1», ми говоримо «рік»: «двадцять один рік», «п'ятдесят одна рік» ... Якщо цифра віку знаходиться в діапазоні від 2 до 4, ми говоримо «року»: «тридцять три роки», «шістдесят двох років» ... В інших випадках ми говоримо «років»: «сорок років», «сімдесят вісім років» ... Однак винятком став вік від 10 до 20 років. Не можна сказати, що мені одинадцять рік, або мені тринадцять року. Таким чином, використовуючи case, обробляємо цей виняток: від 5 до 20 пишемо «років».
Нагадую, що після оператора case begin ставити не потрібно. Але його потрібно обов'язково закрити (end). Щоб не заплутатися з end, я вирішив виділити тільки ту частину програми, яка належить case, трохи відсунувши її вправо. Сама програма при цьому не зміниться. Просто таким чином програма стане більш наочною для кожного програміста і з нею буде простіше розібратися.