Паскаль: типи дійсних, оператори розгалуження, функції та їх виклики, процедури, під задачі
if умова then
оператор
else оператор
Виконання його полягає в тім, що спочатку обчислюється значення умови, записаної після слова if. Далі, якщо цим значенням є true, виконується оператор, записаний після слова then, і на цьому виконання закінчується. Але якщо це значення хибне, те виконується не перший, а другий оператор, записаний після else. Наприклад, при виконанні послідовності операторів
readln(x);
if x>=0 then z := 1 else z := -1
змінна z одержить значення 1, якщо прочитано невід'ємне значення x. Якщо ж прочитано значення від'ємне, то z одержить значення –1.
Оператор розгалуження в скороченій формі має вигляд:
if умова then оператор
Він відрізняється лише тим, що якщо обчислення умови дає значення false, то на цьому його виконання закінчується.
Як бачимо, оператори розгалуження містять умови, з обчислення яких і починається їх виконання. Тому ці оператори ще називаються умовними.
Застосуємо оператори розгалуження для перекладу алгоритму обчислення коренів на мову Паскаль. Пункт (3) можна, здавалося б, перекласти так:
if d>0 then x1:=(-b- sqrt(d))/(2*a); x2:=(-b+sqrt(d))/(2*a)
else
if d=0 then x1:=-b/(2*a);
{інакше нічого не робити}
Але це неправильно! Оператор розгалуження закінчується оператором присвоювання змінній x1. Оператор x2 := (-b+sqrt(d))/(2*a) записано уже за роздільником ";", тобто після оператора розгалуження. Те, що написано далі, взагалі не є оператором.Як же записати послідовність із двох або більше операторів там, де має бути один? Напрошується відповідь, що їх треба взяти в дужки. І такі дужки, що перетворюють послідовність операторів у один оператор, у мові Паскаль є. Це так звані відкриваюча та закриваюча операторні дужки: ключові слова begin і end (початок і кінець).
Запис вигляду
begin послідовність операторів end
називається складеним оператором.
Отже, опишемо обчислення одного або двох коренів таким оператором розгалуження в повній формі: