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). Спробуйте ввести ці значення в програму з попереднього уроку. Який результат вийшов? Як гадаєте, чому так?

Завдання[ред.]