|
erkmen
|
 |
« : Ocak 28, 2009, 18:55 » |
|
Arkadaslar, bu seferki makalemizde, programlama dillerinin hepsinde var olan ve bir programa neyi yapmasi gerektigine karar vermesini saglayan IF ve SWICH deyimlerini inceleyecegiz. Kusura bakmayin bu makalede pek ornek veremeyecegim cunku saat sabahin 3 u olmak uzere. Neyse hemen baslayalim;
PHP'de Program Denetimi Bilgisayar programi, belirli degerlere gore kendi izleyecegi yolu kendisi bulmalidir. Bir Web programi da ayni mantikla tasarlanir. PHP, bir kismini daha onceki bolumlerde, bir kismini da simdi ele aldigimiz araçlari kullanarak, belirli durumlarda belirli istikametlere gidecek, yeri geldiginde geri donecek, yeri geldiginde baska bolumlere sicrayacak bir akis plani tasarlamamiza imkan verir. Web programlarimizda, ziyaretcilerimizin sitemizde yaptiklari veya yapmak istediklerini bildirdikleri ise gore sayfalar, bu islere gore sayfa icerikleri sunariz. Web programimiz ziyaretcimizin hareket tarzina ve amacina uygun olarak ilerler. Bir programin akis planini kontrol etmemizi saglayan unsurlar cogu zaman programin kendi kendine karar vermesini saglayan araclardir. PHP'de program denetim unsurlari, programin gidis yonunu degistirmemizi veya oldugu yerde durmasini ve beklemesini veya bir isi biteviye yapmasini saglar. Bu bolumde bu araclari ele alacagiz.
if Deyimi Insan olarak kararlarimizi hemen hemen daima "bir sey oyle ise boyle, oyle degilse soyle davranmak" uzere almaz miyiz? PHP programinda if deyimi bunu saglar. Kelime anlami “eger” olan if deyimi ile programimizi karar almaya zorlariz. Ne var programimiz bizim kadar akilli olamayacagi icin if sartinin dogru veya yanlis olmasi durumunda ne yapacagini da ona biz soyleriz. if deyimi soyle yazilir: if ( kosullar ) { kosullar dogru ise yapilacak islere iliskin komutlar } elseif (diger kosullar) { diger kosullar dogru ise yapilacak islere iliskin komutlar } else { diger her durumda yapilacak islere iliskin komutlar }
PHP, if ifadesinin dogru olmasi halinde, ifadeye ait ilk suslu parantezin icindeki komutlari icra eder; bu sartlar dogru degilse, elseif deyimi ile ileri surebilecegimiz diger bir grup sartin dogru olup olmadigini sinayabiliriz. Bu sartlar yerine geliyorsa, PHP, elseif bolumundeki isleri icra eder. Nihayet diger her hangi bir durumda icra edilmesini istedigimiz komutlari else bolumunde belirtiriz. PHP, if deyimi dogru degilse, deyime ait suslu parantezin icindeki isleri yapmadan yoluna devam eder; varsa elseif deyiminin sartlarini sinar; elseif bolumu yok fakat else bolumu varsa bu bolumdeki isleri icra eder. Deyimde else bolumu de yoksa, PHP yoluna if deyiminden sonraki ilk adimdan devam eder. Bunu bir ornekle belirtelim:
<?php $sarki = "Gunes Dogacak"; if ( $sarki == "Gunes Dogacak" ) { echo ("Sectiginiz sarkinin adi: Gunes Dogacak!"); } elseif ($sarki == "Beklerim Ben") { echo ("Sectiginiz sarkinin adi: Beklerim Ben!"); } else { echo ("Lutfen baska bir sarki seciniz!"); } ?>
NOT: ELSEIF komutunu istediginiz kadar kullanabilirsiniz, buna programlama dilinde ELSEIF CASCADE yani ELSEIF caglayani denir.
Cogu zaman if deyimlerini birden fazla kosulu sinayacak sekilde yazariz; bununla birlikte elseif ve else bolumleri olmadan da yazilabilir:
<?php if ( $parola == "" ) { echo ("Sitemize girmek icin parola yazmaniz gerekir.<br>"); echo ("Lutfen parolayi yazin! <br>"); } ?>
Buradaki if deyimi $parola degiskeninin bos alfanumerik olmasi halinde ziyaretciyi uyarak ve gorevi bitecektir. Ziyaretci bir parola yazmissa, daha sonraki komutlar bu parolanin dogru olup olmadigini sinayabiliriz.
switch deyimi PHP'de program akisini yonlendirmekte kullandigimiz bir diger unsur, switch deyimidir. Adi anahtar anlamina gelen switch deyimi, verilen bir degiskenin degerinin siraladigimiz kosullardan hangisine uygun oldugunu sinar ve o kosula iliskin komutlari icra eder. PHP'nin yaptigi isi bitirdikten sonra switch deyiminin disina cikmasini saglayan, break komutu vardir: switch ( degisken ) { case KOSUL-1 ; Kosul-1 dogru ise yapilacak islere iliskin komutlar break; case KOSUL-2 ; Kosul-2 dogru ise yapilacak islere iliskin komutlar break; case KOSUL-3 ; Kosul-3 dogru ise yapilacak islere iliskin komutlar break; case KOSUL-4 ; Kosul-4 dogru ise yapilacak islere iliskin komutlar break; default: diger her durumda yapilacak islere iliskin komutlar }
switch deyimini yazarken mutlaka break ifadesini kullanmamiz gerekmez; switch deyiminin akisi break ile kesilmemisse, program ilk sart yerine gelmis olsa bile diger sartlari da sinamaya devam eder ve en sondaki default deyimine ulasarak (default'tan sonra noktali virgul degil iki nokta ustuste isareti olduguna dikkat edin), bu bolumdeki komutlari icra eder. Ne var ki programcilik mantigina aykiri olabilir: bir degiskenin icerigi verdigimiz sartlardan birini tutmussa, muhtemelen diger sartlari yerine getirmeyecek demektir. Bu durumda diger kosullarin sinanmasi gereksiz e default islerin icra edilmesi ise hata olur. Bu deyimi de bir ornekle gorelim:
switch ( $site ) { case "Birliknet" ; echo ("Tebrikler !!! En dogru yerdesiniz.<br>") ; break; case "Google" ; echo ("Internetin en buyuk arama motoru.<br>") ; break; case "Yahoo" ; echo ("En buyuk portallardan biri.<br>") ; break; case "fettos.net" ; echo ("Fettoscularin burada isi olmaz.<br>") ; break; default: echo ("Sectiginiz siteyi tanimiyoruz.<br>") ; }
Programimiz, bu kodu icra ederken,, $site adli degiskenin degerini, buradaki dort isimle karsilastiracaktir. Sitenin adi, "Birliknet" ise ilk durum gerceklesmis olacak; program Browser pencerisine sitenin adini yazacak ve ikinci adima break ifadesine gececektir. break, switch deyiminin sona ermesini saglar; PHP yoluna, switch deyiminin kapanan suslu parantezinden sonra devam eder. Bu ornekte break ifadesi kullanilmamis olsaydi, PHP, diger sartlari da sinacak ve bosuna zaman kaybedecekti; daha da garibi, en sondaki default komutu da icra edilecegi icin programimiz Browser pencerisine hem secilen sitenin adini, hem de "Sectiginiz siteyi tanimiyoruz." yazacakti. Bunu gozonunde tutarak, switch deyimini daima break ile birlikte yazmamiz gerekir.
switch icin kisa yol
Kimi zaman uzun uzadiya switch deyimi yazmamiz gerekmeyebilir; bir degiskenin degerini sadece bir sarta uygunluk acisindan sinamamiz gerekir. Bunu soru ve iki nokta ustuste isaretleri (? ... olarak yazilan islemci ile yapariz. Diyelim ki, Web sitemizi ziyaret eden kisinin parola yazip yazmadigini siramak istiyoruz: <?php $uyari = ($parola == "" ) ? "Parola yazmaniz gerekir" : "Tesekkur ederiz" ; echo ($uyari); ?>
Bu kod parcacigi, ziyaretcinin parola girip girmedigini $parola degiskeninin icinin bos olup olmadigina bakarak anlayacak ve $parola degiskenin ici bos ise (yani soru isaretinin sorguladigi durumun dogru olmasi halinde) iki nokta ustuskte isaretinden onceki metni $uyari degiskenin icerigi haline getirecek; $parola degiskeninin ici dolu ise (yani kosul yerine gelmiyorsa, durum yanlis ise) iki nokta ustuste isaretinden sonraki metni $uyari degiskeninin icerigi yapacaktir. Bir sonraki echo() komutu ise icerigi bu sinav sonucuna gore belirlennen $uyari degiskeninin degerini Browser penceresinde goruntuleyecektir.
Yararli olmasi dilegiyle.
ONEMLI NOT : Eger dersleri takip eden arkadaslar varsa akillarina takilan sorulari ilgili konu altlarina yazarak daha kolay cevap bulabilirler.
|