русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Приклад з помилкою.


Дата додавання: 2014-02-04; переглядів: 1039.


Оператор циклу з лічильником (з параметром) 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.


<== попередня лекція | наступна лекція ==>
Оператор циклу з передумовою while | Оператор приєднання with


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн