Організація розгалужень

Не можна заздалегідь правильно визначити, який бік бутерброду мазати олією.

Із законів Мерфі.

Маючи умову чи змінну логічного типу, можна змусити програму виконувати різні послідовності операторів залежно від результату обчислення умови. Наприклад, напишемо програму, яка запитує з клавіатури два числа та повідомляє, яке з них більше – перше чи друге.

Розгалуження у програмі організується двома операторами: IF (як у програмістському фольклорі, в'язень замку Иф був програмістом ) і CASE. Спочатку розглянемо головний оператор розгалуження – IF. Його загальний вигляд такий:

IF умова THEN

IF умова THEN

Якщо (а IF англійською мовою і означає "якщо") умова істинна, то виконується оператор1. Якщо ж воно хибне, то виконується оператор2, або, при скороченій формі - оператор, наступний за IF.

Наша програма буде виглядати так (для стислості опустимо оператор TRY..EXCEPT):

Label1.Caption:='Перше число більше за друге'

ELSE Label1.Caption:='Друге число більше першого'

Зверніть увагу на запис з відступами: оператори, що стоять усередині IF, зміщуються праворуч. Delphi цього не вимагає, йому все одно, а от людині розбиратися в записі з відступами набагато легше. Ще один важливий момент – крапка з комою ставиться лише після другого оператора.Ні перед, ні післяELSEточки з комою бути не може!

При використанні скороченої форми запису не можна забувати, що оператор, що йде за IF, про умову нічого не знає і ніяк з IF не пов'язаний. Скажімо, наступний варіант програми помилковий:

Label1.Caption:='Перше число більше за друге';

Label1.Caption:='Друге число більше першого'

Другий оператор надання :=ніяк не пов'язаний з IF і виконуватиметься завжди. У результаті в будь-якому випадку програма виводитиме текст 'Друге число більше першого'. Скорочену форму використовують тоді, коли за невиконання умови нічого робити не треба.

Об'єднання операторів

Доступність операції - ще показник того, що її треба делать.

Із законів Мерфі

Формат запису оператора IF дозволяє помістити всередину його лише один оператор, що виконується, коли умова є істинною, і один – коли вона помилкова. Часто потрібно виконати не один, а багато операторів. Наприклад, при вирішенні квадратного рівняння після перевірки невід'ємності дискримінанта потрібно обчислити дійсне коріння рівняння, що вимагає як мінімум двох операторів присвоєння. Наступний записнеправильнийі викличе помилку при компіляції:

Як же бути? Дуже просто – потрібно перетворити кілька операторів на один. Для цього їх поєднують за допомогою вже відомих нам операторних дужок BEGIN та END. Запис виду

розглядається як один оператор. Не плутайте BEGIN і END, що є операторними дужками, з BEGIN і END, що позначають початок і кінець усієї програми. Таким чином, правильний запис такий:

Зверніть увагу, що оператор Label1.Caption:='Корні комплексні' в операторні дужки не укладено. Причина очевидна: це один-єдиний оператор, його нема з чим об'єднувати. Запис виду

хоч і не викликає помилки, але є надмірною і свідчить про низьку кваліфікацію програміста. Дужки BEGIN … END тут зовсім зайві.