"Selamlar, Amigo! Mantık problemlerini çözmeye kendimi o kadar kaptırmıştım ki içeri girdiğini fark etmedim. İşte sana bir tane: timsahlar uçuyorsa kar beyazdır. Uçan bir timsah var. Sonuç ne?"

"Hmm... Yani karın beyaz olduğu sonucuna mı varıyoruz?"

"Mükemmel! Başlatma testini geçtiniz. Bir sonraki konuya hakim olmaya hazırsınız. Buna 'mantıksal operatörler' deniyor. Boole mantığıyla başlayacağız. İçgüdüsel olarak, bunu zaten biliyorsunuz. Ne de olsa sen bir robotsun . Yalnızca ayarlarınızı Java diliyle eşleşecek şekilde düzenlememiz gerekiyor."

"Boole mantığı mı? Geçenlerde bana boole türü hakkında söylendi..."

"Evet, burada doğrudan bir bağlantı var. Boole ifadeleri yalnızca doğru veya yanlış olabilir. Ve tesadüfen, bu tür bir mantık tamamen doğru veya yanlış olan ifadeler ve bu tür ifadelerin kombinasyonları ile ilgilidir. Örneğin, 18 < ifadesi 25 her zaman doğrudur ve 7 < 5 her zaman yanlıştır. (i < 10) ifadesi, i'nin değerine bağlıdır. Ve örneğin, ifade doğru olarak değerlendirilirse, o zaman programdan bir şey yapmasını isteyebiliriz."

"Ahh, anladım. Boolean ifadeler, yalnızca mantıklı sonuçlar çıkarmamıza değil, aynı zamanda programlarda çatallar oluşturmamıza da izin veriyor."

"Kesinlikle. Önemli olan bunları nasıl yazacağınızı öğrenmek. Örneğin, Java'da gidip ifadeyi yazamazsınız 18 < age <65. Bu sözdizimsel olarak yanlış olur ve program derlenmez.

"Ama bunu şöyle yazabilirsin:

(18 < age) AND (age < 65)

Tabii ki aslında İNGİLİZCE kelimesini kullanmıyoruz AND. Bunun yerine, bir boole operatörüne ihtiyacınız var . Yani, 'VE' farklı şekilde temsil edilir.

"Java'da üç mantıksal işleç vardır: AND(&&), OR(||), NOT(!).

İyi haber şu ki , herhangi bir karmaşıklığın mantıksal ifadelerini oluşturmak için parantezleri kullanabilirsiniz .

Kötü haber şu ki, Java geliştiricileri , ve sözcükleri yerine C dilinden gösterim kullanmaya karar verdiler .andornot

Ekrana bak:

mantıksal operatör beklenti gerçeklik
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

"Aslında o kadar da kötü değil... Oldukça derli toplu. Neredeyse ezberledim."

"Eh, bu harika. İşte Java'da mantıksal işleçler kullanmanın bazı örnekleri:

İfade Tercüme Açıklama
(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))

Karşılaştırma işleçlerini ve boolean değişkenlerini kullanma örnekleri

"Unutma Amigo, nerede mantıksal bir ifade yazabiliyorsan, mantıksal bir değişken de yazabilirsin."

"O nasıl?"

"Demek istediğim, mantıksal ifadeleri farklı şekillerde yazabilirsiniz. Örneğin:

kod Açıklama
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Yaş değeri ile arasında ise 18" 65Çalışabilirsin" ibaresi görüntülenir.
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
Bir değişken yarattık isYoungve ifadenin ilk bölümünü içine taşıdık. age >= 18ile basitçe değiştirdik age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
Bir isOld değişkeni oluşturduk ve ifadenin ikinci bölümünü içine taşıdık. Ek olarak, age <= 65ile değiştirildi age > 65.

if"Bu üç örnek eşdeğerdir. Yalnızca ikinci örnekte ifadenin bir kısmını ifadeden ayrı bir boole değişkenine ( ) taşıdık isYoung. Üçüncü örnekte ifadenin ikinci kısmını ikinci bir değişkene ( isOld) taşıdık. Bu arada, bir boole değişkeninin varsayılan değeri false."

"Bunu hatırlayacağım. Umarım."

mantıksal aritmetik

"Şimdi kısaca mantıksal işlemlere geçelim. Çok basit ve mantıklı (aksi nasıl olur!) kurallara uyarlar.

"Önce, operatörün nasıl çalıştığına bir bakalım . Ayrılık olarakOR da bilinir .||

İfade Sonuç
true || true true
true || false true
false || true true
false || false false

a || b" Tabloya göre ifadenin sonucunun ne olduğunu şimdi anlayabilir misin ?"

"Anlıyorum!" Bir ifadenin değeri, trueifadedeki en az bir terimin olmasıdır true. Her ikisi de ise false, sonuç da olur false.

"Bu doğru. Madem çok zekisin, masaya bir kez daha bak ve bunun false0 ve true1 olduğunu hayal et. Bu şekilde baktığında, operatörün ||davranışı sana sıradan aritmetikten herhangi bir şey hatırlatıyor mu?"

"Hmm... Bu biraz toplamaya benziyor... Ama toplama yaptığınızda 1+1 1 etmiyor."

"Sadece 0 ve 1 ile çalışıyorsak bir anlamda eşittir. Ama şimdi bununla uğraşmayın. Önemli olan, işlem ile toplama arasındaki benzerliği fark etmişsinizdir. Bu, kazanacağınız anlamına gelir. ||" Bu işleme genellikle "mantıksal toplama" denmesi sizi şaşırtmasın.

"Anladım."

"Şimdi AND, aka &&, aka bağlaç operatörü sahneye çıkıyor.

İfade Sonuç
true && true true
true && false false
false && true false
false && false false

"Anladığım kadarıyla, bir ifadenin sonucu, trueyalnızca ifadeyi oluşturan her iki değerin de olması durumunda olur true. Aksi takdirde, her zaman olur false."

"Aferin Amigo! Bütün bunları bir sünger gibi emiyorsun. Aritmetikle başka bir benzerlik görüyor musun?"

"Çarpma işlemi!"

"Kesinlikle. Yani burada bir 'mantıksal çarpma'mız var".

NOT"Sonra operatöre, namı !diğer mantıksal tersine bakacağız .

İfade Sonuç
!true false
!false true

"Eh, burada her şey oldukça basit. Operatör değişir trueve falsetersi."

"Kesinlikle. İşte size bazı yararlı ifadeler:"

İfade Sonuç
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b