Bu makalede, C# Windows Forms uygulaması kullanarak, kullanıcıdan alınan sayılar arasında çift ve tek sayıları ayıran bir uygulama yapacağız. Bu örnekte, LINQ (Language Integrated Query) kullanarak verilen sayıları çift ve tek olarak ayıracağız ve her iki listeyi ayrı ayrı ekranda görüntüleyeceğiz.
Projenin Amacı
- Kullanıcı, virgülle ayrılmış sayıları bir metin kutusuna girer.
- Program, LINQ kullanarak dizideki çift ve tek sayıları ayırır.
- Çift ve tek sayılar, iki ayrı ListBox’a eklenir.
- Eğer kullanıcı geçerli sayılar girmezse bir uyarı mesajı gösterilir.
Gerekli Araçlar
- Visual Studio (2022 veya daha yeni bir sürüm önerilir)
- .NET Framework ile Windows Forms App (C#)
Uygulamanın Adımları
1. Windows Forms Projesi Oluşturma
- Visual Studio’yu açın ve yeni bir Windows Forms App (.NET Framework) projesi oluşturun.
- Projenize bir isim verin (örneğin:
CiftTekSayilariAyirma
).
2. Form Tasarımı
Form tasarımında aşağıdaki bileşenlere ihtiyacımız olacak:
- Label: Kullanıcıya bilgi vermek için (
"Virgülle ayrılmış sayıları girin:"
yazabilir). - TextBox (
txtSayilar
): Kullanıcıdan tamsayı dizisini almak için. - Button (
btnAyir
): Çift ve tek sayıları ayırmak için. - ListBox (
lstCiftSayilar
): Çift sayıları göstermek için. - ListBox (
lstTekSayilar
): Tek sayıları göstermek için.
Form Görünümü:
3. Kod Ekleme
Form tasarımından sonra, aşağıdaki kodu Form1.cs
dosyasına ekleyin. Bu kod, verilen sayılar arasındaki çift ve tek sayıları ayırır ve her iki listeyi ListBox üzerinde görüntüler.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | private void btnAyir_Click(object sender, EventArgs e) { try { // Kullanıcıdan alınan metni parçala string giris = txtSayilar.Text; int[] sayilar = giris .Split(',') // Virgül ile ayır .Select(x => int.Parse(x.Trim())) // Her birini tamsayıya dönüştür .ToArray(); // LINQ ile çift sayıları ve tek sayıları ayır var ciftSayilar = sayilar.Where(num => num % 2 == 0); var tekSayilar = sayilar.Where(num => num % 2 != 0); // ListBox'ları temizle lstCiftSayilar.Items.Clear(); lstTekSayilar.Items.Clear(); // Çift sayıları ListBox'a ekle foreach (var sayi in ciftSayilar) { lstCiftSayilar.Items.Add(sayi); } // Tek sayıları ListBox'a ekle foreach (var sayi in tekSayilar) { lstTekSayilar.Items.Add(sayi); } // Eğer hiç çift veya tek sayı yoksa, uyarı mesajı göster if (!ciftSayilar.Any()) { MessageBox.Show("Çift sayı bulunamadı.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (!tekSayilar.Any()) { MessageBox.Show("Tek sayı bulunamadı.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show($"Bir hata oluştu: {ex.Message}", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } } |
Kodun Açıklaması
1. Kullanıcıdan Girdi Alma
1 2 3 | string giris = txtSayilar.Text; |
- Kullanıcı tarafından girilen virgüllerle ayrılmış sayıları alıyoruz.
2. Metni Tamsayı Dizisine Dönüştürme
1 2 3 4 5 6 | int[] sayilar = giris .Split(',') // Virgül ile ayır .Select(x => int.Parse(x.Trim())) // Her birini tamsayıya dönüştür .ToArray(); |
- Girilen metni virgüllerle ayırıp, her bir değeri tamsayıya dönüştürüyoruz ve bir diziye çeviriyoruz.
3. LINQ ile Çift ve Tek Sayıları Ayırma
1 2 3 4 | var ciftSayilar = sayilar.Where(num => num % 2 == 0); var tekSayilar = sayilar.Where(num => num % 2 != 0); |
Where()
metodunu kullanarak dizideki çift sayıları ve tek sayıları ayrı ayrı filtreliyoruz.
4. Sonuçları ListBox’a Ekleme
1 2 3 4 | lstCiftSayilar.Items.Clear(); lstTekSayilar.Items.Clear(); |
Her iki ListBox’ı temizliyoruz, böylece önceki veriler siliniyor.
1 2 3 4 5 6 7 8 9 10 | foreach (var sayi in ciftSayilar) { lstCiftSayilar.Items.Add(sayi); } foreach (var sayi in tekSayilar) { lstTekSayilar.Items.Add(sayi); } |
- Filtrelenen çift ve tek sayıları ilgili ListBox’lara ekliyoruz.
5. Uyarı Mesajı Gösterme
1 2 3 4 5 6 7 8 9 10 | if (!ciftSayilar.Any()) { MessageBox.Show("Çift sayı bulunamadı.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (!tekSayilar.Any()) { MessageBox.Show("Tek sayı bulunamadı.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information); } |
- Eğer çift veya tek sayılar bulunamazsa, bir uyarı mesajı gösteriyoruz.
6. Hata Kontrolü
1 2 3 4 5 6 | catch (Exception ex) { MessageBox.Show($"Bir hata oluştu: {ex.Message}", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error); } |
- Uygulama çalışırken herhangi bir hata olursa, hata mesajı gösteriyoruz.
Örnek Çalışma
Sonuç
Bu uygulama, LINQ kullanarak dizilerdeki çift ve tek sayıları ayırmanın basit bir yolunu sunmaktadır. Kullanıcıdan alınan sayılarla çift ve tek sayılar ayrılmış ve her iki liste kullanıcıya gösterilmiştir.