İnternet Programcılığı Ders 3.5 || PHP – Şartlar ve Döngüler (Program Denetimi )

İnternet Programcılığı Ders 3.5 || PHP – Program Denetimi

 

3.5. Program Denetimi

Belli bir koşula göre programın işleyişinin değiştirilmesi işlemini denetim komutlarıyla yaparız.

Programın çalışması esnasında birkaç farklı alternatif durum arasından seçim yapmamız, bazı komutları birden fazla tekrarlatmamız, mantıksal kararlar vermemiz ya da istenmeyen hataları önlemek amacıyla programımıza müdahale etmemiz gerekebilir. Bu gibi durumları kontrol altına almak amacıyla kontrol yapılarını ve döngüleri kullanıyoruz. Şarta bağlı olarak işlem yapmak için if ve switch ifadelerini, döngüler için ise for ve while ifadelerini kullanıyoruz. Şimdi bunları sırayla ve örneklerle inceleyelim.

3.5.1. If – Else Kullanımı

Bu deyimin kullanımı aşağıdaki şekildedir:

if ( koşullar )

{

koşullar doğru ise yapılacak işlere ilişkin komutlar

}

else

{

koşul sağlanmamışsa yapılacak işlere ilişkin komutlar

}

Şimdi yukarıda anlatılanları bir programda uygulayalım:

Bu program çalıştırıldığında sayı1 ile sayı2 eşit olmadığı için sizin de tahmin edeceğiniz gibi ekran çıktısı aşağıdaki gibi olacaktır:

Else, kelime manası olarak değilse manasına gelmektedir. If komutu ile else komutu birlikte kullanılır. Eğer şart oluşmamışsa else’den sonraki işlem yürütülür.

Şimdi if else kullanarak daha önce öğrendiğimiz mantıksal AND(&&) parametresini de içeren bir örnek yapalım.

Yukarıdaki programda sifre=1453 , uye =Fatih değerini almıştır. 4. satırda sifre ve uye değerleri kontrol edilip her ikisinin de doğru olması durumunda ekrana “Doğru Giriş Yaptınız” yazmaktadır.

Programda her iki değer de doğru olduğu için giriş doğru olacaktır.Fakat siz iki ve üçüncü satırdaki sifreyi veya uye değerini değiştirerek “Giriş Hatalı” mesajı verdirebilirsiniz.

3.5.2. Else if

İkiden fazla koşulun olduğu durumlarda Else if kullanılır. “Eğer değilse” manasına gelen bu ikili bütün şartları kontrol ettikten sonra kalan son şartı “Else” deyip icra eder.

Bu programda üç ihtimâl vardır: Ali büyük, Osman büyük veya yaşlar eşit. Birinci if deyimi ile (5.satır) Ali’nin büyük olma durumunu, ikinci if deyimiyle (9.satır) Osman’ın büyük olma durumunu sorgulattık. İkisi de değilse (13. Satır) son ihtimâli yazdırdık. Yukarıdaki program çalıştırıldığı zaman birinci şart değil, ikinci şart gerçekleştiği için ekrana “Osman Büyük” ifadesi yazdırılır.

Sizler de 2. satırda bulunan $Ali_yas değişkenine farklı değerler vererek diğer iki ihtimale göre ekran çıktısının değişimini uygulayınız.

Şimdi örneğimizdeki ihtimâl sayısını artırarak farklı bir örnek daha çözelim:

Bu örnekte öğrencinin aldığı puana göre ekrana notunu yazdıran programı yapalım.

Puan-Not tablosu aşağıda verilmiştir.

PUAN NOT
0-24 SIFIR
25-44 BİR
45-54

İKİ

55-69

ÜÇ

70-84 DÖRT
85-100 BEŞ

Yukarıdaki programımız çalıştığı zaman ekran çıktısı aşağıdaki şekilde olmaktadır:

Sizler programımızın 2. satırında bulunan $PUAN değişkenine puan-not tablosundan faydalanarak değişik değerler atayarak puana göre notun değişip değişmediğini kontrol edin.

** $PUAN>85 ibaresi ile $PUAN>=84 ibaresi aynı koşulu ifade etmektedir.

Else if komutunun pekişmesi açısından son bir örnek olarak sayı bulma programı yazalım.

