Döngüler | For - Next

Taruz

Uzman
Uzman
Katılım
18 Nisan 2007
Mesajlar
2,061
Excel Vers. ve Dili
Access 2019
GİRİŞ

Bu kısımda size döngülerden bahsedeceğim.. Döngüler amaç olarak, komutların tekrarlatılmasına yarar.. Bir işlemi birden fazla ve aynı anda yaptırtmak istiyorsak döngü hazırlamalıyız..

Döngüleri iki temel başlık altında toplayabiliriz..:





  1. Sayaçlı Döngüler ( For – Next )
  2. Koşullu Döngüler ( Do while – Loop, While – End))

Merhaba arkadaşlar..

Access ile uygulama geliştirirken ihtiyaç duyduğumuz en önemli yapılardandır döngüler.. Döngü hazırlamak zor gibi görünse de temel yapıyı öğrendikten sonra çok kolay ve de keyifli (hele sonucu aldıktan sonra ;) ) olduğunu keşfedebilirsiniz.. En sık kullanılan döngü tipi de For Next yapısıdır..

For Next, bir grup deyimi belirlediğimiz sayıda çalıştırararak, bir döngü oluşturur.

Yapı bu şekilde..:

For Sayaç = Başlangıç Değeri To Bitiş Değeri
Komutlar
Next Sayaç

Örnekleyelim hemen..

Formunuzun üzerine, varsayılan değeri 0 (sıfır) olan bir adet metin kutusu (metin1) ve bir komut düğmesi (komut1) yerleştirin..
Düğmenin tıklandığında olayına bu yapıyı kullanalım şimdi:


