Php Programlama Karar Yapıları

php-karar-yapilari

Karar yapıları Php programlamada en çok kullanacağımız yapılardır. Bu yapıları kullanırken operatörler ile program akışına yön verilir. Kısaca mantık şöyle bir örnek verebiliriz. Üye şifreyi doğru girdiyse giriş yapsın yanlış girdiyse tekrar denesin. 

Php Programlama Operatörler konusunu okuyarak operatörler hakkında bilgi sahibi olabilirsiniz.

Karar yapıları iki türdür. Bunlardan biri if diğeri switch karar yapısıdır.

If Karar Yapıları

If (Eğer)

İf karar yapıları koşullar gerçekleştiğinde if bloğu arasındaki kodları çalıştırır.

Örnek kullanım:

<?php
$sifre = "123";
if($sifre == "123"){
echo 'Şifre doğru. Giriş yapıldı';
}
?>

Yukarıdaki kod çalıştırıldığında $sifre değişkeninin “123”e eşit olup olmadığı kontrol edilecek ve eğer eşit ise if bloğundaki kodları çalışacaktır.

Şimdi birden fazla koşullu bir if karar yapısının kullanımını inceleyelim.

Örnek kullanım:

<?php
$sayi1 = 5;

if($sayi1 > 2 && $sayi1 < 7){
echo "sayi 2 den büyük ve sayi 7 den küçük";
}

$sayi2 = 10;
$sayi3 = 5;

if($sayi2 < 15 && $sayi2 > 8 && $sayi3 == 5){
echo "sayi2 değişkeni 15'ten küçük ve 8'den büyük. sayi3 değişkeni 5'e eşittir.";
}
?>

Yukarıdaki kod çalıştırıldığında koşulların doğru olup olmadığı kontrol edilecek ve if bloğu arasındaki kodlar çalışacaktır. Bu şekilde koşulları arttırabilir program akışını koşullara göre değiştirebiliriz. Ancak bazı durumlarda bir değişken farklı değerlere sahip olabilir. Örneğin bu değişkenin değeri 5 ise belli bir kodu, değer 10 ise başka bir kodu çalıştırabiliriz. Bu durumda devreye else if bloğu girer.

Else if (Eğer Değilse)

Else if de tıpkı if gibidir. İlk önce if koşulu denetlenir eğer if koşulu sağlanmadıysa else if koşuluna geçilir. Else if koşulları birden fazla kez oluşturulabilir.

Örnek kullanım:

<?php 
$sayi = 10;
if($sayi == 4){
echo "sayı 4'e eşittir.";
}else if($sayi == 8){
echo "sayı 8'e eşittir.";
}else if($sayi == 10){
echo "sayı 10'e eşittir.";
}else if($sayi == 15){
echo "sayı 15'e eşittir.";
}
?>

Yukarıdaki kodu incelediğimizde  4 adet koşul vardır ve bu koşullara göre ekrana sonuç yazdırılacaktır. İlk önce if koşulu denetlenir $sayi değişkeni 4’e eşit mi kontrol edilir ve koşul sağlanmadığı için altındaki else if koşuluna geçilir. Burada $sayi değişkeni 8’e eşit mi kontrol edilir koşul yine sağlanmadığı için altındaki else if koşuluna geçilir. Burada $sayi değişkeni 10’a eşit olduğu için koşul sağlanır ve else if bloğu içerisindeki kodlar çalışır.

Koşul sağlandıktan sonra diğer koşullar kontrol edilmeden program akışına devam edilir.

Bütün koşulları kontrol ettik ancak hiçbir koşul sağlanmadı. Koşul sağlanmıyorsa program akışını nasıl yönlendireceğiz. Bu durumda yardımımıza Else bloğu yetişiyor.

Else (Değilse veya Hiç Biri Değilse)

İf bloğumuzda oluşturduğumuz koşullar her zaman sağlanacak diye bir kural yoktur. Bu koşullar bazen gerçekleşmeyebilir. Bu durumda program akışı Else bloğuna girer ve Else bloğundaki kodlar çalışır.