Kişinin tuttuğu sayıyı “Daha Büyük Sayı” veya “Daha Küçük Sayı” gibi yönlendirme mesajlarıyla bulmaya çalışan ve tutulan sayı tahmin edilen sayıya eşit olduğunda da “TEBRİKLER” mesajıyla tahmin edilen sayıyı ekrana yazdıran programı yazalım.

Yukarıdaki örneği, bir sonraki modülün konusu olan form yardımıyla yaparsanız daha kullanışlı bir uygulama olacaktır. Bu örnekte 3.satırdaki tahmin değerine sayı değerinden düşük ve yüksek değerler atayarak programın çalışmasını kontrol edebilirsiniz.

Bu haliyle program çalıştığında ekrana aşağıdaki gibi bir görüntü gelecektir.


Ekran çıktısını incelediğimizde –TEBRİKLER—SAYI ibaresinden sonra birleştirme operatörü (.) kullanılıp boşluk bırakılıp sonra tekrar birleştirme operatörü (.) kullanılıp tutulan sayı yazılmıştır.

Kare içine alınmış iki noktanın arasında bulunan çift tırnaklar boşluk bırakmak amaçlı kullanılmıştır.

 3.5.3. if Deyimi İle Kullanılan Komutlar

Bazı zamanlar if deyimiyle bazı komutlar kullanırız. Bu komutlar yeri geldiğinde formdan gelen bilgilerin derlenmesinde işe yarayabileceği gibi değişkeni kontrol etmek için de kullanılırlar.

Bu komutların görevlerinin anlaşılması belki tanımdan biraz zor olabilir. Ancak örnek

uygulamalarla ne söylemek istenildiği anlaşılacaktır.

Konuyu fazla uzatmamak için bu komutları görevleri ile birlikte aşağıda yazıp sonra örnek uygulamaya geçelim.

isset() : Bu komut bir değişken tanımının içerisinde değer olup olmadığını rapor

eder.


empty() : Buda isset ile aynı işi görür esasında. Ancak sınamayı tersten yapar. isset()te dönen değer true ise emty() de aynı değer false olarak döner.

Yukarıdaki örnekte $sifre değişkeni tanımlanmamış. Dolaysıyla böyle bir değişken ve içeriği de yok. If komutuyla 5. satırda bu kontrolü yaptığımızda değer olmadığı için ekrana “Değişkenin değeri yok.” yazdı.


Esasen burada yapılan işlem değişkenin olup olmadığı değil, değişkenin içinde değer olup olmadığıdır.

Şimdi de aynı örneği değişken tanımlaması yaparak yazalım.

Program çalıştırıldığında ekran görüntümüz, değişken tanımlaması yaptığımız için “Değişken değeri var.” şeklinde değişmiştir.


Php dilinde ünlem(!) işareti tersi manasına gelir. Aşağıda gösterildiği gibi biri diğerinin yerine kullanılabilir.

if(!isset($sifre))==if(empty($sifre))

if(!empty($sifre))==if(isset($sifre))

Siz yukarıdaki örnekleri empty komutu ve ünlem(!) işaretini kullanarak farklı kombinasyonlarda deneyebilirsiniz.


is_integer() : Bu komut değişkenin tamsayı olup olmadığını sınar ve ” True”

veya “False” değeri döndürür.

Örnek uygulama:

Yukarıdaki örnekte iki sayıyı toplayıp ortalamasını aldırdıktan sonra ortalamanın tamsayı olup olmadığını kontrol ettiriyoruz. Örneğimizde ortalama 17/2=8,5 çıkıyor. Dolaysıyla tamsayı değil. Bu nedenle program çalıştığında ekran görüntüsü aşağıdaki gibi olacaktır.


3.5.4. Switch Kullanımı

Türçe karşılığı “anahtar” olan switch deyimi if deyimi gibi görev yapar. Switch, seçilmiş bir değişkenin belli şartlardan hangisine uygun olduğuna bakıp o şart için belirlenmiş işlemleri gerçekleştirir.

Switch ile yaptıklarımızın hepsini if ile yaparız ama if ile yaptığımız her şeyi switch deyimi ile yapamayız.

