- •3444 Методичні вказівки
- •1 Базові структури алгоритмів
- •2 Обчислювальні процеси, що розгалужуються
- •2.1 Логічні вирази
- •2.2 Умовна операція ?:
- •Умова ? вираз_1 : вираз_2;
- •2.3 Оператор умовної передачі керуванняif
- •If (вираз)
- •2.4 Типові помилки програмування
- •2.5 Оператор розриву break
- •2.6 Оператор switch
- •Програма
- •3 Завдання для самостійного виконання
- •Програма
- •Програма
- •Програма
- •4 Питання для самоконтролю
- •Список літератури
2.3 Оператор умовної передачі керуванняif
Цей оператор має дві форми написання. Перша з них має вигляд
If (вираз)
{список операторів_1;}
[else { список операторів_2;}]
оператор_3;
При виконанні спочатку обчислюється вираз у круглих дужках (дужки обов'язкові!). Якщо результатом обчислення є "істинно", то наступним виконується список операторів_1, а потім – оператор_3 і т. д.
Якщо ж результат – "хибно", то список операторів_1 пропускається. Виконується список операторів_2, потім оператор_3 і т. д.
Приклад.
Припустимо, що потрібно обчислити
значення
.
Перед обчисленням необхідно перевірити
ОДЗ функції, якщо аргументи задовольняють
умови ОДЗ, обчислюємо значення функції
та виводимо її значення на друк, в іншому
випадку – друкуємо повідомлення про
неможливість проведення обчислень. У
нашому прикладі ОДЗ:a
- cos(x)≠0 (знаменник не
може дорівнювати нулю). Відповідний
фрагмент програми має вигляд
if (a - cos(x) )
{
y=1/(a-cos(x));
printf("x=%f y=%f\n", x, y);
}
else
printf("Дiлення на нуль при x=%f \n", x);
puts("Кiнець");
Тут у круглих дужках стоїть вираз a-cos(x). Якщо результат його обчислення не дорівнює нулю, то він сприймається як "істинно". Тоді виконується список операторів_1, що складається із двох простих операторів: обчислення значення у і виведення на екран його значення за допомогою функції printf( ).
У випадку якщо a-cos(x) дорівнює нулю, результат сприймається як "хибно". Буде виведено повідомлення: "Ділення на нуль при х = число".
Потім, у будь-якому разі, буде за допомогою функції puts( ) виведено повідомлення "кінець".
За допомогою оператора if можна здійснювати розгалуження на довільну кількість напрямків. Для цього після else необхідно розмістити ще один оператор if.
Наприклад, вираз для обчислення функції y має такий вигляд:

Фрагмент програми, що реалізує необхідні обчислення, має вигляд
if(x<0)
y=x*x;
else
if(x>0)
y=sqrt(x);
else
y=0;
2.4 Типові помилки програмування
1 Відсутні круглі дужки у записі умови. Ця помилка розпізнається на етапі компіляції і супроводжується повідомленням – «Error: If statement missing ...».
2 Відразу після круглих дужок із записом умови стоїть зайва крапка з комою. За відсутності блока else така помилка не буде розпізнана компілятором і буде сприйнята як порожній оператор if. Крапка з комою після ключового слова else також є синтаксичною помилкою.
3 Перевірка на рівність двох змінних записано за допомогою одиночного знака «=» замість подвійного знака «= =». Компілятор вважатиме такий запис операцією присвоювання, що призведе до неправильної роботи програми. Повідомлення про помилку в цьому випадку не видається, однак з'являється попередження «Warning: Possibly incorrect assignment».
4 Частково перекриваються блоки if та / або else двох вкладених один в одного умовних операторів. Наслідки цієї помилки зазвичай важко передбачувані. Іноді це призводить до повідомлення вигляду «Error: Misplaced else».
5 Неправильний запис складеної умови. Можливі варіанти помилок – порушення парності дужок, помилки в знаках логічних операцій І, АБО, НЕ.
2.5 Оператор розриву break
Цей оператор служить для дострокового виходу з оператора перемикання switch, а також із циклів (while, do while, for – буде розглянуто пізніше). Оператор break використовується для того, щоб закінчити виконання певної гілки case усередині оператора switch і перейти до кінця оператора switch.
