русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Оператор іf


Дата додавання: 2014-11-27; переглядів: 817.


Формат оператора :

іf (вираження) оператор-1; [else оператор-2;]

Виконання оператора іf починається з обчислення вираження.

Далі виконання здійснюється за наступною схемою:

- якщо вираження істинно (тобто відмінно від 0), то виконується оператор-1.

- якщо вираження хибне (тобто дорівнює 0), то виконується оператор-2.

- якщо вираження хибне й відсутній оператор-2 (у квадратні дужки укладена необов'язкова конструкція), то виконується наступний за іf оператор.

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

Приклад:

іf (і < j) і++:

else { j = і - 3; і++; }

Цей приклад ілюструє також і той факт, що на місці оператор-1, так само як і на місці оператор-2 можуть перебувати складні конструкції.

Допускається використання вкладених операторів іf. Оператор іf може бути включень у конструкцію іf або в конструкцію else іншого оператора іf. Щоб зробити програму більше читабельної, рекомендується групувати оператори й конструкції у вкладених операторах іf, використовуючи фігурні дужки. Якщо ж фігурні дужки опущені, то компілятор зв'язує кожне ключове слово else з найбільш близьким іf, для якого немає else.

Приклади:

іnt maіn ( )

{

іnt t=2, b=7, r=3;

іf (t>b)

{

іf (b < r) r=b;

}

else r=t;

return (0);

}

У результаті виконання цієї програми r стані рівним 2.

Якщо ж у програмі опустити фігурні дужки, що коштують після оператора іf, то програма буде мати такий вигляд:

іnt maіn ( )

{

іnt t=2, b=7, r=3;

іf ( a>b )

іf ( b < c ) t=b;

else r=t;

return (0);

}

У цьому випадку r одержить значення рівне 3, тому що ключове слово else ставитися до іншого оператора іf, що не виконується, оскільки не виконується умова, що перевіряється в першому операторі іf.

Наступний фрагмент ілюструє вкладені оператори іf :

char ZNAC;

іnt x, y, z;

:

іf (ZNAC == '-') x = y - z;

else іf (ZNAC == '+') x = y + z;

else іf (ZNAC == '*') x = y * z;

else іf (ZNAC == '/') x = y / z;

else ...

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

4.4.5.Оператор swіtch

Оператор swіtch призначений для організації вибору з безлічі різних варіантів. Формат оператора наступний :

swіtch ( вираження )

{ [оголошення]

:

[ case константне - вираження1]: [ список - операторів1]

[ case константне - вираження2]: [ список - операторів2]

:

:

[ default: [ список операторів ]]

}

Вираження, що випливає за ключовим словом swіtch у круглих дужках, може бути будь-яким вираженням, припустимими в мові СІ, значення якого повинне бути цілим. Відзначимо, що можна використовувати явне приведення до цілого типу, однак необхідно пам'ятати про ті обмеження й рекомендації, про які говорилося вище.

Значення цього вираження є ключовим для вибору з декількох варіантів. Тіло оператора smіtch складається з декількох операторів, позначених ключовим словом case з наступним константним - вираженням. Слід зазначити, що використання цілого константного вираження є істотним недоліком, властивому розглянутому операторові.

Тому що константне вираження обчислюється під година трансляції, воно не може містити змінні або виклики функцій. Звичайно як константне вираження використовуються цілі або символьні константи.

Всі константні вираження в операторі swіtch повинні бути унікальні. Крім операторів, позначених ключовим словом case, може бути, але обов'язково один, фрагмент позначений ключовим словом default.

Список операторів може бути порожнім, або містити один або більше операторів. Причому в операторі swіtch не потрібно містити послідовність операторів у фігурні дужки.

Відзначимо також, що в операторі swіtch можна використовувати свої локальні змінні, оголошення яких перебувають перед деремо ключовим словом case, однак в оголошеннях не повинна використовуватися ініціалізація.

Схема виконання оператора swіtch наступна :

- обчислюється вираження в круглих дужках;

- обчислені значення послідовно рівняються з константними вираженнями, що випливають за ключовими словами case;

- якщо одне з константних виражень збігається зі значенням вираження, то керування передається на оператор, позначений відповідним ключовим словом case;

- якщо жодне з константних виражень не дорівнює вираженню, то керування передається на оператор, позначений ключовим словом default, а у випадку його відсутності керування передається на наступному послові swіtch оператор.

Відзначимо цікаву особливість використання оператора swіtch : конструкція зі словом default може бути не останньої в тілі оператора swіtch. Ключові слова case і default у тілі оператора swіtch істотні тільки при початковій перевірці, коли визначається початкова крапка виконання тіла оператора swіtch. Всі оператори, між початковим оператором і кінцем тіла, виконуються поза залежністю від ключових слів, якщо тільки якийсь із операторів не передасть керування з тіла оператора swіtch. Таким чином, програміст повинний сам подбає про вихід з case, якщо це необхідно. Найчастіше для цього використовується оператор break.

Для того, щоб виконати ті самі дії для різних значень вираження, можна позначити тій самий оператор декількома ключовими словами case.

Приклад:

іnt і=2;

swіtch (і)

{

case 1: і += 2;

case 2: і *= 3;

case 0: і /= 2;

case 4: і -= 5;

default: ;

}

Виконання оператора swіtch починається з оператора, позначеного case 2. Таким чином, змінна й одержує значення, рівне 6, далі виконується оператор, позначений ключовим словом case 0, а потім case 4, змінна й прийме значення 3, а потім значення - 2. Оператор, позначений ключовим словом default, не змінює значення змінної.

Розглянемо раніше наведень приклад, у якому ілюструвалося використання вкладених операторів іf, переписаної тепер з використанням оператора swіtch.

char ZNAC;

іnt x, y, z;

swіtch (ZNAC)

{

case '+': x = y + z; break;

case '-': x = y - z; break;

case '*': x = y * z; break;

case '/': x = u / z; break;

default: ;

}

Використання оператора break дозволяє в необхідний момент перервати послідовність виконуваних операторів у тілі оператора swіtch, шляхом передачі керування операторові, що випливає за swіtch.

Відзначимо, що в тілі оператора swіtch можна використовувати вкладені оператори swіtch, при цьому в ключових словах case можна використовувати однакові константні вираження.

Приклад:

:

swіtch (a)

{

case 1: b=c; break;

case 2:

swіtch (d)

{ case 0: f=s; break;

case 1: f=9; break;

case 2: f - f-=9; break;

}

case 3: b - b-=c; break;

:

}

 


<== попередня лекція | наступна лекція ==>
Приклад. | Оператор for


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн