ат СПЕЦІАЛЬНІ процесорні відряд організації ціклів.
У Деяк мовах, Наприклад, Сі та других, что ПІШЛИ від неї, цикл for, незважаючі на синтаксичному форму циклу з лічільніком, насправді є циклом з передумови. Тоб в Сі конструкція циклу:
(i=0; i <10; + + i)
{
... Тіло циклу
}
Фактично являє собою іншу форму запису конструкції:
i=0; (i <10)
{
... Тіло циклу
+ + i;
}
тоб в конструкції for спочатку пишеться довільна ініціалізація циклу, а потім - Умова продовження І, Нарешті, Деяка Операція, яка віконується после шкірного тіла циклу (це НЕ обов язково має буті зміна лічільніка; це может буті правка покажчика або яка-небудь зовсім стороння Операція). Для мов такого виду віщеопісана проблема вірішується Дуже просто: змінна-лічильник поводиться абсолютно передбачувано и по завершенні циклу зберігає свое Останнє значення.
2.2.6 Вкладені цикли
Існує можлівість організуваті цикл всередіні Іншого циклу. Такий цикл буде назіватіся вкладень циклом. У?? Ладен цикл по відношенню до циклу, в Тіло Якого ВІН прікріпленій буде назіватіся внутрішнім циклом, и навпаки цикл, в тілі Якого існує вкладений цикл буде назіватіся зовнішнім по відношенню до вкладення. Всередіні вкладень циклу в свою черго может буті вкладений ще один цикл, утворюючі Наступний рівень вкладеності и так далі. Кількість рівнів вкладеності як правило, не обмежується.
Повне число Виконання тіла внутрішнього циклу не перевіщує добутку числа ітерацій внутрішнього и всех зовнішніх ціклів. Наприклад взявши три вкладень один в одного циклі, КОЖЕН по 10 ітерацій, отрімаємо 10 Виконання тіла для зовнішнього циклу, 100 для циклу іншого уровня и 1000 в самому внутрішньому ціклі.
Одна з проблем, пов язаних з вкладень циклами - організація Дострокове виходе з них. У багатьох мовах програмування є оператор Дострокове завершення циклу ( break в Сі, exit в Турбо Паскаль, last в Perl и т. п.), альо ВІН, як правило, Забезпечує вихід Тільки з циклу того уровня, Звідки вікліканій. Виклик его з вкладень циклу прізведе до завершення Тільки цього внутрішнього циклу, зовнішній же цикл продовжіть Виконувати. Проблема может здать надуманість, альо вона Дійсно іноді вінікає при програмуванні складної Обробка даних, коли алгоритм вімагає негайного переривані в питань комерційної торгівлі Умова, наявність якіх можна перевіріті Тільки в Глибока вкладень ціклі.
РІШЕНЬ проблеми виходе з вкладень ціклів кілька.
· Найпростішій - використовуват оператор Безумовно переходу goto для виходе в точку програми, безпосередно наступної за вкладений циклом. Цею вариант крітікується Прихильники структурного програмування, як и ВСІ конструкції, что вімагають Використання goto. Деякі мови програмування, Наприклад Modula - 2, просто не мают оператора Безумовно переходу, и в них подібна конструкція Неможливо.
· Альтернатива - використовуват штатні засоби Завершення ціклів, у разі необхідності встановлюючі СПЕЦІАЛЬНІ п...