Навігація
Головна
 
Головна arrow Інформатика arrow Об'єктно-орієнтоване програмування
< Попередня   ЗМІСТ   Наступна >

ВИРАЗИ

У мовах програмування під виразом розуміється комбінація констант, змінних, викликів методів (повертають значення), об'єднаних знаками операцій і дужками, яка в результаті обчислення повертає деякий результат. При обчисленні виразу визначається його значення і тип. Тип результату виразу залежить від типів змінних і констант, що беруть участь в цьому виразі, і є найбільш складним типом змінних і констант відповідно до рис. 3.4. Найбільш простим типом є byte, а найбільш складним - decimal. наприклад:

int а = 5; float f;

f = а / 4; // значення f = 1.0, т.к тип результат а / 4 - int f = a / 4f; // значення a = 1.25, т. К. Тип результат - float

ОПЕРАЦІЇ ВІДНОСИНИ

Операції відносини використовуються для порівняння значень змінних і констант. Всього є 6 операцій відносини: == (дорівнює),! = (Не дорівнює), <(менше),> (більше), <= (менше або дорівнює),> = (більше або дорівнює).

Слід звернути увагу на запис операції "одно", як == (два знака привласнити =), і "нс одно", як! =.

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

ЛОГІЧНІ ОПЕРАЦІЇ

У мові C # логічні операції діляться на дві категорії: одні виконуються над логічними значеннями операндів, інші здійснюють виконання логічної операції над бітами операндів. З цієї причини в C # існують дві унарні операції заперечення - логічне заперечення, заданий операцією!, І побітовое заперечення, заданий операцією ~. Перша з них визначена над операндом типу bool, друга - над операндом целочисленного типу, починаючи з типу int і вище (int, uint, long, ulong). Результатом операції в другому випадку є операнд, в якому кожен біт замінений його доповненням (0 на 1 і 1 на 0). Розглянемо приклад: bool b1, b2;

М = 2 * 2 == 4; // М = true;

b2 =! b1; // b2 = false;

// b2 = ~ b1; // помилка! uint j1 = 7, j2;

j2 = ~ j1; // j2 = 4294967288

// j2 =! J1; // помилка! int j4 = 7, j5; j5 = ~ j4; // j5 = -8

У цьому фрагменті закоментовані оператори, що призводять до помилок. У першому випадку була зроблена спроба застосування операції побітового заперечення до висловом типу bool, у другому - логічне заперечення застосовувалося до цілочисельним даними. І те й інше в C # незаконно. Зверніть увагу на різну інтерпретацію побітового заперечення для беззнакових і знакових цілочисельних типів. Для змінних j5 і 2 рядок бітів, що задає значення, одна і та ж, але інтерпретується по-різному.

Бінарні логічні операції ( && - умовне І та || - умовне АБО ) визначені тільки над даними типу bool. Операції називаються умовними, або короткими, оскільки буде обчислюватися другий операнд, залежить від уже обчисленого значення першого операнда.

В операції &&, якщо перший операнд дорівнює значенню false, другий операнд не вирахував і результат операції дорівнює false. Аналогічно в операції ||: якщо перший операнд дорівнює значенню true, то другий операнд не вирахував і результат операції дорівнює true.

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

// Умовне And - && int [] ar = {1,2,3};

int search = 7, i = 0;

// search - задане значення

while ((i <ar.Length) && (ar [i]! = search)) i ++;

if (i <ar.Length)

Console.WriteLine ( "Значення знайдено"); else

Console.WriteLine ( "Значення, не знайдено");

Якщо значення змінної search не збігається ні з одним зі значень елементів масиву аг, то остання перевірка умови циклу while виконуватиметься при значенні i, рівному ar.Length. У цьому випадку перший операнд отримає значення false, і, хоча другий операнд при цьому не визначено, цикл нормально завершить свою роботу. Другий операнд не визначений в останній перевірці, оскільки індекс елемента масиву виходить за допустимі межі (в C # індексація елементів починається з нуля). Відзначимо, що "нормальна" кон'юнкція вимагає обчислення обох операндів, тому її застосування в даній програмі призводило б до формування виключення в разі, коли зразка немає в масиві.

Три бінарні побітові операції: & - AND, | - OR, ^ - XOR можуть використовуватися як з цілими типами вище int, так і з булевими типами. У першому випадку вони використовуються як побітові операції, в другому - як звичайні логічні операції. Іноді необхідно, щоб обидва операнда обчислювалися в будь-якому випадку, тоді без цих операцій не обійтися. Ось приклад першого їх використання:

// Логічні побітові операції And, Or, XOR (&, |, ^) int k2 = 7, k3 = 5, k4, k5, кб; k4 = k2 & k3; k5 = k2 | k3; к6 = к2лкЗ;

УМОВНА ОПЕРАЦІЯ

У C # є умовна операція , що починається з умови (вираз типу bool), укладеного в круглі дужки, після якого слід знак питання і пара виразів , розділених двокрапкою ":". Якщо умова істинно, то з пари виразів виконується перша, в іншому випадку результатом є значення другого виразу. Наприклад: int а = 7, b = 9, max;

max = (a> b)? a: b; // max отримає значення 9.

 
Якщо Ви помітили помилку в тексті позначте слово та натисніть Shift + Enter
< Попередня   ЗМІСТ   Наступна >
 
Дисципліни
Агропромисловість
Аудит та Бухоблік
Банківська справа
БЖД
Географія
Документознавство
Екологія
Економіка
Етика та Естетика
Журналістика
Інвестування
Інформатика
Історія
Культурологія
Література
Логіка
Логістика
Маркетинг
Медицина
Нерухомість
Менеджмент
Педагогіка
Політологія
Політекономія
Право
Природознавство
Психологія
Релігієзнавство
Риторика
Соціологія
Статистика
Техніка
Страхова справа
Товарознавство
Туризм
Філософія
Фінанси
Пошук