Fırat Eşki


Kodların Dünyası…


Ders 3 – C++ Operatörler

Operatörler tüm programlama dillerinde bulunan, büyüklük küçüklük karşılaştırmalarının, mantıksal karşılaştırmalarının ve aritmetik işlemlerin yapılmasını sağlayan karakterler topluluğudur.

1) Atama Operatörü

Aslında atama operatörünü önceki derslerden biliyoruz. Değişkene değer atamayı bu operatör ile yapıyoruz. Yani değişkenlere değer atarken kullandığımız operatördür. Örnek:

2) Aritmetik Operatörler

Genellikle sayısal yani matematiksel işlemleri yaparken işimize yarayacak olan operatörlerdir. Başlıca aritmetik operatörler şu şekildedir:

1- Toplama ( + )

2- Çıkarma ( – )

3- Çarpma ( * )

4- Bölme ( / )

5- Mod Alma ( % )

a) 4 İşlem Operatörü

Zaten 4 işlemi bilmeyen yoktur. Hemen örnekle anlatalım:

Örnekte 2 tane int(tamsayı) tipinde değişken tanımlanıyor ve bunlara başlangıç değeri veriliyor. Daha sonra bu 2 değişkene 4 işlem uygulanıyor ve ekrana yazdırılıyor.

Bu örneği kendi derleyiciniz aracılığıyla deneyebilirsiniz. Programın çıktısı şu şekilde olmalıdır:

dort-islem-ornek

Art arda cout kodu yazmak yerine bu işlemi şu kodla da yapabilirdik:

Sizlerinde fark edeceği gibi bu şekilde kodlar karmaşık duruyor. O nedenle ayrı ayrı yazılması tercih edilir.

Şimdi ise aynı örneği yapacağız ama bu sefer değişkenlere ilk değeri vermek yerine kullanıcıdan bu 2 sayıyı girmesini isteyeceğiz.

dort-islem-ornek2

Eğer kullanıcının 2. girdiği değer 0 -sıfır- olursa bölme işleminde 0 olamayacağı için program hata verecektir.

b) Mod Operatörü

Modun ne olduğu belki bileniniz vardır. Mod; 1. sayının 2. sayıya bölümünden kalandır. Hemen örnekle pekiştirelim:

Programın çıktısı şu şekilde:

mod-alma-ornek

3) Tip Dönüşümü

Programımızda değişkenler veya sabitler birbirinden farklı tiple olabilirler. Eğer böyle bir durum söz konusu ise tip dönüştürme ihtiyacı duyabiliriz. Matematiksel işlemlerimizde hesap sonucumuzun hangi tipte olacağı önemlidir. Bu nedenle bir hata ile karşılaşmamak için tip dönüşümü yapılmalıdır. Örnekle durumu daha iyi açıklayacağımı düşünüyorum:

Bu kodların çıktısı bu şekilde olacaktır:

tip-donusumu-ornek

Programda, 3 tane float yani ondalıklı tipte değişken tanımladık ve 1 tane de tamsayı tipinde ilk değeri 9 olan bir değişken tanımladık.

Daha sonra “sayi” ismindeki tamsayı değişkenini 4’e böldük(9/4) ve “a” isimli float tipindeki değişkene atadık. Fakat float ondalıklı sayı göstermesi gerekirsen sonuç yuvarlanarak 2 olarak yazdırıldı. Çünkü, işleme soktuğumuz değişkenlerin ikisi de tamsayı tipindeydi. Dolayısıyla sonuçta tamsayı olarak aktarıldı.

2. işlemde ise aynı bölme işlemi olan “sayi” ismindeki değişkeni 4’e bölmek oldu. Yani,  9/4 işlemini yaptık. Fakat 4 sayısını 4.0 şeklinde yani ondalıklı şekilde yazdık. Dolayısıyla sonucu atadığımız değişkende ondalıklı olduğu için ekrana tam olarak 2.25 yazdırıldı.

