Merhaba, uzun bir aradan sonra üçüncü C# dersi olan Operatörler konusunu anlatmaya başlıyorum. Blogumu takip edenlerin de bildiği gibi, askerde olmam sebebiyle blog yazmaya pek vakit ayıramıyorum. Bir haftalık izinde olduğumdan dolayı bir ders daha yazmaya karar verdim. Bu derste, operatör nedir, nasıl sınıflandırılır, nasıl kullanılır gibi sorulara cevap vermeye çalışacağım.
DERS 3: Operatörler
Operatör nedir?
Önceden tanımlanmış olan matematiksel veya mantıksal işlemleri gerçekleştirmeye yarayan özel karakterlerdir. Aslında hepsi birer fonksiyondur diyebiliriz. Fonksiyondan farklı olarak birer isimleri yoktur. Sadece +, –, *, = gibi karakterlerle ifade edilirler. Yapı olarak 3 sınıfa ayrılırlar: tek değişkenliler (Unary), iki değişkenliler (Binary) ve üç değişkenliler (Ternary). Yaptıkları işlevlere göre ise 6 sınıfa ayrılırlar: aritmetik, mantıksal, karşılaştırma, bitsel, atama ve özel amaçlı operatörler. Hızlıca bu sınıfları inceleyelim…
Yapılarına göre operatörler
Tek değişkenli operatörlere örnek olarak ++ ve ! operatörlerini verebiliriz. Bu operatörler tek değişkenle kullanılır. İki değişkenli operatörlere örnek olarak aritmetik işlemler için kullandığımız operatörler verilebilir. + ve – gibi operatörler binary operatörlerdir. Üç değişkenli operatör benim bildiğim bir tane var, o da if yapısı yerine kullanılan “? :” operatörü. Tek ve çift değişkenli operatörlerin nasıl kullanıldığını aşağıda görebilirsiniz, üç değişkenli operatörü bir sonraki konumuz olan “Akış Kontrol Mekanizmaları” nda göreceğiz.
int firstNumber = 5, secondNumber = 3, result;
firstNumber++; // ++ tek değişkenli operatör
result = firstNumber + secondNumber; // + çift değişkenli operatör
İşlevlerine göre operatörler
- Aritmetik operatörler : Temel matematiksel işlemleri yapan operatörlerdir. Örnek olarak +, -, *, ++, –, % verilebilir.
- Mantıksal operatörler : Mantıksal işlemleri yapan operatörlerdir. Üç tanedirler, &&, || ve !.
- Karşılaştırma operatörleri : İki değişkeni karşılaştıran operatörlerdir. Örnek olarak <, >, <=, == verilebilir.
- Bitsel operatörler : Değişkenler üzerinde bitsel işlemler yapan operatörlerdir. Örnek olarak |, &, << verilebilir.
- Atama operatörleri : Bir değişkene değer atayan operatörlerdir. Örnek olarak =, +=, <<= verilebilir.
- Özel amaçlı operatörler : Farklı amaçlar için kullanılan operatörlerdir. Örnek olarak (), [], -> verilebilir.
Operatör önceliği
Bu bölüm birçok yerde işinize yarayacaktır. İlkokuldaki matematik dersinde gördüğünüz kurallar aynen geçerli. Şöyle ki, operatörler her zaman tek olarak kullanılmayabilirler. Birkaç operatör hatta onlarca operatör beraber kullanılıyor olabilir. Bu durumda hangi işlemin öncelikli olacağına karar verilmesine operatör önceliği denir. Örneğin 3+4*5 işlemini göz önüne alalım. Bu işlemin sonucu 35 midir yoksa 23 müdür? Yani önce toplama işlemi mi yapılacak yoksa çarpma işlemi mi? İlkokuldan da bildiğiniz gibi çarpma operatörü önceliğe sahiptir ve ilk önce çarpma işlemi yapılır, yani doğru sonuç 23 olacaktır. Tüm operatörlerin öncelik tablosu mevcut ama bence bilmeniz gereken birkaç şey var: ilk olarak en öncelikli işlemler arasında nesne erişimi, fonksiyon çağrımı ve dizi elemanına erişim vardır. Bunlardan sonra bilmeniz gereken en önemli şey şudur: dört işlem operatörleri arasındaki sıralama. Bunlardaki öncelik, ilk önce çarpma ve bölme yapılır (eşit önceliğe sahiptirler, soldan sağa bakıldığında ilk görülen ilk yapılır), ardından toplama ve çıkarma yapılır (bunlar da eşit önceliğe sahiptirler). Başlangıç olarak bu kadarını bilmeniz yeterli.
Operatör kullanımı örnekleri
Operatör nedir, nasıl sınıflandırılır gördük. Şimdi bir kod parçasında biraz örnek göstermek istiyorum. Tüm operatörlerin nasıl kullanıldığını göstermem mümkün olmadığı için, işinize en çok yarayabilecek operatörleri göstermek istiyorum. Size tavsiyem, kendi kafanızdan da sonuçları bulun ve bilgisayarın bulduğu ile karşılaştırın…
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int result, a, b;
//Aritmetik işlemler
Console.WriteLine("Aritmetik İşlemler");
result = 4 * 3 / 2; //Öncelikler eşit olduğundan ilk görülen ilk yapılır
Console.WriteLine(result); //6
result = 2 + 8 / 4 - (3 * 2); //Önce parantez içi, sonra dört işlem önceliğine uyulur
Console.WriteLine(result); //-2
a = 3;
a = a + 1; //a değişkeninin değeri 1 arttı ve 4 oldu
a += 1; //yine 1 arttı
a++; //yine 1 arttı
++a; //yine 1 arttı, hepsi aynı anlama gelir
Console.WriteLine(a); //7
result = 10 % 3; //10 sayısına mod 3 işlemi uygular
Console.WriteLine(result); //1
a = 4;
b = a++; //++ sağda ise önce atama yapılır sonra artırma yapılır
Console.WriteLine("a:" + a + " b:" + b); //a=5, b=4
a = 4;
b = ++a; //++ solda ise önce artırma yapılır sonra atama yapılır
Console.WriteLine("a:" + a + " b:" + b); //a=5, b=5
//Karşılaştırma işlemleri
Console.WriteLine("\nKarşılaştırma İşlemleri");
bool result2, result3;
result2 = 50 > 45; //50 sayısı 45'ten büyüktür, doğru
Console.WriteLine(result2); //True (Doğru)
a = 2;
result = a << 1; //a'nın bitlerini bir sola kaydır, yani a'yı 2 ile çarp
Console.WriteLine(result); //4
result = a << 3; //a'nın bitlerini üç sola kaydır, yani a'yı 3 kez 2 ile çarp
Console.WriteLine(result); //32
//Kaydırma işlemleri normal çarpma işlemine göre çok daha hızlıdır
Console.ReadKey(); //Bir tuşa basana kadar sonuçların ekranda kalmasını sağlar
}
}
}
Bir sonraki derste görüşmek üzere hoşça kalın…