Оператори goto, break, continue і припинення програми
Оператор безумовного переходу goto
Паскаль є структурним мовою програмування. Не дивлячись на це, в ньому присутній ряд особливостей, які широко використовувалися на початкових етапах розвитку програмування. В ті часи ідея про те, що програма може розглядатися як система логічно пов'язаних блоків, ще не оформилася. Тому, якщо потрібно змінити лінійний хід програми, програмісти використовували оператор безумовного переходу goto.
Пізніше більшість програмістів відмовилися від регулярного використання оператора goto, проте бувають випадки, коли він може бути корисний.
Необхідно знати, що завжди можна обійтися без оператора goto. Його використання ускладнює читання і розуміння програми.
Оператор goto здійснює перехід до оператора, позначеного спеціальною міткою, яка відділяється від самого оператора двокрапкою. В якості мітки може бути використано будь-яке ціле число без знака, що містить більше чотирьох цифр, або будь-яке ім'я. Щоб можна було використовувати мітку, вона повинна бути в обов'язковому порядку оголошена в розділі міток в описовій частині програми. Цей розділ починається службовим словом label. після якого через кому перераховуються мітки.
Щоб перейти до позначеного оператору, використовується оператор переходу, що має такий вигляд:
Оператори break і continue
Буває, що мета виконання циклу досягається раніше, ніж він буде припинений за умовою виходу. Так, наприклад, в програмі для визначення простоти числа цикл буде виконуватися n div span> 2 span> - span> 1 span> раз, хоча те, що число не є простим, може бути виявлено на перших кроках циклу. Щоб зменшити кількість кроків циклу, можна скористатися оператором goto, або сформувати складну умову виконання (припинення) циклу.
Однак існують спеціальні оператори, що використовуються для переривання ходу виконання циклу. Оператор break виконує повний вихід з циклу, тобто всі можливі ітерації циклу перериваються. Оператор continue перериває тільки поточну ітерацію. Break і continue є процедурами, хоча зазвичай їх називають операторами.
Оператори break і continue виконуються в будь-якому з видів циклів (repeat, while, for) і дійсні тільки для внутрішнього циклу. Наприклад, якщо потрібно забезпечити примусовий вихід з подвійного циклу, оператор break повинен бути розташований як у внутрішньому, так і в зовнішньому циклі. Оператори break і continue по суті є видозміненими операторами goto з відомою точкою, в яку здійснюється перехід.
У прикладі у користувача п'ять разів запитується число тільки в тому випадку, якщо він не вводить нуль.
У прикладі запитуються п'ять чисел і підсумовуються тільки позитивні з них.
Примусове припинення програми
Зазвичай програма завершує свою роботу після досягнення останнього оператора (тобто при виході на оператор end з крапкою). Якщо виникає необхідність припинити виконання програми деінде всередині неї, то можна скористатися процедурою halt. яка викликається як окремий оператор. Цю процедуру можна викликати, задавши в круглих дужках параметр у вигляді цілого невід'ємного числа від 0 до 255. Це значення повертається в операційну систему у вигляді коду помилки (ERRORLEVEL) і може бути проаналізована DOS в разі запуску даної програми з командного файлу. Відсутність параметра в процедурі halt відповідає значенню параметра 0 (нормальне завершення програми).
Другий процедурою, за допомогою якої можна припинити виконання програми, є процедура без параметрів exit при її розміщенні в здійсненною частини програми (а не в тілі підпрограми). Найчастіше ця процедура застосовується для виходу з підпрограми без припинення виконання викликає програми.