Örnek kullanım:

<?php 
$sayi = 7;
if($sayi % 2 == 0){
echo 'Sayı çift';
}
else{
echo 'Sayı tek';
}
?>

Yukarıdaki kodu incelediğimizde if bloğunda bir koşul vardır. Eğer bu koşul sağlandıysa if bloğu kodları çalışacak, eğer sağlanmadıysa else bloğu kodları çalışacaktır. Burada dikkat etmeniz gereken yer else bloğunda herhangi bir koşul belirtilmez. Else bloğu hiç bir koşul sağlanmıyorsa çalışan bir bloktur.

Aşağıdaki örnekte biraz daha detaylı inceleyelim.

Örnek kullanım:

<?php
$sayi = 5;
if($sayi < 3){
echo "Sayı 3'ten küçük.";
}else if($sayi > 5){
echo "Sayı 5'ten büyük.";
}else{
echo "Sayı 5'e eşit.";
}
?>

Yukarıdaki örnekte sayı değişkenin durumlarını sayı değişkenimiz 3’ten küçük mü, 5’ten büyük mü koşulları ile kontrol ettik bu koşullar sağlanmadığı için programımız else bloğunu çalıştırdı ve bize “Sayı 5’e eşittir” cevabını verdi.

Üçlü Mantık (Kısa if)

İf karar yapısı altında birde üçlü mantık (kısa if) terimi vardır. Bu terim tıpkı if yapısı gibidir ancak daha kısa bir yazılımı vardır. Basitçe yapısını göstermek gerekirse aşağıdaki gibidir.

koşul ? koşul sağlandıysa : koşul sağlanmadıysa

Örnek kullanım:

<?php
//Bu şekilde değişkene atayarak kullanabiliriz
$sayi = 10;

$sonuc = $sayi == 10 ? 'eşit' : 'eşit değil';
echo $sonuc;

// ya da değişkene atamadan direk kullanabiliriz.
echo $sayi == 10 ? 'eşit' : 'eşit değil';
?>

Kısa if kullanımı yukarıdaki gibidir. Örnekler çoğaltılabilir ancak mantığı anlatmak yeterli diye düşünüyorum.

Kullanımı üçlü mantığa(kısa if) benzeyen ve PHP 7 ile birlikte hayatımıza giren Null Birleştirici Operatöründen(Null Coalescing Operator ) bahsetmek istiyorum. Kısa kullanımı ile değişken kontrolünde kolaylık sağlıyor.

Null Birletirme Operatörü(Null Coalescing Operator)

Bu operatör değişken tanımlanmamış veya hiçbir değer atanmamışsa değer atamak ve değişken tanımlamak için kullanılır.

Örnek kullanım:

<?php 
/*Üçlü mantık (kısa if) kullanımı*/
$sayi = 5;
echo $sayi == 5 ? '5' : 'sayı 5 değil';

/*Null birleştirici operatördeki kullanımı*/
echo $sayi2 ?? '5';
?>

Yukarıdaki kodu açıklamak gerekirse, üçlü mantıkta değişken tanımlanmış ve değişken koşula tabi tutularak kontrol edilmiş. Eğer üçlü mantık kullanımında değişkeni tanımlamasaydık ” Notice: Undefined variable: sayi in C:\wamp64\www\ornek.php on line 5” şeklinde bir uyarı mesajı verecektir.

Null Birleştirme Operatöründe görüldüğü gibi önceden sayi2 değişkeni tanımlanmadı ve herhangi bir değer verilmedi. Bu operatör bize kolaylık sağlayarak değişkeni tanımlıyor ve değeri atıyor. Eğer değişken tanımlanmış olsaydı herhangi bir atama yapılmayacaktı.

Örnek kullanım:

<?php
$sayi2 = 10;
echo $sayi2 ?? '20';
?>