Örnek bir uygulama ile switch deyiminin kullanımını inceleyelim:

Seçim 1 2 3 4 5 6 7
Günler Pazartesi Salı Çarşamba Perşembe Cuma Cumartesi Pazar

Yukarıdaki tabloda hangi sıra numarasını seçersek o numaraya karşılık gelen günü ekrana yazdıran programı yazalım.

Secim=5 olduğu için ekrana “Cuma” yazacaktır.

Siz $secim değişkenine atanan numarayı değiştirerek) ekranda (2. Satırda) farklı günlerin çıkmasını sağlayabilirsiniz. Seçim aralığı [1-7] dışında bir sayı seçildiğinde böyle bir gün olmadığı için default değer olarak “YANLIŞ SEÇİM” gözükecektir.

Örnek: İki farklı değişkene atılmış sayıları seçime göre toplama, çıkarma, çarpma veya bölme işlemine tabi tutan sonucu ekrana yazdıran programı yazalım.

Bu işlem olarak çarpmayı seçtiğimiz (5.satır) için program 18.satır ile 21. Satır arası çalışıp sonlanmıştır.21.satırda bulunan break komutu switch ten çıkmayı sağlar.

Programın çalışmasından sonraki ekran görüntüsü aşağıdaki gibidir.

3.5.5. Döngüler

Bir işlemin birden fazla tekrarlanması durumunda döngüler kullanılır. Döngüdeki mantık başlangıç ve bitiş değeri belli olan işlemin istenilen aralıklarda tekrarlanmasıdır.

İlköğretimde yaptığımız gibi defterimize adımızı 100 kez yazmak, 1’den başlayarak ikişer ikişer 200’e kadar yazmak veya 100’den geriye doğru beşer beşer yazmak birer basit döngü örnekleri olarak verilebilir.

***Döngü sayısı için başlangıç-bitiş ve artış değerleri önemlidir.1 den 100’e kadar olan bir işlemde artış miktarı 2 olarak ayarlanırsa döngü içindeki komutlar 50 defa çalıştırılacaktır.

Döngü işlemleri for ve while komutlarıyla yapılır.

3.5.5.1. for Döngüsü

For döngüsünün kalıbı aşağıdaki gibidir:

for (döngü değişkeni=başlangıç değeri; şart; değişim miktarı)

{

yapılacak işlemler

}

Örnek: Ekrana 8 defa “MERHABA PHP” yazan programı yazalım.

Bu programda $i değişkeni sayaç değişkenidir. Programın 2.satırında gördüğünüz gibi

$i değeri 1’den başlamış, küçük eşit 8 oluncaya kadar değerini birer birer artırmıştır.

Her artırma işleminde ise süslü parantez arasındaki komutu çalıştırmıştır. Bu işlemi toplam 8 defa yapmıştır. Dolayısıyla programın çalışmasından sonraki ekran görüntüsü aşağıdaki gibi olmuştur.

Örnek: 1’den başlayarak 10′ a kadar ekrana alt alta yazdırmak istiyoruz.

Döngü işlemlerinde bir tane sayaç olmak zorundadır. Bu sayacın görevi her seferinde döngünün kaçıncı defa işlendiğini tutmaktır. Bu örnekte kullanılan $i sayacı aynı zamanda

4. Satırda ekrana yazılmaktadır.


Şimdi yukarıdaki iki örneği birleştirip bir örnekte gösterelim.

Örnek: Ekrana 1’den başlayıp sıra numarası vererek ekrana 10 defa ” MERHABA PHP ” yazdıralım.

1.MERAHABA PHP

2.MERAHABA PHP

.

.

.

.

.

10.MERAHABA PHP gibi

Programın 5. satırında hem sayaç hem de metin birleştirme operatörü kullanılarak döngüye girmiş ve ekrana yazılmıştır.

Programın çalışması aşağıdaki şekilde olmaktadır:


Biz döngülerin içine aynı zamanda html etiketlerini de ekleyebilir, onları döngülerle beraber kullanarak çok değişik örnekler yapabiliriz.

Örnek: Ekrana 900 pix uzunluğunda alt alta 10 tane çizgiyi döngü yardımıyla çizdirelim.

