Delphi’de Döngüler ve Şart Yapıları

Merhaba arkadaşlar, uzun zamandır yazı yazmadığım için kendimi yazmak zorunda hissettim. Bu yazımda döngüleri ayrıntılı bir biçimde anlatmaya çalışacağım. Umarım anlaşılır ve faydalı olur. Okuyan herkese şimdiden teşekkür ediyorum. Lafı uzatmadan konuya gireceğim.

Öncelikle “Döngü nedir?” sorusuna cevap arayalım. Öncelikle söylemeliyim ki:  Döngü programlamanın temelidir ve bir programcının en iyi yardımcısıdır. Sözlük anlamına baktığımız zaman: “Bir olayın birden fazla tekrarlanması” diye geçer. Fakat bizim şart yapılarımız olay tekrarlama için değil, zaten bazı delphi kaynakları bunları döngüler ile aynı başlık altına almayabiliyor ama ben tek başlıkta vereceğim.

Bu döngülerimiz ve şart/koşul yapılarımız neler?

  • if – then (Basit şart yapısı)
  • case – of  (if – then’in çok durumlu olanı)
  • while – do (şart gerçekleşmediği sürece çalışır)
  • repeat – until (şart gerçekleşene kadar çalışır)
  • for – to – do (integer bir değişkende belirli aralıklarla değer gezindirir)
  • for – in – do (for – to – do’nun string için kullanılanıdır, pratik kodlama için geliştirilmiştir.)

Evet, şimdi sayalım {1, 2, 3, 4, 5, 6} 6 tane döngümüz varmış. Şimdi sırasıyla bunları inceliyelim.

Öncelikle if – then ve case – of şart yapılarını ele alacağım.

if – then Şartın gerçekleşip gerçekleşmediğine bakar, ardırdan gereğini yapar :).

Genel yapısı şöyledir;

if ŞART then
//Şart gerçekleştiğinde burdaki kodlarımız çalışır.
Else
//Gerçekleşmediğinde ise burası çalışır.

Burda şunu belirtmek isterim, eğer çalıştıracağımız komutlar 1 den fazlaysa begin – end kullanmalıyız. 1 tane ise yine kullanabiliriz, fakat kalabalığa gerek yoktur :). Tüm bunların yanında eğer başka komut yazmadan direk bir kod bloğunu(örneğin bir döngüyü) çalıştıracaksınız, Begin – end yine şart değildir :).  Burada dikkat etmemiz gereken bir 2. nokta ise eğer else kullanacaksak, elseden önce “;” Noktalı Virgül operatörümüzü kullanamayız. Yani begin – end kullanmadan yazacaksak oradaki tek satırlık komutun sonuna konmaz, eğer kullanacaksak, “end;” değil “end” yazarız. Yani;

if ŞART then
  Begin
    //Şart gerçekleştiğinde burası çalışır…
  End
    Else
      Begin
        // Gerçekleşmediğinde ise burası çalışır.
      End;

Bir diğer husus ise else kullanmak zorunda değiliz, eğer şart gerçekleşmediğinde yapılacak bir şey yoksa boşuna kalabalık etmeye gerek yoktur.

case – of: if then in çoklu kullanıma göre pratikleştirilmişidir, diyemeyiz. Çünkü yapı farklı, sadece integer veride çalışıyor J

Genel yapısı şöyledir;

case x of
0:  showmessage(‘Ali’);
1:  showmessage(‘Veli’);
2:  showmessage(‘Kürşad’);
End;

Burdada yine aynı if – then deki gibi end in arkasından else kullanabiliriz. Yine 0: 1: 2: durumlarının karşısında bir satırdan fazla ise yapacaklarımız begin end aralığı kullanmak durumundayız…

Case – of olmasaydı ne yapardık?

Telaş yapmayın hemen if then bize yeter… Yukardaki örneği if – then ile yapacak olursak;

if x=0 then
showmessage(‘Ali’)
else if x=1 then
showmessage(‘Veli’)
else if x=2 then
showmessage(‘Kürşad’);

elbetteki karşılaştırdığınızda case of kolayınıza gelecek :D.

Şimdi de diğer grubumuza bakalım;

While ile başlayacağım, çünkü hepsinin temeli buna dayanır. Bu döngü hatalı kullanımda sonsuz döngüye girip programı ve belki de bilgisayarı kitleyebilir.(aşağıdaki örnek döngümüz de bunlardandır J )

While 1=1 do
Begin
//şart gerçekleştiği sürece buradaki kodlar çalışır.
End;

Şimdi gelelim bu döngüden türeyen diğer döngülere;

Repeat-until

Şart gerçekleşene kadar çalışır (dikkat etmemiz gereken nokta, bu döngü çalıştıktan sonra bakacaktır şarta yani şart gerçekleşse bile bir kez çalışacaktır.)

Repeat
///ipucu: bu döngüde begin-end kullanılmaz.
Until 1<>1;

Bunu While ile yapacak olursak;

//kodlar...
while 1=1 do
begin
//kodlar...
end;

For-to-do

Bir değişkeni verilen aralıkta gezindirerek kod çalıştırır.(integer ile çalışır)

For i:=0 to 10 do
Begin
//i 0dan 10 a kadar değer alırken her seferinde bu blok çalışır.
End;

Bunu While ile yapacak olursak;

i:=0;
while i<11 do
begin
//kodlar...
i:=i+1;
end;

For-in-do

Bu döngü tahminim Delphi 2007 de gelmiştir, Bir Listeyi (TStringList veya TStrings veya diğer mirasçılar.) verilen string değer içinde gezindirir.

For s in Memo1.Lines do
Begin
//s Memodaki her satırı tek tek alır ve bu blok çalışır.
End;

Bunu for ile yapacak olursak;

for i:=0 to Memo1.Lines.Count-1 do
begin
s:=Memo1.Lines[i];
//kodlar...
end;

bunu while ile yapacak olursak;

i:=0;
while i<Memo1.Lines.Count do
begin
s:=Memo1.Lines[i];
//kodlar...
i:=i+1;
end;

Tags: , , , , , , , , , , , , , , , ,

No comments yet.

Leave a Reply

*