"Ü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 and
a szavak helyett .or
not
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 |
---|---|
|
Ha az életkor értéke 18 és között van 65 , akkor a „Munka lehet” kifejezés jelenik meg. |
|
Létrehoztunk egy isYoung változót, és áthelyeztük a kifejezés első részét. Egyszerűen lecseréltük age >= 18 a -ra age < 18 . |
|
Létrehoztunk egy isOld változót, és áthelyeztük ebbe a kifejezés második részét. Ezenkívül age <= 65 a 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 if
egy 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 true
akkor 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 false
ez 0 és true
1. 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 true
csak 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 NOT
operá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 true
erre 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 |
GO TO FULL VERSION