📘 5.3 – do-while ile Menülü Uygulama
🔹 Açıklama:
do-while
döngüsü, diğer döngü türlerinden farklı olarak önce işlemi yapar, sonra koşulu kontrol eder. Yani bu döngü her zaman en az bir kere çalışır. Bu özellik onu menü sistemleri, kullanıcı yönlendirme akışları ve adım-adım uygulamalarda idealleştirir.
Bu alt başlıkta:
- Kullanıcıya menü sunacağız
- Menüye göre farklı işlemler yapacağız
- Çıkış için özel bir seçenek tanımlayacağız
- Menü uygulamasını tek ekranla yöneteceğiz
📍 Kullanım Alanları:
- Konsol tabanlı veya basit formlu menüler
- Kullanıcı etkileşimine dayalı adım adım işlem akışı
- Form üstünde sürekli veri giriş/çıktı sistemi
- Oyunlarda tekrar oynama veya menüye dönme seçenekleri
- Giriş ekranlarında rol seçimi ve yönlendirme
🎯 Kazanımlar:
do-while
döngüsünün çalışma mantığını kavrama- Menü sistemlerinde kullanıcı kontrolünü sağlama
- Koşul değerlendirmesini işlem sonuna bırakma farkını anlama
- Döngü içinde çoklu işlem seçeneği oluşturma
- Kullanıcı dostu yönlendirme algoritmaları geliştirme
🧪 5.3 – do-while ile Menülü Uygulama: Uygulamalı 5 Örnek
📌 Örnek 1: Basit Dört İşlem Menüsü
🎯 Amaç:
Kullanıcıya toplama, çıkarma, çarpma, bölme seçeneklerini sunmak.
🎨 Form Elemanları:
txtSayi1
,txtSayi2
(TextBox)cmbSecenek
(ComboBox: “Topla”, “Çıkar”, “Çarp”, “Böl”)btnHesapla
,lblSonuc
💻 Kod:
private void btnHesapla_Click(object sender, EventArgs e)
{
double s1 = Convert.ToDouble(txtSayi1.Text);
double s2 = Convert.ToDouble(txtSayi2.Text);
string secim = cmbSecenek.Text;
string devam;
do
{
switch (secim)
{
case "Topla":
lblSonuc.Text = $"Sonuç: {s1 + s2}";
break;
case "Çıkar":
lblSonuc.Text = $"Sonuç: {s1 - s2}";
break;
case "Çarp":
lblSonuc.Text = $"Sonuç: {s1 * s2}";
break;
case "Böl":
lblSonuc.Text = s2 != 0 ? $"Sonuç: {s1 / s2}" : "Sıfıra bölünemez!";
break;
}
devam = MessageBox.Show("Devam etmek ister misiniz?", "Menü", MessageBoxButtons.YesNo) == DialogResult.Yes ? "e" : "h";
} while (devam == "e");
}
📝 Açıklama:
Menü seçenekleri switch-case ile, döngü do-while ile yönetiliyor.
📌 Örnek 2: Kullanıcı Giriş ve İşlem Seçimi
🎯 Amaç:
Kullanıcı adı doğruysa işlem menüsüne yönlendirme, değilse tekrar sorma.
🎨 Form Elemanları:
txtKullanici
,btnGiris
,cmbIslem
,lblDurum
💻 Kod:
private void btnGiris_Click(object sender, EventArgs e)
{
string giris;
do
{
giris = txtKullanici.Text;
if (giris == "admin")
{
lblDurum.Text = "Hoş geldiniz.";
}
else
{
MessageBox.Show("Hatalı giriş.");
}
} while (giris != "admin");
}
📝 Açıklama:
Kullanıcı doğru giriş yapana kadar döngü çalışır.
📌 Örnek 3: Not Değerlendirme Sistemi
🎯 Amaç:
Kullanıcıdan alınan notu değerlendirmek, çıkmak isteyince döngüyü bitirmek.
🎨 Form Elemanları:
txtNot
,btnDeğerlendir
,lblSonuc
💻 Kod:
private void btnDeğerlendir_Click(object sender, EventArgs e)
{
int not;
string devam;
do
{
not = Convert.ToInt32(txtNot.Text);
if (not >= 85)
lblSonuc.Text = "Pekiyi";
else if (not >= 70)
lblSonuc.Text = "İyi";
else if (not >= 50)
lblSonuc.Text = "Orta";
else
lblSonuc.Text = "Zayıf";
devam = MessageBox.Show("Yeni not girmek ister misiniz?", "Devam?", MessageBoxButtons.YesNo) == DialogResult.Yes ? "e" : "h";
} while (devam == "e");
}
📝 Açıklama:
Koşullu yapı ile not değerlendirmesi her döngüde tekrar yapılır.
📌 Örnek 4: Menü ile Renk Seçimi
🎯 Amaç:
Kullanıcının seçim yaptığı renge göre formun arka plan rengini değiştirmek.
🎨 Form Elemanları:
cmbRenk
,btnUygula
💻 Kod:
private void btnUygula_Click(object sender, EventArgs e)
{
string devam;
do
{
string renk = cmbRenk.Text.ToLower();
switch (renk)
{
case "kırmızı":
this.BackColor = Color.Red;
break;
case "mavi":
this.BackColor = Color.Blue;
break;
case "yeşil":
this.BackColor = Color.Green;
break;
default:
MessageBox.Show("Geçersiz renk.");
break;
}
devam = MessageBox.Show("Başka renk seçmek ister misiniz?", "Devam?", MessageBoxButtons.YesNo) == DialogResult.Yes ? "e" : "h";
} while (devam == "e");
}
📝 Açıklama:
Renk seçimi üzerinden görsel değişiklik yapılır.
📌 Örnek 5: Menü ile Ortalama Hesaplama
🎯 Amaç:
Kullanıcı her döngüde yeni sayı girer, çıkmak istediğinde ortalama hesaplanır.
🎨 Form Elemanları:
txtDeger
,btnEkle
,lblOrtalama
💻 Kod:
List<int> sayilar = new List<int>();
private void btnEkle_Click(object sender, EventArgs e)
{
string devam;
do
{
int deger = Convert.ToInt32(txtDeger.Text);
sayilar.Add(deger);
devam = MessageBox.Show("Yeni sayı eklemek ister misiniz?", "Devam?", MessageBoxButtons.YesNo) == DialogResult.Yes ? "e" : "h";
} while (devam == "e");
int toplam = 0;
foreach (int s in sayilar)
toplam += s;
lblOrtalama.Text = "Ortalama: " + (toplam / sayilar.Count);
}
📝 Açıklama:
Döngü sonunda girilen tüm değerlerin ortalaması hesaplanır.
✅ Özet:
Bu bölümle öğrenciler:
do-while
döngüsünü pratik menülerde nasıl kullanacaklarını- Kullanıcı etkileşimli döngü yapıları oluşturmayı
- Karar seçenekleri sunmayı ve işlem tekrarlarını kontrol etmeyi
- Menü temelli uygulama tasarımının mantığını öğrenirler
Pingback : A'DAN Z'YE NTP - İÇİNDEKİLER - Hasan TANDOĞAN