Jump to content
Son zamanlarda artan kullanıcı hesap hırsızlıkları sebebiyle tüm kullanıcılara şifre sıfırlama maili gönderilmiştir. Lütfen güveli şifreler seçiniz. Mevcut e-mail adresinize erişemiyorsanız, en aşağıdaki destek linkinden bize ulaşınız. ×

Autoplay Media Studio Eğitimi


KintaRo
 Share

Recommended Posts

DEĞİŞKENLER (Variable)

* Değişkenler için programlamada yapı taşları diyebiliriz. Değişkenleri içlerine veri depolamak, daha sonra depoladığımız verileri istersek değiştirmek, başka değişken veya değerlerle birleştirmek, ekrana yazdırmak, hesaplama yapmak gibi bir çok işlemde kullanabiliriz.

Örnek:

isim = "ahmet"

Burda isim değişkenine ahmet değerini depoladık. Şimdi bunu istediğimiz yerde kullanabiliriz.

Dialog.Message("Adamın ismi:", isim)

Bu kod ekrana ahmet değerini yazdıracaktır. İstersek

Dialog.Message("Adamın ismi:", "ahmet")

kodunuda kullanabilirdik, sonuç değişmezdi fakat, programlamada ilerledikçe çok uzun değerler, birleştirilmesi gereken değerler gibi olaylarla çalışmaya başladığınız zaman değişken olayının işinizi çok kolaylaştıracağını göreceksiniz. Örneğin 10 sayfalık bir projede her sayfada bir INI dosyasından veri alacaksınız. INI dosyasıda diyelimki C:\Documents and Settings\selami\desktop\programlar\adresler.ini adresinde. Burdan veri çekmek için her sayfadaki kodu şu şekilde kullanmanız gerekiyor:

INIFile.GetValue("C:\\Documents and Settings\\selami\\desktop\\programlar\\adresler.ini", "Ev", "adres1")

fakat her kodda bu kadar uzun yol kullanmak yerine şu şekilde yapsaydık daha derli toplu bir görüntü oluşurdu:

sDosyaYolu = "C:\\Documents and Settings\\selami\\desktop\\programlar\\adresler.ini";

INIFile.GetValue(sDosyaYolu, "Ev", "adres1")

Gördüğünüz gibi sadece değişkenimizi yazdık ve veriyi çektik.

* Değişkendeki veriyi, kendine ekleme yaparakda değiştirebiliriz.

Örnek:

sayi = 10
sayi = sayi + 10

Bu şekilde yaptigimiz zaman ilk satirda sayi degiskenine 10 sayısını depolarız ve ikinci satırda sayi degiskenini 10 ile toplayip depoladigi veriyi degistirebiliriz.

*** Global Functionsda örneğin isim = "selami" değişkenini tanımladıktan sonra projenin başka yerinde isim değişkenine başka bir veri depolarsak son depoladığımız veri geçerli olmaktadır.


a = 10;
b = a;
Dialog.Message("değer", B)

Bu örnektede b değişkenine a değişkenini depoluyoruz, a değişkenine daha önce 10 değerini depoladığımız için b değişkenini ekrana yazdırdığımızda karşımıza 10 değeri gelecektir.


*** Değişkenler sayı ile başlayamaz, operatorler isimleri kullanilamaz, boşluk karakteri kullanılamaz ve değişkenlerde türkçe karakter kullanılamaz!.

Hatalı değişkenlere örnekler:

1
1data
%MyValue%
$strData
for
local
_FirstName+LastName_
User Name





NUMARALAR (number)

Numaralar Numerik değerlerdir. AMS de kullanılabilecek geçerli numara örnekleri şunlardır:

4 4. .4 0.4 4.57e-3 0.3e12




DEĞERLER (string)

Değerlerden sıkça bahsettik, şimdi ne olduğuna bakalım. Değerler, birleşik karakterlerdir. Örneğin “Joe2” 4 karakterli bir değerdir. Büyük J ile başlar, 2 sayısı ile biter. Karakter sınırı yoktur, bir kelimeden, bir cümleden yada bir kitabı tamamen içerebilir.

Değerler her zaman "" karakterleri içinde gösterilir:

isim = "selami"
sehir = "istanbul"
adres = "12 nolu sk. 78. cadde"


Eğer değerlerin için "" tırnak işareti kullanmak istiyorsanız kullanacağınız tırnak işaretlerinden önce \ karakterini kullanmanız gerekir:

cumle = "Orda bir köy var uzakta, Köyün ismi \"abacılar köyü\" dür."

Bu şekilde kullanılmazsa syntax hatası verir.

Değerlerin içinde satırlar kullanmak isterseniz \n ibaresini kullanmanız gerekir:

Lines = "Line one.\nLine two.\nLine three";
Dialog.Message("Here is the String", Lines);

ams60_scripting_three_lines_dialog.png

Dosya yolu belirtirken \ karakterinden iki adet kullanmanız gerekir.

dosya_yolu = "C:\\Program Files\\MSN\\msn.exe"

Eğer değer sadece sayı içeriyorsa ams bunu direk sayıya dönüştürecektir.

a = "10" + 1 -- sonuç 11 olacaktır.

Ama değerin kendi içinde hesaplama yaptırılamaz.

a = "10+1" -- ekrana yazdırıldığında 10+1 olarak görünecektir.

a = 10+1 -- hesaplamada doğru yol budur.




FONKSİYONLAR (function)

Büyük projelerinizde kod karmaşından kurtulmak için yardımınıza koşacak aracımız fonksiyonlardır. Hazırlayacağınız fonksiyon kodlarıyla, aynı kodları tekrar tekrar kullanmaktan kurtursunuz. Kullanımı şu şekildedir:

function fonksiyon_adı (argümanlar)
fonksiyon kodları
return dönüş_değeri;
end

Örnek:

function hosgeldin()
Dialog.Message("merhaba","Hoşgeldiniz!");
end

Programın giriş bölümüne

hosgeldin()

kodunu yazdığınız zaman Dialog penceresini açıp hoşgeldiniz diyecektir. Tabi bu basit bir örnek. Sınırı hayalgücünüzle doğru orantılıdır...




TABLOLAR (table)

Tablolar indekslenmiş değerleri liste halinde tek bir isimde depolamanın en güçlü ve kolay yoludur.

Örnek:

isimler = {"Ahmet", "Selami", "Mustafa"}

Dialog.Message("Tablodaki ikinci kişi:", isimler[2])

bu kod ekrana selami ismini yazdıracaktır. çünkü isimler[2] dediğimizde isimler tablosunda 2. sıradaki değeri alacaktır.

İkinci tablolama şekli:

tSarkici = {}
tSarkici.isim = "şebnem"
tSarkici.soyisim = "ferah"
tSarkici.yas = "35"

Dialog.Message(tSarkici.isim, tSarkici.soyisim)

bu kod şebnem ve ferah değerlerini yazdıracaktır.

Tablolamada şöyle bir yazım tarzı daha vardır;

tVeriler = {Meyve="Elma",Renk="Kırmızı"}
Dialog.Message("", tVeriler.Meyve);

AMS8'de pairs espriside bu tablolardaki Meyve ve Renk yazılarını göstermemizi sağlıyor..

pairs argümanını şu şekildede kullanabiliriz:

tMeyveler = {"Elma", "Armut", "Portakal"}

for i in pairs(tMeyveler) do
Dialog.Message("Meyveler:", tMeyveler[i])
end

Bu kodu çalıştırdığımız zaman tMeyveler tablosundaki öğeleri sırayla ekrana yazdıracaktır. i argümanının esprisi daha öncede belirttiğimiz gibi tablonun içindeki öğelerin indeks numaralarıdır.




KONTROL YAPILARI (KOŞULLANDIRMA)

Kodlarınıza koşullar ve kontrol yapıları ile yön verebilirsiniz.

Kontrol Yapı operatorleri if, while, repeat ve for'dur.

- if

eğer anlamına gelen if ile koşullandırma yapıyoruz. Yapısı basitçe şu şekildedir:

if şartlandırma then
koşul gerçekleşirse çalışacak kodlar
end


Örnek:

x = 50;
if x > 10 then -- eğer x 10 sayısından büyükse
Dialog.Message("result", "x, 10'dan büyüktür"); -- mesajı görüntüle.
end

