operatörler - klupersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...c/c++ dilindeki...

51
Operatörler Operatörler 1 Programlama Dilleri 3

Upload: others

Post on 17-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

OperatörlerOperatörler

1Programlama Dilleri 3

Page 2: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Operatör Nedir?Operatör Nedir?Operatörler önceden tanımlanmış birtakımmatematiksel ya da mantıksal işlemleri yapmakmatematiksel ya da mantıksal işlemleri yapmakiçin kullanılan özel karakterler ya da karakterlertopluluğudur.topluluğudur.

Operatörlerin işlem yapabilmek için ihtiyaçduydukları değerlere ise “operand” denir.

x+y “+” operatör “x” ve “y” operandx+y + operatör, x ve y operand++z “++” operatör, “z” operand

2Programlama Dilleri 3

Page 3: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Operatörler yapılarına ve işlevlerine görefl d l bilisınıflandırılabilir.

– Yapılarına göre:• Unary (tek operandı olan) Operatörler• Binary (iki operandı olan) Operatörler• Ternary (üç operandı olan) Operatörler

3Programlama Dilleri 3

Page 4: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Unary Operatörler:• () [] ++ ‐‐ + ‐ ! ~ new checked unchecked typeof() , [] , ++ , , + , , ! , , new , checked , unchecked , typeof, sizeof

Bi O tö lBinary Operatörler• * , / , % , + , ‐ , < , <= , > , >= , as , is , << , >> , == , != , & , ^ , |, && , || , = , *= , /= , %= , += , ‐= , <<= , >>= , &= , ^= , |=

Ternary Operatörler• ? :• ? :

4Programlama Dilleri 3

Page 5: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

İşlevlerine Göre:İşlevlerine Göre:

• Aritmetik OperatörlerAritmetik Operatörler

• Karşılaştırma Operatörleri

• Mantıksal Operatörler

• Bitsel Operatörler• Atama ve İşlemli Atama Operatörleri

Ö• Özel Amaçlı Operatörler

5Programlama Dilleri 3

Page 6: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aritmetik Operatörlerp• + , ‐ , * , / , % , ++ , ‐‐

Karşılaştırma Operatörleri• > < <= >= == != as is• > , < , <= , >= , == , != , as , is

Mantıksal Operatörler• || , && , !

Bitsel Operatörler• | , & , ~ , ^ , << , >>

Atama ve İşlemli Atama Operatörleriş p• = , *= , /= , %= , += , ‐= , <<= , >>= , &= , ^= , |=

Özel Amaçlı Operatörler• ? : () [] + & * > new checked unchecked• ? : , () , [] , + , ‐ , & , * , ‐> , . , new , checked , unchecked ,typeof , sizeof

6Programlama Dilleri 3

Page 7: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Operatör ÖnceliğiOperatör Önceliği

B if d l d bi d f l tö k ll lBazı ifadelerde birden fazla operatör kullanılmışolabilir. Bu gibi durumlarda operatörlerin belirlibir çalışma sırası olacaktırbir çalışma sırası olacaktır.– X = 6 + 8 * 10

Bu ifadeden iki farklı sonuç elde edilebilir:– X = (6 + 8) * 10 = 140X (6 8) 10 140

– X = 6 + (8 * 10) = 86

7Programlama Dilleri 3

Page 8: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Bu durumda operatör önceliği kavramı devreyegirecektir. Bütün dillerde olduğu gibi C# dilinded ö ö liği d M k l bi lde operatör önceliği vardır. Mantıksal bir yolizlenerek operatörlere öncelik sırası verilmiştir.

Örneğimizi tekrar yorumlarsak çarpma işleminintoplama işlemine göre daha öncelikli olduğunup ş g ğsöylemek mümkündür. Bu yüzden işlem sonucu– X = 6 + (8 * 10) = 86 olacaktır.

8Programlama Dilleri 3

