Bölüm 6 - DELPHI’DE DALLANMA KOMUTLARI
IF Yapısının Delphi’de Kullanım Şekilleri
Programlarınızda oluşabilecek olan farklı dallanmaları çözüme kavuşturabilmeniz için kullanabileceğiniz en güvenli yol sanıyorum bu yapıdır.
Bütün dillerde olduğu gibi Delphi komutları içerisinde de if yapısı gerçekten yeri doldurulamaz bir öneme sahiptir. Kullanımında herhangi bir zorluk
sözkonusu değildir, fakat uygulamaları çok dikkatlice takip etmenizi tavsiye ederim.
• Basit Anlamda if Yapısı:
Şimdi sizlere if yapısının en basit kullanım şekillerinden bahsedeceğim. Buradaki kullanım sadece tek alternatifli durumlar için geçerlidir.
İf şart then
// Tek satırdan oluşan kod
Bu yapıya ait örneklendirme aşağıda verilmiştir.
Programlarınızda oluşabilecek olan farklı dallanmaları çözüme kavuşturabilmeniz için kullanabileceğiniz en güvenli yol sanıyorum bu yapıdır.
Bütün dillerde olduğu gibi Delphi komutları içerisinde de if yapısı gerçekten yeri doldurulamaz bir öneme sahiptir. Kullanımında herhangi bir zorluk
sözkonusu değildir, fakat uygulamaları çok dikkatlice takip etmenizi tavsiye ederim.
• Basit Anlamda if Yapısı:
Şimdi sizlere if yapısının en basit kullanım şekillerinden bahsedeceğim. Buradaki kullanım sadece tek alternatifli durumlar için geçerlidir.
İf şart then
// Tek satırdan oluşan kod
Bu yapıya ait örneklendirme aşağıda verilmiştir.
Şartın doğru olması durumunda işletilecek olan satır sayısı birden fazla ise bu durumda aşağıdaki yapıyı kullanmalısınız.
İf şart then
begin
// Şart doğru olduğu zaman işleyecek kod
//ikinci satır
end;
Şart doğru olduğu zaman işleyecek olan kod satırları birden fazla olduğu için, bu satırlar begin-end bloğu içerisinde yazılmalıdır. Hatırlatalım tek satırlı kodlarıda begin-end bloğu içerisinde yazabilirsiniz.
İf şart then
begin
// Şart doğru olduğu zaman işleyecek kod
//ikinci satır
end;
Şart doğru olduğu zaman işleyecek olan kod satırları birden fazla olduğu için, bu satırlar begin-end bloğu içerisinde yazılmalıdır. Hatırlatalım tek satırlı kodlarıda begin-end bloğu içerisinde yazabilirsiniz.
Yukarıdaki if yapısında “begin-end” bloğu kullanmazsanız (hata vermez) “ad” ın “Mehmet Akif Ersoy Üniversitesi” dışındaki bir metne eşit olması durumunda bile “Bilgisayar Eğitimi Alacaksınız” uyarısını her zaman alırsınız.
• if – else Yapısı:
Bu yapı alternatiflerin birden fazla olması durumunda kullanılması gereken bir kod bloğudur. Aşağıda bu husus örneklendirilmiştir.
If şart then
//Tek satır kod buraya yazılacak
else
//Tek satır kod buraya yazılacak.
Burada şartın doğru olması durumunda işletilecek olan kod tek satırdan oluşuyorsa “begin – end” bloğu kullanmaya gerek yoktur. Fakat bu durumda if ile else arasına yazılmış olan satırın sonuna “;” konulmaz. Buradaki satırın sonunda “;” konulursa muhakkak “begin-end” bloğu içerisine alınmalıdır.
Aşağıda bu hususların hepsine ait örneklendirmeler yapılmıştır. Dikkatlice inceleyiniz.
• if – else Yapısı:
Bu yapı alternatiflerin birden fazla olması durumunda kullanılması gereken bir kod bloğudur. Aşağıda bu husus örneklendirilmiştir.
If şart then
//Tek satır kod buraya yazılacak
else
//Tek satır kod buraya yazılacak.
Burada şartın doğru olması durumunda işletilecek olan kod tek satırdan oluşuyorsa “begin – end” bloğu kullanmaya gerek yoktur. Fakat bu durumda if ile else arasına yazılmış olan satırın sonuna “;” konulmaz. Buradaki satırın sonunda “;” konulursa muhakkak “begin-end” bloğu içerisine alınmalıdır.
Aşağıda bu hususların hepsine ait örneklendirmeler yapılmıştır. Dikkatlice inceleyiniz.
Yukarıdaki kodu aşağıdaki şekilde de yazabilirsiniz. Her ikiside aynı sonucu verecektir.
Uzmanlaşmadan önce yazacağınız kodları (if için) muhakkak “begin-end” bloğu içerisinde yazmaya gayret edin. Bu şekilde bir hareket, hata yapma şansınızı minimuma indirecektir. Daha sonra Delphi’ye hakim olursanız o zaman dilediğiniz şekilde kodlama yapabilirsiniz. Kodları Editor’ünüze yazarken de biraz dikkatli olursanız, daha sonra kodu incelerken sizin için çok büyük kolaylık sağlayacaktır.
Eğer if – else arasına yazılacak olan kod satırları birden fazla ise bu durumda “begin – end” bloğu kullanmak sizin için zorunlu olacaktır.
if şart then
begin
//kod satırları
//Kod satırları
end //Burada “;” olmayacak
else
begin
//kod satırları
//kod satırları
end; //Burada “;” olacak
Aşağıda bu husus örneklendirilmiştir.
Eğer if – else arasına yazılacak olan kod satırları birden fazla ise bu durumda “begin – end” bloğu kullanmak sizin için zorunlu olacaktır.
if şart then
begin
//kod satırları
//Kod satırları
end //Burada “;” olmayacak
else
begin
//kod satırları
//kod satırları
end; //Burada “;” olacak
Aşağıda bu husus örneklendirilmiştir.
İf-Else yapısı
• If – else if – else Yapısı
Alternatiflerin ikiden fazla olması durumunda kullanılabilecek olan bir yapıdır. Alternatif durumuna göre “else if” blokları çoğaltılabilir. Tüm “else if” blokları için yeni bir şart belirtmek zorunludur. Eğer tüm şartları ifade edebildiyseniz (bir çok durumda edemeyeceksiniz) “else” kullanma zorunluluğunuz yoktur. Aşağıda bu husus örneklendirilmiştir. Dikkatlice inceleyiniz.
Alternatiflerin ikiden fazla olması durumunda kullanılabilecek olan bir yapıdır. Alternatif durumuna göre “else if” blokları çoğaltılabilir. Tüm “else if” blokları için yeni bir şart belirtmek zorunludur. Eğer tüm şartları ifade edebildiyseniz (bir çok durumda edemeyeceksiniz) “else” kullanma zorunluluğunuz yoktur. Aşağıda bu husus örneklendirilmiştir. Dikkatlice inceleyiniz.
if-else if-else yapısı
Tek Satırda Birden Fazla Şartı Kontrol Etmek (And & Or)
Bir çok durumda tek satırda birden fazla şartı kontrol ettirebilirsiniz. Bu size kod satırlarınızın kısalmasını sağlayacaktır.
Aşağıdaki örnekleri birbirleriyle kıyaslayınız.
Aşağıdaki örnekleri birbirleriyle kıyaslayınız.
Bu örnekte notun “0” dan küçük veya “100” den büyük olması aynı kodun işletilmesini sağladığı için bu iki şartı tek satırda kontrol edebiliriz.
“And” işleminde o satırdaki tüm şartların sağlanması gerekmektedir.
Şimdi de aynı problemi “Or” operatörünü kullanarak çözelim.
Şimdi de aynı problemi “Or” operatörünü kullanarak çözelim.
“Or” yapılan çözümde koşulların yerleri önem arz etmektedir. Yani “if” teki şartları “else if” e, “else if” teki şartları da “if” e alırsanız sonuçlarınızın bir çoğu yanlış olacaktır.
Mesela “(notu<0) or (notu>100)” satırı ile “notu<50” satırlarını yer değiştirirseniz, “0” dan küçük olan sayılar zaten “50” den küçük olacağı için
“else if” i işletme şansınız olmayacaktır (Aralık kesişmesi vardır). “And” için böyle bir durum söz konusu değildir, satırların yerlerini değiştirseniz bile sonuç değişmeyecektir (Çünkü aralık kesişmesi yoktur).
Bu bölümde if yapısının detaylarını sizlere aktarmaya çalıştım. Bir yazılım dilinin en çok başvurduğu yapı sanıyorum budur. Bu yüzden hiç bir pürüz
kalmadan kullanılabilecek tüm şekillerine adapte olmalısınız. Ne kadar karmaşık olursa olsun sorunun çözümünü yukarıdaki şekillerden bir tanesiyle gerçekleştireceksiniz. Bazı durumlarda if içerisinde başka bir if daha (belki onun içinde başka bir if yapısı daha vs.) olabilir. Bu tip durumlarda bloklara dikkat ederseniz hiç bir sorun yaşamazsınız.
Şimdi sizlere if yapısı ile ilgili güzel bir örnek çözeceğim. Örneğimiz hala okullarımızda uygulanan sınıf geçme notuyla ilgili olacak. Formunuzun üzerine 4 adet EditBox, iki adette label yerleştirerek aşağıdaki tasarımı oluşturunuz. Geçme notu vizelerin %30 u ile final notunun %70 i toplanarak bulunacaktır.
Aşağıdaki tasarımı oluşturunuz.
Mesela “(notu<0) or (notu>100)” satırı ile “notu<50” satırlarını yer değiştirirseniz, “0” dan küçük olan sayılar zaten “50” den küçük olacağı için
“else if” i işletme şansınız olmayacaktır (Aralık kesişmesi vardır). “And” için böyle bir durum söz konusu değildir, satırların yerlerini değiştirseniz bile sonuç değişmeyecektir (Çünkü aralık kesişmesi yoktur).
Bu bölümde if yapısının detaylarını sizlere aktarmaya çalıştım. Bir yazılım dilinin en çok başvurduğu yapı sanıyorum budur. Bu yüzden hiç bir pürüz
kalmadan kullanılabilecek tüm şekillerine adapte olmalısınız. Ne kadar karmaşık olursa olsun sorunun çözümünü yukarıdaki şekillerden bir tanesiyle gerçekleştireceksiniz. Bazı durumlarda if içerisinde başka bir if daha (belki onun içinde başka bir if yapısı daha vs.) olabilir. Bu tip durumlarda bloklara dikkat ederseniz hiç bir sorun yaşamazsınız.
Şimdi sizlere if yapısı ile ilgili güzel bir örnek çözeceğim. Örneğimiz hala okullarımızda uygulanan sınıf geçme notuyla ilgili olacak. Formunuzun üzerine 4 adet EditBox, iki adette label yerleştirerek aşağıdaki tasarımı oluşturunuz. Geçme notu vizelerin %30 u ile final notunun %70 i toplanarak bulunacaktır.
Aşağıdaki tasarımı oluşturunuz.
Vize-Final Not Uygulaması
Case Yapısının Delphi’de Kullanım Şekilleri
Bir çok durumda dallanma işlemlerinizi “if” ile gerçekleştireceksiniz. Fakat kodunuzun daha kolay anlaşılabilirliği (veya yazılması) açısından bazı
durumlarda “case” yapısını kullanmanız uygun olacaktır. Şunu hiç bir zaman unutmayın “case” yapısı ile gerçekleştireceğiniz tüm kodları if yapısıyla
yazabilirsiniz, ama tersi mümkün değildir. Yani if yapısıyla oluşturacağınızkodları “case” ile yazamayabilirsiniz.
Aşağıda “case” yapısının kullanım şekilleri gösterilmiştir.
case sayi of
1:ShowMessage('Girdiğiniz Sayı 1 dir');
2:ShowMessage('Girdiğiniz Sayı 2 dir');
3:ShowMessage('Girdiğiniz Sayı 3 dür');
4:ShowMessage('Girdiğiniz Sayı 4 dür');
5:ShowMessage('Girdiğiniz Sayı 5 dir');
else
ShowMessage('Girdiğiniz Sayı Yanlış dır');
end;
durumlarda “case” yapısını kullanmanız uygun olacaktır. Şunu hiç bir zaman unutmayın “case” yapısı ile gerçekleştireceğiniz tüm kodları if yapısıyla
yazabilirsiniz, ama tersi mümkün değildir. Yani if yapısıyla oluşturacağınızkodları “case” ile yazamayabilirsiniz.
Aşağıda “case” yapısının kullanım şekilleri gösterilmiştir.
case sayi of
1:ShowMessage('Girdiğiniz Sayı 1 dir');
2:ShowMessage('Girdiğiniz Sayı 2 dir');
3:ShowMessage('Girdiğiniz Sayı 3 dür');
4:ShowMessage('Girdiğiniz Sayı 4 dür');
5:ShowMessage('Girdiğiniz Sayı 5 dir');
else
ShowMessage('Girdiğiniz Sayı Yanlış dır');
end;
“Case” yapısının davranışı şöyledir. Alternatifli değişkenin değerleri teker teker irdelenerek gerekli kodların işletilmesi sağlanır.
“Case” yapısıyla aralık kontrolü de yaptırabilirsiniz. Aşağıdaki örnekte bu husus incelenmiştir.
“Case” yapısıyla aralık kontrolü de yaptırabilirsiniz. Aşağıdaki örnekte bu husus incelenmiştir.