Bilgi/Açıklama

Akış Denetimi

Olağan koşullarda PHP gibi programlama dillerinde kod içerisinde, noktalı virgül (semicolumn) işareti ';' ile ayrılmış her demeç (statment), yukarıdan aşağı ve solda sağa olacak biçimde sırayla, bir kez çalıştırılır. Ancak kimi durumlarda bir öbek demeci belli bir koşula bağlı olarak çalıştırılmak istenebilir. Ya da kimi demeçler bir kez değil, belli bir koşul sağlanana dek sürekli çalıştırılabilir. Kimi kez, demeçler öbeği belli bir sayıda sürekli yeniden çalıştırılabilir. Bu durumlara akış denetimi (flow control) adı verilir. Hemen her programlama dili bu konularla ilgili çeşitli buyruklar içerir. Çoğu birbirine koşut olmakla birlikte kimi küçük ayrımlar, kimi değişik yaklaşımlar söz konusu olabilir.

Koşul (Condition)

Bir veya daha çok demecin bir koşulun gerçekleşmesi veya, tam tersine gerçeklememesi durumunda çalışması sağlanabilir. Buna göre, sonucu mantıksal (logical) veya boolean olan bir deyim (expression) ile bir koşul (condition) değerine bakılır.

If (İse) ve Else (Değilse)

If (İse)

Bir demeçler öbeğinin belli bir koşulun doğru olması durumunda çalışması için if (ise) açar sözcüğü kullanılır. Kullanımı:
if ( Koşul )
  Demeçler
biçimindedir. Birden çok demeç bulunması durumda süslü ayraç (curly bracket) imleri '{' ve '}' kullanılır. Öte yandan, kodun okunabilirliğini arttırmak, yanlış anlaşılmaları önlemek ve daha sonra eklenecek demeçler için kolaylık sağlamak gibi nedenlerle bir çok kişi tek bir demeç olsa da süslü ayracı kullanmaktadır. Bu durumda kullanım:
if ( Koşul ) {
  Koşul Sağlanıyorsa Demeçler
}
biçiminde gerçekleşir.

Else (Değilse)

Bir koşulun gerçekleştiği değil de gerçekleşmediği durumlarda, çalışması gereken demeçler else (değilse) açar sözüyle bildirilir. Kullanımı aşağıdaki gibidir:
if ( Koşul ) {
  Koşul Sağlanıyorsa Demeçler
} else {
  Koşul Sağlanmıyorsa Demeçler	
}

Else If (Değilse İse)

Bir if buyruğunun else kolunda da bir if olabilir. Başka bir deyişle bir koşulun sağlanmadığı durumda başka bir koşulun denetimi yapılabilir. Buna else if (değilse ise) adı verilir. Örneğin
if ( Koşul1 ) {
  Koşul Sağlanıyorsa Demeçler
} else if ( Koşul2 ) {
  Koşul Sağlanmıyorsa Demeçler	
}
biçimindeki kod parçasında birinci koşul sağlanmıyorsa ikinci koşula bakılır. Ancak ikinci koşul sağlansa da, birinci koşul sağlanıyorsa ikinci koşula bakılmaz ve onun içerisindeki demeçler kesinlikle çalıştırılmaz.
Bir else if buyruğunun sonuna başka bir else if veya else eklenebilir. Örnek:
if ( Koşul1 ) {
  
} else if ( Koşul2 ) {
} else if ( Koşul3 ) {
} else  {
}

Örnek Uygulama

Aşağıda if (ise) , else if (değilse ise) ve else (değilse) kullanımına ilişkin bir örnek bulunmaktadır:
<html>
<body>
<h1> İse - Değilse İse - Değilse </h1>
<?php
	$age=$_GET['age'];
	if($age<15){
		echo "Yaşın çok küçük evlenemezsin!";
	}
	else if ($age<18)	{
  	  echo "Ailenin izniyle evlenebilirsin!";
	}
	else{	
  	  echo "Evlenebilirsin, yaşın tutuyor";
	}
