Mantıksal (Logic) Operatörler



Benzer belgeler
Aritmetik Operatörleri Hemen her programlama dilinde olduğu gibi java dilinde de aritmetik işlemler yaparken aşağıdaki operatörleri kullanırız:

OPERATÖRLER Alıştırmalar

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Programlama Dili Prensipleri. Lab Notları 4

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Java da İşleçler, Ders #3 (4 Kasım 2009)

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Java da Program Denetimi ve Operatörler

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Belirli bir iş bir çok kez tekrarlanacaksa, programda bu iş bir kez yazılır ve döngü deyimleriyle istenildiği kadar tekrar tekrar çalıştırılabilir.

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

/*int sayi1, sayi2,toplam=0;

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

Programlama Dilleri 3

M.ilkucar MAKU MYO 1

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Temel Veri Türü İşlemleri

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Mantıksal İşlemler. 7.1 true, false, nil

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

Soru 1: Fahrenheit cinsinden verilen sıcaklığı Kelvin'e çeviren bir program yazınız. Aşağıdaki dönüşüm formülünü kullanabilirsiniz:

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

// hataları işaret eden referans

Bölüm 7. İfadeler ve atamalar ISBN

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

D İ Z İ L E R A R R A Y S

Koşullu Önermeler (if else)

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Mantıksal Operatörlerin Semantiği (Anlambilimi)

HSancak Nesne Tabanlı Programlama I Ders Notları

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

JAVA DEĞİŞKEN VE OPERATÖRLER. M.İLKUÇAR - 1

Karşılaştırma İşlemleri ve Koşullu İfadeler

Operatörler. 6.1 Operatör Nedir?

SAYI SİSTEMLERİ ve BOOLE CEBİRİ 1+1=1 ÖĞR.GÖR. GÜNAY TEMÜR - TEKNOLOJİ F. / BİLGİSAYAR MÜH.

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

Operatörlere İşlev Yükleme

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

Nesne Yönelimli Programlama

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Görsel Programlama. Temel Veri Tipleri, Değişkenler, Operatörler, Akış Kontrolü, Sınıflar, Metotlar, Paketler ve JavaDoc

BİL-141 Bilgisayar Programlama I (Java)

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

JAVADA DİZİ İŞLEMLERİ

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Insertion Sort. (Sokuşturma Sıralaması)

HSancak Nesne Tabanlı Programlama I Ders Notları

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Aritmetik Operatörleri

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ

BİL132 Bilgisayar Programlama II

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

Nesne Yönelimli Programlama

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Java: printf() Metodu İle Çıktıyı Biçemleme

Akış Konrol Mekanizmaları

Operator Aşırı Yükleme (Operator OverLoading)

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

NESNEYE YÖNELİK PROGRAMLAMA

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Programlama Dilleri 3

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

Bir c sınıfının doğal sıralaması ile tutarlı olması (be consistent with equals) demek, c sınıfı içindeki her e1 ve e2 nesnesi için

Program Akış Kontrol Yapıları

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

C Operatörler. Öğr. Gör. M. Ozan AKI. Rev 1.0

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

Program AkıĢ Kontrol Yapıları

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

Ders - 7 while döngüsü

Nesne Yönelimli Programlama

C++ Operatörler (Operators)

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

EMT2226 Nesne Yönelimli Programlamaya Giriş

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Sunum İçeriği. Programlamaya Giriş

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.

BASİT VERİ TÜRLERİ, STRİNGLER, VE KONSOL GİRİŞ/ÇIKIŞ

Degişken Tanımlama Ve Operatörler

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

ArrayList(int initialcapacity) Sığası (capacity) parametrenin belirlediği sayıda olan bir dizi oluşturur.

Transkript:

Mantıksal (Logic) Operatörler Bilgisayar dillerinin hemen hepsinde, program akışını kontrol edebilmek ve yönlendirebilmek için mantıksal operatörler kullanılır. Java dilinde kullanılan mantıksal operatörler aşağıda açıklanmıştır. boolean a, b; olmak üzere, mantıksal operatörlerin etkisi aşağıdaki tablodan görülebilir: İşlem Operatör Açıklama a && b Mantıksal ve Kısa devre ve a b Mantıksal veya Kısa devre veya a & b Mantıksal ve Uzun devre ve a b Mantıksal veya Uzun devre veya a ^ b Dışarmalı (exclusive) veya!a Değilleme Kısa devre (x!= 0) && (1/x > 1) Güvenli Uzun devre (x!= 0) & (1/x > 1) Güvenli değil Örnekler: && ve mantıksal operatörlerinin farklı kullanım biçimlerini örnekler üzerinde göreceğiz. Aşağıdakiler bu konuda biraz ipucu verebilirler. bool aa = false; bool bb =!aa; ise bb nin değeri true olur. Bölüm 06: Operatörler 1

int i=8, j=14; bool xxx = i>4 && j<12; ise, xxx false değerini alır. Oysa, bool yyy = i>3 j<10; ise yyy 'nin değeri true olur. bool zzz = (i>3 && j<10) (i<9 && j>10) ise, zzz nin değeri true olur. boolean b; b =!(3 > 2); // b is false b =!(2 > 3); // b is true boolean b; b = 3 > 2 && 5 < 7; // b is true b = 2 > 3 && 5 < 7; // b is now false boolean b; b = 3 > 2 5 < 7; // b is true b = 2 > 3 5 < 7; // b is still true b = 2 > 3 5 > 7; // now b is false Java dilinde, mantıksal deyimleri birbirlerine bağlamak için iki operatör kullanılır && Logical AND (Mantıksal VE) Logical OR (Mantıksal VEYA) Kısa Devre AND Operatörü: && boolean1 ve boolean2 iki mantıksal deyim olmak üzere, bu iki deyimin mantıksal VE ile birbirlerine bağlanması için boolean1 && boolean2 yazılır. Bu mantıksal bir bileşkedir. Bilindiği gibi, bileşenlerinden her ikisi de doğru olduğunda bileşke deyim doğru, aksi halde yanlıştır. boolean1 && boolean2 deyiminde Her iki operand boolean olmalıdır Sonuç boolean dir Her iki operand true ise sonuç true, değilse false olur Soldaki operand false ise, sağdaki operand değerlendirilmez (koşullu deyim) true && true = true; false && true = false; // her iki operand değerlendirildi // yalnız soldaki operand değerlendirildi Bölüm 06: Operatörler 2

Dolayısıyla, boolean1 yanlış ise, boolean2 nin değeri hesaplanmaz. Çünkü boolean2 doğru olsa bile bileşik deyim yanlış olacaktır. O nedenle, bu deyime koşullu VE deyimi ya da kısadevre-ve deyimi denir. KoşulluAND01.java public class KoşulluAND01 { int a = 0; int b = 1; if (a == 0 && b == 1) { Doğru System.out.println("Doğru"); else { System.out.println("Yanlış"); LogicDemo.java public class LogicDemo { boolean a = true; boolean b = false; System.out.println("a && b = " + (a && b)); System.out.println("a b = " + (a b)); System.out.println("!(a && b) = " +!(a && b)); a && b = false a b = true Bölüm 06: Operatörler 3

!(a && b) = true LogicOR1.java public class LogicOR1 { int x = 10; if(x == 15 x ==10) { 10 sayısı 5 ile bölünebilir. System.out.println( x + " sayısı 5 ile bölünebilir."); Kısa Devre OR: Boolean1 boolean2 deyiminde boolean1, true ise, boolean2 nin değeri ne olursa olsun Boolean1 boolean2 deyimi true olacaktır. O nedenle, boolean1 true değer alınca, derleyici boolean2 yi denetlemez; Boolean1 boolean2 bileşkesinin true olduğuna karar verir. Buna Kısa Devre OR deyimi denilir. KısaDevreOR2.java public class KısaDevreOR2 { int x = 12; if(x == 12 x ==7) { 12 sayısı 4 ile bölünebilir. System.out.println( x + " sayısı 4 ile bölünebilir."); Mantıksal Operatörler Bölüm 06: Operatörler 4

Operator Açıklama & Logical AND Logical OR ^ Logical XOR (exclusive OR) Short-circuit OR && Short-circuit AND! Logical unary NOT &= AND assignment = OR assignment ^= XOR assignment == Equal to!= Not equal to?: Ternary if-then-else MantıksalOperatörler01.java public class MantıksalOperatörler01 { // && (Koşullu - Kısa Devre AND) operatörü için tablo System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Koşullu AND (&&)", "false && false", ( false && false ), "false && true", ( false && true ), "true && false", ( true && false ), "true && true", ( true && true ) ); // (Koşullu - Kısa Devre OR) operatörü için tablo System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Koşullu OR ( )", "false false", ( false false ), "false true", ( false true ), "true false", ( true false ), "true true", ( true true ) ); // & (boolean lojik AND) operatörü için tablo System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Boolean logic AND (&)", "false & false", ( false & false ), "false & true", ( false & true ), "true & false", ( true & false ), "true & true", ( true & true ) ); // (boolean lojik OR) operatörü için tablo Bölüm 06: Operatörler 5

System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Boolean lojik (inclusive) OR ( )", "false false", ( false false ), "false true", ( false true ), "true false", ( true false ), "true true", ( true true ) ); // ^ (XOR) operatörü için tablo System.out.printf( "%s\n%s: %b\n%s: %b\n%s: %b\n%s: %b\n\n", "Boolean lojik (exclusive) OR (^)", "false ^ false", ( false ^ false ), "false ^ true", ( false ^ true ), "true ^ false", ( true ^ false ), "true ^ true", ( true ^ true ) ); //! (lojik değilleme) operatörü için tablo System.out.printf( "%s\n%s: %b\n%s: %b\n", "Logical NOT (!)", "!false", (!false ), "!true", (!true ) ); Koşullu AND (&&) false && false : false false && true : false true && false : false true && true : true Koşullu OR ( ) false false : false false true : true true false : true true true : true Boolean lojik AND (&) false & false false & true true & false true & true : false : false : false : true Boolean lojik (inclusive) OR ( ) false false : false false true : true Bölüm 06: Operatörler 6

true false true true : true : true Boolean lojik (exclusive) OR (^) false ^ false : false false ^ true : true true ^ false : true true ^ true : false Logical NOT (!)!false!true : true : false BooleanLojik01.java public class BooleanLojik01 { boolean a = true; boolean b = false; boolean c = a b; boolean d = a & b; boolean e = a ^ b; boolean f = (!a & b) (a &!b); boolean g =!a; System.out.println(" a = " + a); System.out.println(" b = " + b); System.out.println(" a b = " + c); System.out.println(" a&b = " + d); System.out.println(" a^b = " + e); System.out.println("!a&b a&!b = " + f); System.out.println("!a = " + g); a = true b = false a b = true a&b = false a^b = true!a&b a&!b = true Bölüm 06: Operatörler 7

Mantık01.java!a = false public class Mantık01 { int rakam = 7; int sayı = 11; int limit = 13; if (++rakam % 2 == 0 & ++sayı < limit) { System.out.println("if bloku çalışıyor"); System.out.println(rakam); System.out.println(sayı); System.out.println("if bloku çalışmıyor"); System.out.println(rakam); System.out.println(sayı); if bloku çalışmıyor 8 12 BooleanNOT_01.java public class BooleanNOT_01 { int a = 0; if (!(a == 0)) { System.out.println("a sayısı 0 değil"); else { System.out.println("a sayısı 0 dır"); Bölüm 06: Operatörler 8

a sayısı 0 dır KısaDevre01.java public class KısaDevre01 { static boolean test1(int m) { System.out.println("test1(" + m + ")"); System.out.println("Sonuç: " + (m < 1)); return m < 1; static boolean test2(int m) { System.out.println("test2(" + m + ")"); System.out.println("Sonuç: " + (m < 2)); return m < 2; static boolean test3(int m ) { System.out.println("test3(" + m + ")"); System.out.println("Sonuç: " + (m < 3)); Return m < 3; if (test1(0) && test2(2) && test3(2)) System.out.println("Deyim doğrudur"); else System.out.println("Deyim yanlıştır"); test1(0) Sonuç: true test2(2) Sonuç: false Deyim yanlıştır Aşağıdaki programın yalnızca ilk deyimi denetlediğini, ikinci deyimi denetlemeye gerek kalmadığını Bölüm 06: Operatörler 9

görebilirsiniz. Boolean02.java public class Boolean02 { static boolean aaaa() { System.out.println("aaaa fonksiyonu çağrıldı"); return false; static boolean bbbb() { System.out.println("bbbb fonksiyonu çağrıldı"); return true; System.out.println("regular AND:"); System.out.println("Sonuç : " + (aaaa() & bbbb())); System.out.println(); System.out.println("kısa-devre AND:"); System.out.println("Sonuç : " + (aaaa() && bbbb())); /* */ aaaa() = false olduğu için Kısa-devre AND deyimi bbbb() metodunu çağırmaz Çıktı regular AND: aaaa fonksiyonu çağrıldı bbbb fonksiyonu çağrıldı Sonuç : false kısa-devre AND: aaaa fonksiyonu çağrıldı Sonuç : false Bölüm 06: Operatörler 10

