Pascal/Розгалуження
Розгалуження
[ред.]Розгалуження - другий з типових різновидів алгоритмів. Розгалуження починається з певної умови. Якщо ця умова виконується, відбувається одна дія (чи набір дій); якщо ні - інша. Прикладом такого алгоритму може слугувати, наприклад, спілкування контролера з пасажиром автобуса: якщо пасажир пред'явив квиток, треба подякувати пасажиру за оплачений проїзд, якщо ні - оштрафувати. Для програмування розгалуження в мові Паскаль використовується одна з конструкцій 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). Спробуйте ввести ці значення в програму з попереднього уроку. Який результат вийшов? Як гадаєте, чому так?