Page 9: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Bütün dillerin kendine ait bir operatör önceliktablosu bulunmaktadır. Bu sayede doğru birö lik l l bil k diöncelik sıralaması yapılabilmektedir.

Eğ if d l d t l k lEğer ifadelerde paranteze alınmış kısımlar varsamatematik kurallarından da hatırlayacağımız gibiöncelik parantez içindeki işlemlerdedir.p ç ş

• y = ( 7 + ( 6 + 4 ) * 5 ) * 2– İşlemi sonucunda y değeri 114 olacaktır.

9Programlama Dilleri 3

Page 10: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Bazı operatörlerin öncelik sırası aynıolabilir Çarpma‐bölme ya da toplama‐olabilir. Çarpma bölme ya da toplamaçıkarma gibi operatörler aralarında aynıönceliğe sahiptir. Böyle bir durumdağ p ysağdan sola ya da soldan sağa öncelikilişkisi devreye girer. Atama operatörlerihariç bütün binary operatörler soldansağa önceliğe sahiptir, işlemler bu yönde

lyapılır.

10Programlama Dilleri 3

Page 11: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Örnek:– a = 8 + 5 – 3

– İşleminde ilk önce (8 + 5) sonda da (13 – 3) işlemleri gerçekleşecektir.

Toplama ve çıkarma işlemleri için sonuçta bir değişiklik gözlemlenmeyebilir fakat bu soldandeğişiklik gözlemlenmeyebilir fakat bu soldan sağa işlem önceliği bazı durumlarda farklı sonuçlar verebilir.ç

11Programlama Dilleri 3

Page 12: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aşağıdaki kod parçasını bilgisayarınızda deneyiniz:

using System;using System;

class Operatorler1class Operatorler1class Operatorler1class Operatorler1{{

static void Main()static void Main(){{

int i = 5 * 4 / 6;int i = 5 * 4 / 6;Console.WriteLine(i);Console.WriteLine(i);

i = 5 * ( 4 / 6 );i = 5 * ( 4 / 6 );i 5 ( 4 / 6 );i 5 ( 4 / 6 );Console.WriteLine(i);Console.WriteLine(i);

}}}}

12Programlama Dilleri 3

Page 13: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Operatör Öncelik TablosuOperatör Öncelik TablosuBirinci Öncelikliler x.y (nesne erişim operatörü) , f(x) , dizi[x], x++ , x-- ,

new , typeof , checked , unchecked

Unary Operatörler + , - , ! , ~ , ++x , --x , (tür)x

Çarpma Bölme * , / , %

Toplama ve Çıkarma + , -

Kaydırma Operatörleri << , >>

İlişkisel ve Tür Testi < , > , <= , >= , is , as

Eşitlik Operatörleri ==, !=

Mantıksal VE (AND) &

Mantıksal Özel Veya (XOR)

^

Mantıksal VEYA (OR) |

Koşul VE &&

Koşul VEYA ||

Koşul Operatörü ? :

Atama ve İşlemli Atama = , *= , /= , %= , += , -= , <<= , >>= , &= , ^= , |=13Programlama Dilleri 3

Page 14: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Bir önceki sunuda verilen tablo C#operatörlerinin öncelik ilişkilerinioperatörlerinin öncelik ilişkilerinigöstermektedir. Yukarıdan aşağı doğru biröncelik sıralaması vardır. Aynı satırdabelirtilmiş olan operatörler ise aynıönceliğe sahiptirler. Bunlar arasında( t tö l i h i ) ld ğ(atama operatörleri hariç) soldan sağaöncelik ilişkisi söz konusudur.

14Programlama Dilleri 3

Page 15: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aşağıdaki kod parçasını bilgisayarınızda deneyiniz:

using System;using System;using System;using System;

class Operatorler2class Operatorler2{{

static void Main()static void Main(){{{{

int i = 4int i = 4 ++-- 6;6;Console.WriteLine(i);Console.WriteLine(i);

}}}}

15Programlama Dilleri 3

Page 16: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aritmetik OperatörlerAritmetik Operatörler

+ * ve / operatörleri:+ , ‐ , * ve / operatörleri:– Toplama, çıkarma, çarpma ve bölme operatörleridir İstenilen tipteki sayısaloperatörleridir. İstenilen tipteki sayısal değerlerle kullanılabilir. Bölme işleminde kullanılan değerin tipine göre farklı sonuçlar ld d l b lelde edilebilir.

• int i 20 + 30• int i = 20 + 30;• float f = 12.34f + 56.78f;

16Programlama Dilleri 3

Page 17: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aşağıdaki kod parçasını bilgisayarınızda deneyiniz:

using System;

class Operatorler3{

static void Main(){

int i = 5 / 4;int i = 5 / 4;float f1 = 5 / 4;float f2 = 5f / 4f;

Console.WriteLine(i);Console.WriteLine(f1);Console.WriteLine(f2);( );

}}

17Programlama Dilleri 3

Page 18: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

% operatörü:Bölümden sonra kalanı bulmak yani “mod”– Bölümden sonra kalanı bulmak yani modalmak amacıyla kullanılır. Tüm sayısal türleriçin kullanılabilir.için kullanılabilir.• x = 10 % 3 x = 1

• y = ‐7 % 4 y = ‐3

• f = 2.5f % 1.2f f = 0.1

18Programlama Dilleri 3

Page 19: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

++ ve ‐‐ Operatörleri:++ ve Operatörleri:– Önüne ya da sonuna geldiği değişkenindeğerini 1 arttırır ya da 1 azaltır İki şekildedeğerini 1 arttırır ya da 1 azaltır. İki şekildekullanılırlar: Önek (prefix) ve Sonek (postfix).Bütün sayısal değerlerde kullanılabilir.

19Programlama Dilleri 3

Page 20: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

using System;using System;

class Operatorlerclass Operatorler44{{

static void Main()static void Main(){{

int a = 5; int a = 5; int b = 10;int b = 10;int c = 20;int c = 20;int d = 50;int d = 50;float f = 3.4f;float f = 3.4f;

a++;a++;++b;++b;cc----;;----d;d;f++;f++;

Console.WriteLine("{0}Console.WriteLine("{0}\\n{1}n{1}\\n{2}n{2}\\n{3}n{3}\\n{4}n{4}\\n",a,b,c,d,f);n",a,b,c,d,f);// // ConsoleConsole..WriteLineWriteLine(“a+c={0}”,a+c);(“a+c={0}”,a+c);

}}}}

20Programlama Dilleri 3

Page 21: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aşağıdaki kod parçasını bilgisayarınızda deneyiniz:

using System;using System;

class Operatorlerclass Operatorler55{{{{

static void Main()static void Main(){{

int a = 10; int a = 10; ;;int b, c;int b, c;

b = a++;b = a++;c ++a;c ++a;c = ++a;c = ++a;

Console.WriteLine("a = {0}", a);Console.WriteLine("a = {0}", a);Console.WriteLine("b = {0}", b);Console.WriteLine("b = {0}", b);Console.WriteLine("c = {0}", c);Console.WriteLine("c = {0}", c);

}}}}

21Programlama Dilleri 3

Page 22: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Arttırma ve Azaltma operatörlerinde dikkat edilmesi gereken durumlar şudikkat edilmesi gereken durumlar şu şekilde özetlenebilir:

a 4 a 4a = 4b = a++

a=5, b=4

a = 4 b = ++a

a=5, b=5

a = 4b = a‐‐

a = 4b = ‐‐ab   a

a=3, b=4b    a

a=3, b=3

22Programlama Dilleri 3

Page 23: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Karşılaştırma OperatörleriKarşılaştırma Operatörleri

> ve < Operatörleri:> ve < Operatörleri:– İki sayısal değerin birbirlerine göre büyüklüğünü ve küçüklüğünü

kontrol eder. Bu operatörlerin ürettiği değerler “true” ve “false”değerleridir. < operatörü için eğer birinci operand ikincideğerleridir. operatörü için eğer birinci operand ikincioperanddan küçük ise “true” aksi durumda “false” üretir. >operatörü için de birinci operand ikinciden küçükse “false”büyükse “true” değerlerini üretir.

>= ve <= Operatörleri:– > ve < operatörleriyle tamamen aynıdır. Yalnızca eşitlik söz

konusu olduğunda da “true” değeri üretirler.

23Programlama Dilleri 3

Page 24: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

using System;

class Operatorler6{

static void Main(){

bool b1 = 20 < 30;bool b1 = 20 < 30;bool b2 = 30 < 20;bool b3 = 20.53 > 20.532;bool b4 = 12.3f > 11.9f;b l b5 15 15bool b5 = 15 <= 15;bool b6 = 20 >= 30;

Console.WriteLine(b1);Console.WriteLine(b1);Console.WriteLine(b2);Console.WriteLine(b3);Console.WriteLine(b4);C l W it Li (b5)Console.WriteLine(b5);Console.WriteLine(b6);

}}}

24Programlama Dilleri 3

Page 25: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

== ve != Operatörleri:== ve != Operatörleri:– İki değerin eşit olup olmadığını karşılaştıranoperatörlerdir. == operatörü eşitlik durumunda“true”, != operatörü ise eşitsizlik durumunda “true”üretir.

• bool b1 = 100 == 100; true

• bool b2 = 100 != 100; false

• bool b3 = 100 == 99; false

• bool b3 = 100 != 99; true

25Programlama Dilleri 3

Page 26: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

as Operatörü:U tü l d ki dö ü ü ü ğl– Uygun türler arasındaki dönüşümü sağlar.Yaygın olarak kullanılmaz. as operatörüsonucunda referans türde değer elde edilir.ğGenellikle object türündeki nesneleri farklı birtüre çevirmek için kullanılır. çevrim işlemibaşarısız ise null değeri üretir Kullanımı:başarısız ise null değeri üretir.Kullanımı:

• <referans tipi üretilecek ifade> as <referans tipi>referans tipi üretilecek ifade as referans tipi

26Programlama Dilleri 3

Page 27: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

is Operatörü:

– Çalışma zamanında bir nesnenin türünün– Çalışma zamanında bir nesnenin türününoperand olarak verilen türle uyumlu olupolmadığını kontrol eder. Kullanımı:

• <ifade> is <tür>

– Çok kullanılan bir yapı değildir. Operandlarlabelirtilen türler uyumlu ise “true” aksi halde“f l ” d ğ i ü ti B tö k ll ld ğ d“false” değeri üretir. Bu operatör kullanıldığındaderleyici uyarımesajları verebilir.

27Programlama Dilleri 3

Page 28: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aşağıdaki kod parçasını bilgisayarınızda deneyiniz:

using System;

class Operatorler8{

static void Main(){

int i = 10;

Console.WriteLine(i is int);Console.WriteLine(i is double);Console.WriteLine(i is object);

}}}

28Programlama Dilleri 3

Page 29: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Mantıksal OperatörlerMantıksal Operatörler

&& (VE) Operatörü:&& (VE) Operatörü:– “true” ya da “false” değerindeki operandları mantıksal VE ile

işler. Operandlardan biri “false” ise “false” değeri üretir.Kullanımı:Kullanımı:• <ifade> && <ifade>

– Mantıksal VE işleminin doğruluk tablosu:ş ğ

• 1.Operand 2.Operand SonuçTrue True TrueTrue False FalseFalse True FalseFalse False False

29Programlama Dilleri 3

Page 30: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

• bool b1 = 25 < 15 && 5 == 50 ;;

– false

• bool b2 = 25 > 15 && 5 != 50 ; 

– true

• bool b3 = ‐12.35f > ‐12.34f && 0 != 1 ;;

– false

30Programlama Dilleri 3

Page 31: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

|| (VEYA) Operatörü:“t ” d “f l ” d ğ i d ki dl t k l VEYA il– “true” ya da “false” değerindeki operandları mantıksal VEYA ileişler. Operandlardan biri “true” ise “true” değeri üretir.Kullanımı:• <ifade> || <ifade><ifade> || <ifade>

– Mantıksal VEYA işleminin doğruluk tablosu:

• 1.Operand 2.Operand SonuçTrue True TrueTrue False TrueFalse True TrueFalse False False

31Programlama Dilleri 3

Page 32: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

• bool b1 = 25 < 15 || 5 == 50 ;

f– false

• bool b2 = 25 > 15 || 5 != 5 ; 

– true

• bool b3 = ‐12.34f > ‐12.35f || 0 == 1 ;

– true

32Programlama Dilleri 3

Page 33: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

! ( ğ l)! (Değil) Operatörü:– Tek operand alır ve mantıksal Değil (NOT) işlemini uygular. 

Kullanımı:! <if d >• ! <ifade>

– Mantıksal DEĞİL işleminin doğruluk tablosu

• Operand SonuçTrue FalseFalse True

• bool b1 = ! (25 < 10) ;– true

• bool b2 = ! (10 != 20) ;– false

33Programlama Dilleri 3

Page 34: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Bitsel OperatörlerBitsel Operatörler

Mantıksal operatörler nesnelerin üzerindekarşılaştırma gibi işlemler yaparak direkt doğruya da yanlış sonuç üreten operatörlerdi.

Bitsel operatörler ise sayıları ikilik olarak ele alırve her bitlerinde işlem gerçekleştirirler.ve her bitlerinde işlem gerçekleştirirler.

Bitsel operatörler tamsayılarda kullanılır,B tsel operatörler tamsay larda kullan l r,gerçek sayılarda kullanılamaz.

34Programlama Dilleri 3

Page 35: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Bitsel operatörlerde bool türündenBitsel operatörlerde bool türündenifadeler kullanılırsa mantıksal işlemlergerçekleştirirgerçekleştirir.

Bu operatörler bitlerin durumlarınıöğrenmek veya belirli bitlerin değerlerini

Ödeğiştirmek için kullanılabilir. Örn:

bool a= false && false ilebool a= false && false ilebool a= false  & false aynıdır.

35Programlama Dilleri 3

Page 36: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

~ (Bitsel DEĞİL) Operatörü: (Bitsel DEĞİL) Operatörü:– Tek operand alan ~ operatörü bir değer içindeki bitlerin teker teker tersini alır. • 0000 1111 sayısının bitsel değili 1111 0000 olur.

using System;using System;g yg y

class Operatorler9class Operatorler9{{

static void Main()static void Main(){{

byte b1 = 254;byte b1 = 254;b t b2 (b t ) b1b t b2 (b t ) b1byte b2 = (byte)~b1;byte b2 = (byte)~b1;Console.WriteLine(b2);Console.WriteLine(b2);

}}}}}}

36Programlama Dilleri 3

Page 37: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

& (Bitsel VE) Operatörü:– İki operandın bitlerini karşılıklı olarak VEişlemine tabi tutar.

byte a = 153;

byte b = 104; 153 :1001 1001153 :1001 1001

byte x = (byte)(a & B)

x = 8

104 :0110 1000104 :0110 1000

----------------------------

VE 0000 1000VE 0000 1000VE 0000 1000VE 0000 1000

37Programlama Dilleri 3

Page 38: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

| (Bitsel VEYA) Operatörü:– İki operandın bitlerini karşılıklı olarak VEYAp şişlemine tabi tutar.

byte a = 153;

byte b = 104; 153 :1001 1001153 :1001 1001

byte x = (byte)(a | b)

x = 249

104 :0110 1000104 :0110 1000

----------------------------

VEYA 1111 1001VEYA 1111 1001VEYA 1111 1001VEYA 1111 1001

38Programlama Dilleri 3

Page 39: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

^ (Bitsel Özel VEYA) Operatörü– İki operandın bitlerini karşılıklı olarak Özelp şVEYA (XOR) işlemine tabi tutar.

byte a = 153;

byte b = 104; 153 :1001 1001153 :1001 1001

byte x = (byte)(a ^ b)

x = 241

104 :0110 1000104 :0110 1000

