You are on page 1of 3

ЛЕКЦІЯ № 7

КЕРУЮЧІ ОПЕРАТОРИ МОВИ ПРОГРАМУВАННЯ

Програми, котрі містять в розділі операторів тільки оператори введення-виведення


та оператори присвоєння, виконуються послідовно оператор за оператором. Такі програми
називаються лінійними, вони реалізують лінійні процеси обчислень.
Для організації розгалужень та циклічних процесів обчислень використовують
керуючі оператори мови програмування, які визначають послідовність виконання
операторів програми. До керуючих операторів відносять:
− оператор умовної передачі керування;
− оператор вибору;
− оператори організації циклів.

7.1 Оператор умовної передачі керування

Оператор умовної передачі керування (умовний оператор) використовується для


програмування алгоритмічної конструкції розгалуження (рис. 7.1), тобто ситуації, коли
при виконанні заданої умови реалізуються одні дії, а при невиконанні – інші дії. Як
правило, умова записується у вигляді логічного виразу: якщо його результат – true, то
виконується оператор, відповідний гілці «так», інакше – оператор, відповідний гілці «ні» –
наступний за ключовим словом else.

Ні Так
Умова
Умова

Опер.2 Опер.1
Опер.2 Опер.1

Рисунок 7.1 – Алгоритмічна конструкція «розгалуження»

Синтаксис умовного оператору:


if (<вираз>/<умова>) <оператор 1>;
else <оператор 2>;
В умовному операторі конструкція <вираз>/<умова> завжди замикається в круглі
дужки.
Оскільки в мові програмування С відсутній логічний тип даних, то результат
обчислення <виразу> не обов’язково має логічний тип, а може бути і цілочисловим. В
цьому випадку будь-яке не нульове значення відповідає значенню – true, нульове –
значенню – false.
Як правило, конструкція <вираз>/<умова> являє собою операцію порівняння,
логічну змінну або об’єднання операцій зрівнянь, або логічних змінних, за допомогою
логічних операцій: «і» (&&), «або» (||), «ні» (!).
Наприклад:
if ((x>=0) && (x<=5)) … ; // 0<=x<=5
if ((x<=0) || (x>=5)) … ; // x<=0; x>=5
if ((x>=0) && (x<=1)) puts (“x belongs to [0;1]”);
else puts (“x does not belong to [0;1]”);

Замість <оператор 1> і <оператор 2> може бути використано блок операторів.
Наприклад:
if (<умова>)
{
<послідовність операторів>;
}
else
{
< послідовність операторів >;
}
Якщо гілки будь-якого розгалуження містять інші розгалуження, в даному випадку
говорять про вкладеність одного умовного оператору в інший

Рисунок 7.2 – Приклад алгоритмічної конструкції з декілька «розгалужень»

if (<умова 1>) <оператор 1>;


else
if (<умова 2>) <оператор 2>;
else <оператор 3>;

if (<умова 1>) <оператор 1>;


if ((! < умова 1>) && (<умова 2>)) <оператор 2>;
if ((! < умова 1>) && (! < умова 2>)) <оператор 3>;

Вкладені оператори виконуються швидше, за рахунок того, що робота всієї


конструкції завершується автоматично після виконання однієї з умов. Додатковий виграш
в швидкості може бути отриманий за рахунок перевірки умов, котрі часто виконуються,
зверху піраміди вкладених умовних операторів.
Правило вкладеності: альтернатива else завжди відноситься до самого близького
зверху оператору if. Тому для керування послідовністю виконання операторів
використовуються складні оператори.
Приклад. Програма перевірки банківського рахунку.
#include <stdio.h>
void main()
{
double banc_account;
printf(“Input your banc_account);
scanf(“%lf”,&banc_account);
if (banc_account>=30000)
{
printf(“\n You may buy a flat”);
printf(“\n You may buy a car”);
printf(“\n Be happy!”);
}
}
Приклад. Програма порівняння чисел.
#include <stdio.h>
void main()
{
int A=150, B=100, C=70;
if (A>B) A=100;
if (B>C) A=C;
else A=B;
printf(“\n %d %d %d”,A,B,C);
}
Результат:
70 100 70

7.2 Операція вибору за умовою

Операція вибору за умовою – це єдина тримісна операція в мові С, яка працює


відразу з трьома операндами.
Синтаксис операції:
<вираз 1>?<вираз 2>:<вираз 3>;
Алгоритм виконання:
− якщо значення <вираз 1> дорівнює true (будь-яке не нульове значення), то весь
вираз становиться рівним <вираз 2>;
− якщо ж значення <вираз 1> дорівнює false (нульове значення), то весь вираз
дорівнює <вираз 3>.
Наприклад:
x=y ? 1 : 100; // x=1, якщо у – не нуль, х=100, якщо у=0.
Наприклад:
z=(x>y) ? x : y ; // z приймає максимальне значення з х та у.
Дана операція схожа на умовний оператор if, але її вдається використовувати не у
всіх випадках. Перевага: стислість, можливість використання всередині виклику функції:
printf(“максимальне значення %d”, ((x>y) ? x : y)));

7.3 Операція «Кома»

Кома використовується в мові С в якості розділового знаку, щоб розділити


оголошення змінних, аргументи функцій та ін.
Кома як знак операції: розділивши комою два вирази, можна утворити новий вираз.
Алгоритм:
1. Обчислюються значення обох виразів, причому ліве – першим.
2. Значенням всього виразу вважається результат обчислення правого внутрішнього
виразу.
Приклад.
x = (a ++, b ++);

Значення b присвоюється змінній x після чого інкрементується a, а потім – b.


Дужки в даному випадку є обов'язковими, тому що кома має дуже низький
пріоритет, нижче, ніж оператор присвоєння.

You might also like