else operatoru ile koşullandırmamıza şartlar koşabiliriz:

x = 50;
if x > 10 then -- eğer x 10 sayısından büyükse
Dialog.Message("result", "x, 10'dan büyüktür"); -- mesajı görüntüle.
else -- değilse
Dialog.Message("result", "x, 10'dan küçüktür"); -- mesajı görüntüle.
end

elseif kullanarak koşullandırmamızdaki doğru sonuca ulaşınca çalıştırılacak kodları belirleyebiliriz:

x = 5;
if x == 10 then
Dialog.Message("", "x eşittir 10");
elseif x == 11 then
Dialog.Message("", "x eşittir 11");
elseif x == 12 then
Dialog.Message("", "x eşittir 12");
else
Dialog.Message("", "x eşit değildir 10/11/12 ");
end

eğer x ordaki hiç bir sayıya eşit olmadığı için else den sonraki eşit değildir mesajı görüntülenecektir. fakat x = 10 olsaydı ilk mesaj, 11 olsaydı 2. mesaj, 12 olsaydı 2. mesaj görüntülenecekti.




- While

While döngüsü, koyduğumuz şart yerine gelene kadar kodu tekrarlayacaktır. Basit yapı şu şekildedir:

while şartlandırma do
çalıştılacak kodlar
end

Örnek:

a = 1;
while a < 10 do
a = a + 1;
end

