Konu Anlatımı
Operatörler ve İfade Önceliği
Operatörler, programda değerler arasında ilişki kuran ya da bir değeri başka bir değere çeviren sembollerdir. Bir ifade içinde birden çok operatör bulunduğunda bunların hangi sırayla değerlendirileceği operatör önceliği kuralıyla belirlenir. Öncelik yanlış kurulursa program çoğu zaman hata vermez, yalnızca elde edilen sayı sessizce değişir.
Bu konuda dört operatör grubunu tanıyor, gruplar arasındaki sırayı öğreniyor ve parantezin bu sırayı nasıl görünür kıldığını inceliyoruz. Aritmetik işlemler, karşılaştırma, mantık ve atama başlıkları altında yürütülen adımların sonunda, ilk bakışta çok basit görünen bir ifadenin neden beklenmedik bir sayı verdiğini görebileceksin.
1. Ne Öğreneceğiz ve Ön Bilgi
Bu konunun hedefi, operatör gruplarını tanımak, bir ifadedeki işlemleri doğru sırayla yürütmek ve sonucun neden değiştiğini açıklamaktır. Değişkenler ve Veri Tipleri ünitesinde öğrendiğin tam sayı ve ondalık ayrımı ile Temel Veri Tipleri konusundaki bölme davranışı bu konunun ön bilgisidir.
Programlama Temelleri dersinde sözde kod yazarken bile bazı işlemlerin önce gelmesi gerektiğini fark etmiş olabilirsin. Aynı sayılar yazım biçimine göre farklı sonuç verdiği için kuralı bilmek, kodu okumak kadar kodu yazmak da önemlidir.
2. Temel Kavramlar ve Sınıflandırma
Operatörler üç temel özellikleriyle tanımlanır: ne tür değer ürettikleri, kaç değer üzerinde çalıştıkları ve hangi sırayla değerlendirildikleri. Aritmetik operatörler tek değer üzerinde çalışır ve sayısal sonuç verir. Karşılaştırma operatörleri iki değeri karşılaştırıp doğru ya da yanlış biçiminde mantıksal sonuç üretir. Mantıksal operatörler bu mantıksal sonuçları birleştirir. Atama operatörü ise hesaplanan değeri soldaki değişkende saklar.
| Operatör grubu | Örnek | Ürettiği sonuç | Öncelik sırası |
|---|
| Aritmetik | toplama, çıkarma, çarpma, bölme, kalan | Sayısal değer | En yüksek |
| Karşılaştırma | büyüktür, küçüktür, eşittir, eşit değildir | Doğru ya da yanlış | Aritmetikten sonra |
| Mantıksal | DEĞİL, VE, VEBA | Doğru ya da yanlış | Karşılaştırmadan sonra |
| Atama | eşit işaretiyle atama, artırarak atama | Değişkende saklanan değer | En düşük |
Mantıksal operatörlerin kendi aralarında da bir sıra vardır. Mantıksal DEĞİL tek koşulu çevirdiği için en önce, mantıksal VE koşulları birlikte zorladığı için ortada, mantıksal VEBA ise en son değerlendirilir. Aynı sıradaki işlemler soldan sağa doğru yürütülür.
- Parantez operatör önceliğini değiştirmez, yalnızca gruplama yapar.
- Artırarak atama, işlemi yapıp sonucu aynı değişkende saklar.
- Artan kısım gerekiyorsa bölme, yalnızca bölüm gerekiyorsa tam bölme kullanılır.
3. Basit Örnek ve Adım Adım Çözüm
8 artı 2 çarpma 3 eksi 4 bölü 2 ifadesi dört işlem içerir. Bu ifade parantezsiz yazıldığında sonuç 12 bulunur; çözümü adım adım görelim.
- Adım 1: Çarpma ile bölme aynı öncelikte olduğu için soldan sağa yürütülür; 2 çarpma 3 işlemi 6 sonucunu verir.
- Adım 2: 4 bölü 2 işlemi 2 sonucunu verir.
- Adım 3: Kalan iki işlem yine soldan sağa yürütülür; 8 artı 6 işlemi 14 sonucunu verir.
- Adım 4: 14 eksi 2 işlemiyle ifadenin sonucu 12 olur.
Aynı sayılar (8 artı 2) çarpma 3 biçiminde yazılırsa toplama önce yapılır ve sonuç 30 bulunur. Değişen tek şey, hangi işlemin önce yürütüldüğüdür.
4. İleri Örnek ve Saha Uygulaması
Bir atölyede toplam tutar hesaplanırken adet, birim tutar ve yüzde oranı birlikte devreye girer. Doğru kurulumda önce adet ile birim tutar çarpılır, ara toplam bir değişkende saklanır, sonra yüzde oranı bu ara toplam üzerinden uygulanır. Yanlış kurulumda yüzde oranı parça toplamlarına uygulanır ve sonuç küçük çıkar.
Sahada karşılaşılan ikinci zorluk, tip tutarlılığıdır. Tam sayı tipinde yapılan bölmede artan kısım attığı için ortalama hesabı bozulur. Bu nedenle yüzde ve ortalama gibi işlemlerde ondalık tip kullanılır.
- Yüzde değerleri ondalık olarak yazılır, yüzdeye bölünerek kullanılır.
- Karşılaştırma sonucu doğru ya da yanlış değeri olarak saklanabilir.
- Uzun ifade, ara toplam değişkenleriyle birden fazla satıra bölünür.
5. Karşılaştırma Tablosu ve Denetim
İfade öncelik sırasına bakılmadan yazıldığında program çalışma hâlinde kalabilir ve hata mesajı vermez. Denetimde ilk bakılacak yer parantez kullanımı, ikinci bakılacak yer mantıksal bağlaçların birleşim sırasıdır.
| Denetim noktası | Ölçüt | Kabul ölçüsü | Hatalı sonucun etkisi |
|---|
| Öncelik sırası | Çarpma ve bölme toplamadan önce mi yapılıyor | Elle hesaplanan sonuçla uyuşuyor | Sessiz olarak farklı sayı |
| Parantez | Gruplama istenen bölümü mü kapsıyor | İstenen adım önce yürütülüyor | Beklenmedik büyük fark |
| Veri tipi | Kesir gerekiyorsa tip uygun mu | Sonuç ondalık olarak saklanıyor | Artan kısım kayboluyor |
| Mantık sırası | DEĞİL, VE ve VEBA sırası doğru mu | Parantez kullanılmasa da aynı sonuç | Yanlış dal çalışıyor |
| Atama | Sonuç doğru değişkene yazılıyor mu | Değişken adı hedefi belirtiyor | Değer başka yere kayıyor |
En hızlı denetim yolu, ifadeyi iki ya da üç parçaya bölüp her parçayı ayrı hesaplamaktır. Bu ayrıştırma yapılamıyorsa ifade okunur hâle getirilerek yeniden yazılmalıdır. Uzun ve okunması zor ifade, doğru olsa bile denetimde risklidir.
6. Sık Yapılan Hatalar, Özet ve Kendini Dene
Aşağıdaki hatalar operatör kullanımında en sık görülenlerdir. Hepsi programı durdurmadan çalışabildiği için sınamayla yakalanmaları gerekir.
- Parantezin önceliği değiştirdiğini sanmak: parantez yalnızca gruplama yapar, varsayılan sırayı açık hâle getirir.
- Tam bölme ile bölme farkını gözden kaçırmak: tam bölmede artan kısım atılır, ortalama hesabında değer kaybolur.
- VE ile VEBA'yı aynı sırada saymak: mantıksal VE önce değerlendirilir, parantez yoksa koşul beklenmedik biçimde doğruya dönebilir.
- Atama ile eşitlik sınamasını karıştırmak: atama yazıldığında koşul hep aynı sonucu verir, hata program çalışırken fark edilir.
Özetle operatörler dört gruba ayrılır ve her grup kendi türünde sonuç üretir. Değerlendirme sırası parantez, çarpma ve bölme, toplama ve çıkarma, karşılaştırma, mantıksal DEĞİL, mantıksal VE, mantıksal VEBA ve en sonda atama biçimindedir. Aynı sıradaki işlemler soldan sağa yürütülür.
- Kendini dene: 3 artı 5 çarpma 2 ile (3 artı 5) çarpma 2 arasındaki fark kaçtır?
- Kendini dene: Tam sayı tipinde neden ortalama hesabında bölme kullanılır?
- Kendini dene: Mantıksal DEĞİL hangi sırayla değerlendirilir?
- Kendini dene: Artırarak atama hangi durumlarda tercih edilir?