Yukarıdaki örnek kullanımda değişken tanımlandığı için Null birleştirme operatörü değişken üzerinde herhangi bir işlem yapmayacaktır ve ekrana 10 yazdırılacaktır. Null birleştirme operatörü sadece değişken tanımlanmadığında ve değişken boş olduğunda işlem yapar.

Not: Null birleştirme operatörü PHP 7 ile birlikte gelen bir yeniliktir. Eski sürümlerde bu özellik yoktur.

Switch Karar Yapısı

Switch, Php dilinde anahtar anlamına gelmektedir. Switch yapısına gönderilen anahtar case ile kontrol edilir ve eşleşme sağlanırsa eşleşmenin sağlandığı case bloğundaki kodlar çalıştırılır. Switch yapısı İf yapısına benzemektedir. Tek farkı Switch yapısında operatör kullanılmamaktadır. 

Örnek kullanım:

<?php
$sayi = 3;
switch($sayi){

case 1:
echo "Sayı 1'dir.";
break;

case 2:
echo "Sayı 2'dir.";
break;

case 3:
echo "Sayı 3'tür.";
break;

default:
echo "Sayı 1-2-3 değildir.";
break;
}
?>

Yukarıdaki kodu incelediğimizde anahtar olarak $sayi değişkenini gönderdik switch yapısında $sayi değişkeninin değeri herhangi bir case ile eşleşiyorsa o case bloğu çalışacaktır. Kodu incelediğimizde case 3: gönderilen değişkenin değeri ile eşleşmektedir ve sadece bu bloktaki kodlar çalışacaktır. Eğer hiçbir eşleşme yoksa default bloğu çalışacaktır. Tıpkı if yapısında hiçbir koşul sağlanmadığında else bloğunun çalışması gibi.

Kodların kapsam alanı break; bitiş sözcüğü ile belirlenir program break; komutunu gördüğü yerde Switch yapısı sonlandırılır ve program akışı kaldığı yerden devam eder.

Switch ile basit bir hesap makinesi örneği:

<?php
// $sayi1, $sayi2 ve $islem değişkenlerinin dışarıdan kullanıcı tarafından girildiğini varsayalım
$sayi1 = 10;
$sayi2 = 4;
$islem = "*";

switch($islem){

case "+":
$sonuc = $say1 + $sayi2;
break;

case "-":
$sonuc = $sayi1 - $sayi2;
break;

case "*":
$sonuc = $sayi1 * $sayi2;
break;

case "/":
$sonuc = $sayi1 / $sayi2;
break;

default:
$sonuc = "İşlem seçmeniz gerekmektedir.";
break;
}

echo "İşlem sonucu =".$sonuc;
?>

Yukarıdaki kodu incelediğimizde Switch yapımıza $islem değişkeni gönderilmiştir. Program akışı bu değişkenin değerine göre ilerleyecektir. $islem değişkeni herhangi bir case ile eşleştiğinde o case içerisindeki işlemler yapılacak ve Switch yapısı dışındaki echo komutu ile sonucumuz ekrana yazdırılacaktır. Eğer $islem değişkenimiz herhangi bir değere sahip değilse ya da yanlış bir değere sahip ise default bloğu çalışacaktır ve kullanıcıya “İşlem sonucu = İşlem seçmeniz gerekmektedir.” mesajı verilecektir.

 

Örnek kodları hızlıca test etmek için Notepad++ editörünü veya Standart windows not defterini kullanabilirsiniz. Dosya uzantısının .php olduğundan emin olun.

Eğer kodları test etmek için bir sunucu kurmadıysanız Php Programlama Wamp Server Kurulumu başlıklı yazıma göz atabilirsiniz.

Karar yapıları konusu burada bitiyor. Karar yapıları ilerleyen bölümlerde yine karşımıza çıkacaktır. Yazının başında da söylediğim gibi karar yapıları program akışı açısından çok önemlidir ve çok sık kullanılır. Bu nedenle karar yapıları kavramlarını öğrenmek, mantığını anlamak oldukça önemlidir.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir