Üstad bunlar standart algoritma işte... Şimdi ne istiyoruz, bir işlemi deneyip, her olmayışında "hak"kı 1 mi azaltacak? Nedir ritmik olarak değişen değişkenlerde kullandığımız döngü? "for" değil mi?
Kod:
boolean islemBasarili=false;
for (int hak=3;hak>0 && !islemBasarili;hak--) {
//burada işlemi yaparsın.
//işlem başarılı ise islemBasarili değişkenini true yaparsın.
}
if (!islemBasarili) {
//işlem başarılı değilmiş. Eleman haklarını bitirmiş. Büyük ihtimalle bir uyarı vs. vereceğiz, başka yöne gideceğiz, vs.
}
Ne yaptık yani? Tek bir for komutuyla başlangıç hakkını, hak sıfır olunca çıkılacağını ve birer birer azalacağını belirttik. İşlemi yaptık. İşlem başarılı ise islemBasarili'yi true yaptığımız anda döngüden erken çıktık.
Canımız istedi "while" ile de yaparız da, kontrol başta değil, sonda olmalı. Neden? Hakkı kalıp kalmadığını veya başarılı olup olmadığını işlemi yapmadan kontrol etmiyoruz. Madem insan olarak sonda kontrol ediyoruz, bilgisayar da sonda kontrol edecek.
Kod:
bool islemBasarili=false;
int hak=3;
do {
//İşlemi yaparız. İşlem başarılı ise islemBasarili true olur.
--hak;
} while (hak>0 && !islemBasarili);
Yani ilk hatan ne? Eleman döngüden neden çıktı? İşlem mi başarılı oldu, yoksa hakkı mı bitti? Bunu hatırlamak zorundasın. İkinci olarak hakkı hiç bir yerde eksiltmemişsin. Eksiltmezsen tabii ki sonsuza dek hakkı olur.