----------------------------

XOR 1111 0001XOR 1111 0001XOR 1111 0001XOR 1111 0001

39Programlama Dilleri 3

Page 40: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aşağıdaki kod parçasını bilgisayarınızda deneyiniz:

using System;using System;

class Operatorler10class Operatorler10{{

static void Main()static void Main(){{

int X = 195;int X = 195;int Y = 26;int Y = 26;

X = X ^ Y;X = X ^ Y;Y = Y ^ X;Y = Y ^ X;X = X ^ Y; X = X ^ Y;

Console.WriteLine("X:{0}Console.WriteLine("X:{0}\\nY:{1}",X,Y);nY:{1}",X,Y);}}

}}}}

40Programlama Dilleri 3

Page 41: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

<< (Bitsel Sola Kaydırma) Operatörü:– Verilen bir tamsayının bitlerinin istenilen sayıda solaVerilen bir tamsayının bitlerinin istenilen sayıda soladoğru ötelenmesini sağlar. İki operandı bulunur. İşlemyapılacak değer ve kaydırılacak bit sayısı. İşlemyapılırken en düşük değerlikli bit sıfır iletamamlanırken en yüksek değerlikli bitten taşanlaratılır. Kullanımı:• ifade << öteleme sayısı

byte b = 0xFF // 1111 1111byte c = (byte)(b << 4) // 1111 0000byte c = (byte)(b << 4) // 1111 0000

