Оператори умовного і безумовного переходу в pascal

Оператори безумовного переходу

Оператор переходу дозволяє перейти від поточного місця виконання програми в інше місце, яке не є таким по порядку. Даний оператор порушує нормальний хід виконання програми.

Можна теоретично показати, що розглянутих операторів цілком достатньо для написання програм будь-якої складності. В цьому відношенні його присутність серед мові операторів переходу здається зайвим. Більш того, сучасна технологія структурного програмування заснована на принципі "програмувати без GOTO": вважається, що зловживання операторами переходу ускладнює розуміння програми, робить її заплутаною і складною в налагодженні. Проте в деяких випадках використання операторів переходу може спростити програму.

Оператор переходу має вигляд:

Тут goto - зарезервоване слово (перейти [на мітку]); - мітка.

Label 1; // Оголошуємо мітку з ім'ям 1 var
a: Integer; begin
a: = 10;
Goto 1; // Перехід на мітку 1
а: = sqrt (a); // Цей оператор не буде виконуватися ніколи! 1: а: = а + а; // Оператор, позначений міткою 1 end;

Оператори умовного переходу

Оператор умови призначений для виконання або невиконання будь-яких дій, що залежать від результату умови типу Boolean. Цей оператор застосовують для розгалуження виконання програми,
т. е. якщо дана умова істинно (і тільки в цьому випадку!), то виконується деяка послідовність операторів, в іншому випадку виконуються інші оператори. Вид оператора умови такий:

if умова then оператор1 else оператор2;

Оператор умови може бути записаний і в спрощеній формі:

Наведемо приклади використання операторів умови:

if а> 0 then b: = sqrt (a) else b: = a * 2; // Оператор умови
if a = 10 then b: = b + 1; // Спрощена форма

Для того щоб організувати розгалуження на декілька напрямків (більше двох), можна використовувати кілька операторів умови, вкладених один в одного. Вкладення операторів умови відбувається за тими ж правилами, що і вкладення складових операторів.

На відміну від інших мов програмування в Object Pascal пріоритет операцій відносини менше, ніж у логічних »операції, завдяки чому окремі складові частини складного логічного вираження полягають в дужки. Наприклад, такий запис попереднього оператора буде невірною:
if a> b and b <> 0 then ... // Помилка так як фактично (з урахуванням пріоритету операції) компілятор буде транслювати такий рядок:
if a> (b and b)<>0 then ...

Схожі статті