📘 5.2 – while Döngüsüyle Veri Alma
🔹 Açıklama:
while
döngüsü, bir koşul doğru olduğu sürece çalışmaya devam eden yapıdır. Giriş verisiyle çalışan, kullanıcıdan sürekli bilgi alan, koşul sağlandıkça işlem yapan senaryolarda while
döngüsü oldukça etkilidir.
Bu yapıyı kullanarak:
- Kullanıcının “iptal” deyinceye kadar veri girmesine izin vereceğiz
- Sıfır girilene kadar sayı alıp toplayacağız
- Şifre doğru girilene kadar kullanıcıyı tekrar tekrar girişe zorlayacağız
- Sonsuz döngüye düşmeden veri kontrolü sağlayacağız
📍 Kullanım Alanları:
- Sınırsız sayıda kullanıcı verisi toplama
- Koşul sağlandıkça form alanlarını aktif tutma
- Şifre denemeleri, güvenlik sistemleri
- Oyunlarda can puanı azalana kadar oynatma
- Kullanıcı iptal edene kadar dönen veri işleme sistemleri
🎯 Kazanımlar:
- Koşul-temelli döngü mantığını kavrama
- Sonsuz döngüden kaçınma yollarını öğrenme
- Dinamik ve kullanıcı kontrollü veri giriş sistemleri kurma
- while döngüsünü for’dan ayıran temel farkları pratikle öğrenme
- Kullanıcı deneyimi odaklı form tasarımına geçiş yapma
🧪 5.2 – while Döngüsüyle Veri Alma: Uygulamalı 5 Örnek
📌 Örnek 1: Sıfır Girilene Kadar Sayı Toplama
🎯 Amaç:
Kullanıcıdan sayı alınır, sıfır girilene kadar toplanır.
🎨 Form Elemanları:
txtSayi
,btnEkle
,lblToplam
(TextBox, Button, Label)- Ek olarak bir
List<int>
ile arka planda verileri tutarız.
💻 Kod:
List<int> sayilar = new List<int>();
private void btnEkle_Click(object sender, EventArgs e)
{
int sayi = Convert.ToInt32(txtSayi.Text);
sayilar.Add(sayi);
int toplam = 0;
int i = 0;
while (i < sayilar.Count && sayilar[i] != 0)
{
toplam += sayilar[i];
i++;
}
lblToplam.Text = "Toplam: " + toplam;
}
📝 Açıklama:
Liste üzerinden while
ile sıfır gelene kadar toplanıyor.
📌 Örnek 2: Şifre Girilene Kadar Tekrar Sor
🎯 Amaç:
Doğru şifre girilene kadar kullanıcıdan tekrar tekrar veri al.
🎨 Form Elemanları:
txtSifre
,btnGiris
,lblDurum
💻 Kod:
private int hak = 3;
private void btnGiris_Click(object sender, EventArgs e)
{
while (hak > 0)
{
string sifre = txtSifre.Text;
if (sifre == "admin")
{
lblDurum.Text = "Giriş başarılı.";
break;
}
else
{
hak--;
lblDurum.Text = $"Yanlış şifre. Kalan hakkınız: {hak}";
break;
}
}
if (hak == 0)
{
MessageBox.Show("Hesabınız kilitlendi.");
}
}
📝 Açıklama:
Koşul her hatada tekrar çalıştırılmak üzere kontrol ediliyor.
📌 Örnek 3: Kullanıcı “iptal” Yazana Kadar Veri Al
🎯 Amaç:
Kullanıcı “iptal” yazmadığı sürece isimleri listede toplamak.
🎨 Form Elemanları:
txtIsim
,btnEkle
,lstIsimler
💻 Kod:
private void btnEkle_Click(object sender, EventArgs e)
{
string isim = txtIsim.Text;
while (isim.ToLower() != "iptal")
{
lstIsimler.Items.Add(isim);
break;
}
txtIsim.Clear();
txtIsim.Focus();
}
📝 Açıklama:
Kullanıcı “iptal” yazana kadar isim alınır. while
tek girişte kontrolü sağlar.
📌 Örnek 4: Ortalama Hesaplama (Sıfır Girilene Kadar)
🎯 Amaç:
Kullanıcıdan alınan sayılarla ortalama bulunur. Sıfır girilene kadar devam eder.
🎨 Form Elemanları:
txtSayi
,btnHesapla
,lblOrtalama
💻 Kod:
List<int> veriler = new List<int>();
private void btnHesapla_Click(object sender, EventArgs e)
{
int sayi = Convert.ToInt32(txtSayi.Text);
if (sayi != 0)
{
veriler.Add(sayi);
}
int toplam = 0, i = 0;
while (i < veriler.Count)
{
toplam += veriler[i];
i++;
}
if (veriler.Count > 0)
lblOrtalama.Text = "Ortalama: " + (toplam / veriler.Count);
}
📝 Açıklama:
Koşul veriler.Count
kadar dönüyor. Sıfır girilince işlem durur.
📌 Örnek 5: Sayı Girişi – 100’ü Aşana Kadar Topla
🎯 Amaç:
Kullanıcının girdiği sayılar 100’ü aşana kadar toplanır.
🎨 Form Elemanları:
txtSayi
,btnEkle
,lblToplam
💻 Kod:
int toplam = 0;
private void btnEkle_Click(object sender, EventArgs e)
{
int sayi = Convert.ToInt32(txtSayi.Text);
while (toplam <= 100)
{
toplam += sayi;
break;
}
lblToplam.Text = $"Toplam: {toplam}";
if (toplam > 100)
{
MessageBox.Show("100’ü geçtiniz!");
}
}
📝 Açıklama:
Kullanıcının katkısıyla döngü büyüyor, 100’ü geçince sonlandırılıyor.
✅ Özet:
Bu bölümle öğrenciler:
- Koşul temelli döngülerde kullanıcı kontrolünü tanır
- Sonsuz döngülerden korunmayı öğrenir
- Gelişmiş giriş kontrol yapıları kurar
- Form temelli dinamik veri alma sistemlerini inşa eder