IRCForumu.ORG   çatla net
Goygoy


 
 
Seçenekler Stil
Alt 22 Haziran 2021, 11:30   #1
Sen Geleceksin Diye, Ben Hep Yarım Kaldım.
No_FeaR - ait Kullanıcı Resmi (Avatar)

Standart Pogram denetimi (Mantiksal Denetleme IF - ELSEIF - ELSE - SWITCH )

Pogram denetimi (Mantiksal Denetleme IF - ELSEIF - ELSE - SWITCH )

Programlamanin en önemli kosulu mantiksal denetlemedir. Mantiksal denetlemede; programa bir şart verilerek, bu şartın gerçekleşmesi yada gerçekleşmemesi durumunda oluşabilcek durumları belirtir.

IF Deyimi:

Bir cok programlama dilinde en cok kullanilan mantiksal denetleme deyimidir. Türkçe kelime karsiligi "eğer" olan if deyimi bir cok yerde kullanilmaktadir. If deyiminin calisma mantigi su sekilde tarif edilebilir, Programa bir sart kosariz. Mesela; Girilen değer eğer su ise sunu yap, girilen deger eğer su degilse sunu yap, eger deger girilmediyse de sunu yap.

Kullanimi

if { yapilmasi istenen koşul yada koşullar } {

..bu kosul yada kosullar dogru ise yapilacak islemler

}

Yukarida goruldugu gibi if deyimin kosulu "{ }" güzel parantez icine alinarak sorgulanir ve bir diger guzel parantezle kosul sonuclari denetlenerek güzel parantez ile son bulur.


Bir ornek vererek konuyu kavramanizi saglayalim:

if {5 > 4} {

putlog "5 sayisi 4 sayisindan buyuktur"
}

Bu kosulu calistirdigimiz zaman karsimiza 5 sayisi 4 sayisindan buyuktur yazisi cikar. Burada TCL ye sunu diyoruz; Eğer 5, 4 den buyukse sunu yap.

IF deyimi yalnizca bir kosul gerceklestirmez, gerektiginde bir cok kosulu sorgulamamiz icin kullanacagimiz 2 operator sunlardir " && " ve " || " operatorleridir.

Ornek vermek gerekirse:

if {5 > "4" && 5 < "10"} {

putlog "5, 4 den buyuktur ve 5, 10 dan kucuktur"
}

Burada iki kosul sorguladik birinci kosulumuz, 5 sayisinin 4 den buyuk olma durumu ikinci kosulumuz ise 5 sayisinin 10 sayisindan kucuk olma durumu dur.

Arada kullanmis oldugumuz && operatoru su anlama gelmektedir, birinci ve ikinci kosullarimiz dogruysa, yani "ve" anlamina gelmektedir. Bunun bir benzeri olan || (veya) operatorudur, bu ise iki kosulun tartisilmasindan ote, birinci sorgumuz veya ikinci sorgumuz dogru sonuc getirmesemis olsa bile, bunlarsan sadece birinin dogru sonuc getirmesi komut dizinimizin calistirilmasini saglayacaktir.

Buna bir ornek vermek gerekirse:

if { 5 == "8" || 4 == "8" } {

putlog "Bu sorgulardan biri dogru"

}

Burada veya operatoru olan || icin bir ornek vermis olduk, sonuc olarak 5, 8 sayisina esit veya 4, 8 sayisina esit oldugunda komut dizinimizde belirtigimiz ekranimiza bu sorgulardan biri dogru yazdirilacaktir.


ELSE Deyimi:

ELSE deyimi denetlenecek olan kosulun yanlis olmasi kosulunda yapilacak olan komutlari icerir. Bu deyim IF deyimi ile birlikte kullanilabilir. IF deyimi ile alinacak bir sonuc eger alinamamissa ELSE deyimi ile bu sorgunun sonucsuz kaldigini ve calismasini istedigimiz komutlari belirtmemizi saglar. Her sonuc dogru olamayacagi icin genelde ELSE deyimi surekli kullanilir.

Ornek vermek gerekirse:

if { 15 == "12" } {
puthelp "Bu iki sayi esittir"
} else {
puthelp "Bu iki sayi esit degildir"
}

Bu sorguyu calistirdigimiz TCL, 15 sayisi ile 12 sayisinin esit olup olmadigini denetleyecek. Denetlme bittigi zaman sayilarin esit olmadigini anlayacak ve ELSE deyimini arayacak. Biz ELSE deyimini kullandigimiz icin ELSE deyimi altinda kullanmis oldugumuz islemler uygulanacaktir.

Anlatim boyunca surekli olarak rakamlari denetldik istenilirse kelimeleri de kontrol etmek mumkundur.

set kelime "rockturk.com"
set kelime2 "irckolik.com"

if {$kelime == $kelime} {
putlog "bu iki degisken birbirine esittir"
} else {
putlog "bu iki degisken birbirine esit degildir"
}

Not: degisken sorgularken sorgu " " (tirnak) icerisine alinmak zorunda degildir, fakat eger degisken degilde bir rakam yada yaziyi elimizle belirtmek istersek rakam orneklerinde oldugu gibi sorgu " " (tirnak) icine alinarak denetlenmelidir.

Ornek olarak;

Elimizle belirtilen bir string ifade icin "" kuralinin uygulanmasi

if {$kanal == "#kanal"} {
putlog "degisken #kanal ile esittir"
} else {
putlog "degisken #kanal ile esit degildir"
}

Degiskenlerle ifade edilmis sorgulama ise su sekilde olmalidir

if {$kanal == $chan} {
putlog "iki degiskende birbirlrine esittir"
} else {
putlog "degiskenlr esit degildir."
}


ELSEIF Deyimi:

IF deyimi ile kullanilan bu deyim bir onceki if sorgusu sonucunun dogru olmadigi durumlarda bir sonraki kosulu belirtmek icin kullanilir. Program if ile bir sorgu denetimi yapar, ve sonuc dogru olmadigi zaman ilk once elseif deyimi aranir eger bulunamazsa else ile program son bulmak ister, bu nedenle elseif programinizin mantigi disinda elverisli calismasinida kolaylastirmaktadir.


Kullanimi tam olarak su sekilde olmalidir:

if { kosul ve kosullar } {
kosul veya kosullar dogruysa uygulanacak komutlar
} elseif { bagimsiz kosul veya kosullar } {
bu kosulun dogru olmasi sonucu uygulanacak komutlar
} else {
tum kosullar sonuc getirmediginde uygulanacak komutlar
}

Bilmeniz gereken hususlar:

1. Bir if deyimi kullanmak icin, sadece if deyimide kullanilabilir.
2. Bir if deyiminden sonra istenildigi kadar elseif deyimi kullanilabilir.
3. if deyimi kullanilmadan elseif deyimi kullanilmaz.
4. if deyimi kullanilmadan else deyimi kullanilmaz.


NOT: Cok fazla sorgu yapmiyorsaniz if deyiminden sonra diger sorgular icin mutlaka elseif kullanin, bu programinizin daha mantikli calismasina olanak saglayacaktir ve gerekli gordugunuz her denetimde else deyimini kullanin, bu sizin programinizda eslesmelerin dogru olup olmadigini sorgulamaniz ve bunun icin bir onlem almanizi kolaylastiracaktir.

Ipucu: Genel anlamda bir cok dil icin bu deyimler bu algoritma ile uretilmislerdir, kurallari aynidir kullanimlari farkli olabilir.



SWITCH Deyimi

TCL program denetiminde kullanilan bir diger deyimde switch'tir. Bu deyimde bir degisken yapilir ve degisik seceneklere atanabilir. Bu degisken hangi secenege uyuyorsa o komutlar uygulanir. Switch deyimini if deyimi ile de yapmaniz mumkundur, fakat if deyimi ile yaptiginiz herseyi switch ile yapmaniz mumkun degildir.

Yapilan bazi arastirmalar sonucu switch deyiminin if deyiminden daha hizli calistigi ortaya konulmustur, bu nedenle swicth ile yapabileceginiz sorgulama tekniklerinde if kullanmamaniz programinizin daha elverisli ve hizli calismasina olanak saglayacaktir.

Su sekilde kullanilir.

switch -- degisken {
"birinci kosul" {
Bu kosul dogru ise uygulanacak komutlar
}
"ikinci kosul" {
Bu kosul dogru ise uygulanacak komutlar
}
"ucuncu kosul" {
Bu kosul dogru ise uygulanacak komutlar
}
default {
Bu kosullardan hic biri dogru degilse uygulanacak komutlar
}
}


Birinci ikinci ve ucuncu kosul basamaklarimiz ayni if elseif gibi dusunulebilir dogrudur ve daha pratiktir, burada else yerine ise default kullanilir ve kullanilmalidir.

Bir diger ornek icin Burc yorumlama botumda kullanmis oldugum sorgu teknigini gosterecegim.

switch -- $burc {
"koc" {
putlog "sectiginiz burc koc burcudur"
}
"ikizler" {
putlog "sectiginiz burc ikizler burcudur"
}
"yengec" {
putlog "sectiginiz burc yengec burcudur"
}
"aslan" {
putlog "sectiginiz burc aslan burcudur"
}
"basak" {
putlog "sectiginiz burc basak burcudur"
}
default {
putlog "sectiginiz burc yanlistir"
}
}

$burc degiskenine atanmis olan deger koc, ikizler, aslan veya basak ise bunlarla ilgili islemler gerceklesecek eger hic bir uygunluk rastlanmazsa default ile secili olan burcun hatali oldugu saptanabilecektir.

Deyimler de kullanilan operatorler:

== eşitligi denetler
!= eşitsizligi denetler
<= kucuk ve esit sorgular denetler
>= buyuk ve esit sorgulari denetler
< kucuk oldugunu denetler
> buyuk oldugunu denetler
&& cok anlamli sorgular icin degerlerin ayni olmasini denetler
|| cok anlamli sorgular icin degerlerin birinin dogru olmasini denetler



Yazar: Adil Bülbül (aCoustiC)
Email: acoustic@realcoder.com
________________

Sabrettiğimi Sanarken, Vazgeçtiğimi Öğrendim..
 


Şu anda bu konuyu görüntüleyen etkin kullanıcılar: 1 (0 üye ve 1 ziyaretçi)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB kodu Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Kapalı



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 19:53.