Методичні вказівки до виконання практичних та лабораторних робіт з курсу «Обчислювальна техніка та програмування», страница 6

Оператори керування обчислювальним процесом використовуються для організації галуження, циклічного повторення операторів програми, а також передачі управління в необхідне місце програми в залежності від виконання будь-яких  умов. Мова С++ підтримує умовні оператори (if, switch) і оператор break.

Оператор галуження if має наступний вигляд:

if (вираз) True_оператор;

Наступний оператор;

де 'вираз'-» вираз довільного вигляду що інтерпретується мовою С як логічне, де будь-яке відмінне від нуля значення трактується як True і False у противному випадку. Робота цього оператора полягає в наступному: обчислюється вираз; якщо значення виразу відмінно від нуля, то виконується True-оператор, а після цього наступний за if оператор; якщо значення є нуль, то True-оператор пропускається й управління передається до наступного за if оператора.

Наприклад,

int i=0, j=0;

.............

if (m [j] <0) i++; //i-лічильник від’ємних елементів масиву m.

.............

Розглянутий вище оператор if можна розглядати як приватний випадок оператора if... else, що має вигляд:

if (вираз) True-оператор;

else

False-оператор;

Наступний оператор;

Робота цього оператора (if.. else) полягає в наступному: якщо обчислений вираз відмінний від нуля, то виконується True_оператор, а після цього наступний за if.. else оператор; якщо обчислений вираз дорівнює нулю, то виконується False_оператор, а після цього наступний за if.. else оператор.

Наприклад,

int i=0, j=0, k=0;//int i=j=k=0;

.......

if (m [j] <0) i++;// лічильник від’ємних елементів

else

k++;// лічильник додатніх елементів

........

Оператор if.. else можуть бути вкладеними. В цьому випадку оператори True_оператор або False_оператор можуть бути уявлені такою само конструкцією if.. else.

Наприклад,:

int i=0, j=0, k=0, n=0;

................

if (m [j] ==0) n++; //лічильник нульових елементів

else

if (m [j] <0) i++; // лічильник від’ємних елементів

................

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

Оператор switch має наступну форму:

switсh (switch_вираз;) {//початок тіла оператора switch

case константний цілочисельний вираз 1: оператор 1; [break;]

case - - - - - - - - -//- - - - - - - - - - - - - - - - 2: оператор 2; [break;]

case - - - - - - - - -//- - - - - - - - - - - - - - - - n: оператор n; [break;]

[default: оператор n+1;]}//кінець оператора switch

Наступний оператор;//у цю крапку передається управління.

Оператор switch працює таким чином: спочатку обчислюється switch_вираз

(switch_вираз - вираз цілочисельного типу ); обчислений вираз порівнюється зі значеннями констант або константних виразів групи-константний цілочисельний вираз

1.. Константний цілочисельний вираз n; якщо будь-який з константних цілочисельних виразів співпав зі значенням switch_виразу, то виконується відповідний оператор і управління (за наявності оператора break) передається наступному за оператором switch оператору; якщо відповідного збігу не виявлено, то виконується оператор n+1 гілки default (якщо він є) та управління передається наступному після switch оператору.

         Відзначимо, що оператор break відноситься до групи операторів безумовної передачі управління. При його виконанні управління передається в тіло охоплюючого блоку (складеного оператора, циклу) або для самого зовнішнього блоку (циклу) на оператор, наступний після блоку. Оператор break може бути використаний і в інших операторах циклу, розглянутих пізніше.

         Слідує знати, що за відсутності операторів break в тілі оператора switch і збігу значення switch_вираження з яким-небудь константним цілочисельним виразом виконується прохід наскрізь через всі оператори, що залишалися в тілі оператора switch, включаючи і, оператор гілки default.