Kod:
[COLOR=#000000][COLOR=#000000][COLOR=#000000][FONT=monospace][COLOR=#000000][COLOR=#0600ff]For[/COLOR] sayac [COLOR=#008000]=[/COLOR] [COLOR=#7d2252]1[/COLOR] [COLOR=#0600ff]To[/COLOR] [COLOR=#7d2252]3[/COLOR][/COLOR][/FONT]
[FONT=monospace][COLOR=#000000]Metin1 [COLOR=#008000]=[/COLOR] Metin1 [COLOR=#008000]+[/COLOR] sayac[/COLOR][/FONT]
[FONT=monospace][COLOR=#000000][COLOR=#0600ff]Next[/COLOR] sayac[/COLOR][/FONT]
[/COLOR][/COLOR][/COLOR]
Çalıştırdığınızda metin1 kutusunda 6 değerini göreceksiniz..


Yukarıdaki yapıyı dilimize çevirirsek..:


metin1'deki değere sayaç değerini ekle. Ve bunu 3 sefer yap. Her seferde de sayaç değeri artsın.


0+1=1
1+2=3
3+3=6

İşlemdeki ilk rakamlar metin1'in aldığı değerler.. Toplanan rakam ise sayaç değeri..

Üsteki yapıda sayaç her döngüde bir artarak gider.. Bu değer varsayılandır. Ama biz bunu değiştirebiliriz.

Şimdi komutla diyelim ki:

metin1'deki değere sayaç değerini ekle. Ama sayaç değeri her seferde dörder artsın. Taa ki sayaç 20 ye gelene kadar..:


Kod:
[LEFT][COLOR=#000000][FONT=monospace][COLOR=#000000][COLOR=#0600ff]For[/COLOR] sayac [COLOR=#008000]=[/COLOR] [COLOR=#7d2252]1[/COLOR] [COLOR=#0600ff]To[/COLOR] [COLOR=#7d2252]20[/COLOR] [COLOR=#0600ff]Step[/COLOR] [COLOR=#7d2252]4[/COLOR][/COLOR][/FONT][/COLOR]
[COLOR=#000000][FONT=monospace][COLOR=#000000]Metin1 [COLOR=#008000]=[/COLOR] Metin1 [COLOR=#008000]+[/COLOR] sayac[/COLOR][/FONT][/COLOR][/LEFT]
[COLOR=#000000][FONT=monospace][COLOR=#000000]MsgBox Metin1[/COLOR][/FONT]
[LEFT][FONT=monospace][COLOR=#000000][COLOR=#0600ff]Next[/COLOR][/COLOR][/FONT][/LEFT]
 
[/COLOR]

Gördüğünüz gibi Step (adım) kısmında sayaç artışını belirledik..

Olayın aritmetiği de bu şekilde..:



0+1=1
1+5=6
6+9=15
15+13=28
28+17=45



Step kısmında -(eksi) değer kullanabiliriz.. Genelde sayaç başlangıç değeri, bitiş değerinden küçük olmalıdır.. Ama Step değerini eksi vereceksek durum değişir..


Şimdi döngümüze bir koşul koyalım.. Forma metin1 ile aynı özellikte bir metin kutusu daha yerleştirelim (metin2).

Yeni döngümüz bu olsun..:

Kod:
[COLOR=#000000][FONT=monospace][COLOR=#000000][COLOR=#0600ff]For[/COLOR] sayac [COLOR=#008000]=[/COLOR] [COLOR=#7d2252]1[/COLOR] [COLOR=#0600ff]To[/COLOR] [COLOR=#7d2252]5[/COLOR][/COLOR][/FONT][/COLOR]
[LEFT][COLOR=#000000][FONT=monospace][COLOR=#000000][COLOR=#0600ff]If[/COLOR] Metin2 [COLOR=#008000]=[/COLOR] [COLOR=#7d2252]3[/COLOR] [COLOR=#0600ff]Then[/COLOR]    [/COLOR][/FONT][/COLOR]
[COLOR=#000000][FONT=monospace][COLOR=#000000]Metin1 [COLOR=#008000]=[/COLOR] Metin1 [COLOR=#008000]+[/COLOR] sayac[/COLOR][/FONT][/COLOR][/LEFT]
[COLOR=#000000][FONT=monospace][COLOR=#000000][COLOR=#0600ff]End[/COLOR] [COLOR=#0600ff]If[/COLOR][/COLOR][/FONT]
[FONT=monospace][COLOR=#000000]Metin2 [COLOR=#008000]=[/COLOR] sayac[/COLOR][/FONT]
[LEFT][FONT=monospace][COLOR=#000000][COLOR=#0600ff]Next[/COLOR][/COLOR][/FONT][/LEFT]
 
 
[/COLOR]
Anlamı..:

metin2'deki değere sayaç değerini ekle. Bu işlemi beş defa yap. Her defasında metin2 ye de bak bakalım.. Eğer değeri 3 ise metin1 e sayaç değerini ekle.

Gördüğünüz gibi döngü içerisinde koşul kullandık.. Basitçe şema çıkartalım..:




Bir döngü içerisinde başka bir döngü de çalıştırabiliriz.:


Kod:
[LEFT][COLOR=#000000][FONT=monospace][COLOR=#000000][COLOR=#0600ff]For[/COLOR] sayac1 [COLOR=#008000]=[/COLOR] [COLOR=#7d2252]1[/COLOR] [COLOR=#0600ff]To[/COLOR] [COLOR=#7d2252]3[/COLOR][/COLOR][/FONT][/COLOR]
[COLOR=#000000][FONT=monospace][COLOR=#000000]Metin1 [COLOR=#008000]=[/COLOR] Metin1 [COLOR=#008000]+[/COLOR] sayac1     [/COLOR][/FONT][/COLOR]
[COLOR=#000000][FONT=monospace][COLOR=#000000][COLOR=#0600ff]For[/COLOR] sayac2 [COLOR=#008000]=[/COLOR] [COLOR=#7d2252]1[/COLOR] [COLOR=#0600ff]To[/COLOR] [COLOR=#7d2252]2[/COLOR]     [/COLOR][/FONT][/COLOR]
[COLOR=#000000][FONT=monospace][COLOR=#000000] Metin2 [COLOR=#008000]=[/COLOR] Metin2 [COLOR=#008000]+[/COLOR] sayac2     [/COLOR][/FONT][/COLOR][/LEFT]
[COLOR=#000000][FONT=monospace][COLOR=#000000][COLOR=#0600ff]Next[/COLOR] sayac2 [/COLOR][/FONT]
[LEFT][FONT=monospace][COLOR=#000000][COLOR=#0600ff]Next[/COLOR] sayac1 [COLOR=#008004][I]'ilk döngünün Next bölümü son bölümde yazılmalıdır..[/I][/COLOR][/COLOR][/FONT][/LEFT]
 
[/COLOR]

Yukarıda dedik ki..:

metin1'deki değere sayaç1 değerini ekle. Bu işlemi üç defa yap. Her defasında diğer döngüyü de çalıştır ve sonuçlandır.



Birden fazla iç içe döngü kurabilirsiniz..

Denemeler yaparken yanlışlıkla sonsuz bir döngü kurarsanız sonlandırmak için CTRL + BREAK tuşlarını kullanın..

Örneklerde ben toplama işlemlerini kullandım.. Siz buna şartlanmayın.. Döngü içerisinde bir çok komut ve eylem gerçekleştirebilirsiniz.. Bu tamamen ihtiyacınıza bağlı..

Hazır bu konuya ısınmışken For Next'in kuzeni For Each döngüsünden de bahsetmek lazımdı ama konuları iç içe sokmayalım.. Daha sonra, farklı bir konuda artık..

Taruz.. 2011
 

Milady Meriç

Destek Ekibi
Destek Ekibi
Katılım
24 Haziran 2011
Mesajlar
599
Excel Vers. ve Dili
EXCEL 2010 & ACCESS 2007 ENGLISH
Sayın Taruz, teşekkürler.
 
Üst