"Поздрави, Амиго! Толкова се увлякох от решаването на логически задачи, че не забелязах, че влизаш. Ето една за теб: ако летят кроcodeor, значи снегът е бял. Има летящ кроcodeил. Какъв е изводът?"
— Хм... Значи заключаваме, че снегът е бял?
„Отлично! Издържахте началния тест. Готови сте да овладеете следващата тема. Нарича се „логически оператори“. И ще започнем с булева логика. Инстинктивно вече го знаете. В крайна сметка вие сте робот . Просто трябва да променим настройките ви, за да съответстват на езика Java."
„Булева логика? Наскоро ми казаха за булев тип...“
„Да, тук има пряка връзка. Булевите изрази могат да бъдат само истина or невярно. И Howто се случва, този вид логика се отнася изцяло за изрази, които са истина or невярно, и комбинации от такива изрази. Например изразът 18 < 25 винаги е вярно, а 7 < 5 винаги е невярно. Изразът (i < 10) зависи от стойността на i. И ако изразът се изчисли, например, като вярно, тогава можем да поискаме от програмата да направи нещо."
„Аха, разбирам. Булевите изрази ни позволяват не само да правим логически заключения, но и да създаваме разклонения в програмите.“
„Точно. Основното нещо е да се научите How да ги пишете. Например в Java не можете просто да отидете и да напишете израза 18 < age <65
. Това би било синтактично неправилно и програмата няма да се компorра.
„Но можете да го напишете така:
(18 < age) AND (age < 65)
Разбира се, ние всъщност не използваме АНГЛИЙСКАТА дума AND
. Вместо това се нуждаете от булев оператор . Тоест, „И“ е представено по различен начин.
„В Java има три логически оператора: AND
(&&), OR
(||), NOT
(!).
Добрата новина е, че можете да използвате скоби , за да конструирате логически изрази с всяHowва сложност.
Лошата новина е, че разработчиците на Java решиха да използват нотация от езика C instead of and
думите or
и not
.
Погледнете екрана:
Логически оператор | Очакване | Реалност |
---|---|---|
AND (∧) |
and |
&& |
OR (∨) |
or |
|| |
NOT (¬) |
not |
! |
„Всъщност не е толкова лошо... Доста компактно. Почти съм ги запомнил.“
„Е, това е чудесно. Ето няколко примера за използване на логически оператори в Java:
Изразяване | Интерпретация | Обяснение |
---|---|---|
(0 < a) && (a < 100) |
(0 < a) and (a < 100) |
(0 < a) AND (a < 100) |
(!a) && (!b) |
(not a) and (not b) |
(NOT a) AND (NOT b) |
!(!a || !b) |
not((not a) or (not b)) |
NOT((NOT a) OR (NOT b)) |
Примери за използване на оператори за сравнение и булеви променливи
„Запомни, Амиго, навсякъде, където можеш да напишеш логически израз, можеш да напишеш и логическа променлива.“
— Как е това?
„Имам предвид, че можете да пишете логически изрази по различни начини. Например:
Код | Обяснение |
---|---|
|
Ако стойността на възрастта е между 18 и 65 , тогава се показва фразата "Можете да работите". |
|
Създадохме isYoung променлива и преместихме първата част от израза в нея. Ние просто заменихме age >= 18 с age < 18 . |
|
Създадохме променлива isOld и преместихме втората част от израза в нея. Освен това age <= 65 беше заменен от age > 65 . |
„Тези три примера са еквивалентни. Само във втория пример преместихме част от израза от израза if
в отделна булева променлива ( isYoung
). В третия пример преместихме втората част от израза във втора променлива ( isOld
). Между другото, стойността по подразбиране на булева променлива е false
.
— Ще го запомня. Надявам се.
Логическа аритметика
„А сега нека прегледаме накратко логическите операции. Те се подчиняват на много прости и логични (How иначе!) правила.
„Първо, нека видим How OR
работи операторът. Известен е също като ||
or дизюнкция .
Изразяване | Резултат |
---|---|
true || true |
true |
true || false |
true |
false || true |
true |
false || false |
false |
"Можете ли да заключите сега Howъв е резултатът от израза a || b
въз основа на tableта?"
"Виждам!" Стойността на израз е true
, ако поне един член в израза е true
. Ако и двете са false
, тогава резултатът е false
.
„Това е правилно. След като си толкова умен, погледни отново tableта и си представете, че false
е 0 и true
е 1. Когато го погледнете по този начин, ||
поведението на оператора напомня ли ви нещо от обикновената аритметика?“
„Ъм... Е, това е малко като събиране... Но когато правиш събиране, 1 + 1 не е равно на 1.“
„Има смисъл, в който е равно, ако работим само с 0 и 1. Но не се занимавайте с това точно сега. Важното е, че сте забелязали прorката между операцията и ||
събирането. Това означава, че няма Не се изненадвайте от факта, че тази операция често се нарича „логическо добавяне“.
"Схванах го."
„Сега операторът AND
, известен още като &&
, известен още като конюнкция , излиза на сцената.
Изразяване | Резултат |
---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
„Доколкото разбирам, резултатът от израз е true
само ако и двете стойности, съставляващи израза, са true
. В противен случай винаги е false
.“
"Браво, Амиго! Попиваш всичко това като гъба. Виждаш ли друга прorка с аритметиката?"
"Умножение!"
„Точно така. Така че тук имаме „логическо умножение“.
„След това разглеждаме NOT
оператора, известен още !
като логически обратен .
Изразяване | Резултат |
---|---|
!true |
false |
!false |
true |
"Е, тук всичко е съвсем просто. Операторът се променя true
на false
и обратно."
"Точно така. Ето някои полезни изрази за вас:"
Изразяване | Резултат |
---|---|
m && !m |
false |
m || !m |
true |
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
GO TO FULL VERSION