If-then-else neden bu kadar seviliyor?

Bilginin orjinaline hoşgeldiniz :) Autoit Statements lere pek fazla değinmediğimi farkettim. Bu yazıda if then else, else if, endif öğrenelim biraz.

Nedir conditional statements?
Condition şart demektir. Statement ise hesap. Dolayısıyla şartlı (koşullu) hesaplar anlamına geliyor olmalı yanlışımız yoksa :D Aslında bu kısmına bakarsak işin mantığı kavramak çok kolay. Bilmiyorum, öğrenemem, nasıl öğrenicem stresini üzerinizden atın :D Şimdi 3 aşamada ele alalım.

IF bişey şöyleyse THEN => (bu satır bizim şartımız oluyor)
birşeyler yap.... => (bu 3 satırda hesaplar denilen kısım oluyor)
birşeyler yap....
birşeyler yap....
ENDIF

Şimdi kanka illa hesapmı yapcaz? yani 3+5 bilmemne xD yok o şekilde değil olay. Bu arada yapılan işlem ve if-then-endif toplamı zaten hesabın bütününü oluşturuyor.

Mesala basit bir örnekle değinelim olaya: Farzetki senin bi çocuğun var. Adı: Samet xD
Telefonla aradın bunu dedinki: "Samet dayınlara git, eğer dayın ordaysa söyle bize gelsin."

Çeviriyoruz :D

SametGo(dayımlar xD) ;sameti götüren fonksiyon :D
IF dayı = orda THEN
DayiKaldiran("Babam seni al gel dedi")
ENDIF

DayiKaldiran fonksiyonunu yazmama gerek yoktur heralde :D
Şimdi burda matematiksel bi hesapmı yaptık? yapmadık. Demekki işlemin geneline hesap deniyor, hesap denmesine ilk if then neden oluyor ortada bir matematik olmak zorunda değil :D

Şimdi bu if then olayı scriptlerde nasıl işimize yarayacak buna değinelim biraz. Belki bu güzel örneğe rağmen anlamamış olanlar vardır :D

knightOnline :D... oynamasakda en güzel örnek. Çok kısa. karakterin hp sini alıyoruz ve hp 500 ve 500den küçük ise kırmızı tüp xD (hp pot) iç diyoruz. xD

IF $hp<=500 THEN
Send($potkey)
ENDIF

İşte bu kadar basit. Burada dikkat etmek gereken bir nokta var. Dersekki: Eğer hp 500 ise pot iç olmaz :D çünkü hp küt diye gelip 500de duracak diye bi garantimiz yok. Mesela werewolf bi çakar hpmiz 530 dan 480e düşer :D kapiş. burada yapmamız gereken 500 ve 500 den küçükse şartını kullanmaktır. Eğer dersekki $hp = 500 o zaman sadece hp 500 olursa pota basar. 500 ün altına düşünce basmayacaktır. Daha basit olarak burada = yerine < kullanabiliriz aslında. niye uzatıyosam :D $hp < 500 daha makuldür kankalar :D

Onu geçtim. Bu olayı biraz daha komplexleştirelim. Şartları çoğaltmak bizim elimizde :D Burada birde else kullanıcaz, else şu durumlarda kullanılır: eğer anlamına gelir ve istediğimiz şart yerine gelmezse görevini görür.

Sıradaki şartımız şudur: "Samet xD bakkala git. bakkal ahmet ordaysa ve sakalları uzunsa bana bi winston soft al ama paketin üzerinde saçma sapan bi resim yoksa al :D Bakkal ahmet yoksa nerdeymiş bul, sonra eve gel sigarayı bana ver" xD

SametGo("bakkal") ;samet yönlendiren fonksiyonumuz yine iş başında :D
IF $bakkal_ahmet = "orda" AND $bakkal_ahmetin_sakalları = "uzun" THEN
$sigara = "WinstonSoft"
$ozellikler = NesneOzellikleri($sigara) ; sigaranın özelliklerini bir değişkende topluyoruz :D

IF $ozellikler["on_resim"] <> "saçma" THEN
satinal($sigara)
SametGo("ev") ; samet eve gider xD
Ver($sigara, "baba") ; babaya sigarasını verir xD
ELSE
SametGo("ev") ; yine eve gider ama sigarayı almadan gider;
Soyle("sigaranın üzerinde saçma bir resim vardı", "baba") ; babaya böyle söyler xD
ENDIF
ELSE
SametGo("kahve") ; samet kahveye gider xD
$cevap = Sor("bakkal ahmet nerde?", "çaycı") ; çaycıya ahmeti sorar xD
SametGo("ev") ; eve gider xD
Soyle("bakkal ahmet"&$cevap&" daymış", "baba") ; bakkal ahmetin nerde olduğunu babaya söyler.
ENDIF

Bu yukarıdaki örneği knightonline da nasıl kullanabiliriz:
IF $hp <> 0 THEN
hp 500 den küçükse ve 0 değilse pot gönder gibi..
ENDIF

Ayrıca burada OR da kullanabiliriz OR, AND e kıyasla veya anlamındadır bildiğiniz gibi. AND kullandığınız şartlı hesaplamalarda verdiğiniz şartların tümünün tutması gerekir. Yani bakkal ahmet ordaysa AND sakalları uzunsa AND bozuk parası varsa diyorsa buradaki tüm şartlar gerçekleşmeli ki hesabı yapabilelim. ANCAK burada OR kullansaydık herhangi bir şartın tutması hesabı yapmamıza yetecekti.

Örnek: ahmet ordaysa OR veli ordaysa OR mehmet ordaysa
dersek, ahmet, veli, mehmet şahıslarından herhangi birinin orda olaması işlemi yapmamıza yetecektir. Şöyle düşünün tekrar babası sameti sigara almaya gönderiyor. Ahmet, veli veya mehmet ordaysa sigarayı al yoksa alma diyor.

KnightOnline Örneği:
IF $hp = 500 OR $hp < 500 THEN
hp 500 e eşitse veya 500den küçükse hp pot iç gibi...
ENDIF

Evet görüldüğü üzere baya bi komplex oldu :D Ayrıca gördüğünüz gibi statement içinde statement kullandık. IF içinde if. Son olarak çok şartlı hesaplara bir örnek verelim. Bunu önceden hazırlanmış bir form gibi düşünün. Formun maddeleri gibi.

$içecek = "çay";
IF $içecek = "çay" THEN
içmem tşk, çay sevmiyorum deriz :P
ELSEIF $içecek = "kahve" THEN
hiç sevmem :P
ELSEIF $içecek = "kola" THEN
istemem :D
ELSEIF $içecek = "ayran" THEN
ver bitane içelim xD
ELSE
o içeceği daha önce hiç duymadım, içmem.
ENDIF

Sadece sondaki ELSE kısmını anlatıcam. Şartları belirttik. bu böyle uzar gider. bütün içecekleri yazmak yerine sadece kendi listemizdeki içecekleri yazdık ve bu liste dışında kalan diğer tüm seçenekler için "o içeceği duymadım" dedik.

KnightOnline örneği :D

$loot = kutuac($x)
IF $loot = "coin" THEN
topla....
ELSEIF $loot = "abyss gem" THEN
topla....
logTut("1 abys gem toplandı saat: bilmem kaçta")
ELSEIF $loot = "720 pot" THEN
topla....
Tüpİç(kırmızı) xD
ELSEIF $loot = "bus" THEN
toplama.... xD
ELSE
toplama...
burada mesela seçeceklerimiz dışındaki itemleri almaması şartını kullanabiliriz.
listede belirttiklerimizi alır. buraya log tuttururuz mesela: short pants +1 düştü ama almadık.
ENDIF

Bu işlemi kısa bir şekilde şöylede yapabilirdik: bunu kavramış olmalısınız.

IF $loot = "coin" OR $loot = "abyss" OR $loot = "bus" THEN
topla.....
ELSEIF $loot = "tentacle" OR $loot = "60 hp pot" THEN
toplama......
ELSEIF $loot = "bes" THEN
git inne koy......
ELSE
log tut..... ve toplama......
ENDIF

şimdilik bu kadar. Sametle maceralarımız devam edicek xD Bir sonraki makalede Loop lara değiniriz. While loop, for loop, do loop vs... Şimdilik kendinize iyi bakın.

1 yorum:

Blogger Free CashBox dedi ki...

Oğlum çok sağol fena rehber

Yorum Gönder