3. işlemde ise aynı bölme işlemini yaptık. Hatta bu sefer 4.0 bile yazmadık ama sonuç yine 2.25 şeklinde aktarıldı. Çünkü, “(float)” ifadesi ile programa bunun sonucunu float cinsinden döndürmesini istedik. Dolayısıyla program bizi kırmadı ve sonuç “c” ismindeki float tipindeki değişkene ondalıklı olarak aktarıldı.

4) Arttırma (++) ve Azaltma (–) Operatörleri

C++ dilinde arttırma ve azaltma operatörleri önemli bir yer tutar. Arttırma (++) operatörü, yanındaki değişkenin değerini 1 arttırır. Azaltma operatörü ise 1 tane eksiltir.

Aşağıdaki örnekle konuyu daha iyi anlayabilirsiniz.

Programın çıktısından da görebileceğiniz gibi başlangıç değerleri 6 ve 8 olan 2 tane değişkenin ++ operatörü ile arttırdık ve yeni değerleri 7 ve 9 oldu.

arttirma-operatoru-ornegi

Aynı şekilde ++ operatörü yerine — operatörünü kullansaydık. Değerleri 1 tane azaltmış olacaktık dolayısıyla yeni değişken değerleri 5 ve 7 olacaktı.

Buraya kadar her şey tamam. Şimdi gelelim önemli bir noktaya. Dikkat ederseniz üstteki örnekte operatörü değişkenden önce (++a) veya değişkenden sonra (b++) kullanmamız bir şey değiştirmedi. İkisi de aynı görevi gördü. Peki bunların farkı var mı? Elbette var. Bu fark değişkene atama yaparken ortaya çıkıyor. Şimdi size bunu örnekle açıklayayım.

Aşağıdaki programın çıktısında gerekli açıklamayı yaptım ama  yine burada belirteyim. Atama yaptığımız esnada; ++ veya — operatörünü değişkenden önce koyarsanız ilk yapacağı iş değişkenin değerini arttırmak/azaltmak daha sonra atama işlemini yapmak olacaktır. Zıttı olarak da eğer bu operatörleri değişkenden sonra koyarsanız önce atamayı yapar daha sonra yanındaki değişkenin değerini arttırır/azaltır.

arttirma-operatoru-oncelik-ornegi

Daha iyi anlamanız için tablo olarak özetleyelim:

Sağ++ x=8 y=x++; x’in değeri 9

y’nin değeri 8 olur.

++SOL x=8 y=++x; x’in değeri 9

y’nin değeri 9 olur.

SAĞ– x=8 y=x–; x’in değeri 7

y’nin değeri 8 lur.

–SOL x=10 y=–x; x’in değeri 7

y’nnin değeri 7 olur.

5) Aritmetik Atama Operatörleri

C++ dilinde 5 tane aritmetik atama operatörü vardır. Bunlar kod yazarken bizlere kolaylık sağlar ve daha az kod yazmamızı sağlar.

Topla ve Ata ( += )

a=a+b ifadesinin kısa şekli a+=b şeklindedir.

Çıkar ve Ata (-=)

a=a-b ifadesinin kısa şekli a-=b şeklindedir.

Çarp ve Ata ( *= )

a=a*b ifadesinin kısa şekli a*=b şeklindedir.

Böl ve Ata ( /= )

a=a/b ifadesinin kısa şekli a/=b şeklindedir.

Mod Al ve Ata ( %= )

a=a%b ifadesinin kısa şekli a%=b şeklindedir.

6) Karşılaştırma Operatörleri

