Plazma sayı 6, sayfa 35

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 35

Operatörler

Bu noktada operatörler ile tanışma zamanı geldi. C++'da operatörler değişkenler ve sabitler üzerinde işlemler yaparlar. Genelde operatörler bir veya iki argümanı alırlar, bunları kullanarak bir işlem yapar ve genellikle bir başka değeri döndürürler. Örneğin;

toplamSkor levellSkor * bonusSkor;

gibi bir kod satırına bakalım. Bu satırda iki tane operatör var. Bunlar + ve = operatörleri. + operatörü level1Skor ve bonusSkor adlı iki değişkeni argüman olarak alıyor, bunlar üzerinde toplama işlemi yapıp sonucu döndürüyor. Ardından = operatörü de toplamSkor ve toplama işleminden dönen sonucu iki argüman olarak alıyor, soldaki argümana sağdaki argümanın değerini atıyor.

Dikkat edeceğiniz bir nokta bir operatörün işlemini yaptıktan sonra geri değer döndürmesi. Adeta operatör işlem yaptığı iki argüman ile beraber satırdan silinip yerine döndürülen değer yazılmış gibi devam ediyor programın çalışması. Yani yukarıdaki satırda toplama işleminin sonucu döndükten sonra + operatörü ve onun iki argümanı yok oluyor ve onların yerine işlemden dönen sonuç tek bir geçici değer olarak kalıyor. Başka bir deyişle yukarıdaki satır toplama işleminden sonra aşağıdaki satıra indirgeniyor

toplamSkor ToplamalslemindenDonenDeger;

Başka aklınıza gelebilecek operatörler +, -, *, /, &, |, <, >, <<, >> ve daha birçokları. Operatörlerden daha ileriki bölümlerde çok daha detaylı bahsedeceğiz. Ama buraya kadar anlattıklarımız hemen şimdi anlatacağımız bölüm için gerekli idi.

std::cout ve << operatörü

Konsola bir şeyler yazdırmak için kullandığımız std::cout objesini biraz biraz tanıdınız. Şimdi bu mekanizma ile ilgili biraz daha bilgi edineceksiniz.

Kursun bir sonraki bölümünde sınıflar ve nesneler ile detaylı olarak tanışacaksınız. Ancak bu noktada std::cout'un aslında standart kütüphanede tanımlı bir nesne olduğundan bahsetme zamanı geldi. Bu noktaya kadar ezbere kullanmakta olduğunuz, yazı yazdırma satırının gerçekte nasıl çalıştığı ile ilgili bazı yeni şeyler öğreneceksiniz şimdi.

Std::cout << “Batsin bu dunya”;

Bu komutu ilk örneğimizde kullanmıştık. Burada aslında << bir operatör ve iki argüman alıyor. Birinci argüman std::cout nesnesi. İkinci argüman ise “Batsın bu dünya” sabiti. Burada kullanıldığı şekliyle << operatörü yine standart kütüphanede tanımlı ve yaptığı iş sağdaki argümanı alıp soldaki argümana yazdırmak. std::cout yine standart kütüphanede tanımlı olan ve kendisine << operatörü ile geçirilen harfleri ekrana gösterilmek üzere gönderen bir nesne. Dolayısıyla << operatörü bu şekilde bir işlemi aldığı iki argüman üzerinde yaptıktan sonra solundaki argümanı geri döndürüyor. Yani bu örnekte std::cout nesnesini. Bunun ne demek olduğuna biraz daha yakından bakalım.

std::cout << “Batsin bu dunya” << std::endil;

Bu satır çalışırken öncelikle soldaki << operatörü çalışıyor. Yani ilk önce “Batsın bu dünya” yazısı std::cout nesnesine gönderilip ardından sonuç olarak std::cout nesnesi döndürülüyor (ki bu esnada yazı konsol ekranına yazdırılmış durumda). Yukarıda anlattığımız şekilde bu noktada satır aşağıda gördüğünüz hale indirgeniyor.

Std::cout stdişendi;

Ardından bu işlem çalıştığında da std::endl nesnesi std::cout nesnesine << operatörü aracılığı ile geçirilmiş oluyor.

Dolayısıyla bir satırda başa std::cout koyup ardından aralarına << operatörünü koymak koşuluyla istediğimiz kadar değişkeni veya sabiti ekrana yazdırabiliriz. Bu yüzden yine önceki örneklerde gördüğünüz

std::cout << “Merhaba << isim << std::endl;

satırı çalışabiliyor.

std::cin ve >> operatörü

Benzer şekilde std::cin ve >> operatörünü kullanarak bir satırda birden fazla değişkene değer yüklemek de mümkün.

std::string isim; int yas; std::cin >> isim >> yas;

Bu örnekte kullanıcı konsolda şu satırı girip Enter'a basarsa;

Ahmet 25 <enter>

Bu durumda std::cin nesnesi konsoldan girilen karakterleri taramaya başlar ve sonunda ilk boşluk karakterine kadar olan bölümü yani 'Ahmet' kelimesini isim değişkenine yükler. Ardından std::cin nesnesini döndürür. Satırımız şuna indirgenmiş olur:

std::cin >> yas;

Bu noktada std::cin nesnesinde taranacak karakterler olarak sadece 2 ve 5 karakterleri kalmıştır. Bu karakterleri taramadan önce yas değişkeninin tipine bakılır. Değişken tamsayı tipinde olduğu için bu tarama esnasında 25 sayısı yas değişkenine yüklenir.

Dikkat ederseniz, hem (std::cin ve >>) hem (std::cout ve <<) gayet 'akıllı' işlemler. Yani kendilerine verilen argümanların tiplerine göre farklı işlemler yapabiliyorlar. Bu aklın nasıl çalıştığını daha ileride operatörlerden daha detaylı bahsettiğimiz esnada anlayacaksınız.

Klavyeyle gezinmek için ← ve → tuşları.