"Salut, Amigo! Am fost atât de purtat de rezolvarea problemelor de logică, încât nu am observat că intri. Iată unul pentru tine: dacă zboară crocodilii, atunci zăpada este albă. E un crocodil zburător. Care este concluzia?"

— Hm... Deci tragem concluzia că zăpada este albă?

„Excelent! Ai trecut testul de inițiere. Ești gata să stăpânești următorul subiect. Se numește „operatori logici”. Și vom începe cu logica booleană. Instinctiv, știi deja asta. Până la urmă ești un robot . Trebuie doar să vă modificăm setările pentru a se potrivi cu limbajul Java."

"Logica booleană? Mi s-a spus recent despre tipul boolean..."

„Da, există o legătură directă aici. Expresiile booleene pot fi doar adevărate sau false. Și, după cum se întâmplă, acest tip de logică se referă la expresii care sunt adevărate sau false și combinații ale unor astfel de expresii. De exemplu, expresia 18 < 25 este întotdeauna adevărat, iar 7 < 5 este întotdeauna fals. Expresia (i < 10) depinde de valoarea lui i. Și dacă expresia evaluează, de exemplu, la adevărat, atunci putem cere programului să facă ceva."

"Ahh, am înțeles. Expresiile booleene ne permit nu numai să facem concluzii logice, ci și să creăm bifurcări în programe."

„Exact. Principalul lucru este să înveți cum să le scrii. De exemplu, în Java nu poți doar să scrii expresia 18 < age <65. Acest lucru ar fi incorect din punct de vedere sintactic și programul nu se va compila.

„Dar o poți scrie așa:

(18 < age) AND (age < 65)

Desigur, nu folosim de fapt cuvântul ENGLEZĂ AND. În schimb, aveți nevoie de un operator boolean . Adică, „ȘI” este reprezentat diferit.

„Există trei operatori logici în Java: AND(&&), OR(||), NOT(!).

Vestea bună este că puteți folosi paranteze pentru a construi expresii logice de orice complexitate.

Vestea proastă este că dezvoltatorii Java au decis să folosească notația din limbajul C în locul cuvintelor și and.ornot

Priveste la ecran:

Operator logic Aşteptare Realitate
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

"De fapt, nu e chiar atât de rău... Destul de compact. Aproape că le-am memorat."

„Ei bine, este minunat. Iată câteva exemple de utilizare a operatorilor logici în Java:

Expresie Interpretare Explicaţie
(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))

Exemple de utilizare a operatorilor de comparație și a variabilelor booleene

— Amintește-ți, Amigo, oriunde poți scrie o expresie logică, poți scrie o variabilă logică.

"Cum e?"

„Vreau să spun că poți scrie expresii logice în moduri diferite. De exemplu:

Cod Explicaţie
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Dacă valoarea vârstei este între 18și 65, atunci este afișată expresia „Poți lucra”.
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
Am creat o isYoungvariabilă și am mutat prima parte a expresiei în ea. Pur și simplu am înlocuit age >= 18cu age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
Am creat o variabilă isOld și am mutat a doua parte a expresiei în ea. În plus, age <= 65a fost înlocuit cu age > 65.

„Aceste trei exemple sunt echivalente. Numai în al doilea exemplu am mutat o parte a expresiei din ifinstrucțiune într-o variabilă booleană separată ( isYoung). În al treilea exemplu, am mutat a doua parte a expresiei într-o a doua variabilă ( isOld). Apropo, valoarea implicită a unei variabile booleene este false."

— Îmi voi aminti asta. Sper.

Aritmetică logică

„Acum să trecem pe scurt prin operațiuni logice. Ei se supun unor reguli foarte simple și logice (cum ar putea fi altfel!).

„În primul rând, să vedem cum ORfuncționează operatorul. Este cunoscut și ca ||sau disjuncție .

Expresie Rezultat
true || true true
true || false true
false || true true
false || false false

„Poți deduce acum care este rezultatul expresiei a || bpe baza tabelului?”

"Înțeleg!" Valoarea unei expresii este truedacă cel puțin un termen din expresie este true. Dacă ambele sunt false, atunci rezultatul este false.

"Așa este corect. Din moment ce ești atât de deștept, aruncă o altă privire la tabel și imaginează-ți că falseeste 0 și trueeste 1. Când te uiți așa, ||comportamentul operatorului îți amintește de ceva din aritmetica obișnuită?"

"Hm... Ei bine, este un pic ca adunarea... Dar când faci adunări, 1 + 1 nu este egal cu 1."

„Există un sens în care este egal dacă lucrăm doar cu 0 și 1. Dar nu vă deranjați cu asta chiar acum. Important este că ați observat asemănarea dintre operație și ||adunare. Aceasta înseamnă că veți” nu fi surprins de faptul că această operație este adesea numită „adăugare logică”.

"Am înţeles."

„Acum AND, , alias &&, alias operatorul de conjuncție , vine pe scenă.

Expresie Rezultat
true && true true
true && false false
false && true false
false && false false

„După cum am înțeles, rezultatul unei expresii este truenumai dacă ambele valori care alcătuiesc expresia sunt true. În caz contrar, este întotdeauna false”.

"Bravo, Amigo! Absorbi toate astea ca pe un burete. Mai vezi o asemanare cu aritmetica?"

"Multiplicare!"

"Exact. Deci aici avem o 'înmulţire logică'".

„În continuare, ne uităm la NOToperator, alias !, alias inversul logic .

Expresie Rezultat
!true false
!false true

"Ei bine, totul este destul de simplu aici. Operatorul trece truela falseși invers."

"Exact. Iată câteva expresii utile pentru tine:"

Expresie Rezultat
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b