Ders 5: Program Kontrolü

Amaçlar:

Program içindeki akış kontrolünü açıklamak.

I. Program Kontrolü

Program içinde tanımlama deyimleri, atama deyimleri yer alır. Ancak programın işleyişinde bu deyimler sırasıyla değil de belli bir mantıkla işletilmesi gerekir. İşte program deyimlerinin işleyiş sırasının kontrolüne program kontrolü denir.

Program kontrolü karar yapıları ve döngülerle sağlanır:

Karar yapıları:

  • If...Then..Else

  • Select Case

Karar yapılarının yanı sıra yaygın olarak kullanılan bir diğer yapı da döngü (loop) tur. Döngüler özellikle programın etkinliği bakımından önemli bir programlama tekniğidir.

Döngü Yapıları:

  • Do...Loop

  • For...Next

A. Döngüler

Döngüler işlemlerin belli bir sayıda ya da koşulla ilgili olarak yinelenmesi (tekrarı) anlamına gelir.

Döngü yapıları:

Do...Loop: Bir koşula göre döngü.
For...Next: Belli bir sayıda döngü (sayaçlı).

Bir sayaçlı döngü For...Next döngüsü olarak bilinir. For deyimi ile döngünün sayacını tanımlanır. Next deyimi ile yinelecek blok sona erer. Döngünün her dönüşünde sayaç değişkeni bir sayı artırılır. Böylece bir sayıdan diğerine kadar işlemler sürüdürülür.

Do...Loop Deyimi

Bir blok deyimi verilen koşul doğru (True) olduğu sürece işletir.

Yapısı:

Do
     [ifade bloğu]
     [Exit Do]
     [ifade bloğu]
Loop [{While | Until} koşul]

Do döngülerinin temelinde koşul (condition) yatar. Bir koşul True ya da False olabilen bir ifadedir.

Tablo: İlişki operatörleri

Operatör Anlamı
< Küçüktür
<= Küçük eşittir
> Büyüktür
>= Büyük eşittir
<> Eşit değildir
= Eşittir
And Ve
Or Veya – Ya da
Not Değil

Örnek: Bir döngü kurma

Do While Ücret < 100000 ' Ücret 100000 den küçük olduğunda
       Toplam = Toplam + Ücret
Loop

For...Next Deyimi

Bir grup deyimi belli sayıda çalıştırarak (tekrar ederek) bir döngü oluşturur. Örneğin birden ona kadar (on kere) şu işlemi yap şeklinde. Özellikle bir döngü denetim değişkenin kullanıldığı (sayaç) bu döngü yapısı iç içe döngülerin de yapılmasını sağlar. For…Next döngüleri özellikle dizilerin işlenmesinde de yaygın olarak kullanılır.

Yapısı:

For sayaç = başlangıç To bitiş [ Step artırım ]
   [ifade bloğu]
   [Exit For]
   [ifade bloğu]
Next [sayaç]

Örnek: Birden yirmiye kadar sayıların toplamını alır:

Sub Button31_Click ()
Dim Toplam As Double
Toplam = 0
For I = 1 To 20
     Toplam = Toplam + I
Next I
MsgBox "1’den 20’a kadar sayıların toplamı: " & Toplam
End sub

NOT: Bu dokümanlar Faruk Çubukçu tarafından hazırlanmıştır. Ticari amaçlı olarak kullanılmaz. Daha fazla bilgi için www.farukcubukcu.com adresine bakınız.

B. Karar Yapıları

Karar yapıları If...Then...Else ve Select...Case deyimleriyle gerçekleştirilir. If...Then...Else deyimi belli bir deyimi ya da bir blok deyimi bir koşula bağlı olarak işletmeyi sağlar. Koşulun doğru olması True, yanlış olması False anlamına gelir. Select Case deyiminde ise özellikle bir karar değişkeninin aldığı değerlere göre değişik işlemlerin yapılması sağlanır.

Karar yapılarının temelinde değerler arasındaki ilişkiler yatar. İlişkiler değerler arasındaki operatörlerle kurulur.

Tablo: İlişki operatörleri

Operatör Anlamı
< Küçüktür
<= Küçük eşittir
> Büyüktür
>= Büyük eşittir
<> Eşit değildir
= Eşittir
And Ve
Or Veya – Ya da
Not Değil

 
If...Then...Else Deyimi

Klasik olarak kullanılan karar mekanizmasıdır. Eğer koşul sağlanıyorsa (if) bunu yap; yoksa şunu yap (else) gibi:

Yapı: (1)

If koşul Then işlem

Yapı: (2)

If koşul Then 
     [işlem1]
Else
    
[işlem2]
End If

If-Then-Else yapısının birinci kullanım biçiminde genellikle basit ifadelere karşılık gelen ifadeler çözülür. Koşul doğruysa (True) Then'den sonraki deyim işletilir, değilse bu deyimler atlanır. İkinci kullanım biçiminde ise; daha karmaşık hesaplamalara ve kararlara karşılık gelen ifadeler çözülür. Bu yapıda koşul doğruysa işlem1 yerine getirilir, değilse Else'den sonra belirtilen işlemler yerine getirilir.

Aşağıdaki örnekte; Ekrandan Inputbox ile alınan üç sayının en büyüğü bulunur:

Private Sub Command1_Click()
Dim Sayı1, Sayı2, Sayı3 As Double
Sayı1 = InputBox("Birinci değeri giriniz")
Sayı2 = InputBox("İkinci değeri giriniz")
Sayı3 = InputBox("Üçüncü değeri giriniz")
     If Sayı1 > Sayı2 Then
     If Sayı1 > Sayı3 Then MsgBox "Sayı1 Enbüyük."
     ElseIf Sayı3 > Sayı2 Then MsgBox "Sayı3 Enbüyük."
     Else
     MsgBox "Sayı2 Enbüyük."
End If
End Sub

Select Case Deyimi

Bir değerin test edilmesini sağlayan ve yaygın kullanılan bir yapıdır. Select Case yapısı bir koşul ya da değişken için olası değerlerin değerlendirilmesini sağlar. Diğer bir deyişle bir ifadenin değerine göre bir ya da daha çok deyim grubunun (ifade bloğunun) işletilmesini sağlar.


Yapısı (basit):

Select Case test değeri
   Case değer1
     deyim blok 1
   Case değer2
    deyim blok 2
End Select
 

Select Case yapısı içindeki ilk deyim Select Case'dir. Ardından bir değeri olan test değişkeni yer alır. Bu değer bir sayı, string ya da fonksiyon olabilir. Ardından koşulların belirtildiği Case deyimleri yer alır.

Örnek: Ücret hesabı

Ücret= Val(Text1.Text)
Select Case Ücret
    Case 1000 to 1100
         Vergi = Ücret * 0.20
    Case 1101 to 1200
         Vergi = Ücret * 0.25
    Case 1201 to 1300
         Vergi = Ücret * 0.30
    Case Else
         Vergi = Ücret * 0.40
End Select

II. Gözgen Geçirme

1. Karar yapılarını açıklayın.
2. IF ve Select yapılarını birbiriyle karşılaştırın. Hangi durumlarda tercih edilebilir?
3. Döngüleri yarıda kesip çıkmak mümkün mü? Evet ise nasıl?

Site Meter

www.KESDi.com©