PhP Akış Kontrol Deyimi(İf)

                                                                 Akış Kontrol Deyimleri
Koşullu İfadeler
Bilgisayarlar için öngörülen gelecek senaryolarının başında, “insan gibi düşünen” makineler halini almaları gelmektedir. Her ne kadar günümüzde bunun etkileyici örneklerini görsek de, bu fikir şu an için ulaşılması oldukça güç bir nokta olarak gözükmektedir.Gördüğümüz örnekler ancak belirli mesleki alanlarda, ya da satranç gibi zeka oyunlarında uzmanlaşmış sistemler biçimindedir ve güçlerini büyük ölçüde sahip oldukları büyük bilgi yığınlarından ve bu yığınlar üzerinde aradıklarını son derece hızlı bir şekilde bulabilme yeteneklerinden almaktadırlar.Fakat henüz her konuda “fikir yürütebilen” yazılım ya da donanımların varlıklarından bahsedebilmek için erken bir zamandır…Bilgisayar programları için düşünebilme yeteneğinin altında son derece basit bir olgu olan “karar verme” olgusu yatar ki, bu da en basit şekliyle bilgisayarın belirli bir durum karşısında, önüne gelen seçeneklerden en uygun olanını seçerek ona uygun olarak davranması şeklinde açıklanabilir.Diğer bir deyişle bir program için karar verme durumu, program akışının “koşul” adı verilen ve Boolean, yani True(doğru) ya da False(yanlış) değer alan ifadenin, aldığı değere göre yönlendirilmesi biçiminde gerçekleştirilir.En temel koşullu ifade biçimi, Türkçede “eğer” anlamına gelen “if(koşul) …” yapısıdır.
Bununla birlikte, gelişmiş programlama dillerinin hemen hemen hepsinde bulunan diğer bir koşul yapısı ise “switch…case” yapısıdır.

If/Elseif/Else
En temel koşullu ifade biçimi, Türkçede “eğer” anlamına gelen
if(koşul) {a}
yapısıdır. Burada {a} kısmına, koşul sağlandığında gerçekleştirilecek deyim (ya da deyimler) yazılır.

Aşağıda bununla ilgili bir örnek program ve ekran çıktısı yer almaktadır.
< ?php
$sayi=16;
if ($sayi%2==0) echo "$sayi bir çift sayıdır.";
? >
16 bir çift sayıdır.
Ancak kod içersinde $sayideğişkeninin değeri 16 yerine tek bir sayı olarak atanırsa, bu durumda program kullanıcıya herhangi bir mesaj vermeyecektir.Aksi halin söz konusu olduğu durumlarda ise
if(koşul) {a} else {b}
ifadesi kullanılır. Bu durumda koşulun aksinin gerçekleştiği, yani koşulun aldığı değerin değilininelde edildiği durumlarda else ifadesinden sonra yer alan {b} deyimi (ya da deyimleri) çalıştırılacaktır.

Örnek program aşağıda verilmiştir:
< ?php
$sayi=15;
if ($sayi%2==0) echo "$sayi bir çift sayıdır.";
else echo "$sayi bir tek sayıdır.";
? >
15 bir tek sayıdır.

Bu programla aynı sonucu, aşağıdaki kod ile de alabiliriz:

< ?php

$sayi=15;
if ($sayi%2==0) echo "$sayi bir çift sayıdır.";
if (!$sayi%2==0) echo "$sayi bir tek sayıdır.";
? >

Ancak bu durumda kodu gereksiz yere uzatmış oluruz. Unutmayın, en iyi program, yapılmak isteneni en az kod yazarak gerçekleştiren programdır.
Bir koşul ve onun eksi halinin söz konusu olduğu durumlarda, yukarıdaki gibi ilk koşulun değiliolan ikinci bir koşul yazmak yerine, else deyimini kullanmak daha yerinde olacaktır.