Yukarıdaki programı çalıştırdığımız zaman ekrana alt alta 10 tane 900 pixel genişliğinde kırmızı renkte çizgi çizer. Programın çalışma görüntüsü aşağıdaki gibi olmaktadır.

Örnek: İstenilen satır ve sütun sayısı kadar tablo oluşturan ve her bir hücreye top resmi ekleyen programı yazınız.(Top.jpg resmini programı çalıştırdığınız dizine ekleyiniz, resmin boyutlarını 100×100 pixel olarak ayarlayınız.)

Yukarıdaki örnekte satır sayı değerini 4, sütun sayı değerini 3 verelim. Tek tablo oluşacağı için 4. Satırdaki tablo başlangıç etiketi döngü dışında kalıyor.

Burada iç içe iki tane döngü kullandık. Dıştaki döngü satır, içteki döngü sütun oluşturmak için kullanılacaktır. Önce, dıştaki döngü ile satır oluşturulmakta, daha sonra her satırda kaç tane sütun varsa içteki döngü yardımıyla o kadar sütun oluşturulmaktadır. Her satırdaki sütün oluşturma işlemi bitince dıştaki döngü devreye girip bir sonraki satırı oluşturmaktadır. İşlem bu şekilde satır sayısı bitinceye kadar devam etmektedir. Döngüler bittiğinde tablo kapatılmakta ve program tamamlanmaktadır.

Program çalıştırıldığında aşağıdaki şekilde bir görüntü elde edilmektedir:

3.5.5.2. While Döngüsü

While döngüsü for döngüsü ile aynı işlemi yapmaktadır. While Döngüsü, tanımlanan koşul sağlandığı sürece döngü içerisine yazılan komut ifadesinin veya komut ifadelerinin çalıştırılmasını sağlar.

Şart ifadesinin doğruluğu her döngünün başında kontrol edilir, buna göre döngünün içerisindeki komut ifadeleri çalıştırılmaya devam eder ya da döngü sona erer. Eğer şart sağlanmıyorsa döngü hiç çalışmaz.

While döngüsünün kalıbı aşağıdaki gibidir:

while(şart)

{

Yapılacak işlemler

}

Örnek bir program üzerinde while döngüsünü inceleyelim. Daha önce for döngüsü ile yaptığımız 1′ den 10′ a kadar olan sayıları yazdıran programı while döngüsü ile yazalım. Böylece hem while döngüsünün kullanımını hem de iki döngü arasındaki farkları görmüş olacağız.

Yukarıdaki programda ilk olarak tanımlanan bir “i” değişkenine 1 değeri atanmaktadır. While döngüsü, “i”, 10′ dan küçük olduğu sürece çalışacak şekilde kurulmuştur.

Programın 5. ve 6. satırlarında i’nin değeri ekrana yazdırılmakta ve bir satır alta inilmektedir. $i++; komutu önemlidir, çünkü “i” değeri bu komutla değiştirilmektedir.

Döngümüz i değerine bağlı olarak kurulmuştur. i değerinin sabit kalması durumunda

($i<=10) ifadesi (1<=10) olarak kalacağından sürekli true sonucunu döndürecektir.

While (True): Döngüye gir,

While (False): Döngüye girme,

anlamına gelmektedir.

Dikkat edilmesi gereken bir başka nokta ise $i++ ifadesi (Bu değer değişikliği komutunu farklı artış ve azalmalar sağlayacak şekilde de yazabilirsiniz.) döngümüzün

sonunda olduğu için döngümüzün son çalıştığı seferde (i=10 durumunda) son bir kez daha

bir artırılarak 11’e eşit olacaktır. 11<=10 ifadesi false sonucu döndürdüğünden döngü çalışmayacaktır.

Örnek: Bu uygulamada alfa numerik karakterleri (Türkçe karaktersiz) yan yana aralarına tire(-) işareti koyarak while döngüsü yardımıyla yazdıralım.

Bu program çalıştırıldığı zaman ekranda aşağıdaki gibi bir görüntü verir:


Bu programın, diğer uygulamalardan farklı olarak sadece numerik(sayısal) karakterde değil alfa numerik(alfabetik) karakterlerde de artırma ve azaltma işlemi yapabildiğini gördük.

 

Bir cevap yazın

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