Belli
bir ad ile bir gurup islemin yaptirildigi program blogina verilen ad
fonksiyondur. Önemli bir yeri olan fonksiyonlari kavramak zorundayiz.
Fonksiyonlar bir deger alabilir ve bu degeri isleyebilirler. Hatta bir
sonuç geriye verebilirler.
Fonksiyonlari tanimlamamizin en büyük nedeni ayni isi bir çok defa
yapmak zorunda olmamizdir. Ayni satirlari tekrar tekrar yazmak yerine bir
kere yazip ismiyle çaglirmak kolay olur. Kullanimi
function fonksiyonAdi(arguman_1,arguman_2,...arguman_n) {
fonksiyon blogu
}
seklindedir. Fonksiyonlar <SCRIPT>...<SCRIPT> etiketi
arasina yazilirlar. Bir fonksiyon istenildigi kadar çagrilabilir(kullanilabillir).
Fonksiyon kendini çagiran komuttan bir deger alabilir. Sonuç olarak bir
deger gönderebilir.
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;
charset=iso-8859-9">
<script language="JavaScript">
<!-- gizle
var adiniz;
function degerAl()
{
adiniz=prompt("Lütfen adinizi
giriniz!","Arkadas");
kontrolEt();
}
function kontrolEt()
{
if(adiniz=="Arkadas") degerAl();
alert("Tesekkürler");
ekranaBas();
}
function ekranaBas()
{
document.write("<font size=5 color=red>Merhaba
"+adiniz+" hosgeldin.</font>");
}
degerAl();
// -->
</script>
<title> Karsilastirma islemleri</title>
</head>
<body>
</body>
</html>
Yazdigimiz programi inceleyelim. Ilk önce
adiniz degiskenini
tanimladik. Sonra degerAl() fonksiyonunu tanimladik. Burada promt
metodu ile bir soru sorduk ve cevabini istedik. Promt metodu javaScriptin
disaridan deger almak için kullandigi hazir bir fonksiyondur. Kullanimi degiskenAdi=prompt("Soru","Default
deger"); seklindedir. Sonuc degiskenAdi na aktarilir. Sizde
deneyin.
Sonra degerAl() fonksiyonu içinden kontrolEt() fonksiyonunu çagirdik.
KontrolEt() fonksiyonu adiniz degiskeninin Arkadas stringine esit olup
olmadigini kontrol ediyor. Eger bu kontrol dogru ise tekrar degerAl()
fonksiyonunu çagiriyoruz.
Aksi halde alert("Tesekkürler"); seklinde bir mesaj veriyoruz.
Burada alert(); methoduna bir deginelim. Alert methodu bir kutu mesaj
olusturur. alert("mesaj"); seklinde kullanilir. Mesaj olarak
verdigimiz degeri bir kutu içinde ekrana basar.
Bu tesekkür mesajindan sonra ekranaBas(); fonksiyonunu çagirdik. Bu
fonksiyon ekrana font tanimlamasindan sonra Merhaba stringini ve adiniz
degiskenini sonrada hosgeldin stringini birlestirerek basacaktir.
Programimiz bitmis oluyor. Aslinda bir noktaya dikkat çekeyim bir
fonksiyonun görevi bittiginde çagrildigi noktaya geri döner. Fonksiyon
çagrilmadan çalismaz.
Bu nedenle bu program çalisirken ilk önce en alt satirda olan degerAl();
seklindeki çagirma ile degerAl() fonksiyonu çagrilir ve program buradan
baslar. Ekrana istenilen deger basildiktan sonra yine ayni yere döner ve
bir sonraki satirdan devam eder.
Biz bu programda baska bir satir tanimlamadigimiz için program
otomatikman sona erecektir.
Su konuya dikkat çekeyim. Biz kotrolEt() fonksiyonunda girilen degeri
kontrol ettik. Aslinda sadece defaut deger yani Arkadas degerimi geri dönmüs
yoksa baska bir deger girilmis mi? sorusunu inceledik. Sonuca bu noktadan
gittik.
Eger denemediyseniz prompt mesaji çiktiginda tamam yerine iptal butonuna
bir basin ve sonucu görün. Burada ki eksiklik tamamen programci kontrolündedir.
Mutlaka programinizi her kosula cevap verecek sekilde tanimlamak
zorundasiniz. Buna dikkat edin.
Burada write metoduna bir bakalim. write ekrana karekter basmak
için kullanilan bir metoddur. Bunu öeneklerimizde gördük. Kullanimi document.write(ekranaBasilacakBilgi);
seklindedir. Ekrana basilacak bilgi ;
Bir string olabilir;
document.write("Bu gün hava çok güzel");
Bir sayi olabilir;
var a=12345;
documetn.write(a);
Bir boolean degisken olabilir;
var durum=true;
document.write(durum);
Bir html tagi olabilir;
document.write("<hr><font size=5>Nasil
buldunuz?</font><hr>");
<script language="JavaScript">
<!-- gizle
a=123;
b="ali"
c="<hr color=pink>"
d=true
e="<br>"
document.write(a+e);
document.write(b+e);
document.write(c+e);
document.write(d);
document.write("<hr><font size=5 color=gray>
Nasil buldunuz?</font><hr>");
// gizleme sonu -->
</script>
Fonksiyonlar kendisini çagiran komuttan bir arguman alabilir ve
kendini çagiran komuta deger geri döndürebilir.
Fonksiyona bir deger gönderilmesi if(kontrolEt(miktari)) seklinde
olabilir. Böyle bir sekilde kontrolEt() fonksiyonunu çagirdigimizda
kontrolEt() fonksiyonuna gönderilen bu degeri almasi için bir arguman
girmemiz gerekir. function kontrolEt(giris) { } gibi. Fonksiyonun
geri deger göndermesi ise return donecekDeger; seklinde fonksiyona
eklenir. Bir örnekte bu konuyu görelim.
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;
charset=iso-8859-9">
<script language="JavaScript">
<!-- gizle
var e_mail;
var uzunluk;
var durum;
e_mail=prompt("Lütfen e-mail adresinizi
girin.","");
uzunluk=e_mail.length;
for(a=0 ; a < uzunluk; a++)
{
b=e_mail.charAt(a);
if(b=="@")
{
durum=true;
yaz(durum);
break;
}
else if(a==uzunluk-1)
{
durum=false;
yaz(durum);
break;
}
}
function yaz(giris)
{
if(giris==true)document.write("E-mail adresiniz
<font size=4
color=red>"+e_mail+"</font><br>");
else document.write("Lütfen e-mail
adresinizi dogru girin!!!<br>");
}
// gizleme sonu -->
</script>
<title>Fonksiyona deger göndermek</title>
</head>
<body>
</body>
</html>
Programimiz bizden e-mail adresimizi istiyor. Eger yanlis e-mail
verildiyse "E-Mail adresinizi dogru girin!!!" mesajini ekrana
basiyor. Aksi halde ekrana yazdiginiz e-mail adresini basiyor.
Program sadece e-mail adresinde bulunmasi gereken @ isaretini
kontrol ederek sonuca ulasiyor. Öncelikle e_mail adli degiskene prompt
tan aldigimiz degeri aktardik. Ardindan uzunluk adli degiskene uzunluk=e_mail.length;
seklinde e_mail degiskeninin uzunlugunu(karekter sayisini) aktardik.
Biz kontrol yaparken @ karekterini aradigimiz için e_mail degiskeni içerisinde
@ karekterini aramak zorundayiz. Bunu için öncelikle for() döngüsünü
kurarak ise basladik. Bu döngü sayesinde e_mail degiskeninin uzunlugu
miktarinca islem yapabildik.
Burada charAt(x); methodunu görelim. Bu method bir stringin x inci
karekterini verir. Mesela ad="selami"; adli stringe bu methodu
uygularsak deger=ad.charAt(3); seklinde bir kullanim bize "l"
degerini verecektir. Çünkü "selami" string katarinda üçüncü
karekter "l" dir. Mesela deger=ad.charAt(5); bize "m"
degerini verir.
b=e_mail.charAt(a); islemiyle b degikenine e_mail degiskeninin a(döngünün
o anki degeri) degerinde ki karekteri verecektir. Biz döngü boyunca
e_mail degiskeninin tüm karekterlerine bu sekilde ulasacagiz.
if(b=="@") seklinde bir sorgulama bize b degerinin(e_mail
stringinin a'ninci karekteri) "@" karekterine esit olup
olmadigini veriyor. Eger sonuç dogru ise yani bir birlerine esitseler durum=true
seklinde bir kullanimla durum degikenine true degeri aktariliyor. Sonra bu
deger yaz(durum) seklinde yaz(giris); fonksiyonuna aktariliyor. break
komutu ile döngü sona erdiriliyor.
Eger b=="@" esitligi saglanamazsa else bölümüne geliyoruz.
Burada a degiskeninin uzunluk degiskenine esit olup olmadigi kontrol
ediliyor. Böylece e_mail stringinin sonuna gelip gelmedigimiz kontrol
ediliyor. Stringin sonuna gelmis isek durum degiskenine false degeri
aktariliyor. Sonuç yaz(giris); fonksiyonuna gönderiliyor. yaz(durum);
kullanimiyla.
break komutu ise islemin bittigini döngüden ayrilacagimizi
bilgisayara bildiriyor. if...else ve for() methodlarini ileride ayrintili
olarak görecegiz.
yaz(giris); fonksiyonuna gelelim. Bu fonksyon giris degiskenine gönderilen
durum degiskenini aktarir. Sonra if... else kontrolünde bu deger true ise
ekrana e_mail degiskenini basar. Aksi halde else blogu devreye girer ve
ekrana "Lütfen E-Mailinizi dogru girin!!!" mesajini basar.
|