Модуль 2 Інструкції організації розгалужень. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Модуль 2 Інструкції організації розгалужень.



 

Типи розгалужень. Умовний оператор if

Типи розгалужень. Умовний оператор if

Умовний оператор if використається для розгалуження процесу обчислень на два напрямки. Формат оператора:

if (вираз) оператор_1; [else оператор_2;]

Спочатку обчислюється вираз, що може мати арифметичний тип або тип покажчика. Якщо воно не дорівнює нулю (має значення true), виконується перший оператор, інакше - другої. Після цього керування передається па оператору, що є наступним за умовним.

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

 

Приклади:

// 1// 2// 3// 4// 5

if (а<0) b = 1;

if (a<b && (a>d || a==0)) b++; else {b *=; a = 0;}

if (a<b) {if (a<c) m = a; else m = c;} else {if (b<c) m = b; else m = c;}

if (a++) b++;

if (b>a) max = b; else max = a;

У прикладі 1 відсутня галузь el se. Подібна конструкція називається «пропуск оператора», оскільки присвоювання або виконується, або пропускається залежно від виконання умови.

Якщо потрібно перевірити кілька умов, їх поєднують знаками логічних операцій. Наприклад, вираз в прикладі 2 буде істинно в тому випадку, якщо виконається одночасно умова а<Ь и одне з умов у дужках. Якщо опустити внутрішні дужки, буде виконано спочатку логічне И, а потім -АБО.

Оператор у прикладі 3 обчислює найменше значення із трьох змінних. Фігурні дужки в цьому випадку не обов'язкові, тому що компілятор відносить частину el se до найближчого if.

Приклад 4 нагадує про те, що хоча як вираз в операторі i f найчастіше використаються операції відносини, це не обов'язково.

Донструкции, подібні до оператора в прикладі 5, простіше й наочніше записувати у вигляді умовної операції (у цьому випадку: max = (b > а)? b: а;).

Якщо яка-небудь змінна використається тільки усередині умовного оператора, рекомендується оголосити її усередині дужок, наприклад:

If (int i = fun(t)) a -= i; else a += i:

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

___________________________________________________________________

 

Оператор вибору switch.

Оператори передачі управління

Оператор вибору switch.

Оператор switch (перемикач) призначений для розгалуження процесу обчислень на кілька напрямків. Формат оператора:

switch (вираз){

case константний_вираз_1: [список_операторів_1]

case константний_вираз_2:  [список_операторів_2]

сase константний_вираз_n: [список_операторів_n] [default: оператори ]

}

 

     
 


Операторы
Операторы n
Операторы 2

                                    

                          default

 

 


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

Вихід з перемикача звичайно виконується за допомогою операторів break або return. Оператор break виконує вихід із самого внутрішнього з об’емлющих його операторів switch, for, while й do. Оператор return виконує вихід з функції, у тілі якої він записаний.

Всі константні вирази повинні мати різні значення, але бути того самого цілого типу. Кілька міток можуть випливати підряд. Якщо збігу не відбулося, виконуються оператори, розташовані після слова default (а при його відсутності керування передається наступний за switch операторові).

Приклад (програма реалізує найпростіший калькулятор на 4 дії):

#include <iostream.h> int main(){

int a, b, res;

char op;

cout << “\n Уведіть 1й операнд: “; cin >> a;

cout << “\n Уведіть знак операції: “; cin >> op:

cout << “\n Уведіть 2й операнд: “; cin >> b;

bool f = true;

switch (op){

case ' + ': res = a + b; break;

case '-': res = a - b; break;

case '*': res = a * b; break;

case '/': res = a / b; break:

default: cout <<” \n Невідома операція”; f = false;

}

if (f) cout << “ \n Результат: “ << res;

return 0;

}

ПРИМІТКА

У випадку синтаксичної помилки в слові default повідомлення про помилку не видається, оскільки компілятор сприйме це слово як припустиму мітку оператора.

Приклад (програма реалізує найпростіший калькулятор на 4 дії):

#include <iostream.h>

int main(){

int a, b, res;

char op;

cout << “\n Уведіть 1й операнд: “; cin >> a;

cout << “\n Уведіть знак операції: “; cin >> op:

cout << “\n Уведіть 2й операнд: “; cin >> b;

bool f = true;

switch (op){

case ' + ': res = a + b; break;

case '-': res = a - b; break;

case '*': res = a * b; break;

case '/': res = a / b; break:

default: cout <<” \n Невідома операція”; f = false;

}

if (f) cout << “ \n Результат: “ << res;

return 0;

}



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 43; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.39.32 (0.01 с.)