C++ dilinde 6 tane karşılaştırma operatörü vardır. Bu operatörler ile iki karakteri veya sayıyı kendi aralarında karşılaştırabiliriz. Bu operatörler genellikle if gibi koşul yapılarında kullanıldığı için şimdilik sadece ne anlama geldiklerine değineceğiz. Yapılara gelince bunları fazlasıyla kullanacağız.

  1. Küçüktür Operatörü ( < )
  2. Büyüktür Operatörü ( > )
  3. Küçük Eşittir Operatörü ( <= )
  4. Büyük Eşittir Operatörü ( >= )
  5. Eşit mi Operatörü ( == )  – Bunu atama  operatörü ile karıştırmayın. Bunda 2 tane = kullanıyoruz –
  6. Farklı mı Operatörü ( != )

Bool veri tipimizi kullanarak bir örnek çözelim.

Üstte tanımladığımız bool tipindeki değişkenlere bazı koşullar ekledik. Eğer bu koşullar sağlanıyorsa yani doğruysa bool tipindeki değişkene True -veya 1- değilse False -veya 0- değeri atanıyor. Programın çıktısı bu şekildedir:

karsilastirma-operatoru-ornek

7) Mantıksal Operatörler

İki veya daha fazla koşul karşılaştırılırken mantıksal operatörlerden yararlanılır.

  1. ‘Ve’ operatörü (&&) = Verilen ifadenin tümünün koşulu sağlaması gerekir.
  2. ‘Veya’ operatörü (||) = Verilen ifadelerin en az bir tanesinin koşulu sağlaması gerekir.
  3. ‘Değil’ operatörü (!) = Kendisinden sonra gelen ifadenin değilini yani tersini(zıttını) alır.

Şimdi örnekle olaya açıklık getirelim:

Sizlerinde tahmin ettiği gibi sonuç bu şekilde olacaktır:

matiksal_operatorler_ornek

Gördüğünüz gibi koşullara göre sırasıyla; 0, 1, 1, 0 yani false, true, true, false değerleri alındı ve ekrana yazdırıldı. Sizlerde bu örnekleri deneyerek kavrayabilirsiniz.

8) Özel Amaçlı Ternary Operatörü ( ?: )

Bu dersten sonra göreceğimiz ‘if’ yapısının yaptığı görevi yapmaktadır. Kullanımı ise şu şekildedir:

Aşağıdaki örnekle konuyu biraz daha somutlaştıralım:

Kodun çıktısı şu şekilde olacaktır:

ternary_ornek

Gördüğünüz gibi atama yaparken belirtiğimiz şartı sağlayıp sağlamamasına göre istediğimiz değerleri atayabiliyoruz.  Eğer koşul sağlanırsa : işaretinden önceki değeri, sağlamıyorsa : işaretinden sonraki değeri atıyor.

9) Operatörler ve Öncelikleri

Aşağıdaki tabloda operatörler ve öncelikleri gösterilmiştir.

Operatör Açıklama Okunuş
( ) Parantez Soldan Sağa
++

.

Sonra Arttır

Sonra Eksilt

Nokta

Soldan Sağa
++

!

Önce Arttır

Önce Eksilt

Tekil Operatörler

Sağdan Sola
*

/

%

Çarpma

Bölme

Mod

Soldan Sağa
+

Toplama

Çıkarma

Soldan Sağa
<

>

<=

>=

Karşılaştırma Operatörleri Soldan Sağa
==

!=

Eşitlik Operatörleri Soldan Sağa
&&

||

Ve

Veya

Soldan Sağa
= Atama Operatörü Sağdan Sola

C++ Operatörler dersinin sonuna geldik. Örnekleri mutlaka değiştirerek kendiniz yazıp, sonuçları inceleyiniz. Düşüncelerinizi, isteklerinizi iletişim bölümünden iletebilirsiniz. Diğer dersimizde görüşmek üzere kendinize iyi bakın…


Merhaba, ben Fırat Eşki bu da benim blogum. Bilgisayar ve teknoloji dünyasını yakından takip ediyorum. Küçük yaşta giriş yapmış olduğum kod dünyasına olan ilgim ve sevgim gün geçtikçe artarak devam ediyor.