Розгалуження
Розгалуження - другий з типових різновидів алгоритмів. Розгалуження починається з певної умови. Якщо ця умова виконується, відбувається одна дія (чи набір дій); якщо ні - інша. Прикладом такого алгоритму може слугувати, наприклад, спілкування контролера з пасажиром автобуса: якщо пасажир пред'явив квиток, треба подякувати пасажиру за оплачений проїзд, якщо ні - оштрафувати. Для програмування розгалуження в мові Паскаль використовується одна з конструкцій if - then і if - then - else(англ. if - "якщо", then - "то", else - "інакше"). if a=1 then writeln('A дорівнює 0');
Команда writeln буде виконана тільки якщо буде виконана умова.
if 2+2=5 then writeln('Два і два буде п''ять!') else writeln('Два і два не п''ять...');
Першу команду writeln буде виконано, тільки якщо виконується умова; оскільки очевидно, що вона не виконується, виконана буде тільки друга команда writeln. Зверніть увагу на розстановку крапок із комою: єдине місце, де в цих конструкції можна їх ставити - це наприкінці. Так, крапка з комою після then перед writeln в першому прикладі if a=1 then; writeln('A дорівнює 0'); призведе до того, що writeln буде виконано незалежно від значення a; в другогому прикладі зайва крапка з комою до else викличе повідомлення компілятора про помилку - бо else не є самостійною конструкцією мови, а частиною конструкції if-then-else.
Конструкції if-then можуть бути вкладеними одна в одну. Ось, наприклад, переробка програми з попереднього урока: program LinearEquation; var a,b:real; begin writeln('Ця програма розв''язує лінійне рівняння ax=b'); write('a='); readln(a); write('b='); readln(b); if a<>0 then writeln('x=',b/a) else if b=0 then writeln('Будь-яке дійсне число задовільняє цьому рівнянню') else writeln('Рівняння не має дійсних розв''язків'); end. Тепер програма перевірятиме, чи існують розв'язки в рівняння взагалі чи не буде будь-яке число розв'язком цього рівняння за математичними законами. Переконайтеся, що програма працює, як передбачалося (запустіть її і введіть значення a=0, b=0 і a=0, b=1). Спробуйте ввести ці значення в програму з попереднього уроку. Який результат вийшов? Як гадаєте, чому так?
Завдання