Оператор циклу з лічильником (з параметром) for
Оператор циклу з лічильником підходить для програмування тільки таких циклічних фрагментів, у яких до виконання циклу відомі початкове й кінцеве значення лічильника повторень циклу. Це обумовлює його менш широку сферу застосування, чим більше універсальних операторів while і repeat. Однак у тих випадках, коли його використання можливо, оператор for, завдяки своїй високій наочності, має безсумнівну перевагу перед операторами циклу з умовами.
Спрощено загальну структуру оператора циклу з лічильником можна представити одним з наступних способів.
1) Якщо лічильник при виконанні циклу нарощує своє значення:
for Змінна := ПочатковеЗначенхяЛічильникаto КінцевеЗначенняЛічильника do Оператор
|
Щоб ОператорВИКОНАВСЯ ХОЧА б ОДИН раз ПочатковеЗначенхяЛічильникаповинне бути не більше,ніж КінцевеЗначенняЛічильника.
2) Якщо лічильник при виконанні циклу зменшує своє значення:
for Змінна := ПочатковеЗначенхяЛічильникаdownto КінцевеЗначенняЛічильника do Оператор
|
ЩобОператорВИКОНАВСЯ ХОЧА б ОДИН раз ПочатковеЗначенхяЛічильникаПОВИННЕ бути не менше,ніж КінцевеЗначенняЛічильника.
Приклад.
Begin
. . .
Summa := 0;
for i := 1to ndo
Summa := Summa + A[i];
. . .
end.
|
Помітимо, що для оператора for, на відміну від while і repeat, установка початкового значення лічильника циклів (i:=l) виконується не перед заголовком циклу, а прямо в заголовку. Крім того, після закінчення тіла циклу нарощування/ зменшення значення лічильника відбувається автоматично.Таким чином, спеціальний оператор для збільшення значення лічильника (i:=i+l) не потрібний. Більше того, такий оператор приведе до неправильної роботи циклу.
Begin
. . .
Summa := 0;
for i := 1 to n do
Begin
Summa := Summa + A[i] ;
i := i + 1 ← Помилка!
end '
end.
|
У більшості реалізацій мови Pascal зміна значень змінних, використовуваних у заголовку циклу for, заборонене й приводить до видачі повідомлення про помилку на етапі компіляції. У реалізації Turbo Pascal ця заборона знята, однак такі дії в рамках циклу for, як правило, приводять до його непередбаченого поводження й вважаються поганим стилем програмування.
В Turbo Pascal, також як і у всіх інших реалізаціях мови Pascal, оператор for має два істотних обмеження:
1) Крок зміни лічильника циклів може бути тільки або +1 (якщо використається ключове слово to), або -1 (якщо використається ключове слово downto).
2) Змінна, що виступає в ролі лічильника циклів, може бути тільки порядкового типу й повинна бути локальною для того блоку, у якому перебуває оператор for.