Boolean03.java public class Boolean03 { int x = 7; int y = 3; false true false true false System.out.println((x == y-1)&& (7 < 6) ); System.out.println(5 >= 4 && 7 < 6 + 3); System.out.println(5!= 4 && y+2 == 6); System.out.println(!(5 == 4) && 7 > 6); System.out.println(x==y); OR Operatörü: boolean1 ve bolean2 iki mantıksal deyim olmak üzere, bu iki deyimin mantıksal VEYA ile birbirlerine bağlanması için boolean1 boolean2 yazılır. Bu yeni bir mantıksal deyimdir. Bileşenlerinden herhangi birisi doğru olduğunda bileşke deyim doğru, ancak her iki bileşeni yanlış olduğunda bileşke deyim yanlış olur. boolean1 doğru ise, boolean2 nin değeri hesaplanmaz. Çünkü boolean2 yanlış olsa bile bileşke deyim doğru olacaktır. O nedenle, bu deyime bazen kısa-devre_veya mantıksal deyimi denir. Aşağıdaki programın yalnızca ilk deyimi denetlediğini, ikinci deyimi denetlemeye gerek kalmadığını görebilirsiniz. Boolean04.java Bölüm 06: Operatörler 11

public class Boolean04 { short x = 13; byte y = 9; Çıktı false true true true fals System.out.println((x == y-1) (7 < 6) ); System.out.println(5 >= 4 7 < 6 + 3); System.out.println(5!= 4 y+2 == 6); System.out.println(!(5 == 4) 7 > 6); System.out.println(x==y); Boolean05.java public class Boolean05 { static boolean cccc() { System.out.println("cccc metodu çağrıldı"); return true; static boolean dddd() { System.out.println("dddd metodu çağrıldı"); return false; System.out.println("regular OR:"); System.out.println("sonuç : " + (cccc() dddd())); System.out.println(); System.out.println("kısa-devre OR:"); System.out.println("sonuç : " + (cccc() dddd())); Çıktı regular OR: cccc metodu çağrıldı dddd metodu çağrıldı sonuç : true kısa-devre OR: Bölüm 06: Operatörler 12

cccc metodu çağrıldı sonuç : true Başka Operatörler Java dilinde aşağıdaki operatörleri de kullanırız. Operand Açıklama << Sola kayan bit işlemi (left shift bitwise operator) >> Sağa kayan bit işlemi (right shift bitwise operator). Nesne öğelerine erişim (member access for objects) [ ] Array indisleme (indexing operator used in arrays and collections) ( ) Veri dönüştürme operatörü (cast operator)?: Koşullu deyim operatörü (ternary operator) Bunları dersin başka bölümlerinde göreceğiz. Bölüm 06: Operatörler 13