CodeBlanks Logo Icon CodeBlanks

Döngü ve bitiş

loop, break ve quit komutuyla sürekli hesaplama yaparsın.

Döngü ve bitiş

Hesap makinesi kullanıcı çık yazana kadar çalışmalıdır. loop sonsuz döngüdür; break ile çıkılır. Her turda tampon clear ile temizlenir:

let mut girdi = String::new();
loop {
    girdi.clear();
    if io::stdin().read_line(&mut girdi).unwrap() == 0 {
        break;              // EOF (Ctrl+D)
    }
    let satir = girdi.trim();
    if satir == "çık" {
        break;
    }
    match isle(satir) { /* ... */ }
}

loop bir ifadedir

break bir değer de döndürebilir; böylece loop bir ifade olarak kullanılır:

let mut n = 1;
let ilk_buyuk = loop {
    n *= 3;
    if n > 100 {
        break n;
    }
};
println!("{ilk_buyuk}");  // 243

continue ise turun geri kalanını atlar; örneğin boş satırları atlamak için kullanılır.

Uygulama Komut döngüsü

Stdin yerine bir dizi kullanarak döngüyü dene: ["5 + 1", "", "çık", "9 * 9"] komutlarını sırayla işle; boş satırda continue, "çık"'ta break yap, diğerlerinde satırı işlendi: ... biçiminde yazdır. Sonda güle güle yazdır.

Başlangıç kodu

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
fn main() {
    for komut in ["5 + 1", "", "çık", "9 * 9"] {
        if komut.is_empty() {
            continue;
        }
        if komut == "çık" {
            break;
        }
        println!("işlendi: {komut}");
    }
    println!("güle güle");
}

Beklenen çıktı

işlendi: 5 + 1
güle güle

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Döngüde <code>girdi.clear()</code> çağrılmazsa ne olur?

  • Girdi okunmaz
  • Yeni satır eskisinin sonuna eklenir ve ayrıştırma bozulur Doğru cevap
  • Hiçbir şey
  • Program çöker

Açıklama: read_line var olan String'e ekleme yapar; temizlenmezse "12 * 3\n5 + 1\n" gibi birikir.

2 Döngüden çık

Soru
if satir == "çık" {
    ____;
}
Cevap
if satir == "çık" {
    break;
}

Açıklama: break en yakın döngüyü bitirir.

3 Komut ve etkisi

Kavram Anlamı
loop Sonsuz döngü
break Döngüyü bitirir
break n Değer döndürür
continue Sonraki tura geçer

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma