5.2 – while Döngüsüyle Veri Alma


📘 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

Leave a Reply