?>
</body>
</html>
Yukarıdaki örnekte $age (yaş) diye bir değişken tanımlanmış ve değeri $_GET küre değişkeninden alınmıştır. Değişkenin değeri 15 değerinden küçükse ekrana olumsuz durumu bildiren bir yazı basılmıştır. Sayı 15 değerinden büyükse bu kez ekrana koşullu durumu bildiren bir yazı basılmıştır. Yaş değeri 18'den küçükse, başka bir deyişle önceki koşullardan hiç birine uymuyorsa olumlu ileti ekrana basılır.
Yukarıdaki sayfa çağrılırken
If.php?age=17
gibi bir adres girilmelidir. Buradaki age (yaş) parametresinin değerine göre ekranda bir sonuç gösterilir. Değer olarak 17 girilirse örnek ekran çıktısı aşağıdaki gibi olur:

Switch (Açkı)

Bir değişkenin değerini denetlerken çok sayıda if, else if ve else kullanıldığı durumlarda bir almaşık olarak switch (açkı) buyruğu kullanılır. Bu açar sözcükte bir çok koşulun denetlenmesi yerine bir değişkenin çeşitli değerlerleri bir durum olarak düşünülür ve case (durum) açarı ile bildirilir. Birden çok değer için ortak kod yazılabilir. Bir veya bir kaç durumda çalışacak kodun sonuna break (kır) sözcüğü konulara açkıdan çıkılır. Hiç bir duruma uymayan değerler için de default (varsayılan) açar sözcüğü kullanılır.
Açkının kullanımı:
switch ( variable ) {
  	case Değer1 : 
		Demeçler 1; 
		break;
  	case Değer2 : 
		Demeçler 2; 
		break;
  	case Değer3 : 
		Demeçler 3; 
		break;
	default : 
		Varsayılan Demeçler;
}
biçimindedir. Birden çok durum için aynı kod çalışacaksa kullanım aşağıdaki gibi olur:
switch ( variable ) {
  	case Değer1 : 
  	case Değer2 : 
		Demeçler 1 & 2; 
		break;
  	case Değer3 : 
  	case Değer4 : 
  	case Değer5 : 
		Demeçler 3, 4 & 5; 
		break;
}
Aşağıda açkı (switch) kullanımına ilişkin bir örnek bulunmaktadır:
<html>
<body>
<h1>Açkı </h1>
<?php
	$day_number=$_GET['day'];
	switch ( $day_number ) {
	 	case 1: 
	    		$day_name="Pazartesi" ; 
         		break;
	  	case 2: 
	    		$day_name="Salı" ; 
	    		break;
	  	case 3: 
	    		$day_name="Çarşamba" ; 
	    		break;
		case 4: 
			$day_name="Perşembe" ; 
			break;
		case 5: 
			$day_name="Cuma" ; 
			break;
		case 6: 
			$day_name="Cumartesi" ; 
			break;
		case 7: 
			$day_name="Pazar" ; 
			break;	
		default: 
			$day_name="Geçersiz Gün";
	}
?>
Bugün  : <?=$day_name?>
</body>
</html>
Bu örnekte alından bir gün sayısına göre gün adı ekrana basılmaktadır. Verilen sayı en az 1 en çok 7 değilse girilen sayının geçersizliğini bildiren bir ileti ekrana basılır. Yukarıdaki uygulama
Switch.php?day=4
biçiminde çağrılabilir. Ekran çıktısı aşağıdaki gibi olur:

Döngü (Loop)

Bir öbek demecin birden çok kere çalıştırılması için döngü (loop) adı verilen yapılar kullanılır. Bunlar işlemleri, ya bir koşul sağlandığı sürece gerçekleştirirler ya da kaç kez işlem yapacakları baştan bunlara verilir.

While (Sürece)

Bir veya daha çok demecin belli bir koşul sağlandığı sürece çalışmasını sağlamak için while (sürece) döngüsü kullanılır. Kullanımı aşağıdaki gibidir :
while ( Koşul ) {
	// Demeçler
}
Tek bir demeç olması durumunda süslü ayraçlar kullanılmayabilir ancak bu durumda da kullanılmaları okunabilirlik ve sağlamlık açısında yararlı olur.
Aşağıda sürece (while) kullanımına bir örnek bulunmaktadır:
<html>
<body>
<h1>Sürece </h1>
<?php
	$number=1;
	$total=0;
	while ( $total < 100 ){
		$total=$total+$number; 
		$number++; 
	}
