Son Haberler

Autoplay Media Studio Eğitimi 2


Autoplay Media Studio Eğitimi 2

                                        


Döngüler (gelişmiş anlatım)

Döngüler kısaca birden çok komutu tekrar etmek için veya tablodan veriyi çekip kullanmak için kullanılır ve işimizi çok kolaylaştırır.

for döngüsü

Bu döngü belirttiğimiz bir sayı adedince yada eşleştirdiğimiz tablodaki veri sayısınca komutları tekrar eder.

for i =1,100 do



end

for -- döngü tipi

i -- index

1 -- başlangıç

100 -- bitiş

do -- yap emri


Basit bir for döngüsü bu şekildedir. Başlangıç ve bitiş adedi arasındaki sayı kadar içerdeki komutları tekrar eder. 1,100,5 yaparsak 5 sayısı adımı belirtir. Yani komut tekrarını başlangıç ve bitiş adedince ve 5 er 5 er atlayarak yapar. Şimdi anlamanız için açıklayıcı bir örnek verelim.

ListBox’a veri ekleme (örnek):

for i=1,100 do
ListBox.AddItem(“ListBox1”, “Eklenen veri: “ .. i)
end

Bu kod Listbox’a Eklenen veri: 1, Eklenen veri: 2 şeklinde 1’den 100’e kadar satır ekleyecektir.

nSayi = 0;

for i=1,100 do

nSayi=nSayi+1

end

Dialog.Message("Sayı:", nSayi)


Bu örnek ise nSayi değişkenine 100 kere +1 yapacak ve sonuç olarak 100 sayısını verecektir.

Yukardaki örnekler komut tekrarları içindi. Şimdi bir tablodan döngü ile nasıl veri çekeceğimizi görelim. Öncelikle bize bir tablo lazım, tablomuzu oluşturup gelen verileri Listbox’a ekleyelim. Bunun için en güzel örnek sanırım File.Find() fonksiyonu ile olur.

Quote

for i,v in pairs(tablo) do

end

for -- döngü tipi
i -- indeks
v - gelen veri
pairs -- eşleştir
tablo -- tablo adı
do -- yap emri


Örnek:

tAra = File.Find("C:\\Windows", "*.exe", false, false, nil, nil)

for i,v in pairs(tAra) do

ListBox.AddItem("ListBox3", v, "")

End


Bu kodlar C:\Windows klasorunde exe uzantılı dosyaları bulma sırasıyla Listbox’a ekleyecektir. Burada dikkat etmemiz gereken i ve v argümanı. i argümanı döngünün o andaki sıra nosunu, v argümanı ise o sıra nonun karşısındaki veriyi ifade eder. Örneğin yukardaki kodda tAra = C:\Windows dediğimizde bulduğu sonuçları şu şekilde listeler:

1 C:\Windows\ALCMTR.EXE
2 C:\Windows\ALCWZRD.EXE
3 C:\Windows\explorer.exe
4 C:\Windows\hh.exe
5 C:\Windows\MicCal.exe
6 C:\Windows\NOTEPAD.EXE
7 C:\Windows\patchx86.exe
8 C:\Windows\regedit.exe
9 C:\Windows\RtaUpd.exe
0 C:\Windows\RTHDCPL.EXE
11 C:\Windows\RtkAudioService.exe
12 C:\Windows\RTLCPL.EXE
13 C:\Windows\RtlUpd.exe
14 C:\Windows\SkyTel.exe
15 C:\Windows\SOUNDMAN.EXE
16 C:\Windows\TASKMAN.EXE
17 C:\Windows\twunk_16.exe
18 C:\Windows\twunk_32.exe
19 C:\Windows\vncutil.exe
20 C:\Windows\winhelp.exe
21 C:\Windows\winhlp32.exe


En baştan başlayalım:

C:\Windows\ALCMTR.EXE
Sırasında;

Quote

i = 1 olur
v = C:\Windows\ALCMTR.EXE olur.


C:\Windows\ALCWZRD.EXE
Sırasında;

Quote

i = 2 olur
v = C:\Windows\ALCWZRD.EXE olur.


bu şekilde devam eder. yani i her v için sıra numarasını ifade eder.

yukarıda verdiğimiz

Quote

ListBox.AddItem("ListBox3", v, "")


kodda geçen v ile i sırasındaki verileri tek tek listboxa ekler. Sadece Dosya isimlerini eklemek isteseydik kodumuz şu şekilde olmalıydı:

tAra = File.Find("C:\\Windows", "*.exe", false, false, nil, nil)

for i,v in pairs(tAra) do

tAyir = String.SplitPath(v)

ListBox.AddItem("ListBox3", tAyir.Filename, "")

End


** String.SplitPath() fonksiyonu bir dosya yolunu Sürücü, Klasör, Dosya Adı, Dosya Uzantısı şeklinde ayrılmasını sağlar.

for döngüsünü durdurmak

Bazı durumlarda for döngüsünü bir koşul ile durdurmak isteriz. Yukardaki örnekten yola çıkarak devam edelim.

tAra = File.Find("C:\\Windows", "*.exe", false, false, nil, nil)

for i,v in pairs(tAra) do

ListBox.AddItem("ListBox3", v, "")

End


burda C:\Windows klasöründeki tüm dosyaları bulup listboxa ekletiyoruz. Ama diyelim ki C:\Windows\SOUNDMAN.EXE dosyasını bulduğumuz zaman ekletmeyi kesmek istiyoruz. bunun için break kullanmalıyız şöyleki:

tAra = File.Find("C:\\Windows", "*.exe", false, false, nil, nil)

for i,v in pairs(tAra) do

ListBox.AddItem("ListBox3", v, "")

if v == "C:\Windows\SOUNDMAN.EXE" then

break;

end

End


yani döngüdeki v, C:\Windows\SOUNDMAN.EXE verisine eşitse döngüyü durduk dedik. break argümanı kısaca bu şekilde kullanılır.


while döngüsü

bu döngü belli koşullar altında döngünün gerçekleşmesini sağlar.

Örnek2:

a = 1; -- a değişkenine 1 sayısını atadık. yani a artık bir number (sayı)

while a < 10 do -- a değeri 10'dan küçük olduğu sürece döngüye devam et dedik

a = a + 1; -- a değerini+1 ekleyerek tekrarla (yani a zaten 1 idi. +1 eklersek 2 olacak, 3 olacak ve böyle devam edecek)

end -- bitir.


bu örnek a değeri 10'dan büyük olduğu anda duracaktır. Çünkü koşulumuz o şekildeydi.

Örnek2:

count = 1; -- count değerine 1 sayısını ata

while count < 100 do -- count değeri 100 sayısından küçük olduğu sürece döngüye devam et

count = count + 1; -- count değerine +1 ekle

if count == 50 then -- eğer count 50 sayısına eşit olursa

break; -- döngüyü durdur

end

end


Bu örnek ile 1. örneğin arasındaki fark, 2. bir koşul ile döngüyü durdurmamız.

** while döngüsünü for döngüsünde olduğu gibi tablolardada kullanabiliriz. Özellikle SQLite3 gibi veritabanı işlemlerinde veri çekmek için çokça kullanmamız gerekir.

Repeat

Bu döngü adındanda belli olduğu gibi istediğimiz koşullar gerçekleşene kadar bazı işlemleri tekrar ettirmek için kullanırız.

i = 1; -- i değişkenine 1 sayısını ata

repeat -- tekrarla

i = i + 1; -- i değişkenine +1 ekle

until i > 10 -- i değişkeni 10 sayısından büyük olana kadar devam et.









Anlatım KintaRo'ya aittir.



Hiç yorum yok