JAVA

                                                                                   KONTROL

                           Javascripte karar verme-kontrol yöntemleri

Bir program yaziyorsaniz mutlaka bir çok yerde bazi kararlarin verilmesi ve programin buna göre yönlendirilmesini isteyeceksiniz. Bunu için javaScriptta sartli islemleri daha önce görmüstük. Simdi ise if...else ve switch komutlarini görecegiz.

if...else komutu
    Programda belli bir yere geldiniz. Elinizdeki degiskenin degerine göre hareket etmeniz gerekiyor. Degisken belli bir limiti asti ise belli bir islem limiti asmadi ise farkli bir islem yapilmasi gerekiyor. Iste bu durumda if...else karar komutlarini kullanmaniz gerekiyor.

if( durum > limit )

{

ekrana limiti astigimizi yaz;

durum degiskenini sifirla;

kontrol fonksiyonuna git;

}

else

{

durum degiskeninin artir;

kontrol fonksiyonuna git;

}

Yukarida basit bir kontrol tanimlamasi gördük. Burada sartimiz dogru(true) ise yani durum degiskeni limit degerini asmis ise hemen altindaki program blogu çalisacaktir. Program blogundan kastimiz { } parantezleri arasinda kalan bölümlerdir.
Eger durum degiskeni limit degiskeninden küçük ise yani sonuç false ise else komutundan sonra gelen program blogu çalisacaktir. else program blogu seçimliktir. Sartimiz olumsuz bir sonuç verince yeni bir islem yapmamiz gerekiyorsa kullanacagiz. Aksi durumda kullanmamiza gerek yok.
else tanimlamasini yapmadigimiz zaman kontrol sonucu false çiktiginda hemen if blogundan sonraki komutlar çalisacaktir.

Kisaca tanimlamak gerekirse if(sart) { } selinde bir kullanimda sartin sonucu true çikarsa bloktaki komutlar çalisacak; aksi halde sartin sonucu false çikarsa if komutundan sonraki komutlar isleyecek if komutunun blogu çalismayacaktir.
if(sart) { } else { } seklinde ise sartin sonucu true ise if komutunun blogu çalisacak ve else bölümü atlanarak program devam edecektir. Aksi halde sartin sonucu false çikarsa if komutunun blogu atlanacak ve else komutunun blogu isleyecek ve program akisina devam edecektir.
Basit bir programda bu komutun isleyisini görelim. Programimiz bir isim istesin. Isim verilirse ekrana tesekkür mesaji versin. Eger isem verilmez ise ekrana "Adinizi yazmadiniz!!!" seklinde bir mesaj vererek tekrar isim girilmesini istesin.

<HTML>

<HEAD>

<TITLE>Degisken kullanimi</TITLE>

<SCRIPT language="JavaScript">

<!-- Scripti gizle

function adiniz()

{

var isim;

isim=prompt("Lütfen adinizi yazin...","");

if(kontrolEt(isim))

{

alert("Tesekkürler");

ekranaYaz(isim);

}

else

{

alert("Adinizi yazmadiniz!!!");

adiniz();

}

}

function kontrolEt(deger)

{

if(deger!="" && deger!=null) return true;

else return false;

}

 

function ekranaYaz(giris)

{

document.write("<FONT size=5 color=pink>

Merhaba "+giris+" hosgeldin.</FONT><BR>");

}

adiniz();

// gizleme sonu -->

</SCRIPT>

</HEAD>

<BODY>

</BODY>

</HTML>

Programimizi incelersek program en alt satirda adiniz(); fonksiyonunu çagirarak basliyor. adiniz(); fonksiyonu prompt methodu ile isim degiskenine bir deger girilmesini sagliyor.
Sonra if(kontroEt(isim)) seklinde bir kullanim görüyoruz. Bu kullanimla kontrolEt(deger); fonksiyonunu çagiriyor ve isim degiskenini gönderiyoruz.
Kontrolet(deger); fonksiyonu deger degiskenini inceliyor. Bu degisken artik isim degiskeni ile ayni degerdedir.
if(deger !="" && deger !=null) seklinde bir kullanimda deger degiskeninin içeriginin null(bos) veya hiç bir degere esit olup olmadigini kontrol ediyoruz. Burada kontrol seklimize dikkat edin. Öncelikle deger != "" seklinde bir kullanim var. Burada deger degiskeninin bir degeri oldugu taktirde true, deger degiskeni "" seklinde degersiz oldugu takdirde false degerini üretir.
Sartin ikinci bölümü deger != null seklinde. deger degiskeni null degerine isit degilse dogru, deger degiskeni null degerine esitse false degeri olusur.
Daha sonra ise &&(ve) kontrolü var her iki tarafta true ise sonuç true aksi halde false degeri üretilir. Eger sonuç true ise if blogu çalisir ve return true; seklinde true degerini geri gönderir. Eger sonuç false ise else blogu çalisir ve geriye return false; komutu ile false degerini gönderir.
Burada su kullanima dikkat edin. Blok { } kullanmadik. Çünkü tek bir komutun oldugu yerde blok kullanmak zorunlu degildir.
Bu kontrolün sonucu geriye döndügünde if(kontrolEt(isim)) kontrolüne geri dönüyoruz. Burada sonuç true olarak geri döndügünde if blogu çalisacak ve ekrana "Tesekkürler" mesaji basilip ekranaYaz(isim); seklinde ekranBas(giris); fonksiyonuna isim degiskeni gönderilecektir.
Bu durumda ekrana font kontrolü yapilarak "Merhaba "+giris+" hosgeldin!" mesaji basilacaktir. Bu sekilde programimin sonuna gelmis oluruz.
Eger if(kontroEt(isim)) kontrolüne false degeri gelirse else blogu çalisir ve ekrana "Adinizi yazmadiniz!!!" mesaji gelir. Sonra adiniz(); fonksiyonu tekrar çagrilir.
Bu arada bir fonksiyonun kendi içinden kendisini çagirabildigini de görmüs olduk.

Simdi yeni bir program ile if...else komutunu incelemeye devem edelim. Programimiz browserin adini kontrol edecek ve ekrana basacaktir.

<HTML>

<HEAD>

<TITLE>JavaScripte kontrol</TITLE>

<SCRIPT language="JavaScript">

<!-- Scripti gizle

var browserinAdi;

function browseriTani()

{

browserinAdi=navigator.appName;

return;

}

function gonder(giris)

{

if(giris == "Netscape")

{

document.write("Browseriniz Netscape.");

return;

}

if(giris == "Microsoft Internet Explorer")

{

document.write("Browseriniz Internet Explorer");

return;

}

else

{

document.write("Browserinizi taniyamadim.")

return;

}

}

browseriTani();

gonder(browserinAdi);

document.write(browserinAdi);

// gizleme sonu -->

</SCRIPT>

</HEAD>

<BODY>

</BODY>

</HTML>

navigator javaScriptin browsere verdigi isimdir. appName ise browserin hangi browser oldugunu(adini) bulan methoddur. navigator.appName bize browserin adini verecektir. Netscape, Internet Explorer gibi.
Biz bundan yararlanarak bazi islemler yapabiliriz. Mesela iki ayri sayfa gelistirerek netscape için ayri(onun önemli özelliklerin kullanan bir sayfa) explorer için ayri bir sayfa hazirlayabilir ve açilista browseri kontrol ederek gerekli sayfaya yönlendirebiliriz.
Fakat biz sadece browserin adini ekrana mesaj olarak geçmek ile yetinecegiz.
Progaram çalismaya basladiginda browseriTani(); fonksiyonunu çagiriyor. Bu fonksiyon global olarak tanimladigimiz browserinAdi degiskenine browserin adini geçer. browserinAdi=navigator.appName;
Sonra gonder(browserinAdi); seklinde gonder fonksiyonunu çagiriyoruz. Bu fonksiyon browserin adini kontrol ediyor. Bizi ilgilendiren bölüm bu bölümdür.
if(giris == "Netscape") seklinde browserin adinin Netscape olup olmadigini kontrol ediyoruz. Eger kontrolün sonucu true ise ekrana "Browseriniz Netscape." mesaji basilacaktir ve return ile geri dönüs saglanir.
false sonucu çikarsa bir sonraki if komutu çalisir. Bu kontrol ise browserin exloper olup olamadigini kontrol ediyor. Kontrol sonucu true ise ekrana "Browseriniz exloper." mesajini basacaktir. Eger sonuç false ise else blogu çalisacak ve ekrana "Browseri taniyamadik." mesajini basacak ve geri dönülecektir.

 

Switch case kontrol komutu
      Bu methodda bir degiskenin bir çok degere esit olup olmadigini kontrol ediyoruz. Mesela deger isimli degiskenin 1,esit degilse 2, esit degilse 3,......,esit degilse n seklinde bir kontrol için kullanacagiz.
Bu metodu

switch ( deger )

{

case a: { komut blogu }

break;

case b: { komut blogu }

break;

.

.

.

case n: { komut blogu }

break;

default { komut blogu }

}

seklinde kullanacagiz.
deger yazan yere kullanacagimiz degiskeni yaziyoruz. Her case kontrolünde bir degeri kontrol ediyoruz. Sonuç true ise case blogu çalisacak, sonra break ile kontrol sona erecektir. Aksi halde diger case kontrolü yapilacaktir.
Sonuçta hiç bir true degeri bulunamazsa default blogu çalisir. default blogu seçimlik olarak kullanilir. Kullanilmadigi taktirde switch methodundan sonraki komutlar devreye girecektir.
Bizim program yazmamizi kolaylastiracak güzel bir yöntem olan switch case methodunu ard arda ayni degiskeni kontrol etmemiz gereken durumlarda kullanacagiz.

Bu methodun kullanimi ile ilgili bir program yazalim. Yazacagimiz program hangi rengi sevdigimizi soracak ve sayfanin zemin rengini(bgcolor) bu renge çevirecek.

<html>

<head>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html;

charset=iso-8859-9">

<script language="JavaScript">

<!-- hide

var yas;

function kontrolEt()

{

document.giris.sonuc.value="";

renk=document.giris.secilenRenk.value;

switch (renk)

{

case "kirmizi" : document.bgColor="FF0000";

break;

case "mavi" : document.bgColor="0000FF";

break;

case "sari" : document.bgColor="E9E900";

break;

case "yesil" : document.bgColor="008080";

break;

case "gri" : document.bgColor="A0A0A0";

break;

case "pembe" : document.bgColor="FF00FF";

break;

case "siyah" : document.bgColor="000000";

break;

case "kayverengi" : document.bgColor="FFFFA0";

break;

case "gümüs" : document.bgColor="F0F0FA";

break;

default :

{

document.bgColor="white";

document.giris.sonuc.value="tanimsiz renk";

}

}

}

// -->

</script>

</head>

<body>

<table border=1 bgcolor=f0f0fa><tr><td>

<form name="giris">

<br>

Hangi rengi saversiniz?

<br><font size=1>mavi, kirmizi, sari, gümüs, pembe,

<br>yesil, kayverengi, siyah, gri.</font>

<br>

<input type="text" name="secilenRenk" size=7>

<input type="button" name="karsilastirma" value=" Tamam "

onClick="kontrolEt()">

<br>

<br><input type="text" name="sonuc" size="20">

</form>

</td></tr></table>

</body>

</html>

Burada bir form yardimi ile kullanicidan bir renk adi istiyoruz. Girisi yapilan renk degerininden sonra onClick(kontrolEt()) seklinde bir kullanim ile kontrolEt() fonksiyonunu harekete geçiriyoruz.
onClick() bir butona basildiginda bir fonksiyonu harekete geçiren bir metoddur. Ileride event konusunda derinlemesine bu konuyu inceleyecegiz.
kontrolEt() fonksiyonunda ilk önce renk=document.giris.secilenRenk.value; kullanimi ile forma girilen degeri renk degiskenine aktariyoruz. giris isimli formun secilenRenk adli bölümünün value(sonucu) renk degerine yazilir. Bu konu form isleme konusunda incelenecektir.
switch case yöntemi ile renk kontrolü yapiyoruz. Her case kontrolünde bir rengi kontrol ediyoruz. Bu renk yazilan renge esit ise yani renk degiskenine esit ise yanindaki program blogu çalisacaktir. Sonra break; komutu ile switch blogundan çikilir.
renk degiskeni ile kontrol ettigimiz renk biribirlerine esit degil iseler bir alt case kontrolüne geçilir. Girilen renk hiç bir case kontrolüne uymazsa default blogu çalisir ve ekrana-giris formunun sonuc bölümüne- "tanimsiz renk" degerini girer. Sonra zemin rengini beyaz yapar.
Her butona basildiginda kontrolEt() fonksiyonu çagrilacagindan devamli yeni renkler kullanilabilir.

 

    
<=Geri İleri=>