?>
Toplam : <?=$total?>
</body>
</html>
Bu örnekte $total değeri 100 değerini geçene kadar, daha doğru bir deyişle, 100 değerinden küçük olduğu sürece, $number değerini birer birer attırılıp $total değişkenine eklenmektedir.
Ekran çıktısı:

Do-While (Yap-Sürece)

Bir çok programlama dilinde olduğu gibi, PHP dilinde de while (sürece) döngüsünün başka bir sürümü bulunmaktadır. Olağan sürece döngüsünde koşul en başta denetlenir ve sağlanıyorsa işlemler yapılır. Ancak kimi zaman koşulun sağlanıp sağlanamadığını belirlemek için döngünün içerisine bir kez girmek gerekir. Bu durumda yapılacaklar do (yap) açarıyla önce bildirilir ve koşul while (sürece) sözcüğüyle en son denetlenir. Buna do-while (yap-sürece) adı verilir. Yapısı
do {
  // Demeçler
} while ( Koşul );
içimindedir. Sonda bir noktalı virgül olduğuna özen gösterilmelidir.
Aşağıda yap-sürece (do-while) kullanımına bir örnek bulunmaktadır:
<html>
<body>
<h1>Yap-Sürece </h1>
<?php
	$number=0;
	$total=0;
	do{
		$number++;
		$total+=$number;
	}while($number<100);
?>
Toplam : <?=$total?>
</body>
</html>
Örnekte $number (sayı) değişkeni döngünün her adımında bir artırılmaktadır ve değeri $total (toplam) değerine eklenmektedir. En sonda while koşulunda değerin 100'ü aşıp aşmadığı denetlenmektedir. Değer 100'ü aşarsa döngüden çıkılmaktadır.
Anlaşılırlık nedeniyle yukarıdaki örnek yalın tutulmuş, do olmadan kullanılan while ile aynı işlemi yapacak biçimde yazılmıştır. Ancak buradan do-while döngüsünün gereksiz olduğu izlenimi edinilmemelidir. Koşulda kullanılan herhangi bir değerin döngü içerisinde belirlendiği durumlarda sıradan while döngüsü işe yaramaz.
Ekran çıktısı:

For

Bir veya daha çok işlemin belli bir sayıda yapılmasını sağlamak için for (için) döngüsü kullanılır. Bunun için öncelikle bir ilkleme (initialization), sonra koşul (condition) denetlenir ve bir arttırım (increment) yapılır. Kullanımı aşağıdaki gibidir:
for ( İlkleme ; Koşul ; Attırım){
	Demeçler
}
Tek bir demeç için süslü ayraç (curly bracket) imleri, '{' ve '}' kullanmaya gerek yoktur. Ancak anlaşılırlığı arttırmak ve yanlışlık yapılmasını önlemek gibi nedenlerde ayraçları kullanmak yararlı olur.
Burada ilkleme her döngü için bir kez, demeçler çalıştırılmadan önce yapılır. Döngü için koşul denetimi ve arttırım ise her çalışmada ve çalıştırdıktan sonra yapılır.
İçin kullanımına bir örnek :
<html>
<body>
<h1>İçin </h1>
<?php
	$sum=0;		
	for ( $i=0 ; $i<10; $i++ ) {
		$sum+=$i;
	}
?>
Toplam <?=$sum?>
</body>
</html>
Yukarıdaki örnekte sıra (index) değeri için $i değişkeni tanımlanmakta, öncelikle 0 atılmakta ve her adımda 1 artırılmaktadır. Değişkenin değeri 10 değerine ulaşınca döngüden çıkılmaktadır. Döngüden önce 0 değerine atanan $sum değişkenine, döngü içinde sıra değişkeninin değeri eklenmektedir.
Bir koşul olmasa da 10 kez yapılacak işlemlerde sıra değişkeni 1 yerine 0 değerinden başlar ve 10 değerinden küçük olacak bir biçimde koşullandırıldığı için, en çok 9 değerine ulaşır. Bunun nedeni dizi gibi yapıların ve bir çok işlevin, ilk öğenin sırasını 0 olacak biçimde kurgulanmasıdır. Ancak böyle bir yükümlülük olmadığı durumlarda da sıra değişkeni hep 0 ile ilklenir.