Koşul ya da aksi durumun doğrulanması durumunda gerçekleştirilecek işlem sayısı birden fazla olabilir. Bu gibi durumlarda, programlama dillerinde bloklamaetiketleri kullanılır.
PHP dilinde bloklamaişlemlerinde { ve } (açık ve kapalı küme parantezleri) kullanılır.
Örnek program için şöyle bir senaryo geliştirelim:


Bir mağaza, müşterilerine iki türde indirim uygulamaktadır. Bunlardan ilki, hafta sonu indirimidir. Yani alışveriş edilen gün Cumartesi ya da Pazar ise toplam alışveriş tutarına %10 indirim uygulanmaktadır.
İkincisi ise, 150 TL ve üstü alışverişlerde uygulanan %20 indirimdir.



Her iki duruma da giren alışverişler, bu iki indirimden de faydalanabilmektedir.

< ?php
$alisverisTutari=200;
$gun=date("D");
if ($gun=="Sat" || $gun=="Sun“){$alisverisTutari=10*$alisverisTutari/100;
echo "Haftasonu indirimi uygulanmıştır. Yeni tutar: $alisverisTutari“;}
if ($alisverisTutari>=150){
$alisverisTutari-=20*$alisverisTutari/100;
echo "150 TL üstü indirimi uygulanmıştır.
Yeni tutar: $alisverisTutari“;}
? >
Burada alışveriş tutarı sabit tutulmuştur. Aynı uygulamayı, alışveriş tutarı kullanıcı tarafından girilecek ve değerleri kendi üzerine gönderecek tek .phpdosyası biçiminde geliştirelim.

< html>
< body>
< form action="" method="post">
< p>Alışveriş Tutarı: < /p>
< p>< /p>
< /form>
< /body>
< /html>
< ?php
if(isset($_POST["dugme"])){
$alisverisTutari=$_POST['tutar'];
$gun=date("D");

if ($gun=="Sat" || $gun=="Sun“)
{
$alisverisTutari-=10*$alisverisTutari/100;
echo "Haftasonu indirimi uygulanmıştır. Yeni tutar: $alisverisTutari";
}
if ($alisverisTutari>=150){
$alisverisTutari-=20*$alisverisTutari/100;
echo "150 TL üstü indirimi uygulanmıştır. Yeni tutar: $alisverisTutari“;}
}
? >
If deyiminin en karmaşık biçimi, yapıya “aksi halde eğer” anlamını taşıyan “Elseif” deyiminin katıldığı biçimdir. Koşulun aksi halinde başka alt koşulların bulunması durumunda kullanılır.

Genel yapısı aşağıdaki gibidir:
If(koşul) {a}
Elseif(koşul_1) {a_1}
Elseif(koşul_2) {a_2}

Elseif(koşul_n) {a_n}
Else {b}
Bu yapıda, ilk Ifdeyimine ait koşul sağlanırsa diğer durumlara bakılmaksızın sadece {a} deyimi/deyimleri çalıştırılır ve program akışı koşul yapısının sonundan devam eder.

İlk koşul sağlanmazsa sırasıyla koşul_1, koşul_2, …, koşul_n koşulları denetlenir. Bunlardan hangisi sağlanırsa, ilgili deyim/deyimler çalıştırılır.
Hiçbir koşulun sağlanmadığı durumda ise, Else deyiminden sonra yer alan {b} deyimi/deyimleri çalıştırılır.

Örnek program için şöyle bir senaryo geliştirelim:
Kullanıcı tarafından girilecek bir notun, verilen tabloya göre karşılık gelen harf notu hesaplanacak ve kullanıcıya bildirilecektir.

< html>
< body>
< form action="notHesapla.php" method="post">
< p>Notu Giriniz:
< input type="text" name="notu">< /p>
< p>< input type="submit">< /p>
< /form>
< /body>
< /html>



< ?php
$Not=$_POST['notu'];
if  ($Not<=19) echo "$Not = FF";
elseif  ($Not<=29) echo "$Not = FD";
elseif ($Not<=39) echo "$Not = DD";
elseif ($Not<=49) echo "$Not = DC";
elseif ($Not<=59) echo "$Not = CC";
elseif ($Not<=69) echo "$Not = CB";
elseif ($Not<=79) echo "$Not = BB";
elseif ($Not<=89) echo "$Not = BA";
elseif ($Not<=100) echo "$Not = AA";
else
echo "$Not notuna karşılık gelen harf notu yoktur.";
? >

Switch/Case
Aynı ifadenin, aldığı farklı değerlere karşılık gelen durumlarının belirlendiği koşullu ifade biçimi switch/caseyapısıdır.
Aslında bu yapı kullanılarak gerçekleştirilen akış kontrolü, bir dizi if-elseififadesi kullanılarak da gerçekleştirilebilir. Ancak bu durum gereksiz kod kalabalığına ve karmaşıklığına yol açacaktır.

Deyimin genel biçimi aşağıdaki gibidir.
switch(ifade)
{
casedeğer1:
ifade=değer1 olduğunda işletilecek kod;
break;
casedeğer2:
ifade=değer2 olduğunda işletilecek kod;
break;
default:
ifade, değer1 ve değer2’nin her ikisinden de farklı olduğunda işletilecek kod;
}
Örnek olarak, kullanıcı tarafından girilecek 0 ile 9 arasındaki bir sayının Türkçe okunuşunu yazacak PHP kodunu switch/caseyapısını kullanarak yazalım.

< html>
< body>
< form action="" method="get">
< p>Sayıyı Giriniz: < /p>
< p>< /p>
< /form>
< /body>
< /html>



< ?php
if(isset($_GET["dugme"])){
$Gelen_Sayi=$_GET['sayi'];
switch ($Gelen_Sayi) {
case "0":
$sonuc="SIFIR";
break;
case "1":
$sonuc="BİR";
break;
case "2":
$sonuc="İKİ";
break;

case "3":
$sonuc="ÜÇ";
break;
case "4":
$sonuc="DÖRT";
break;
case "5":
$sonuc="BEŞ";
break;
case "6":
$sonuc="ALTI";
break;

case "7":
$sonuc="YEDİ";
break;
case "8":
$sonuc="SEKİZ";
break;
case "9":
$sonuc="DOKUZ";
break;
default:
$sonuc="Giriş Anlaşılamadı...";
}
}
echo ($sonuc);
? >
Caseblokları içersindeki son deyim olan break deyimi, akış kontrolünü kırmak için kullanılır. PHP’ninswitch/caseyapısı, her bir durumu ayrı ayrı işler. Dolayısıyla her duruma ait kodun işletilmesinin ardından kontrol break deyimi ile kırılmalı ve program akışı switchdeyiminin etki alanı dışından devam etmelidir.

< ?php
$i=0;
switch ($i) {
case 0:
echo "
i = 0";

case 1:
echo "
i = 1";

case 2:
echo "
i = 2";}

? >

$i=0 olmasına karşın bu koda ait ekran çıktısı:

i = 0













i = 1
i = 2
şeklinde olacaktır.

< ?php
$i=1;
switch ($i) {
case 0:
echo "
i = 0";

case 1:
echo "
i = 1";

case 2:
echo "
i = 2";}

? >
durumunda ise ekran çıktısı aşağıdaki gibi olur:

i = 1
i = 2
Aynı kodu;

< ?php
$i=1;
switch ($i) {
case 0:
case 1:
case 2:
echo "
0 < i< 3";

break;
case 3:
echo "
i= 3“;}

? >

şeklinde düzenlersek ekran çıktısı:

0 < i< 3















olacaktır.
Kodun en doğru biçimini ise aşağıdaki gibi düzenleyebiliriz:

< ?php
$i=1;
switch ($i) {
case 0:
case 1:
case 2:echo "
0 < i< 3";

break;
case 3:echo "
i= 3";

break;
default:
echo "
i> 3 yadai< 0";}

? >



















Öne Çıkan Yayın

Hibernate Nedir?

Hibernate Nedir? Veritabanı işlemlerinde bize yardımcı olan, obje kavramından uzaklaşmadan işimize devam etmemizi sağlayan bir yapı. Artık...