"Üdvözlöm, Amigo! Annyira elragadtatott a logikai feladatok megoldása, hogy észre sem vettem, hogy bejöttél. Itt van egy számodra: ha a krokodilok repülnek, akkor fehér a hó. Van egy repülő krokodil. Mi a következtetés?"

– Hm... Tehát arra következtetünk, hogy fehér a hó?

"Kiváló! Sikerült a beavatási teszten. Készen állsz a következő téma elsajátítására. Ezt úgy hívják, hogy "logikai operátorok". És kezdjük a logikai logikával. Ösztönösen már tudod. Végül is egy robot vagy . Csak módosítanunk kell a beállításokat, hogy azok megfeleljenek a Java nyelvnek."

"Logi logika? Nemrég meséltek nekem a logikai típusról..."

"Igen, van itt közvetlen kapcsolat. A logikai kifejezések csak igazak vagy hamisak lehetnek. És ahogy megesik, ez a fajta logika az igaz vagy hamis kifejezésekről és az ilyen kifejezések kombinációiról szól. Például a 18 < kifejezés A 25 mindig igaz, és a 7 < 5 mindig hamis. A kifejezés (i < 10) az i értékétől függ. És ha a kifejezés például igazra értékeli ki, akkor megkérhetjük a programot, hogy tegyen valamit."

"Ahh, értem. A logikai kifejezések segítségével nem csak logikus következtetéseket vonhatunk le, hanem elágazásokat is létrehozhatunk a programokban."

"Pontosan. A lényeg az, hogy megtanuld megírni őket. Például Java-ban nem lehet egyszerűen csak írni a kifejezést 18 < age <65. Ez szintaktikailag helytelen lenne, és a program nem fog lefordítani.

"De írhatod így is:

(18 < age) AND (age < 65)

Természetesen valójában nem az ANGOL szót használjuk AND. Ehelyett egy logikai operátorra van szükség . Vagyis az „ÉS” másképp van ábrázolva.

"A Java-ban három logikai operátor van: AND(&&), OR(||), NOT(!).

A jó hír az, hogy zárójelek segítségével bármilyen bonyolultságú logikai kifejezést készíthet.

A rossz hír az, hogy a Java fejlesztők úgy döntöttek, hogy a C nyelv jelölését használják a és anda szavak helyett .ornot

Nézze meg a képernyőt:

Logikai operátor Elvárás Valóság
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

"Tulajdonképpen nem is olyan rossz... Elég kompakt. Már majdnem megjegyeztem őket."

"Nos, ez csodálatos. Íme néhány példa a logikai operátorok Java-ban való használatára:

Kifejezés Értelmezés Magyarázat
(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))

Példák összehasonlító operátorok és logikai változók használatára

– Ne feledd, Amigo, bárhová írhatsz logikai kifejezést, oda írhatsz logikai változót is.

"Ez hogy?"

"Úgy értem, hogy logikai kifejezéseket többféleképpen írhatsz. Például:

Kód Magyarázat
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Ha az életkor értéke 18és között van 65, akkor a „Munka lehet” kifejezés jelenik meg.
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
Létrehoztunk egy isYoungváltozót, és áthelyeztük a kifejezés első részét. Egyszerűen lecseréltük age >= 18a -ra age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
Létrehoztunk egy isOld változót, és áthelyeztük ebbe a kifejezés második részét. Ezenkívül age <= 65a helyére age > 65.

"Ez a három példa egyenértékű. Csak a második példában helyeztük át a kifejezés egy részét az utasításból ifegy külön logikai változóba ( isYoung). A harmadik példában a kifejezés második részét helyeztük át egy második változóba ( isOld). Egyébként egy logikai változó alapértelmezett értéke false."

– Emlékezni fogok rá. Remélem.

Logikai aritmetika

"Most menjünk át röviden a logikai műveleteken. Nagyon egyszerű és logikus (hogy is lehetne másként!) szabályoknak engedelmeskednek.

"Először lássuk, hogyan működik az operátorOR . Más néven ||diszjunkció .

Kifejezés Eredmény
true || true true
true || false true
false || true true
false || false false

a || b– Most már ki tudod következtetni, hogy a táblázat alapján mi a kifejezés eredménye ?

"Látom!" Egy kifejezés értéke trueakkor van, ha a kifejezésben legalább egy kifejezés true. Ha mindkettő igen false, akkor az eredmény: false.

"Ez igaz. Mivel olyan okos vagy, nézd meg még egyszer a táblázatot, és képzeld el, hogy falseez 0 és true1. Ha így nézed, az ||operátor viselkedése emlékeztet valamire a közönséges aritmetikán kívül?"

"Öhm... Nos, ez egy kicsit olyan, mint az összeadás... De ha összead, 1 + 1 nem egyenlő 1-gyel."

"Van bizonyos értelemben egyenlő, ha csak 0-val és 1-gyel dolgozunk. De most ne foglalkozz ezzel. A fontos az, hogy észrevetted a hasonlóságot a művelet és az összeadás között. Ez azt jelenti ||, ne lepődj meg azon a tényen, hogy ezt a műveletet gyakran „logikai összeadásnak” nevezik.

"Megvan."

"Most a AND, más néven &&, más néven kötőszó operátor lép a színpadra.

Kifejezés Eredmény
true && true true
true && false false
false && true false
false && false false

"Ahogy én megértem, egy kifejezés eredménye truecsak akkor jön létre, ha a kifejezést alkotó mindkét érték true. Ellenkező esetben mindig false."

"Jól van, Amigo! Úgy szívod fel mindezt, mint egy szivacs. Látsz még hasonlóságot az aritmetikával?"

"Szorzás!"

"Pontosan. Tehát itt van egy "logikai szorzás"".

"Ezután nézzük az NOToperátort, más néven !a logikai inverzt .

Kifejezés Eredmény
!true false
!false true

"Nos, itt minden nagyon egyszerű. A kezelő átvált trueerre falseés fordítva."

"Pontosan. Íme néhány hasznos kifejezés az Ön számára:"

Kifejezés Eredmény
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b