Bu kodda a = a + 1 kodu 9 defa çalıştırılacaktır. Çünkü şartımızda a < 10 (a 10'dan küçükse) dedik ve a = 1, yani 10 sayısına ulaşmak için 9 kere 1 ile toplamamız gerekiyor a = a + 1 dediğimizde a+1+1+1+1+1+1+1+1 şeklinde çalışacak ve sayı 10'a ulaşında duracaktır.


while döngüsü esnasında yine şartlandırma yaparak break argümanı ile döngüyü durdurmak mümkün.

count = 1;
while count < 100 do -- count 100 den küçükse yap
count = count + 1; -- count'a 1 ekle
if count == 50 then -- eğer count 50'ye eşitse
break; -- döngüyü durdur
end
end

count 50 sayısına ulaştığında break argümanı döngüyü durduracaktır.




- For

for ifadesi kısaca kod tekrarı yaparken kullanılır. Basitçe yapısı şu şekildedir:

for değişken = başlama, durma, adım do
çalışacak kodlar
end


Örnek:

for i = 1,10,1 do
Dialog.Message("Number", i);
end

Burda i harfi döngüde dönen sayıyı belirtir. i=1,10,1 şu demektir;

i = döngü sayısı
1 = başlangıç
10 = bitiş
1 = adım


yani 1 den 10 a kadar 1'er 1'er say ve i harfinde depola

daha sonrada Dialog.Message("Number", i); yazarak dialogda sayıları gösterir.

Bitiş sayısı kaç ise o sayıya kadar döngü tekrarlanır.




- repeat:

Repeat döngüsü for döngüsüne çok benzerlik göstermektedir. Verilen koşulu until şartlandırmasına kadar tekrar eder.

Örnek:

x = 50;

repeat

x = x + 1; - altta x >= 100 diye koşul koyduk bu koşul sağlanana kadar x'in üzerine bir ekleyecek..

until

x >= 100 - koşulumuz x değişkeni 100e eşit olursa veya büyük olursa bu koşul sağlanınca döngü duracak

*** break argümanı for döngüsünde, repeat döngüsünde ve while döngüsünde döngüyü durdurmak için kullanılır.




OPERATORLER

- Aritmetik Operatorler:

Aritmetik Operatorler Matematiksel işlemlerde kullanılır. Şu operatorler desteklenmektedir:

+ (toplama)
- (çıkarma)
* (çarpma)
/ (bölme)
% (yüzde)
^ (üssü)
unary - (olumsuzluk)


Örnek:

a = 5 + 2; -- 5+2 yi topla ve a değişkeninde depola
b = a * 100; -- a değişkeninde depolanan sayıyı 100 ile çarp
Dialog.Message("Sonuç:",  -- b'yi yazdır

Denediğiniz zaman 700 sonucu çıktığını göreceksiniz.




- İlişkisel Operatorler:

İlişkisel operatorler iki değeri karşılaştırmak için kullanılır. Şu operatorler desteklenmektedir:

> (Büyükse)
< (Küçükse)
<= (küçükse yada eşitse)
>= (büyükse yada eşitse)
~= (eşit değilse)
== (eşitse)


Örnek:

a = 5
b = 1

if a > b then -- eğer a, b'den büyükse
Dialog.Message("Sonuç:", "a, b'den büyüktür.")
end

Kod bu şekilde çalıştırıldığında "a, b'den büyüktür" şeklinde bir dialog penceresi çıkacaktır. a ve b deki sayılar yer değiştirildiğinde hiç bir yanıt vermeyecektir. Kodlamada büyük-küçük harf duyarlılığına dikkat ediniz. Şöyleki;

"ahmet" == "ahmet" -- eşittir
"Ahmet" == "ahmet" -- eşit değildir.




- Yerel Operatorler:

Yerel operatorler Boolean işlemlerde kullanılır. (Boolean'in tam bir türkçe karşılığı yok, true veya false alan değerler diyoruz kısaca. Yani bu işlemlerin sonucunda geri dönen değer true yada false dır.). Desteklenen operatorler şunlardır:

and (and içeren değerler aynı dönüşü vermelidir)
or (or içeren değerlerden en az biri istenen dönüşü vermelidir)
not (değerin zıttını verir)


*** Burdan nil operatorunede değinmek isterim. nil demek boş, geçersiz demektir. yani a = nil derseniz a'nın karşılığında birşey dönmez. Global Functions'da boş bir değer tanımlamak ve daha sonradan bunun içine farklı veriler depolamak için bu tekniği kullanabilirsiniz. Bu bilgi kenarda kalsın.



a = true;
b = false;
c = a and b; -- c değişkenine false değeri depolanır. a = true olsada b = false'dır çünkü.
d = a and nil; -- d değişkenine false depolanır.
e = not b; -- b = false olduğu için not operatörüde zıttını vereceği için e değişkenine true depolanır.

Dialog.Message("Sonuç:", e) derseniz sonucu göreceksiniz.

Örnek:

a = true;
b = true;

if a and b then -- eğer a ve b true ise
Dialog.Message("Sonuç:", "tüm değerler: true")
else -- değilse
Dialog.Message("Sonuç:", "bazı değerler false içeriyor!")
end

Yukarıdaki örnekte tüm değerler true mesajını alırsınız. Eğer a yada b değerlerinden birini false yaparsanız ikinci mesajı alırsınız. Eğer a and b yerine a or b derseniz değerlerden herhangi birinin true olması, tüm değerler true mesajını almanız için yeterlidir.




- Uzunluk Operatoru:

Bu operator yani #, değerin karakter uzunluğunu alır ve yazdırır.

Örnek:

nLength = #"Hey"; -- nLength değişkenine Hey kelimesinin karakterlerini sayar ve depolar (Yani 3)




NOTLAR:

Her zaman kullandığımız fakat ayrıntılarına pek değinmediğimiz şeylerden burda bahsedelim...




- Birleştirme:

Birleştirmeden kastımız; iki değerin, iki değişkenin yada iki komutun birleştirilmesidir. Bu argümanları birleştirmek için .. kullanılır. Örneğin;

x = "ali"
y = "veli"

Dialog.Message("İsim:" x .. y)

dediğimiz zaman ekrana aliveli şeklinde yazdıracaktır. eğer x .. " " .. y deseydik ekrana ali veli şeklinde yazdıracaktır. Yani iki değerin arasında boşluk koyduk.




- Yorum Ekleme:

Yazdığımız kodların yanına yorum (açıklama) eklemek için -- kullanırız. Eğer ekleyeceğimiz yorumlar birden fazla satır içeriyorsa yorumu --[[ yorum ]] şeklinde yazarız. Yorumlar yeşil renkte görünür. ve kodlamaya hiç bir işlevi yoktur. sadece açıklamadır.

Örnek:

-- bu bir yorumdur

--[[ bu satılar yorum içerir
bu satılar yorum içerir
bu satılar yorum içerir
bu satılar yorum içerir
]]




*** Kaynak olarak AMS Yardım Dosyasını ve kendi tecrübelerimi kullandım. Gördüğüm kadarıyla AMS ye başlayan arkadaşlar bu bilgilerden yoksun, sadece işine yarayan kısımları öğrenmeye çalışıyorlar ve ilerde zorluk çekiyorlar. AMS ile hatta programlama ile uğraşan herkes yukarıda anlatılan bu konuları bilmeleri gerekiyor. Çünkü bu bilgiler standarttır ve tüm dillerde hemen hemen aynıdır. Sadece pratikte farklılık göstermektedir. Aslında bilinmesi gereken bir çok konu daha var, ama temel olarak bilinmesi gerekenler yani olmazsa olmazlar bunlardır. Eksiklerim ve hatalarım varsa zamanla düzeltilecektir/eklenecektir. Sizlerinde mutlaka buda olmalı dediğiniz konular varsa onlarıda ekleriz. Umarım yararlı olur.




Bu Dökümanı PDF halinde indirebilirsiniz:

http://www.tamotomatik.org/dosya/ams.pdf




AMS için Türkiyedeki En Geniş Türkçe Kaynak TNCTR'dir, ve bu döküman yine TNCTR için hazırlanmıştır.

TnC TeaM
  • Like 1
Link to comment
Share on other sites

  • 11 ay sonra...

[b]Döngüler (gelişmiş anlatım)[/b]

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.

[color="#000000"][b]for döngüsü[/b][/color]

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

[CODE]for i =1,100 do

end
for -- döngü tipi
i -- index
1 -- başlangıç
100 -- bitiş
do -- yap emri[/CODE]

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.

[color="#000000"][b]ListBox’a veri ekleme (örnek):[/b][/color]

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.

[code]nSayi = 0;
for i=1,100 do
nSayi=nSayi+1
end
Dialog.Message("Sayı:", nSayi)[/code]

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[/quote]

[b]Örnek:[/b]

[code]tAra = File.Find("C:\\Windows", "*.exe", false, false, nil, nil)
for i,v in pairs(tAra) do
ListBox.AddItem("ListBox3", v, "")
End[/code]

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:

[quote]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[/quote]

En baştan başlayalım:

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

[quote]i = 1 olur
v = C:\Windows\ALCMTR.EXE olur.[/quote]

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

[quote]i = 2 olur
v = C:\Windows\ALCWZRD.EXE olur.[/quote]

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, "")[/quote]

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

[code]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[/code]

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

[color="#000000"][b]for döngüsünü durdurmak[/b][/color]

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

[code]tAra = File.Find("C:\\Windows", "*.exe", false, false, nil, nil)
for i,v in pairs(tAra) do
ListBox.AddItem("ListBox3", v, "")
End[/code]

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:

[code]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[/code]

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.


[color="#000000"][b]while döngüsü[/b][/color]

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

Örnek2:

[code]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.[/code]

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

Örnek2:

[code]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[/code]

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.

[color="#000000"][b]Repeat[/b][/color]

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.

[code]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.[/code]

Yapı ve görünüş olarak birbirlerine benzeselerde, for, while ve repeat döngülerini çok farklı şeyler için kullanabiliyoruz. Tabiiki bu sizin ihtiyacınıza ve hayalgücünüze doğru orantılıdır.

Link to comment
Share on other sites

[color="#000000"][b]Help (yardım dosyası) Kullanımı[/b]

AMS Bölümünde açılan başlıkların yarısı belki daha fazlası, help dosyasına bakıp yardım alınmadığından veya help dosyasını kullanmayı bilmemekten kaynaklanmakta. O yüzden help dosyasınının nasıl kullanılanacağına dair bir anlatım yapmayı uygun gördüm.

Öncelikle help dosyası ingilizce olabilir, ingilizceniz zayıf olabilir bu önemli değildir. Önemli olan doğru yere doğru şekilde bakmanızdır.

Help dosyasında bir komut için 2 ayrı bölüm bulunur. Overview (Genel Bakış) ve Examples (Örnekler)

[img]http://i.imgur.com/1J2if.png[/img]

[b]Overview: [/b]

Bu kısımda Komutun ne işe yaradığı, o komut içine yazılacak argümanlar ve dönüşler yer alır

ListBox.FindItem() için help dosyasını açtığınızda en üstte şu metin çıkacaktır:

[quote]number ListBox.FindItem ( string ObjectName,
number StartAfter,
number SearchType,
string SearchText )[/quote]

burdaki number komutu çalıştırdığınızda size bir number dönüşü vereceğini ifade eder.

[u]string ObjectName[/u] kısmı ise, ilk mesajımızda bahsettiğimiz string olacak şekilde ayarlanması gerektiğini ifade eder. Yani bir tablo yada sayı koyamayız. "ListBox1" gibi bir değer olmalı obje ismi.

[u]number StartAfter;[/u] number daha öncedende dediğimiz gibi sayı girileceğini, string ise bir değer girileceğini ifade eder, StartAfter, SearchType ve SearchText için aşağıya bakınız.

[u]Description:[/u] Bu kısım komutun ne işe yaradığını ifade eder. Burda yazan metni google translate gibi herhangi bir tercümanla çevirerek azçok ne anlatmak istediğini anlayabiliriz. Zaten bilgisayar ile haşır neşir olanların anlayacağı kadar basite indirgenmiş olarak karşımıza çıkmakta.

Ne dediğine bakalım: Searches through the items in a listbox object for a specific string and returns the index (line number) where it was found.

Belirttiğiniz sıra numarasından başlayarak belirlediğiniz metni listbox nesnesinde ara ve sıra numarasını size geri döndürür.


Parameters: Burda komutun içinde kullanılan argümanları neye göre kullanacağımızı gösterir. Yine ListBox.FindItem() örneğine bakarsanız

[quote]ObjectName
(string) The name of the listbox object.[/quote]

yazmakta. açılımı ise:

(değer) Listbox nesnesinin ismi

anlamına gelmektedir.

[quote]StartAfter
(number) The index (line number) to start searching after. The search will begin in the next item in the list. You can use an index of -1 (or variable LB_ALLITEMS) to search all listbox items[/quote].

(sayı) Aramanın başlayacağı satır sırası. Arama bu sıra nodaki satırdan bir sonrakinden başlayarak devam edecektir. Tüm satırlarda aramak için -1 yada LB_ALLITEMS yazın.

[u]SearchType
(number) The type of search to perform:[/u]

[table]
[tr]
[th]CONSTANT[/th][th]VALUE[/th][th]DESCRIPTION[/th]
[/tr]
[tr]
[td]LB_BYTEXT[/td][td]0[/td][td]Search only the item text. (Default)[/td]
[/tr]
[tr]
[td]LB_BYDATA[/td][td]1[/td][td]Search only the associated item data.[/td]
[/tr]
[tr]
[td]LB_BYTEXTDATA[/td][td]2[/td][td]Search both the item text and item data.[/td]
[/tr]
[/table]

** Burda isterseniz LB_BYTEXT gibi en soldaki argümanları isterseniz yanlarında bulunan 0,1,2 gibi sayıları kullanabilirsiniz. Yani her biri birbirinin yerine geçer. Mesela LB_BYTEXT yerine 0 kullanabilirsiniz..

[quote]LB_BYTEXT: Search only the item text. (Default)[/quote]
- Sadece satırdaki metinlerin içinde ara

[quote]LB_BYDATA: Search only the associated item data.[/quote]
- sadece satırdaki data kısımlarındaki metinlerde ara

[quote]LB_BYTEXTDATA: Search both the item text and item data.[/quote]
- satır metni ve data mentinin her ikisindede ara.

[quote]SearchText
(string) The string of text to search for in the listbox object. You can use the * and ? wildcards in this field to search for text that matches a specific pattern.[/quote]

(değer) Listbox satırları içinde aranacak metin. * ve ? gibi argümanlar ekleyerek arama yapabilirsiniz. Örn: *Kalem* yazarsanız içinde kalem geçen metinlerde arama yapacaktır.

[b]Returns:[/b]

işte en önemli kısım bu. Returns yani dönüşler Kodlamada yapı taşlarından biridir. Bir komutu verdiğimizde ondan gelen veriyi anlamak için bize ne döndürdüğünü bilmemiz gerekmektedir. Çünkü daha sonraki kodlarda o dönüşe göre işlem yaparız.

[u]Dönüşlere Örnekler:[/u]

[code]nAra = ListBox.FindItem("ListBox1", 1, LB_BYTEXT, "kalem")[/code]

dediğimiz zaman nAra değişkenine ne depolayacağını bilmiyorsak hemen help dosyasını açıp Returns kısmına bakarız. Bakalım:

[quote]Returns
(number) The first item index where the search string was found. If the string was not found or an error occurs, the value -1 (variable LB_ERROR) is returned. You can use Application.GetLastError to determine whether this action failed, and why.[/quote]

** Her zaman dönüşün ne yapıda olduğunu en başta parantez içinde verir. Burda (number) demiş, yani bize 1, 3, 12, 100 gibi bir sayı verecek. Bizde bunu matematiksel işlemlerde, döngülerde vb. yerlerde kullanabiliriz.

Peki diyelim ListBox'da hiç satır yok yani hiç veri eklenmemiş. Veyahut aradığınız kelime satırlar içinde bulunamadı. Bir programcı tüm ihtimalleri düşünmek zorundadır. İşte burda yine returns kısmından hata durumunda ne gibi bir dönüş vereceğini görürüz.

** Returns kısmında ilk olarak ne gibi bir dönüş verdiğini söyler, ardından hata durumunda dönecek değeri gösterir.

yine örneğimize bakalım. Diyor ki:

[quote]If the string was not found or an error occurs, the value -1 (variable LB_ERROR) is returned.[/quote]
-Eğer hata olursa veya metin bulunamazsa -1 ya da LB_ERROR değeri döner.

bu dönüşler hem işlem yapmada hemde hata kontrolünde çok işimize yarar. Örneklendirelim:

Hata Kontrolü olmadan:

[code]nAra = ListBox.FindItem("ListBox1", 1, LB_BYTEXT, "kalem")
Dialog.Message("sonuç:", "kalem metni " .. nAra .. " satırında geçiyor.")[/code]

Bu kodu çalıştırdığımızda

[img]http://i.imgur.com/Vp3es.png[/img]

Bu kodu çalıştırdığımızda, eğer listboxda veri yoksa yada metin bulunamadıysa aşağıdaki resimde olduğu gibi saçma bir sonuç verecektir.

Şimdi birde Hata kontrolü olan bir örnek verelim:

[code]nAra = ListBox.FindItem("ListBox1", 1, LB_BYTEXT, "kalem") -- kalem metnini ara

if nAra ~= -1 then -- eğer hata oluşmuşsa
Dialog.Message("sonuç:", "kalem metni " .. nAra .. " satırında geçiyor.") -- bulundu mesajı ver
else -- eğer hata varsa
Dialog.Message("Hata", "Aranılan metin bulunamadı")
end[/code]

Bu şekilde yaptığımızda hata olup olmamasına göre işlem yapılacaktır ve hem doğru kodlama olacaktır hemde projemiz daha profosyonel görünecektir.

[b]Examples[/b]:

Bu bölümde ise o koda ait örnekler yer alır. Bu örnekleri kullanarak ne nerede ne şekilde kullanılmış diye bakarak mantığı daha kolay kavramamıza yardımcı olur.

Yukarda da dediğim gibi, Help dosyasından çekinmeyin, kullandıkça daha pratik hale gelecek ve vazgeçilmez yardımcınız olacaktır. Burda yardım eden bizler, ben olsun blackman12 olsun, MostWanted, spydevil olsun hiç birimiz bu işin eğitimini almadık. Projeler yaparak yahut diğer arkadaşların sorunlarına çözüm ararken mantık yürüterek ve help dosyasından yardım alarak hem bu işi öğrendik hemde diğer arkadaşlara yardımcı olduk. Ben kendi adıma konuşuyorum bilgimin %50'si help dosyası, %40'ı mantık, %10'uda örnek projelerdir. Takıldığınız yerler olursa önce bu sayfayı, daha sonra arama bölümünü kullanın, halen çözemediysenizde konu açmaktaktan çekinmeyin.

[/color]

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...