1. Лекція Кількість годин 2
«Оператор циклу з параметром»
Оператор циклу з лічильником (з параметром) for
Оператор циклу з лічильником підходить для програмування тільки таких
циклічних фрагментів, у яких до виконання циклу відомі початкове й кінцеве
значення лічильника повторень циклу. Це обумовлює його менш широку сферу
застосування, чим більше універсальних операторів while і repeat. Однак у тих
випадках, коли його використання можливо, оператор for, завдяки своїй високій
наочності, має безсумнівну перевагу перед операторами циклу з умовами.
Спрощено загальну структуру оператора циклу з лічильником можна
представити одним з наступних способів.
1) Якщо лічильник при виконанні циклу нарощує своє значення:
for Змінна := Початкове Значенхя Лічильника to Кінцеве Значення Лічильника do
ОператорЩоб Оператор ВИКОНАВСЯ ХОЧА б ОДИН раз Початкове Значенхя
Лічильника повинне бути не більше, ніж Кінцеве Значення Лічильника.
2) Якщо лічильник при виконанні циклу зменшує своє значення:
for Змінна := Початкове Значенхя Лічильника downto Кінцеве Значення Лічильника
do ОператорЩоб Оператор ВИКОНАВСЯ ХОЧА б ОДИН раз
ПочатковеЗначенхяЛічильника ПОВИННЕ бути не менше, ніж
КінцевеЗначенняЛічильника.
Приклад.
Begin
. . .
Summa := 0;
for i := 1 to n do
Summa := Summa + A[i] ;
. . .
end.
2. Помітимо, що для оператора for, на відміну від while і repeat, установка
початкового значення лічильника циклів (i:=l) виконується не перед заголовком
циклу, а прямо в заголовку. Крім того, після закінчення тіла циклу нарощування/
зменшення значення лічильника відбувається автоматично. Таким чином,
спеціальний оператор для збільшення значення лічильника (i:=i+l) не потрібний.
Більше того, такий оператор приведе до неправильної роботи циклу.
Приклад з помилкою.
Цикл із лічильником (із покроковою зміною аргументу) — це цикл, у якому
тіло циклу виконується заздалегідь відому кількість разів. У різних алгоритмічних
мовах реалізація цього циклу може передбачати використання аргументів різних
типів, зміну аргументу на різний крок, діапазон зміни аргументу і т. д.
Цикл із лічильником аргументу реалізовується таким чином:
1) аргументу надається початкове значення;
2) якщо значення входить у заданий діапазон, то виконується тіло циклу;
3) аргумент змінюється на заданий крок; виконується 2);
4) якщо значення не входить у заданий діапазон, то виконання циклу припиняється і
керування передається оператору, наступному за оператором циклу.
Загальний вигляд оператора циклу з параметром (з лічильником):
for <параметр циклу>:=N1 to N2 do <тіло циклу >;
де N1 та N2 - початкове та кінцеве значення параметра циклу, тіло циклу може бути
простим або складеним оператором. <Параметр циклу > ще називають
лічильником циклу. Оператор for забезпечує виконання тіла циклу до тих пір, поки
не будуть перебрані всі значення параметра циклу від початкового до кінцевого.
Параметр циклу, його початкове та кінцеве значення повинні бути одного і того ж
скалярного типу. При цьому можливий будь який стандартний тип, крім real.
Begin
. . .
Summa := 0;
for i := 1 to n do
Begin
Summa := Summa + A[i] ;
i := i + 1 ← Помилка!
end '
end.
3. Якщо N1 та N2 цілі числа, а параметр циклу - цілочисельна змінна, то крок завжди
рівний одиниці.
Приклад.
s:=0; for i:=1 to 20 do s:=s+i;
Для i=1, 2, 3,... , 20 буде виконуватись оператор присвоєння
S:=S+i, який накопичує в змінній S суму перших 20 натуральних чисел. Якщо N1 та
N2-символьного типу, а їх значення відповідно рівні 'A' та 'Z', то параметр циклу
прийматиме послідовні значення, які співпадають з алфавітом: A, B, C, D E .., Z.
Структура оператору циклу з параметром
Оператори циклу з параметром бувають двох типів:
1. З параметром i, що збільшується від start до finish (з кроком 1)
For i:=start to finish do
Begin s1; s2; s3; … end;
2. З параметром i, що зменшується від start до finish (з кроком -1)
For i:=start downto finish do
Begin s1; s2; s3; … end;
Тут:
For, to, downto, do – зарезервовані слова.
i – змінна
start, finish – сталі, змінні або вирази
Begin, end – операторні дужки
s1; s2; s3 – будь-якіоператори
Термінологія
1. Параметр циклу (у прикладі i) - будь-яка змінна цілого (byte, Integer, word,
longint,…) або символьного типу (char).
2. Початкове значення параметру (у прикладі start) – стала, змінна або вираз
того ж типу, що й параметр.
3. Кінцеве значення параметру (у прикладі finish) – стала, змінна або вираз
того ж типу, що й параметр.
4. Заголовок циклу вказує, скільки разів буде виконуватись тіло циклу.
Заголовок циклу:
4. o For i:=start to finish do або
o For i:= start downto finish do
5. Тіло циклу – оператори, що повторюються.
Тіло циклу – Begin s1; s2; s3; … end;
6. Кількість витків циклу – кількість повторень тіла циклу.
Написаний вище оператор І типу на блок-схемі відображається так:
Написаний вище оператор ІI типу на блок-схемі відображається так:
В першому операторі крок дорівнює 1, а в другому –1.