41Programlama Dilleri 3

Page 42: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

>> (Bitsel Sağa Kaydırma) Operatörü:– Verilen bir tamsayının bitlerinin istenilen sayıda sağaVerilen bir tamsayının bitlerinin istenilen sayıda sağadoğru ötelenmesini sağlar. İki operandı bulunur. İşlemyapılacak değer ve kaydırılacak bit sayısı. İşlemyapılırken en yüksek değerlikli bit sıfır iletamamlanırken en düşük değerlikli bitten taşanlaratılır. Kullanımı:• ifade >> öteleme sayısı

byte b = 0xFF // 1111 1111byte c = (byte)(b >> 4) // 0000 1111byte c = (byte)(b >> 4) // 0000 1111

42Programlama Dilleri 3

Page 43: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aşağıdaki kod parçasını bilgisayarınızda deneyiniz:

using System;

class Operatorler11{

static void Main(){

byte b = 0xFF;

b (b t )(b << 4)b = (byte)(b << 4); Console.WriteLine(b);

b = (byte)(b >> 3);b = (byte)(b >> 3);Console.WriteLine(b);

}}}

43Programlama Dilleri 3

Page 44: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Atama ve İşlemli Atama OpreratörleriAtama ve İşlemli Atama Opreratörleri

= (Atama) Operatörü:Bi d ği k h h i bi d ğ t k i i– Bir değişkene herhangi bir değer atamak içinkullanılır. Çok bilinen ve kullanılan bir operatördür.Kullanımı ile dikkat edilmesi gereken en önemli nokta= operatörü atama yaptığı değeri üretir= operatörü atama yaptığı değeri üretir.

using System;class Operatorler12class Operatorler12{

static void Main(){

byte b = 5, a = 2, c;(c = a) = b;Console.WriteLine(c);

}}}

