Назад
Зміст
Вперед
Структура оператору циклу з параметром
Оператори циклу з параметром бувають двох типів:
- З параметром i, що збільшується від
start до finish (з кроком 1)
For i:=start to finish do
Begin s1; s2; s3; … end;
- З параметром 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 – будь-якіоператори
Термінологія
- Параметр циклу (у прикладі i)
- будь-яка змінна цілого (byte, Integer, word, longint,…) або символьного типу (char).
- Початкове значення параметру (у прикладі
start) – стала, змінна або вираз того ж типу, що й параметр.
- Кінцеве значення параметру (у прикладі
finish) – стала, змінна або вираз того ж типу, що й параметр.
- Заголовок циклу вказує, скільки разів буде виконуватись тіло циклу.
Заголовок циклу:
- For i:=start to finish do або
- For i:= start downto finish do
- Тіло циклу – оператори, що повторюються.
Тіло циклу – Begin s1; s2; s3; … end;
- Кількість витків циклу – кількість повторень тіла циклу.
Написаний вище оператор І типу на блок-схемі відображається так:
Написаний вище оператор ІI типу на блок-схемі відображається так:
В першому операторі крок дорівнює 1, а в другому –1.
Зауваження
- Параметр циклу автоматично по черзі приймає цілі значення від
start до finish (для символьних параметрів приймає значення наступного символу з таблиці
ASCII).
- Скільки значень прийме параметр циклу від
start до finish, стільки разів виконається тіло циклу.
- В операторі з параметром, що збільшується (For i:=start to finish do), щоб виконувалось тіло циклу потрібно, щоб
start<=finish. Якщо start >finish, то помилки не буде?
але тіло циклу виконуватись не буде.
Фрагмент програми | Результат роботи |
For i:=5 to 10 do write(‘*’); | ****** |
For i:=10 to 5 do write(‘*’); | Такий фрагмент програми нічого не виведе на екран. |
- В операторі з параметром, що зменшується (For i:=start downto finish do), щоб виконувалось тіло циклу потрібно, щоб
start>=finish. Якщо start < finish, то помилки не буде, але тіло циклу виконуватись не буде.
Фрагмент програми | Результат роботи |
For i:=5 downto 1 do write(‘*’); | ***** |
For i:=1 downto 5 do write(‘*’); | Такий фрагмент програми нічого не виведе на екран. |
- Параметр циклу не можна змінювати у тілі циклу. Програма може зациклитись або деякі вітки циклу виконуватись не будуть.
Наприклад:
Фрагмент програми | Результат роботи |
For i:=1 to 3 do
Begin
write(i,’ ‘); i:=5;
end;
|
Програма зациклиться, вона надрукує 1, а потім буде завжди друкувати 6
1 6 6 6 6…..
|
For i:=1 to 3 do
Begin
write(i,’ ‘); i:=3;
end;
|
Ця програма надрукує тільки число 1, бо виконає один виток, замість трьох
|
- Якщо програма зациклилась, потрібно натиснути
Ctrl+break або Ctrl+Alt+Delete
(викликати Диспетчер задач та зняти задачу).
- Якщо start та finish
– вирази, то їх значення обчислюються один раз, перед початком циклу і змінення їх у тілі циклу не впливає на кількість витків циклу.
Фрагмент програми | Результат роботи |
F:=3;
For i:=1 to F do
Begin
write(’*‘); F:=10;
end;
|
***
Програма надрукує 3 зірочки, хоч у тілі циклу є оператор F:=10.
|
Назад
Зміст
Вперед