İçin(For) ve Dizi (Array)

Programlama dillerinde dizi (array) yapılarıyla en çok için (for) döngüsü kullanılır. Çünkü dizilerde çoğunlukla sıra (index) aracılığıyla erişim yapılır ve için döngüsü de bu sıra değişkenin birer birer artmasını sağlar. Aşağıda dizilerle için döngüsü kullanımına bir örnek bulunmaktadır:
<html>
<body>
<h1>Dizi ve İçin </h1>
<?php
	$numbers=array(3,4,5,6,2,6,4,7,8,2);
	$sum=0;
	for( $i=0 ; $i<10; $i++ ) {
		$sum += $numbers[ $i ];
	}
?>
Toplam <?=$sum?>
</body>
</html>
Ekran çıktısı aşağıdaki gibidir:

Break & Continue

Kimi zaman bir döngü içerinde bazı adımların atlanması veya belli bir koşula bağlı olarak döngüden erken çıkılması gerebilir. Aşağıdaki açar sözcükler bu davranışı, döngünün ana çatısını değiştirmeden sağlayabilir.

Break (Kır)

Bir döngüde, sonraki adımların tümlenmesini veya koşulun sağlanmaz olmasını beklemeden çıkmak için break (kır) buyruğu kullanılır. Kullanımı aşağıdaki gibidir:
Döngü {
	Önceki Demeçler
	if ( Koşul ) {
		break;
	} 
	Sonraki Demeçler
}
Kod içerisinde break göründüğü anda döngüden çıkılır. Döngünün o adımında kırmadan önceki demeçler çalışırken sonraki demeçler çalışmaz. Sonraki adımlar için hiç bir demeç çalışmaz.

Continue (Sürdür)

Döngüde yalnızca bir adımın atlanması, yalnızca bir çalıştırmadan çıkılması ve sonra kalındığı yerden işlemlerin sürdürülmesi isteniyorsa sürdür (continue) sözcüğü kullanılır. Kullanımı aşağıdaki gibidir:
Döngü {
	Önceki Demeçler
	if ( Koşul ) {
		cotinue;
	} 
	Sonraki Demeçler
}
Kod içerisinde break göründüğü anda döngünün o andaki adımı atlanır ve döngünün o adımında kırmadan önceki demeçler çalışırken sonraki demeçler çalışmaz. Ancak sonraki adımlarda, sürdürmeyi içeren koşul sağlamayan her adımda hem önceki hem sonraki demeçler yine çalışır. Koşulu sağlayanlarda ise yalnızca önceki demeçler çalışır.
Döngülerde kır (break) ve sürdür (continue) kullanımına bir örnek aşağıdaki gibi yapılabilir:
<html>
<body>
<h1>Kır ve Sürdür </h1>
<?php
	$sum=0;
	for( $i=0 ; $i<10; $i++ ) {	
		if ( $i == 5 ) {
			continue;
		}
		if( $sum > 20 ) {
			break;
		}
		$sum+=$i;
	}
?>
Toplam <?=$sum?>
</body>
</html>
Yukarıdaki sayfa çalıştığında sıra (index) için kullanılan $i değişkeni değerlerini $sum değişkeninde toplar. Ancak sıra değeri 5 olduğunda adımı atlar ve toplam değeri 20 değerini geçince döngüden çıkar.
Ekran çıktısı aşağıdaki gibi olur: .
tekzaf tarafından 06.11.2018 tarihinde eklenmiş/güncellenmiştir.

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim/Bize Yazın   mh@fibiler.com   Google+   Facebook   Twitter   fibiler@googlegroups.com
Her Hakkı Saklıdır
Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir.
Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir