Simdiye kadar olan if yapilarinda,durumun "dogru" olmasi halinde islenecek satirlari gorduk.peki eger durumumuz "yanlis" ise hangi kod gruplarinin islenecegini programda nasil tanimlariz?
if (durum dogrulaniyorsa)
{
Bu Parantezin icindeki kod grubunu uygula
}
else
{
Bu parantezin icindeki kod grubunu uygula
}
Burada anlatilmak istenen "else" yani ingilizcesi "baska" olan yapimiz bize ,ilk verilen if komutundaki parantezlerin icinde eger bir "yanlis" durumu olusursa uygulanacak kod grubunun yerini gostermektedir.
Ornek vermek istersek,
if ($Yas >= 21 AND $Ehliyet == "on" )
{
echo ("Araba kiralama isteginiz KABUL edilmistir.");
}
else
{
echo ("Araba kiralama isteginiz RED edilmistir.");
}
Gordugunuz "if" ile verilen parantezin icerisindeki ifade "dogru" olunca bir alt satirda "{}" parantezleri arasinda verilen kod grubu uygulandi ve ekrana KABUL mesaji geldi.
Verilen durum "yanlis" oldugunda dogrudan "else" ile verilen ve "{}" parantezleri arasina yazilmis kod grubu uygulandi ve ekrana RED mesaji geldi.
Yapimiz icinde gordugunuz bu bir satirlik echo komutu icin {} parantezlerini yazmak zorunlu degildir.Fakat kodlarinizin bir baskasi tarafindan rahat okunabilmesi icin bir rahatliktir.
(Yukaridaki ornekte yanlizca bir tek satir kod uygulaniyor.Dolayisi ile "{}" parentezlerini kullanmak gerekli degildir.Biz size birden fazla satirin uygulanmasini istediginiz durumlar olursa diye bu sekilde "{}" parentezleri ile kodlarinizi gruplayabilceniz icin bu parentezleri yukarida bir satir kod grubunda verdik.)
Simdi biraz daha ileriye gidelim ve bir "degiskeni" birden fazla "veri" icin test edelim.Bunun icin simdiye kadar hic deginmedigimiz elseif yapisini inceleyelim.
if ( degiskenimiz deger1'e esit ise)
{
Bu kod grubunu uygula.
}
elseif (degiskenimiz deger2'ye esit ise)
{
Bu kod grubunu uygula.
}
else
{
Bu kod grubunu uygula.
}
Konuyu anlamak icin bir uygulamalar yapalim,
elseif kullanimi icin ornekler
Ornek 1 :
Bir araba kirlama sirketinin online basvuru formu icin kullanicilarin girdigi bilgileri elimizdeki bilgilerle test ediyoruz.
# Ilk durum yasi 21 den buyuk olan ve ehliyet sahipleri icin hemen bir araba kiralayabilmesi icin kabul yazisi gosteriyoruz,
# Ikinci durum yasi 18 den buyukler ve ehliyet sahipleri icin bir kefalet uyarisi yazisini gosteriyoruz,
# Zaten diger her kosulda o kisiye araba kiralamayacagiz.
if ($Yas >=21 AND $Ehliyet == "on")
{
echo ("Araba kiralama isteginiz KABUL edilmistir.");
}
elseif ($Yas >= 18 AND $Ehliyet == "on")
{
echo ("Size bir arabayi ancak kefil gosterirseniz kiralayabiliriz");
}
else
{
echo ("Araba kiralama isteginiz RED edilmistir");
}
Ornek 2 :
Bir okulda bulunan ogrenciler icin cok basit bir puan cizelgesi ve aldigi puana gore notun harf karsiligi programi,
if ($Puan > 70) echo "Sinav sonucunuz A";
elseif ($Puan >60) echo "Sinav sonucunuz B";
elseif ($Puan >50) echo "Sinav sonucunuz C";
elseif ($Puan >40) echo "Sinav sonucunuz D";
elseif ($Puan >30) echo "Sinav sonucunuz E";
else echo "Sinifta kaldiniz muhahahahaa";
Ornekler cogaltilabilir.Simdi sizde vereceginiz gunluk bir karari if yapisi ile dusunup nasil bir program seklinde yazabilceginizi dusunun.
IF yapilarinin Yuvalanmasi (Ic Ice Yapilandirilmasi)
Ingilizcesi "Nesting if Statements" olan bu konu programlama teknigi icersinde cok kullanilmakatdir.
Ornek vermek istersek,
if ($Puan > 70)
{
echo ("Sinav Sonucunuz A");
if ($TerbiyeNotu > 70)
{
echo ("Ayrica okul yonetiminden bir de odul kazandiniz");
}
}
Bu cok kisa ornegimizde herhalde anladiniz ne demek istedigimi.(Evet anladik hep bir odul kazanmak istemissindir ama olmamistir hayirlisi olsun gencler size bir sey olmasin :)))
Yukaridaki ornegi anlamadiysaniz simdi yazacaklarimi hic anlamayacaksiniz demektir.Beni anlamadin ya ben ona yaniyorum :) Bugun ne oldu bana boyle geyik geyik yaziyorum yaw :)
if ($Puan > 70)
{
echo ("Sinav Sonucunuz A");
if ($TerbiyeNotu > 70)
{
if ($Sinif == 11)
{
echo ("Ayrica okul yonetiminden mezun oldugunuz icin bir de odul kazandiniz") ;
}
else
{
echo ("Bir sonraki sene icin basarilar dilerim");
}
}
}
Ornek 3 : daha kompleks yapilar kurmak
1.Web sayfasi editorunuzu veya text editorunu acip asagidaki kodlari yazin.
<HTML>
<HEAD></HEAD>
<BODY>
Seres Otelcilik Online Web Sayfasi'na Hosgeldiniz
<FORM METHOD=GET ACTION="tatil.php">
Tatil icin nereye gitmeyi dusunuyorsunuz?
<BR>
<BR>
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Istanbul">
Istanbul
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Ankara">
Ankara
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Izmir">
Izmir
<BR>
<BR>
Kac yildizli otelde kalmak istiyorsunuz?
<INPUT NAME="Yildiz" TYPE = "Radio" VALUE="Uc">
Uc Yildizli Otel
<INPUT NAME="Yildiz" TYPE = "Radio" VALUE="Dort">
Dort Yildizli Otel
<BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
2.Bu dosyayi "tatil.html" olarak kayit edin.
3.Yeni bir text dosyasi icerisinde asagidakileri yazin.
<HTML>
<HEAD></HEAD>
<BODY>
Seres Otelcilik Online Web Sayfasi'na Hosgeldiniz
<BR>
<BR>
<?php
$Fiyat = 500;
$YildizFaktoru = 1;
$SehirFaktoru = 1;
if ($Yildiz == "Uc")
{
if ($Sehir == "Istanbul")
{
$SehirFaktoru =2;
$Fiyat = $Fiyat * $SehirFaktoru;
echo ("$Sehir sehrinde 1 haftalik tatil tutari $Fiyat dolardir.");
}
elseif ($Sehir == "Ankara")
{
$SehirFaktoru = 3.5;
$Fiyat = $Fiyat * $SehirFaktoru ;
echo ("$Sehir sehrinde 1 haftalik tatil tutari $Fiyat dolardir.");
}
elseif ($Sehir == "Izmir")
{
$Fiyat = $Fiyat * $SehirFaktoru;
echo ("$Sehir sehrinde 1 haftalik tatil tutari $Fiyat dolardir.");
}
else
{
echo ("Sehir Merkezi icin bir secim yapmadiniz.Geri donerek yapabilirsiniz");
}
}
elseif ($Yildiz == "Dort")
{
$YildizFaktoru=2;
if ($Sehir == "Istanbul")
{
$SehirFaktoru = 2.5;
$Fiyat = $Fiyat * $SehirFaktoru * $YildizFaktoru;
echo ("$Sehir sehrinde 1 haftalik tatil tutari $Fiyat dolardir.");
}
elseif ($Sehir == "Ankara")
{
$SehirFaktoru = 4;
$Fiyat = $Fiyat * $SehirFaktoru * $YildizFaktoru;
echo ("$Sehir sehrinde 1 haftalik tatil tutari $Fiyat dolardir.");
}
elseif ($Sehir == "Izmir" )
{
$Fiyat = $Fiyat * $SehirFaktoru * $YildizFaktoru;
echo ("$Sehir sehrinde 1 haftalik tatil tutari $Fiyat dolardir.");
}
else
{
echo ("Sehir icin bir secim yapmadiniz...geriye donerek bir sehir secebilirsiniz.");
}
}
else
{
echo ("Yildiz icin bir secim yapmadiniz...geriye donerek yildiz secebilirsiniz.");
}
?>
</BODY>
</HTML>
4.Bu dosyayi "tatil.php" olarak kayit edin.(Parantezleri yazarken dikkat edin eger bir tane eksik kalirsa ornek calismaz)
5."tatil.html" dosyasini acip bir tatil merkezi secin.Birde otel icin yildiz sectinizmi gel keyfim gel daha ne isteyeceksiniz iste :))
6.Birakip bilgisayari gidin tatile derdiniz ne :))
Eger halen buradaysaniz simdi ornegimizin nasil calistigina bakalim.
Program nasil calisiyor?
Ilk uc satirimizda ongorulen degerlerle beraber degiskenlerimizi yarattik
$Fiyat = 500;
$YildizFaktoru = 1;
$SehirFaktoru = 1;
Bu degiskenleri,kullanicinin web sayfasindan girdigi yildiz ve sehir durumuna gore fiyati degistirmek icin kullanacagiz.
Program icerisinde ilk kontrol kullanicinin kac yildizli otel sectigi,
if ($Yildiz == "Uc")
Eger kullanici "Uc yildizli oteli secmis ise" hemen ikinci kontrolumuz calisiyor,
if ($Sehir == "Istanbul")
bakiyoruz kullanicinin sectigi sehir "Istanbul" mu? Evet "Istanbul" o zaman hemen hesapliyoruz istanbulda uc yildizli otel icin fiyat formulumuz,
$SehirFaktoru =2;
$Fiyat = $Fiyat * $SehirFaktoru;
echo ("$Sehir sehrinde 1 haftalik tatil tutari $Fiyat dolardir.");
$SehirFaktoru degiskenini programin basinda 1'e esitlemistim.Fiyat icin hesaplama yapmadan once eee malum istanbul biraz pahalli o yuzden
onu $SehirFaktoru = 2 olacak sekilde degistirdim.Artik degiskenimizin degeri 2'dir.Hesaplama yapmak icinde formulumuz belli,Programin basinda $Fiyat olarak verdigimiz degisken ile $SehirFaktoru degiskeni carpiliyor.
Cikan sonuc echo komutu ile ekrana yazdiriliyor.
Program icerisinde ikinci kontrolumuz kullanicin sectigi sehirin "Ankara" olup olmadigi,
elseif ($Sehir == "Ankara")
Program icerisinde ucuncu kontrolumuz kullanicin sectigi sehirin "Izmir" olup olmadigi,
elseif ($Sehir == "Izmir")
Program icerisinde dorduncu asamada kullaniciya hicbir sehir secmedigine iliskin uyari yazimiz ekrana yazdiriliyor,
echo ("Sehir Merkezi icin bir secim yapmadiniz.Geri donerek yapabilirsiniz");
Simdi program ikinci kismima atliyor (Yani kullanici "4 yildizli otel secmis ise")
elseif ($Yildiz == "Dort")
Hemen fiyatlari kazik yapmak icin yaziyorum,
$YildizFaktoru=2;