вихода gt; [Exit Do]
[Частина тела циклу]
Тут Всередині циклу может буті будь-яка Кількість команд виходим.
У тихий мовах, де подібніх конструкцій НЕ предусмотрена, цикл з виходом Із середини может буті змодельовано помощью будь-которого Умовний циклу и оператора дострокового виходим з циклу (такого, як break в Сі), або оператора Безумовно переходу goto.
Цикл з лічільніком - цикл, в якому Деяка змінна змінює свое значення від заданого початково значення до кінцевого значення з Деяк кроком, и для шкірного значення цієї змінної Тіло циклу віконується один раз. У більшості процедурно мов програмування реалізується оператором for, в якому вказується лічильник (так кличуть входити «змінна циклу»), необхідна Кількість проходів (або граничні значення лічильника) І, можливо, крок, з яким змінюється лічильник.
Цикл з лічільніком всегда можна Записатись як умовний цикл, перед качаном которого лічільніку прісвоюється Початкове значення, а умів виходе є Досягнення лічільніком кінцевого значення; до тела циклу при цьом додається оператор Зміни лічильника на завдання Крок. Однако СПЕЦІАЛЬНІ оператора циклу з лічільніком могут ефектівніше транслюватіся, так як формалізованій вигляд такого циклу дозволяє використовуват СПЕЦІАЛЬНІ процесорні командіровку организации ціклів.
У Деяк мовах, например, Сі та других, что ПІШЛИ від неї, цикл for, незважаючі на синтаксичними форму циклу з лічільніком, насправді є циклом з Передумови. Тобто в конструкції for спочатку пишеться довільна ініціалізація циклу, а потім - Умова продовження І, Нарешті, Деяка операція, яка віконується после шкірного тела циклу (Це не обов язково має буті зміна лічильника; це может буті правка покажчика або яка-небудь зовсім стороння операція ). Для мов такого виду віщеопісана проблема вірішується очень просто: змінна-лічильник поводиться абсолютно передбачувано и по завершенні циклу зберігає свое Останнє значення.
Існує можлівість організуваті цикл Всередині Іншого циклу. Такий цикл буде назіватіся вкладення циклом. Вкладення цикл по відношенню до циклу, в Тіло которого ВІН прікріпленій буде назіватіся внутрішнім циклом, и навпаки цикл, в тілі которого існує вкладення цикл буде назіватіся зовнішнім по відношенню до вкладеного. Всередині вкладення циклу в свою черго может буті вкладення ще один цикл, утворюючі Наступний рівень вкладеності и так далі. Кількість рівнів вкладеності як правило, не обмежується.
Повне число Виконання тела внутрішнього циклу не перевіщує добутку числа ітерацій внутрішнього и всех ЗОВНІШНІХ ціклів. Например взявши трьох вкладення один у одного циклі, КОЖЕН по 10 ітерацій, отрімаємо 10 Виконання тела для зовнішнього циклу, 100 для циклу іншого уровня и 1000 в самому внутрішньому ціклі.
Одна з проблем, пов язаних з вкладення циклами - організація дострокового виходим з них. У багатьох мовах програмування є оператор дострокового завершення циклу (break в Сі, exit в VB.Net, last в Perl и т. П.), Но ВІН, як правило, Забезпечує вихід только з циклу того уровня, звідки вікліканій. Виклик его з вкладення циклу прізведе до завершення только цього внутрішнього циклу, Зовнішній же цикл продовжіть Виконувати. Проблема может здать надуманість, но вона Дійсно іноді вінікає при програмуванні складної Обробка даних, колі алгоритм требует Негайно переривані в питань комерційної торгівлі условиях, наявність якіх можна перевіріті только в глибоко вкладення ціклі.
РІШЕНЬ проблеми виходим з вкладення ціклів кілька.
? Найпростішій - використовуват оператор безумовна переходу goto для вихода в точку програми, безпосередно наступної за вкладення циклом. Цей варіант крітікується Прихильники структурного программирования, як и всі конструкції, что вімагають использование goto. Деякі мови програмування, например Modula - 2, просто не мают оператора безумовна переходу, и в них подібна конструкція Неможливо.
? Альтернатива - використовуват Штатні засоби Завершення ціклів, у разі необхідності встановлюючі СПЕЦІАЛЬНІ прапори, Які потребують Негайно Завершення ОБРОБКИ. Недолік - ускладнення коду, зниженя продуктівності без будь-якіх Переваги, крім теоретичної «правільності» Із-за відмові від goto.
? Размещения вкладення циклу в процедурі. Ідея Полягає в тому, щоб вся Дії, что можливо знадобітіся перерваті достроково, оформлюється у виде окремої процедури, и для дострокового Завершення використовуват оператор виходим з процедури (если такий є в мові програмування). У Сі, например, можна побудуваті функцію з вкладення циклом, а вихід з неї організуваті помощью оператора return. Недолік - віділення фрагмента коду в процедурі не всегда логічно обґрунтовано, и?? е всі мови мают Штатні засоби дострокового заверш...