44Programlama Dilleri 3

Page 45: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

*= , /= , %= , += , ‐= , <<= , >>= , &= , ^= , |= gibioperatörler işlemli atama operatörleri olarakgeçer ve işlem sonucunun işlenen operandaatandığı durumlarda kullanılır.ğ

– x = x + y; ifadesi yerine x += y;* b if d i i * b– a = a * b; ifadesi yerine a *= b;

– b = b << n; ifadesi yerine b<<=n;

gibi ifadeler örnek olarak verilebilir.

45Programlama Dilleri 3

Page 46: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Özel Amaçlı OperatörlerÖzel Amaçlı Operatörler

Bu grupta değişikleri işleri yerine getirmekiçin şu ana kadarki gördüklerimizden farklıç ş goperatörler bulunmaktadır.

46Programlama Dilleri 3

Page 47: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

? : (Ternarty) Operatörü:Bir koşulu karşılaştırıp doğru ya da yanlış olduğu– Bir koşulu karşılaştırıp doğru ya da yanlış olduğudurumlar için farklı değerler üretmeyi sağlayanoperatördür. Üç tane operanda sahiptir. Kullanımı:

• koşul ? doğru değeri : yanlış değeri

• sayi < 10 ? “10dan küçük” : “10 a eşit ya da büyük”

47Programlama Dilleri 3

Page 48: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

() Operatörü (Tür Dönüştürme):İfade önüne yazıldığında tür dönüştürme operatörüolarak çalışır.ç ş

[] Operatörü (İndeks):Dizilerde elemanın indeksini belirtmek için kullanılır.

+ ve – (İşaret Operatörleri):+ ve – (İşaret Operatörleri):Bir değişkenin içeriğindeki değerin negatif ya dapozitif olarak işlem görmesini sağlar. + aynı zamandastringlerde ekleme için de kullanılan bir operatördürstringlerde ekleme için de kullanılan bir operatördür.

& , * , ‐> ve sizeof Operatörleri:C/C++ dilindeki işaretçileri (pointer) C# dilinde dekullanmak mümkündür Güvensiz (unsafe) kodkullanmak mümkündür. Güvensiz (unsafe) kodyazarken bu operatörler de kullanılabilir.

48Programlama Dilleri 3

Page 49: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

. Operatörü:Bi f d l l l k i iBir sınıfın ya da yapının elemanlarına ulaşmak için kullanılır. 

C l W it Li () ibi• Console.WriteLine(); gibi…

new Operatörü:Yeni bir nesne oluşturmak için kullanılan operatördür.Yeni bir nesne oluşturmak için kullanılan operatördür. Değer ve referans tiplerden yeni bir nesne oluşturmak için kullanılabilir.• OrnekSinif s = new OrnekSinif();

checked ve unchecked Operatörleri

49Programlama Dilleri 3

Page 50: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

typeof Operatörü:– Çalışma zamanında bir tür için System.Typesınıfı türünden bir nesne üretilmesini sağlar.Nesneler için kullanılan GetType() ifadesininbenzer işlemini tür ve ya sınıf tanımlamalarıi i kl ti iiçin gerçekleştirir.

50Programlama Dilleri 3

Page 51: Operatörler - KLUpersonel.klu.edu.tr/dosyalar/kullanicilar/mehtap.izmirli/...C/C++ dilindeki işaretçileri (pointer) C# dilinde de kullanmak mümkündür. Güvensiz (unsafe) kod

Aşağıdaki kod parçasını bilgisayarınızda deneyiniz:

using System;

class Operatorler13{{

static void Main(){

Type t;int i = 123;float f = 23.45F;

t = typeof(int);t typeof(int);Console.Write(t.ToString() + " ");Console.WriteLine(i.GetType());

f(fl )t = typeof(float);Console.Write(t.ToString() + " ");Console.WriteLine(f.GetType());

}}}

51Programlama Dilleri 3