русс | укр

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

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


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


If-else


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


Вирази if-else застосовуються для вираження ймовірних рішень. Формально, синтаксис наступний:

if (вираз)

твердження1

else

твердження2

де else-частина не є обов'язковою. Вираз обчислюється; якщо він істинний (тобто вираз не має нульового значення), буде виконано твердження1. Якщо хибний (вираз має нульове значення) і наявна else-частина, тоді виконується твердження2, натомість.

Оскільки if просто перевіряє числове значення виразу, це дозволяє використовувати певні скорочення в кодуванні. Найочевиднішим є написання

if (вираз)

замість

if (вираз != 0)

Іноді це виглядає природньо і зрозуміло, а інколи занадто зашифровано.

Оскільки else-частина у виразі if-else не обов'язкова, то може виникнути неоднозначність, коли якийсь else пропущено у гніздованій послідовності виразів if. Це вирішується шляхом пов'язування else із найближчим попереднім if, що не має відповідного else. Так, наприклад, у

if (n > 0)

if (a > b)

z = a;

else

z = b;

else відповідає if, що знаходиться всередині, що ми також підкреслили відступами. Якщо це не те, чого ви хотіли, тоді потрібно використати фігурні дужки, щоб змусити до відповідної приналежності:

if (n > 0) {

if (a > b)

z = a;

}

else

z = b;

Неоднозначність особливо небезпечна в ситуаціях як наступна:

if (n > 0)

for (i = 0; i < n; i++)

if (s[i] > 0) {

printf("...");

return i;

}

else /* ПОМИЛКА */

printf("error -- n is negative\n");

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

До речі, зверніть увагу на крапки з комою після z = a

if (a > b)

z = a;

else

z = b;

Вони там тому, що граматично за if слідує твердження, а стверджувальні вирази на зразок «a = z;» завжди мають закінчуватися крапкою з комою.


<== попередня лекція | наступна лекція ==>
Пріоритет і послідовність обчислення | Else if


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