Bölüm 8 - DELPHI'DE DÖNGÜ KOMUTLARI
(Repeat Until & While Do Döngüleri)
• Repeat Until Döngüsü
Bazı durumlarda döngünüzün kaç kere işleyeceğini tahmin edemeyebilirsiniz. Yani döngünüz bir şarta (veya birden çok) bağlı olarak işleyecektir. Dolayısıyla bu işlemi “for” döngüsüyle çözemeyeceksiniz. Döngünüzün çalışma sayısı bir şarta bağlı olacaksa çözüm yollarından bir tanesi “Repeat-Until” döngüsüdür. Belirteceğiniz şart sağlanmadığı sürece döngünüz işlemeye devam edecektir.
repeat
//Döngü içerisinde işletilecek kodlar buraya yazılacak.
Until ilk>son; //şart sağlanırsa bitir
Aşağıdaki örnek projede, daha önce “for” döngüsüyle çözmüş olduğumuz girilen iki sayı arasındaki sayıların toplamını hesaplayan projenin “Repeat – Until” döngüsüyle çözülmüş hali verilmiştir.
Şimdi de yine daha önceden “for” ile yazdığımız fakat iyi çözüm olmadığını belirttiğimiz girilen iki sayı arasındaki çift olanları toplayan programın kodlarını verelim (Tabiiki çözümü Repeat-Until ile gerçekleştireceğiz).
Bu arada tekrar hatırlatalım. Inc() fonksiyonunu kullanabilmeniz için, fonksiyona giren iki değerinde tam sayı tipli değişken olması gerekmektedir.
Aksi takdirde “toplam:=toplam+ilk” yazmalısınız. Şimdi de programı çalıştırdığımız anda bize şifre soracak, eğer şifreyi bilemezsek yeniden girmemizi isteyecek pencereyle karşılaşacağımız bir program yapalım. Şifre isteme işlemlerinin yapılacağı en uygun Event “FormCreate” yordamıdır. Bu yüzden kodumuzun tamamını bu procedure’e yazacağız. Şifre istemem işlemini döngü içerisinde yapacağımız için, şifreyi doğru girene kadar arka arkaya şifre penceresi ile karşılaşacaksınız. Bahsettiğimiz bu tür uygulamaları, şarta bağlı olarak işletilebilen döngülerle çözmek çok uygun bir çözüm yolu olacaktır.
Aksi takdirde “toplam:=toplam+ilk” yazmalısınız. Şimdi de programı çalıştırdığımız anda bize şifre soracak, eğer şifreyi bilemezsek yeniden girmemizi isteyecek pencereyle karşılaşacağımız bir program yapalım. Şifre isteme işlemlerinin yapılacağı en uygun Event “FormCreate” yordamıdır. Bu yüzden kodumuzun tamamını bu procedure’e yazacağız. Şifre istemem işlemini döngü içerisinde yapacağımız için, şifreyi doğru girene kadar arka arkaya şifre penceresi ile karşılaşacaksınız. Bahsettiğimiz bu tür uygulamaları, şarta bağlı olarak işletilebilen döngülerle çözmek çok uygun bir çözüm yolu olacaktır.
Repead Until - Form Şifreleme
• While Do Döngüsü
Bu döngü belirtilen şart gerçekleştiği sürece devamlı olarak işler. Repeat – Until döngüsünden farkı, şartın döngü çıkışında değil, girişinde kontrol edilmesidir. Belirtilen şart sağlanmıyorsa bu bloğa yazacağınız kod hiç işlemeyebilir. Aşağıdaki döngü için kullanacağınız yapı verilmiştir.
while ilk<=son do
begin
//Kodlar Bu araya yazılacak
end;
Belirtilen şart sağlandığı sürece döngü komutları işlemeye devam edecektir. Yine bloktaki kodlar bir satırdan fazla ise begin-end bloğu kullanmak zorunlu olacaktır. Aşağıda girilen iki sayı arasındaki çift sayıların toplamı bu döngü kullanılarak çözülmüştür.
while ilk<=son do
begin
//Kodlar Bu araya yazılacak
end;
Belirtilen şart sağlandığı sürece döngü komutları işlemeye devam edecektir. Yine bloktaki kodlar bir satırdan fazla ise begin-end bloğu kullanmak zorunlu olacaktır. Aşağıda girilen iki sayı arasındaki çift sayıların toplamı bu döngü kullanılarak çözülmüştür.
Şimdi de şifre sorma uygulamasını “While-Do” döngüsüyle gerçekleştirelim.