Лічильник
Сьогодні Разом
Відвідувань 282 5264116
Авторізацій 56 421554
Користувачів 29 2709
Статья

5. Розгалуження


У нашому повсякденному житті нам постійно доводиться робити вибір: наприклад, піти на лекцію чи кіно!? Чому ж залежатиме зроблений нами вибір? Якщо продовжити міркування за наведеним прикладом, то вибір може залежати і від того, що це за лекція і хто викладач... а також від того, який фільм нам, можливо, доведеться подивитися.

Інакше кажучи, як зробити вибір, необхідно проаналізувати дані, яких може залежати цей вибір. Наприклад, якщо через пропуск лекції у студентів будуть проблеми, то слід таки піти на лекції, а не в кіно, інакше краще піти на лекцію.

7. Розгалуження в Pascal


У алгоритмічних мовами для вибору шляху виконання алгоритму використовують спеціальний оператор – оператор розгалуження.

Коли виконання алгоритму доходить до оператора розгалуження, то насамперед виконується обчислення логічного виразу - умови: якщо результат обчислення true (істина), то виконується "Дія 1", інакше - "Дія 2".

Синтаксис оператора розгалуження Pascal:
if <умова>
 then <Дія 1>
 else <Дія 2>
Оператор розгалуження можна використовувати і у скороченій формі:
if <умова>
 then <Дія 1>
У цьому випадку, якщо умова виконується (результат логічного виразу true), то виконується додаткова "Дія 1", яка не виконувалася б у разі помилкового значення логічного виразу.

"Дія 1" і "Дія 2" може бути простим або складним оператором (група простих операторів, укладених в операторні дужки begin ... end)

8. Простий приклад


Наприклад розглянемо алгоритм обчислення кореня квадратного із заданого речового числа.

З математики нам відомо, що квадратний корінь неможливо обчислити, якщо підкорене вираз негативне. Отже, перш ніж обчислювати значення кореня квадратного із заданого числа, слід перевірити його значення: якщо значення вихідного числа менше нуля, то повідомити, що обчислити неможливо, інакше - обчислити і вивести результат.
var x, y: Real;

begin
 readln(x);
 if x < 0
  then writeln('Обчислити неможливо')
  else begin
        y := sqrt(x);
        writeln(y:0:3)
       end
end.

9. Вкладені оператори розгалуження


Іноді виникає необхідність вибрати шлях виконання алгоритму не з двох можливих, а з трьох або більше. Наприклад: якщо вихідне число може бути позитивним, негативним та рівним нулю, тобто не позитивне та не негативне.

У такому разі вдаються до вкладених розгалужень: оператор розгалуження (вкладений) в одній із гілок іншого оператора розгалуження (зовнішнього).
if <умова 1>
 then <Дія 1.1>
 else if <умова 2>
       then <Дія 2.1>
       else <Дія 2.2>

10. Увага!


Використовуючи вкладені оператори розгалуження, слід пам'ятати, що else завжди відноситься до найближчого вище if, наприклад такий запис може викликати неоднозначне розуміння:
if <умова 1>
 then if <умова 2>
       then <Дія 2.1>
 else <Дія 2>
На перший погляд, гілка else відноситься до зовнішнього оператора розгалуження і повинна виконатися у разі помилкового значення "умови 1". Але це не так: дотримуючись правила "else завжди відноситься до найближчого вище if", виконання "Дія 2" можливе лише при помилковому значенні "умова" 2". Щоб уникнути таких неоднозначних інтерпретацій, слід розставляти операторні дужки.
if <умова 1>
 then begin
       if <умова 2>
        then <Дія 2.1>
      end
 else <Дія 2>

182. Розгалуження C/C++


У алгоритмічних мовами для вибору шляху виконання алгоритму використовують спеціальний оператор – оператор розгалуження.

Коли виконання алгоритму доходить до оператора розгалуження, то насамперед виконується обчислення логічного виразу - умови: якщо результат обчислення true (істина), то виконується "Дія 1", інакше - "Дія 2".

Синтаксис оператора розгалуження C/C++:
if (<умова>)
 <Дія 1>;
 else <Дія 2>;
Оператор розгалуження можна використовувати і у скороченій формі:
if (<умова>)
 <Дія 1>;
У цьому випадку, якщо умова виконується (результат логічного виразу true), то виконується додаткова "Дія 1", яка не виконувалася б у разі помилкового значення логічного виразу.

"Дія 1" та "Дія 2" може бути простим або складним оператором (група простих операторів, укладених в операторні дужки { ... })

183. Простий приклад


Наприклад розглянемо алгоритм обчислення кореня квадратного із заданого речового числа.

З математики нам відомо, що квадратний корінь неможливо обчислити, якщо підкорене вираз негативне. Отже, перш ніж обчислювати значення кореня квадратного із заданого числа, слід перевірити його значення: якщо значення вихідного числа менше нуля, то повідомити, що обчислити неможливо, інакше - обчислити і вивести результат.
#include 
#include < math.h >

int main() {
 double x;
 scanf("%lf", &x);
 if (x < 0)
  printf('Обчислити неможливо');
  else { double y = sqrt (x);
         printf("%.3lf", y);
       }
}

184. Вкладені оператори розгалуження


Іноді виникає необхідність вибрати шлях виконання алгоритму не з двох можливих, а з трьох або більше. Наприклад: якщо вихідне число може бути позитивним, негативним та рівним нулю, тобто не позитивне та не негативне.

У такому разі вдаються до вкладених розгалужень: оператор розгалуження (вкладений) в одній із гілок іншого оператора розгалуження (зовнішнього).
if (<умова 1>)
 <Дія 1.1>;
 else if (<умова 2>)
       <Дія 2.1>;
       else <Дія 2.2>;
Увага!
Використовуючи вкладені оператори розгалуження, слід пам'ятати, що else завжди відноситься до найближчого вище if, наприклад такий запис може викликати неоднозначне розуміння:
if (<умова 1>)
 if (<умова 2>)
   <Дія 2.1>;
else <Дія 2>;
На перший погляд, гілка else відноситься до зовнішнього оператора розгалуження і повинна виконатися у разі помилкового значення "умови 1". Але це не так: дотримуючись правила "else завжди відноситься до найближчого вище if", виконання "Дія 2" можливе лише при помилковому значенні "умова" 2". Щоб уникнути таких неоднозначних інтерпретацій, слід розставляти операторні дужки.
if (<умова 1>) {
 if (<умова 2>)
  <Дія 2.1>;
}
else <Дія 2>;