3.3 – İşlem Sırası ve Parantez Kullanımı


📘 3.3 – İşlem Sırası ve Parantez Kullanımı


🔹 Açıklama:

Birden fazla aritmetik veya mantıksal işlemi tek satırda gerçekleştirmek istiyorsak işlem önceliği konusunu doğru anlamamız gerekir. C# dilinde, işlemler belirli bir sıraya göre değerlendirilir ve bu sıra aşağıdaki gibi işler:

  1. Parantez içindekiler
  2. Çarpma (*), bölme (/), mod (%)
  3. Toplama (+), çıkarma (-)
  4. Karşılaştırmalar (<, >, ==, !=, …)
  5. Mantıksal işlemler (&&, ||, !)

Ancak bu sırayı parantez ile değiştirebiliriz. Bu, işlemlerin doğru sıralamayla yapılmasını sağlamak için kritik önemdedir.


📍 Kullanım Alanları:

  • Aritmetik işlemlerde hatasız sonuç almak
  • Karmaşık hesaplamaların yönetimi
  • Mantıksal koşulların sırasını kontrol etmek
  • İndirim, vergi, puan gibi zincir hesaplamalarda
  • Kodun okunabilirliğini ve hata ayıklanabilirliğini artırmak

🎯 Kazanımlar:

  • Operatörlerin öncelik sırasını kavrayabilme
  • Parantez kullanımıyla hesaplamaları düzenleme
  • Karışık ifadelerde hata yapmadan doğru sonuç elde etme
  • Hesaplama işlemlerinde tutarlılık ve güvenlik sağlama
  • Parantezin yalnızca görünüş değil, işlevsel bir unsur olduğunu anlama

🧪 3.3 – İşlem Sırası ve Parantez Kullanımı: Örneklerle Uygulama


📌 Örnek 1: İşlem Önceliğini Göstermek

🎯 Amaç:
Parantez kullanmadan ve parantezle işlem farkını göstermek.

🎨 Form Elemanları:

  • lblSonuc (Label)
  • btnHesapla (Button)

💻 Kod:

private void btnHesapla_Click(object sender, EventArgs e)
{
    int sonuc1 = 10 + 2 * 5;      // işlem sırasına göre önce çarpma
    int sonuc2 = (10 + 2) * 5;    // parantez önce işlem görür

    lblSonuc.Text = $"Sonuç 1: {sonuc1}\nSonuç 2: {sonuc2}";
}

📝 Açıklama:
Bu örnek işlem sırasının etkisini doğrudan görmeyi sağlar. Öğrenciler aynı ifadede parantezle ve parantezsiz sonuç farkını öğrenir.


📌 Örnek 2: Aritmetik ve Mantıksal Karışık İşlem

🎯 Amaç:
Hem sayısal hem mantıksal işlemlerin önceliklerini göstermek.

🎨 Form Elemanları:

  • lblDurum (Label)
  • btnKontrolEt (Button)

💻 Kod:

private void btnKontrolEt_Click(object sender, EventArgs e)
{
    int a = 5, b = 10, c = 20;
    bool durum = a + b > c || a * 2 > b;

    lblDurum.Text = durum ? "Koşul sağlandı." : "Koşul sağlanmadı.";
}

📝 Açıklama:
Aritmetik işlemler (+, *) önce yapılır, sonra karşılaştırma (>), en son mantıksal (||). Bu sıra iç içe yapıları doğru kurmak için gereklidir.


📌 Örnek 3: Parantez ile Karışıklığı Gidermek

🎯 Amaç:
Mantıksal bir ifade içinde parantezle işlemi düzenlemek.

🎨 Form Elemanları:

  • lblCikti (Label)
  • btnHesapla (Button)

💻 Kod:

private void btnHesapla_Click(object sender, EventArgs e)
{
    bool a = true, b = false, c = false;

    bool sonuc1 = a || b && c;
    bool sonuc2 = (a || b) && c;

    lblCikti.Text = $"Sonuç1: {sonuc1}\nSonuç2: {sonuc2}";
}

📝 Açıklama:
Bu örnek parantez ile anlam kaymasının ne kadar büyük fark oluşturabileceğini gösterir. && operatörü ||’dan önce gelir, parantezle bu değiştirilebilir.


📌 Örnek 4: Hesaplama ile Not Ortalaması

🎯 Amaç:
Ağırlıklı ortalama hesaplamak ve parantezle işlem sırasını vurgulamak.

🎨 Form Elemanları:

  • txtVize (TextBox), txtFinal (TextBox)
  • btnHesapla (Button)
  • lblOrtalama (Label)

💻 Kod:

private void btnHesapla_Click(object sender, EventArgs e)
{
    if (double.TryParse(txtVize.Text, out double vize) &&
        double.TryParse(txtFinal.Text, out double final))
    {
        double ortalama = (vize * 0.4) + (final * 0.6);
        lblOrtalama.Text = $"Ortalama: {ortalama:F2}";
    }
    else
    {
        MessageBox.Show("Geçerli not giriniz.");
    }
}

📝 Açıklama:
Parantezler hesaplamaların okunmasını ve hata ayıklamayı kolaylaştırır. Özellikle ağırlıklı ortalama gibi zincir hesaplamalarda şarttır.


📌 Örnek 5: Karışık Mantıksal Durum

🎯 Amaç:
Birden fazla koşulun işlem sırasına göre değerlendirilmesi.

🎨 Form Elemanları:

  • txtA, txtB, txtC (TextBox)
  • btnDurum (Button), lblSonuc (Label)

💻 Kod:

private void btnDurum_Click(object sender, EventArgs e)
{
    if (int.TryParse(txtA.Text, out int a) &&
        int.TryParse(txtB.Text, out int b) &&
        int.TryParse(txtC.Text, out int c))
    {
        bool sonuc = (a > b && b > c) || (a == b && c < b);
        lblSonuc.Text = sonuc ? "Koşul sağlandı" : "Koşul sağlanmadı";
    }
    else
    {
        MessageBox.Show("Geçerli sayılar giriniz.");
    }
}

📝 Açıklama:
İşlem önceliğini anlamadan bu tür mantıksal ifadeleri yönetmek zordur. Parantezle işlem sırası netleşir ve hata riski azalır.


✅ Özet:

Bu örneklerle işlem sırası şu becerileri kazandırır:

  • Kodların beklenmedik sonuçlar vermesini engeller
  • Gelişmiş mantık bloklarını doğru kurdurur
  • Öğrenciyi “hata yapmamaya” değil, “doğru düşünmeye” yönlendirir

Leave a Reply