Розгалуження в Паскалі
Однією з основних алгоритмічних структур є розгалуження (альтернатива).
Якщо умова виконується, то буде виконана інструкція "1", якщо немає, то - інструкція "2". Незважаючи на те, що в схемі присутні два дії, виконано буде тільки одне, так як умова або помилково, або істинно. Третього не дано. Така схема дозволяє вирішувати завдання, в яких в залежності від обставин, що склалися потрібно зробити ту чи іншу дію. Немає ніякого сумніву, що число завдань такого роду величезне. Більш того, дуже складно придумати реально значуще завдання, алгоритм виконання якого містив би в собі просте пряме проходження команд. Навіть примітивний приклад, взятий з курсу математики, як ви побачите, не може бути вирішене без використання розгалуження. Отже, необхідно обчислити значення виразу y = 1 / x. Вам відомо, що ця функція не завжди має значення, тобто не для всіх значень аргументу існує значення результату. Наше завдання так скласти алгоритм, щоб виконавець ні в якому разі не встав в глухий кут, навіть при отриманні нуля як аргумент. Сформулювати це природною мовою не важко:
1. Отримати значення x.
2. Якщо x = 0, то повідомити, що вираз значення не має, інакше - обчислити y як 1 / x.
Таким чином використовується наведена вище алгоритмічна структура. Вона може бути виражена простими словами:
Як це записати на Паскалі? Так точно так же, тільки по-англійськи.
Формат умовного оператора на мові Паскаль:
Then <оператор 1>
Else <оператор 2>;
Зверніть увагу на те, що в Then- і Else- частини варто тільки один оператор. Але що робити, щоб вирішити задачу, в якій по виконання чи невиконання умови потрібно зробити не одне, а кілька дій? Тут приходить на допомогу вже відомий вам складовою оператор. У операторні дужки можна укласти будь-яку кількість операторів.
Варіант умовного оператора в цьому випадку:
Then Begin <группа операторов 1> end
Else Begin <группа операторов 2> end;
Знак "крапка з комою" не ставиться перед службовим словом Else, але оператори в групах, природно, відокремлюються одна від одної цим знаком.
Тепер поговоримо про умови. У програмах на мові Паскаль умови являють собою вираження, значенням яких є величина логічного (Boolean) типу. Це може бути як просто змінна зазначеного типу, так і складна послідовність висловлювань, пов'язаних логічними операціями.
У простих умовах можуть застосовуватися знаки операцій порівняння:> (більше), <(меньше), =(равно), <>(Не дорівнює),> = (більше або дорівнює), <=(меньше или равно).
Приклади простих умов:
Наведемо приклад рішення ще одного завдання: "З двох чисел вибрати найбільше".
На перший погляд рішення очевидно, але воно не настільки тривіально, як здається.
Writeln ( 'Введіть два числа');
Ще один класичний приклад: "По заданим коефіцієнтам вирішити квадратне рівняння". Це завдання складніше, тому перед тим як писати програму складемо алгоритм, записавши його у вигляді блок-схеми.Сначала вводимо коефіцієнти, потім обчислюємо дискриминант. Тепер виникає дві можливості: або відсутність дійсних коренів у разі негативного дискримінанту, або ці корені можна все-таки обчислити і вивести на екран в разі неотрицательного дискримінанту (випадок рівності дискримінанту нулю входить сюди ж, коренів - два, тільки вони однакові J).
При записи алгоритму на мові програмування слід врахувати, що в галузі "ні" не одну дію, а три, тому слід застосувати складовою оператор. Арифметичні вирази не забувайте записувати відповідно до правил мови Паскаль. В іншому, ця програма не складніше попередньої.
Var A, B, C, D, X1, X2: Real;
Writeln ( 'Введіть коефіцієнти квадратного рівняння');
If D<0 Then Writeln ('Корней нет! ')