tolga gÜyer ©2009-2010 bolum.pdf · bir html deyimidir. bu deyim içersinde, “size“...

335
PHP Programlama 2. Bölüm Tolga GÜYER ©2009-2010

Upload: others

Post on 04-Oct-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

PHP Programlama2. Bölüm

Tolga GÜYER©2009-2010

Page 2: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

İçindekiler

2PHP Programlama - 2. Bölüm Tolga GÜYER

2.1 Sözdizim Yapısı2.2 Yorum Satırları2.3 Veri Türleri2.4 Değişkenler ve Sabitler2.5 Operatörler2.6. Diziler2.7 Akış Kontrol Deyimleri

Page 3: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

İçindekiler

3PHP Programlama - 2. Bölüm Tolga GÜYER

2.8 Öğrendiklerimizi Uygulayalım: Sihirli Kareler

2.9 Fonksiyonlar2.10 Öğrendiklerimizi Uygulayalım:

Bilgisayar Parçaları Siparişi

Page 4: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Bir programlama dilinin sözdizimi (syntax), noktalama işaretleri, parantezler ya da operatörler gibi nesnelerin, o dilin yapısına uygun olarak kulanım kurallarını belirler. Söz gelimi, PHP dilinde de Pascal diline benzer olarak her program deyiminin noktalı virgül işareti ile sonlandırılması zorunluluğu bir sözdizim kuralıdır.

4PHP Programlama - 2. Bölüm Tolga GÜYER

Page 5: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Burada vurgulanması gereken önemli bir nokta, satırların değil, deyimlerin sonuna noktalı virgül konulmasıdır. Çünkü PHP çözümleyicisi kaynak kodları satır satır değil, ayıraç sembolü olarak noktalı virgül işaretini kullanarak yorumlar.

5PHP Programlama - 2. Bölüm Tolga GÜYER

Page 6: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

PHP kodları çoğunlukla HTML kodları ya da Javascript, VBscript gibi diğer dillerle beraber kullanıldığından, bir kod bütününde PHP çözümleyicisinin görev alanının nerede başladığı ve nerede sona erdiğinin belirlenmesi amacıyla <?php … ?> etiketleme sistemi kullanılır.

6PHP Programlama - 2. Bölüm Tolga GÜYER

Page 7: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Örneğin,

7

<?phpecho “Merhaba Dünya!”;

?>

kodu doğrudan PHP çözümleyicisi tarafından yorumlanarak çalıştırılabilecek bir koddur. Kodun işlevi ise ekrana Merhaba Dünya metnini yazdırmaktır.

PHP Programlama - 2. Bölüm Tolga GÜYER

Page 8: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Aynı işleve sahip, ancak bu defa HTML kodu içersine “gömülmüş” durumda olan bir başka PHP kodu aşağıda gösterilmiştir.

8

<html><body><?php

echo "Merhaba Dünya!";?></body></html>

PHP Programlama - 2. Bölüm Tolga GÜYER

Page 9: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Bu durum, birinci bölümde de bahsedildiği gibi “HTML’den kaçış” olarak adlandırılır. Ancak HTML kodları içersinde yer alan PHP deyimlerinin web tarayıcısı tarafından çözümlenerek çalıştırılabilmesi için bu kodu içeren dosyanın “php” uzantısına sahip olması gerektiğini unutmayalım.

9PHP Programlama - 2. Bölüm Tolga GÜYER

Page 10: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Ekrana yazdırmak istediğimiz ifadeler için, echo ya da print deyimlerini kullanırız. Bu deyimlerden sonra çift tırnak sembolü içersinde yazacağımız ifadeler, bazı özel durumların dışında, doğrudan yazıldığı şekliyle ekrana basılacaktır.

10PHP Programlama - 2. Bölüm Tolga GÜYER

Page 11: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Örneğin,

11

kodunun çıktısı aşağıdaki gibi olur:

<html><body><?php

echo "Merhaba Dünya!";?></body></html>

Merhaba Dünya!

PHP Programlama - 2. Bölüm Tolga GÜYER

Page 12: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

…biçiminde olacaktır. Ancak kullanıcının internet tarayıcısında Türkçe harflerin düzgün görüntülenebilmesi için UTF8 gibi Türkçeye uygun bir karakter kodlama sisteminin seçilmiş olmasının gerektiğini de hatırlatalım.

12PHP Programlama - 2. Bölüm Tolga GÜYER

Page 13: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

13

<?phpecho “Merhaba ”;echo “Dünya!”;

?>

koduna ait ekran çıktısı ise;Merhaba Dünya!

biçiminde olur.

PHP Programlama - 2. Bölüm Tolga GÜYER

Page 14: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Görüldüğü gibi farklı echo deyimleri kullanılarak yazılsalar da, ifadeler aynı satırda görüntülenmektedir. Eğer ifadeleri farklı satırlarda görmek istiyorsak, bu durumda yazacağımız koda küçük bir ek yapmamız gerekir.

14PHP Programlama - 2. Bölüm Tolga GÜYER

Page 15: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

15

koduna ait ekran çıktısı;MerhabaDünya!

biçiminde olur.

<?phpecho “Merhaba”;echo “<br>”; echo “Dünya!”;

?>

PHP Programlama - 2. Bölüm Tolga GÜYER

Page 16: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Bu örnek küçük ama önemli bir bilgiyi içermektedir. İkinci echo deyimi ile yazdırdığımız ”<br>” ifadesi ekrana herhangi bir şey yazmamış, bunun yerine birinci ve üçüncü echo deyimlerinin yazdıkları ifadelerin arasında satırbaşı yapma işlevini sağlamıştır. <br> İfadesi aslında bir HTML etiketidir ve işlevi de tam olarak budur.

16PHP Programlama - 2. Bölüm Tolga GÜYER

Page 17: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Dolayısıyla internet tarayıcısı echo deyimi ile ekrana yazılacak ifadeleri denetlemekte, bu ifadeleri HTML kodu olarak yorumladığı takdirde doğrudan ekrana yazmak yerine çalıştırmakta ve sonucunu görüntülemektedir.

17PHP Programlama - 2. Bölüm Tolga GÜYER

Page 18: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

echo Deyimi kullanılarak gerçekleştirilmiş, PHP içersinden çalıştırılan HTML kodlarına verilebilecek başka bir örnek;

18

<?phpecho "<p><strong>Merhaba Dünya!</strong></p>";

?>

şeklindedir. Bu koda ait ekran çıktısı ise;Merhaba Dünya!

biçiminde olacaktır.PHP Programlama - 2. Bölüm

Tolga GÜYER

Page 19: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Bu yöntemde karşılaşabileceğimiz bir problem, çift tırnak işaretlerinin kullanımında yaşanacaktır. Şöyle ki çift tırnak, bir yandan echo deyiminin etki alanının belirlenmesinde kullanılırken, diğer yandan bir çok HTML deyiminde değerlerin belirlenmesinde kullanılmaktadır.

19PHP Programlama - 2. Bölüm Tolga GÜYER

Page 20: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Bu gibi durumlarda PHP dili için özel karakterlerden birisi olan \ (ters bölü) işaretin kullanılır.

Bir sonraki örneğimiz, bu işaretin kullanımına ilişkindir.

20PHP Programlama - 2. Bölüm Tolga GÜYER

Page 21: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

21PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpecho "<font size=\"5\">KATILIMCILAR</font>";echo "<p>";echo "1. Murat SÖNMEZ<br>";echo “2. Arzu ŞAFAK<br>";echo “3. Mustafa YÜZEN<br>";echo “4. Meral ALSANCAK";echo "</p>";

?>

koduna ait ekran çıktısı;

Page 22: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

22PHP Programlama - 2. Bölüm Tolga GÜYER

biçiminde olacaktır.

KATILIMCILAR

1. Murat SÖNMEZ2. Arzu ŞAFAK3. Mustafa YÜZEN4. Meral ALSANCAK

Page 23: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Sözdizim Yapısı

Burada, ilk echo deyimi ile yazdırılan ifade bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu çift tırnak işaretlerinin, echo deyimine ait olan ve PHP tarafından dikkate alınacak olan (kodda kırmızı renkte gösterilmişlerdir) çift tırnaklardan ayırt edilebilmeleri için \işareti kullanılmıştır.

23PHP Programlama - 2. Bölüm Tolga GÜYER

Page 24: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Yorum Satırları

Kod içersinde, PHP tarafından dikkate alınmayan, kodu inceleyene açıklama yapmak amaçlı olarak yorum satırları yer alabilir. Tek satırlı ya da çok satırlı olarak yorum satırları eklenebilir. Aşağıda, koda farklı şekillerde eklenmiş yorum satırları görülmektedir.

24PHP Programlama - 2. Bölüm Tolga GÜYER

Page 25: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Yorum Satırları

25PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpecho ‘PHP ’; // Bu, tek satırlık c++ türünde

bir yorum satırıdır./* Bu bir çok-satırlı

yorumdur. Yazılırken <Enter> tuşu kullanılmıştır. */

echo ‘öğreniyorum!’; # Bu da, tek satırlık kabuk (shell) türünde bir yorum satırıdır.?>

Bu durumda kodun çıktısı,PHP öğreniyorum!

biçiminde olacaktır.

Page 26: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Veri Türleri

PHP dili temel programlamada, geleneksel dillerde olduğu gibi değişkenlerin veri türlerinin önceden belirlenmesine gereksinim duymamaktadır. Değişkenin deklare edilmesi olarak adlandırılan bu işlem, PHP’de değişkene ilk değeri atandığı sırada gerçekleşir. Diğer bir deyişle, değişkene ilk değerini atadığınızda, aslında o değişkene ait veri türünü de deklare etmiş olursunuz.

26PHP Programlama - 2. Bölüm Tolga GÜYER

Page 27: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Veri Türleri

Üç temel veri türünü, sayısal olmayan string-tabanlı türler (text, string, char gibi), sayısal türler (integer, double gibi) ve diziler (array) şeklinde sıralayabiliriz.

27PHP Programlama - 2. Bölüm Tolga GÜYER

Page 28: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Veri Türleri

Diziler, özel tanımlama özelliklerine sahip olduklarından, diğer veri türlerinden kolaylıkla ayırt edilebilirler. String-tabanlı türler ise, aritmetik işlemlerde kullanılmayan türlerdir ve sayısal türlerle aralarındaki en önemli fark, bu türdeki değerlerin “ (çift tırnak) işreti arasında yer almalarıdır.

28PHP Programlama - 2. Bölüm Tolga GÜYER

Page 29: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Veri Türleri

Örneğin,2değeri sayısal bir veri türü iken,“2” değeri 1 baytlık bir string, yani karakter türünde olacaktır. Dolayısıyla dönüştürme işlemi uygulanmadan aritmetik işlemlerde kullanılamaz.

29PHP Programlama - 2. Bölüm Tolga GÜYER

Page 30: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Programların çalıştıkları sırada kullandıkları değerleri bellekte saklama zorunlulukları vardır. Bunlar kullanıcılar tarafından girilen değerler olabilecekleri gibi, doğrudan programın kendi ürettiği sonuçlar da olabilir.

30PHP Programlama - 2. Bölüm Tolga GÜYER

Page 31: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Değerlerin saklandıkları dil bileşenleri değişkenler ve sabitler olarak adlandırılırlar. Birbirlerine çok yakın bir işleve sahip olan bu bileşenler arasındaki temel fark, değişkenlerin taşıdıkları değerlerin programın çalışması süresince dinamik olarak değişebilmesi, buna karşılık sabitlerin değerlerini korumalarıdır.

31PHP Programlama - 2. Bölüm Tolga GÜYER

Page 32: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Değişkenler

Bir değişken için iki önemli özellik söz konusudur: Değişkenin adı ve sakladığı verinin türü.

32PHP Programlama - 2. Bölüm Tolga GÜYER

Page 33: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

PHP dili, güçlü-türlendirilmiş diller (strongly-typed languages) sınıfına girmediğinden, değişkenlerin bu dillerde olduğu gibi önceden tanımlanmasına (deklare edilmesine) gerek yoktur. Dolayısıyla bir değişken, doğrudan ilk değer ataması ile otomatik olarak deklare edilmiş olacaktır.

33PHP Programlama - 2. Bölüm Tolga GÜYER

Page 34: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

PHP dilinde değişkenleri diğer dil öğelerinden ayıran simge $ (dolar) işaretidir. Her değişken adı, $ işareti ile başlar ve “değişken isimlendirme kuralları” gözetilerek isimlendirilir.

34PHP Programlama - 2. Bölüm Tolga GÜYER

Page 35: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Değişkenleri isimlendirirken dikkat etmemiz gereken kuralları aşağıda verilmiştir:1. Bir değişken ismi, bir harf ya da _ (alt

tire) sembolü ile başlayabilir.2. Bir değişken ismi sadece alfa-nümerik

karakterleri (a-z, A-Z, 0-9) ve alt tireyi (_) içerebilir. Türkçe harfler (ç,Ç,ğ,Ğ,ı,İ,ö,Ö,ü,Ü) bunlara dahil değildir.

35PHP Programlama - 2. Bölüm Tolga GÜYER

Page 36: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

3. Değişken isimleri boşluk içeremezler. Ayırma gerektiğinde alt tire (bolum_kodu gibi) ya da büyük harfler (bolumKodugibi) kullanılabilir.

36PHP Programlama - 2. Bölüm Tolga GÜYER

Page 37: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Bu durumda PHP dilinde bir değişkenin deklarasyonu ve değer ataması, genel olarak aşağıdaki şekilde olacaktır:$degisken_adi = deger;Daha somut bir örnek aşağıda verilmiştir:

37PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$metin=“Merhaba!";$sayi=7;

?>

Page 38: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Burada $metin, ismi “metin” olan stringtüründe bir değişken olarak tanımlanmıştır. $sayi ise “sayi” adında tamsayı türünde bir değişken olarak kullanılmıştır.“= ” sembolü ile yapılan bu işleme “değer atama” adı verilir. Değer atama işlemi = sembolünün sağından soluna doğru yapılır. Dolayısıyla eşitliğin solunda mutlaka bir değişken sembolü bulunmalıdır.

38PHP Programlama - 2. Bölüm Tolga GÜYER

Page 39: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Değer aktarmalarda, aktarılan değerler otomatik olarak ekranda görüntülenmezler. Bunun için yine echo deyiminden yararlanabiliriz:

39PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$metin=“Merhaba!";$sayi=7;echo $metin; echo $sayi;

?>

Page 40: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Bu kodun ekran çıktısı;

40PHP Programlama - 2. Bölüm Tolga GÜYER

Merhaba!7

şeklinde olacaktır.

Page 41: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Değişkenlerin içerdikleri değerler ile sabit metinleri bir arada görmek istediğimizde, yine çift tırnak işaretinden yararlanabiliriz:

41PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$metin="Merhaba!";$sayi=7;echo "Metin:$metin Sayı:$sayi";

?>

Page 42: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Bu kodun ekran çıktısı ise;

42PHP Programlama - 2. Bölüm Tolga GÜYER

Metin:Merhaba! Sayı:7

şeklinde olacaktır.

Page 43: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

PHP diline özgü oldukça kullanışlı özelliklerden birisi de, değişkenlerin taşıdıkları değerleri kullanarak yeni değişkenler türetebilme yeteneğidir.Aşağıdaki örneği inceleyelim:

43PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$a = 'merhaba';$$a = 'dünya';echo $merhaba;

?>

Page 44: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Bu durumda ekran çıktısı;

44PHP Programlama - 2. Bölüm Tolga GÜYER

dünya

biçiminde olacaktır.

Page 45: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Burada, $a değişkeninin değeri olan “merhaba” metni kullanılarak yeni bir $merhaba değişkeni tanımlanmış, bu değişkene değer olarak da “dünya” metni aktarılmıştır. Bu işlem, ikinci bir $ simgesi kullanılarak gerçekleştirilmiştir.

45PHP Programlama - 2. Bölüm Tolga GÜYER

Page 46: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Aynı çıktıyı aşağıdaki kod ile elde etmek mümkündür:

46PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$a = 'merhaba';$$a = 'dünya';echo "${$a}";

?>

Page 47: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Bu durumda aşağıdaki kodun ekran çıktısı;

47PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$a = 'merhaba';$$a = 'dünya';echo "$a ${$a}";

?>

merhaba dünya

biçiminde olacaktır.

Page 48: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Sabitler

Değişkenlere benzerler, ancak sabitlerin taşıdıkları değerler, programın çalışması süresince aynı kalır. “Define” bildirimi kullanılarak tanımlanırlar.

48PHP Programlama - 2. Bölüm Tolga GÜYER

Page 49: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Aşağıda sabit tanımlama ile ilgili örnek bir kod parçası verilmiştir:

49PHP Programlama - 2. Bölüm Tolga GÜYER

define("kasa_ucreti", 85.50);define("anakart_ucreti", 150.0);define("islemci_ucreti", 275.30);define("sabitdisk_ucreti", 120.80);define("cddvd_ucreti", 90.0);define("bellek_ucreti", 134.20);

Page 50: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Değişkenler ve Sabitler

Görüldüğü gibi sabitler, değişkenlerden farklı olarak isimlerinin başlarında $ simgesi taşımazlar. Aşağıda, yukarıda tanımlanan sabitlerin nasıl kullanılacağına ilişkin örnek kod parçası verilmiştir:

50PHP Programlama - 2. Bölüm Tolga GÜYER

$toplam_birim_fiyat = kasa_ucreti + anakart_ucreti+ islemci_ucreti + sabitdisk_ucreti+ cddvd_ucreti + bellek_ucreti;

Page 51: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

Operatörler, değerler üzerinde işlemlerin gerçekleştirilmesinde kullanılırlar ve dilin en önemli bileşenlerindendirler. PHP operatörlerini genel olarak dört kategori altında toplayabiliriz.

51PHP Programlama - 2. Bölüm Tolga GÜYER

Page 52: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

1. Aritmetik Operatörler2. Değer Atama Operatörleri3. Karşılaştırma Operatörleri4. Mantıksal Operatörler

Şimdi bunları ayrı ayrı ele alalım.

52PHP Programlama - 2. Bölüm Tolga GÜYER

Page 53: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

Aritmetik Operatörler

Değişkenler ve sabit değerler üzerinde her türlü aritmetik işlem, aritmetik operatörler kullanılarak gerçekleştirilir. PHP diline özgü olarak . (nokta) sembolü de metinsel birleştirme işlevine sahiptir ve aritmetik operatörler tablosunda gösterilmiştir.

53PHP Programlama - 2. Bölüm Tolga GÜYER

Page 54: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

54PHP Programlama - 2. Bölüm Tolga GÜYER

Operatör Tanımı Örnek Sonuç+ Toplama $x=2

$sonuc=$x+2 4- Çıkartma $x=2

$sonuc=$x-1 1* Çarpma $x=4

$sonuc=$x*5 20/ Bölme $x=15

$sonuc1=$x/5$sonuc2=$x/2

37.5

% Mod (Bölmede kalan) $sonuc1=5%2$sonuc2=10%8$sonuc3=10%2

120

Page 55: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

55PHP Programlama - 2. Bölüm Tolga GÜYER

Operatör Tanımı Örnek Sonuç++ Artırma $x=7

$x++ $x=8-- Azaltma $x=10

$x-- $x=9. Metinsel birleştirme $x1=“LAB”

$x2=“101”$sonuc=$x1.$x2 “LAB101”

Page 56: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

Değer Atama Operatörleri

Temel değer atama operatörü = simgesidir. Atama, bu simgenin sağından soluna doğru gerçekleşir.

56PHP Programlama - 2. Bölüm Tolga GÜYER

Page 57: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

Diğer operatörler = operatörünün aritmetik operatörlerle birlikte kullanılması ile türetilmişlerdir. Bunlar, bir aritmetik işlem ve sonrasında gerçekleştirilecek değer atama işlemini birleştirerek tek seferlik bir atama işlem haline getirirler.

57PHP Programlama - 2. Bölüm Tolga GÜYER

Page 58: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

58PHP Programlama - 2. Bölüm Tolga GÜYER

Operatör Örnek Eşdeğer İşlem= $x=$y $x=$y+= $x+=$y $x=$x+$y-= $x-=$y $x=$x-$y*= $x*=$y $x=$x*$y

/= $x/=$y $x=$x/$y.= $x.=$y $x=$x. $y%= $x%=$y $x=$x%$y

Page 59: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

Karşılaştırma Operatörleri

Karşılaştırma operatörleri, ilerleyen kesimlerde ele alacağımız koşullu ifadelerde kullanılmaktadır. Bir karşılaştırma işlemi, true (doğru) ya da false (yanlış) değerini üretir.

59PHP Programlama - 2. Bölüm Tolga GÜYER

Page 60: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

Tabloda PHP dilinde kullanılan karşılaştırma operatörleri örnekler verilerek açıklanmıştır.

60PHP Programlama - 2. Bölüm Tolga GÜYER

Page 61: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

61PHP Programlama - 2. Bölüm Tolga GÜYER

Operatör Tanımı Örnek== Eşittir 3==2 false değer üretir!= Eşit değildir 3!=2 true değer üretir> Büyüktür 3>2 true değer üretir< Küçüktür 3<2 false değer üretir>= Büyük ya da eşittir 3>=2 true değer üretir<= Küçük ya da eşittir 3<=2 false değer üretir

Page 62: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

Mantıksal Operatörler

Karşılaştırma operatörleri, ilerleyen kesimlerde ele alacağımız koşullu ifadelerde kullanılmaktadır. Bir karşılaştırma işlemi, true (doğru) ya da false (yanlış) değerini üretir.

62PHP Programlama - 2. Bölüm Tolga GÜYER

Page 63: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

Tabloda PHP dilinde kullanılan karşılaştırma operatörleri örnekler verilerek açıklanmıştır.

63PHP Programlama - 2. Bölüm Tolga GÜYER

Page 64: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Operatörler

64PHP Programlama - 2. Bölüm Tolga GÜYER

Operatör Tanımı Örnek&& ve $x=8

$y=5 ($x < 10 && $y > 1) true değer üretir

|| veya $x=8$y=5($x==5 || $y==5) true değer üretir

! değil $x=8$y=8 !($x==$y) false değer üretir

Page 65: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Aynı türden verilerin tek bir değişken ile temsil edilmeleri gerektiğinde kullanılırlar.

Aynı türden olan, ancak sayıları çok fazla olan farklı verilerin saklanması gerektiğinde, tanımlanması gereken değişken sayısı da paralel olarak artacağından, bu gibi durumlarda önemli bir işleve sahiptirler.

65PHP Programlama - 2. Bölüm Tolga GÜYER

Page 66: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

İleriki bölümlerde ele alacağımız döngüsel yapılarla kullanıldıklarında, gereksiz kod yazımını da önemli ölçüde azaltan diziler (array), tek boyutlu ve çok boyutlu olarak sınıflandırılabilirler.

66PHP Programlama - 2. Bölüm Tolga GÜYER

Page 67: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Tek Boyutlu Diziler

Konuya bir örnekle başlayalım:

67PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$arabalar1="Honda";$arabalar2="Volvo";$arabalar3="BMW";$arabalar4="Toyota";

?>

Page 68: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Sadece dört tane araba markasını saklamak istediğimizden, dört tane farklı değişken kullandık. Ama ya 400 farklı markayı saklamak isteseydik?

68PHP Programlama - 2. Bölüm Tolga GÜYER

Page 69: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Aynı örneği, dizi kullanarak yapalım:

69PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$arabalar=array("Honda","Volvo","BMW","Toyota");?>

Bu defa tanımlamış olduğumuz tek bir değişken olan $arabalar’dır. Ancak bu değişken, “array” bildirimi kullanılarak oluşturulmuş bir dizidir.

Page 70: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Aynı tanımlamayı farklı bir şekilde de yapabilirdik:

70PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$arabalar[0]="Honda";$arabalar[1]="Volvo";$arabalar[2]="BMW";$arabalar[3]="Toyota";

?>

Bu tanımlamada, dizinin indisi adı verilen köşeli parantezlerin içersinde yer alan değerleri kendimiz belirledik.

Page 71: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Her iki tanımlama için de aşağıdaki kod parçası,

71PHP Programlama - 2. Bölüm Tolga GÜYER

echo "$arabalar[0] ve $arabalar[3] Japon otomobil markalarıdır.";

aynı ekran çıktısını verecektir:Honda ve Toyota Japon otomobil markalarıdır.

Page 72: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Dizilerin indislerinin sayısal olmaları zorunluluğu yoktur.

72PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$uretici['Honda'] = 'Japonya';$uretici['Volvo'] = 'İsveç';$uretici['BMW'] = 'Almanya';$uretici['Toyota'] = 'Japonya';echo "Volvo'nun üreticisi "

.$uretici['Volvo'].“’dir.";?>

Volvo’nun üreticisi İsveç’dir.

Page 73: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

İlişkilendirilmiş İndisler

Dizileri tanımlamanın diğer bir yolu da, => operatörünü kullanarak indisle değeri doğrudan ilişkilendirmektir.

73PHP Programlama - 2. Bölüm Tolga GÜYER

Page 74: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Bu duruma bir örnek aşağıda verilmiştir:

74PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$uretici = array("Honda"=>"Japonya",

"Volvo"=>"İsveç", "BMW"=>"Almanya", "Toyota"=>"Japonya");

echo "Honda ve Toyota'nın üreticisi "

.$uretici['Honda'].“’dır.";?>

Honda ve Toyota’nın üreticisi Japonya’dır.

Page 75: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Çok Boyutlu Diziler

Çok boyutlu dizilerin yapısal olarak tek boyutlu dizilerden bir farkı yoktur. İndis sayısı birden fazla olduğu durumlarda dizi çok boyutlu olarak adlandırılır.

75PHP Programlama - 2. Bölüm Tolga GÜYER

Page 76: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Teorik olarak n>1 olmak üzere n-boyutlu bir dizi tanımlanabilir, ancak pratikte iki boyuttan sonra dizinin kontrolü oldukça güçleşmektedir.

İki boyutlu dizileri, tablolar biçiminde ifade edebildiğimiz türden verileri saklamak için kullanırız.

76PHP Programlama - 2. Bölüm Tolga GÜYER

Page 77: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Örneğin, aşağıdaki veri tablosunu göz önüne alalım:

77PHP Programlama - 2. Bölüm Tolga GÜYER

Buğday Arpa Mısır Tütün

2005 145 90 210 552006 167 60 120 652007 180 45 130 1212008 317 120 134 1522009 62 261 34 135

Page 78: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Tabloda son beş yıla ait Buğday, Arpa, Mısır ve Tütün üretimi ton olarak verilmiştir. Şimdi bu tablodaki verileri atayacağımız iki boyutlu bir dizi tanımlayalım.

78PHP Programlama - 2. Bölüm Tolga GÜYER

Page 79: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

79PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$uretim = array ( "2005" => array( "Buğday"

=> 145,"Arpa" => 90, "Mısır" => 210,"Tütün" => 55), "2006" => array( "Buğday" => 167,"Arpa" => 60, "Mısır" => 120,"Tütün" => 165), "2007" => array( "Buğday" => 180,"Arpa" => 45, "Mısır" => 130,"Tütün" => 121), "2008" => array( "Buğday" => 317,"Arpa" => 120,"Mısır" => 134,"Tütün" => 152), "2009" => array( "Buğday" => 62, "Arpa" => 261,"Mısır" => 34, "Tütün" => 135));

echo "2006 yılında toplam mısır üretimi " . $uretim["2006"]["Mısır"] . " ton olmuştur.";?>

2006 yılında toplam mısır üretimi 120 ton olmuştur.

Page 80: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Görüldüğü gibi iki boyutlu diziler, aslında her bir satırı tek boyutlu diziden oluşan matris tipindeki yapılardır. Bu yapıda her satırın aynı türdeki verilerden oluşması yeterlidir, dizinin tamamının aynı türde verilerden oluşma zorunluluğu yoktur.

80PHP Programlama - 2. Bölüm Tolga GÜYER

Page 81: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Örneğin:

81PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$dizi = array("üniversiteler" => array ( "a"

=> "Gazi", "b" => "Ankara", "c" => "Hacettepe" ),"sayılar" => array ( 1, 2, 3, 4, 5, 6 ),"yıllar" => array ( "1998", 2 => "1999", "2000"));

echo $dizi["üniversiteler"]["a"]."<br>";echo $dizi["üniversiteler"]["c"]."<br>";echo $dizi["sayılar"][0]."<br>";echo $dizi["sayılar"][3]."<br>";echo $dizi["yıllar"][0]."<br>";echo $dizi["yıllar"][2]."<br>";echo $dizi["yıllar"][1];

?>

Page 82: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Örnek koda ait ekran çıktısı aşağıdaki gibi olacaktır:

82PHP Programlama - 2. Bölüm Tolga GÜYER

GaziHacettepe1419981999

Page 83: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

Kod içersinde 7 tane echo satırı olmasına karşın, çıktıda sadece 6 tane farklı satır görülmektedir. Bunun sebebi, son echosatırında [“yıllar”][1] indisli terimde herhangi bir verinin bulunmamasıdır. Tanımlama biçiminden dolayı bu indis için sadece [“yıllar”][0], [“yıllar”][2] ve [“yıllar”][3] terimleri değer içermektedir.

83PHP Programlama - 2. Bölüm Tolga GÜYER

Page 84: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler Dizilerde Kullanılan Operatörler

84PHP Programlama - 2. Bölüm Tolga GÜYER

Operatör Tanımı İşlevi$a + $b Birleştirme $a ve $b dizilerini birleştirir.

$a == $b EşitlikEğer $a ve $b dizileri aynı indislere ve değerlere sahipse TRUE değerini alır.

$a === $b DenklikEğer $a ve $b dizileri aynı indislere ve aynı türde değerlere aynı sırada sahipse TRUE değerini alır.

$a != $b$a <> $b Eşitsizlik Eğer $a ve $b dizileri eşit değilse

TRUE değerini alır.

$a !== $b Denk değil Eğer $a ve $b dizileri denk değilse TRUE değerini alır.

Page 85: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

85PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$a = array("a" => "elma", "b" => "muz");$b = array("a" => "kayısı", "b" => "çilek",

"c" => "vişne");$c = $a + $b;echo($c["a"]."<br>");echo($c["b"]."<br>");echo($c["c"]."<br>");

?>

elmamuzvişne

Page 86: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Diziler

86PHP Programlama - 2. Bölüm Tolga GÜYER

Kayısı ve çilek nereye gitti? Aynı örneği bu iki dizinin değerlerini üçüncü bir dizide veri kaybı olmayacak şekilde birleştirecek şekilde geliştiriniz.

Page 87: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

PHP programlarının normal akışı, yukarıdan aşağıya doğru doğrusal olarak gerçekleşmektedir. Ancak programcı tarafından bu akışın doğrusallığı zaman zaman sıçramalı ya da döngüsel yapılarla değiştirilebilir. Bu değişikliği gerçekleştiren deyimlere akış kontrol deyimleri adı verilir.

87PHP Programlama - 2. Bölüm Tolga GÜYER

Page 88: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Akış kontrol deyimlerini genel olarak koşullu ifadeler ve döngüler şeklinde iki kategoride sınıflayabiliriz.

88PHP Programlama - 2. Bölüm Tolga GÜYER

Page 89: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Koşullu İfadelerBilgisayarlar 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.

89PHP Programlama - 2. Bölüm Tolga GÜYER

Page 90: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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.

90PHP Programlama - 2. Bölüm Tolga GÜYER

Page 91: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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…

91PHP Programlama - 2. Bölüm Tolga GÜYER

Page 92: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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.

92PHP Programlama - 2. Bölüm Tolga GÜYER

Page 93: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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.

93PHP Programlama - 2. Bölüm Tolga GÜYER

Page 94: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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.

94PHP Programlama - 2. Bölüm Tolga GÜYER

Page 95: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

If/Elseif/ElseEn 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.

95PHP Programlama - 2. Bölüm Tolga GÜYER

Page 96: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Aşağıda bununla ilgili bir örnek program ve ekran çıktısı yer almaktadır.

96PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$sayi=16;if ($sayi%2==0) echo "$sayi bir çift

sayıdır.";?>

16 bir çift sayıdır.

Page 97: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Ancak kod içersinde $sayi değişkeninin değeri 16 yerine tek bir sayı olarak atanırsa, bu durumda program kullanıcıya herhangi bir mesaj vermeyecektir.

97PHP Programlama - 2. Bölüm Tolga GÜYER

Page 98: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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ğilinin elde edildiği durumlarda else ifadesinden sonra yer alan {b} deyimi (ya da deyimleri) çalıştırılacaktır.

98PHP Programlama - 2. Bölüm Tolga GÜYER

Page 99: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Örnek program aşağıda verilmiştir:

99PHP Programlama - 2. Bölüm Tolga GÜYER

<?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.

Page 100: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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

100PHP Programlama - 2. Bölüm Tolga GÜYER

<?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.";?>

Page 101: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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ğili olan ikinci bir koşul yazmak yerine, else deyimini kullanmak daha yerinde olacaktır.

101PHP Programlama - 2. Bölüm Tolga GÜYER

Page 102: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Koşul ya da aksi durumun doğrulanması durumunda gerçekleştirilecek işlem sayısı birden fazla olabilir. Bu gibi durumlarda, programlama dillerinde bloklama etiketleri kullanılır.

PHP dilinde bloklama işlemlerinde { ve } (açık ve kapalı küme parantezleri) kullanılır.

102PHP Programlama - 2. Bölüm Tolga GÜYER

Page 103: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Ö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.

103PHP Programlama - 2. Bölüm Tolga GÜYER

Page 104: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

İ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.

104PHP Programlama - 2. Bölüm Tolga GÜYER

Page 105: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

105PHP Programlama - 2. Bölüm Tolga GÜYER

<?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“; }?>

Page 106: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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 .php dosyası biçiminde geliştirelim.

106PHP Programlama - 2. Bölüm Tolga GÜYER

Page 107: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

107PHP Programlama - 2. Bölüm Tolga GÜYER

<html><body><form action="" method="post">

<p>Alışveriş Tutarı: <input type="text" name="tutar" ></p>

<p><input name="dugme" type="submit" ></p></form></body></html><?phpif(isset($_POST["dugme"])){

$alisverisTutari=$_POST['tutar'];$gun=date("D");

Page 108: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

108PHP Programlama - 2. Bölüm Tolga GÜYER

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“;}}?>

Devamı

Page 109: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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.

109PHP Programlama - 2. Bölüm Tolga GÜYER

Page 110: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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}

110PHP Programlama - 2. Bölüm Tolga GÜYER

Page 111: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bu yapıda, ilk If deyimine 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.

111PHP Programlama - 2. Bölüm Tolga GÜYER

Page 112: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

İ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.

112PHP Programlama - 2. Bölüm Tolga GÜYER

Page 113: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Ö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.

113PHP Programlama - 2. Bölüm Tolga GÜYER

Page 114: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Kullanacağımız tablo aşağıdaki gibi olacaktır:

114PHP Programlama - 2. Bölüm Tolga GÜYER

Not Aralığı Karşılık Gelen Harf

0-19 FF20-29 FD30-39 DD40-49 DC50-59 CC60-69 CB70-79 BB80-89 BA90-100 AA

Page 115: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Örneğimizi form içeren bir HTML dosyası ve formdan gelen bilgiyi işleyerek harf notuna dönüştüren bir PHP dosyası biçiminde geliştirelim.

115PHP Programlama - 2. Bölüm Tolga GÜYER

Page 116: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

116PHP Programlama - 2. Bölüm Tolga GÜYER

<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>

Page 117: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

117PHP Programlama - 2. Bölüm Tolga GÜYER

<?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.";?>

Page 118: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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

118PHP Programlama - 2. Bölüm Tolga GÜYER

Page 119: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Deyimin genel biçimi aşağıdaki gibidir.switch (ifade){case değer1:ifade=değer1 olduğunda işletilecek kod;break;

case değ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;} 119PHP Programlama - 2. Bölüm

Tolga GÜYER

Page 120: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Ö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/case yapısını kullanarak yazalım.

120PHP Programlama - 2. Bölüm Tolga GÜYER

Page 121: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

121PHP Programlama - 2. Bölüm Tolga GÜYER

<html><body><form action="" method="get">

<p>Sayıyı Giriniz: <input type="text" name="sayi" ></p>

<p><input name="dugme" type="submit" value="Çalıştır"></p></form></body></html>

Page 122: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

122PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpif(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;

Devamı

Page 123: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

123PHP Programlama - 2. Bölüm Tolga GÜYER

case "3":$sonuc="ÜÇ";break;

case "4":$sonuc="DÖRT";break;

case "5":$sonuc="BEŞ";

break;case "6":

$sonuc="ALTI";break;

Devamı

Page 124: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

124PHP Programlama - 2. Bölüm Tolga GÜYER

case "7":$sonuc="YEDİ";

break;case "8":

$sonuc="SEKİZ";break;

case "9":$sonuc="DOKUZ";break;

default:$sonuc="Giriş Anlaşılamadı...";

}}echo ($sonuc);?>

Devamı

Page 125: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Case blokları içersindeki son deyim olan break deyimi, akış kontrolünü kırmak için kullanılır. PHP’nin switch/case yapı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ışı switch deyiminin etki alanı dışından devam etmelidir.

125PHP Programlama - 2. Bölüm Tolga GÜYER

Page 126: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bunu bir örnekle açıklayalım:

126PHP Programlama - 2. Bölüm Tolga GÜYER

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

echo "<br>i = 0";case 1:

echo "<br>i = 1";case 2:

echo "<br>i = 2";}?>

Page 127: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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

127PHP Programlama - 2. Bölüm Tolga GÜYER

i = 0i = 1i = 2

şeklinde olacaktır.

Page 128: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

128PHP Programlama - 2. Bölüm Tolga GÜYER

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

echo "<br>i = 0";case 1:

echo "<br>i = 1";case 2:

echo "<br>i = 2"; }?>

durumunda ise ekran çıktısı aşağıdaki gibi olur:i = 1i = 2

Page 129: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Aynı kodu;

129PHP Programlama - 2. Bölüm Tolga GÜYER

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

echo "<br>0 < i < 3";break;

case 3:echo "<br>i = 3“; }

?>

Page 130: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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

130PHP Programlama - 2. Bölüm Tolga GÜYER

0 < i < 3

olacaktır.

Page 131: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

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

131PHP Programlama - 2. Bölüm Tolga GÜYER

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

break;case 3: echo "<br>i = 3";

break;default:

echo "<br>i > 3 ya da i < 0"; }?>

Page 132: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bu durumda $i değişkeninin sahip olduğu değer 0,1 ya da 2 ise ilk echo deyimi çalışacak, ardından break deyimi akış kontrolünü kırarak program akışının switchbloğunun ardından devam etmesini sağlayacaktır.

132PHP Programlama - 2. Bölüm Tolga GÜYER

Page 133: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bu değerler yerine 3 değerini taşıyorsa bu durumda ikinci echo deyimi çalıştırılacak ve aynı şekilde programın akış kontrolü kırılacaktır.

Bu durumların hiçbirisine girmeyen bir değerde ise default bölümünde yer alan echodeyimi çalıştırılacaktır.

133PHP Programlama - 2. Bölüm Tolga GÜYER

Page 134: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Döngüler

Konuya bir örnekle başlayalım.

Ekranda alt alta 7 defa PHP Öğreniyorum cümlesini küçükten büyüğe doğru artan yazıtipi büyüklüğü ile yazdıracağız.

134PHP Programlama - 2. Bölüm Tolga GÜYER

Page 135: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri PHP Öğreniyorum!

PHP Öğreniyorum!PHP Öğreniyorum!PHP Öğreniyorum!

PHP Öğreniyorum!

PHP Öğreniyorum!PHP Öğreniyorum!

135PHP Programlama - 2. Bölüm Tolga GÜYER

Page 136: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

İstediğimiz görüntüyü verecek kod aşağıdaki gibi olacaktır:

136PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpecho "<font size=1>";echo "<br><b>PHP Öğreniyorum!</b></font>";echo "<font size=2>";echo "<br><b>PHP Öğreniyorum!</b></font>";echo "<font size=3>";echo "<br><b>PHP Öğreniyorum!</b></font>";echo "<font size=4>";echo "<br><b>PHP Öğreniyorum!</b></font>";echo "<font size=5>";echo "<br><b>PHP Öğreniyorum!</b></font>";

Page 137: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

137PHP Programlama - 2. Bölüm Tolga GÜYER

echo "<font size=6>";echo "<br><b>PHP Öğreniyorum!</b></font>";echo "<font size=7>";echo "<br><b>PHP Öğreniyorum!</b></font>";

?>

Devamı

Page 138: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Örneğimizde olduğu gibi belirli bir kural dahilinde tekrarlanan işlemlerde, işlemi gerçekleştiren kodun da hemen hemen tamamının işlem sayısı kadar tekrarlanması zorunluluğu ortaya çıkmaktadır. Bu da, iyi bir programcının uzak durması gereken en önemli problemlerden birisi olan gereksiz kod kalabalığına yol açmaktadır.

138PHP Programlama - 2. Bölüm Tolga GÜYER

Page 139: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bu gibi durumlar için geliştirilen programatik yapılara döngü adı verilir. Döngüler, belirli bir düzen içinde tekrarlanan kodların sadece bir defa yazılmasını sağlarlar.

139PHP Programlama - 2. Bölüm Tolga GÜYER

Page 140: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Genel olarak döngüleri iki başlık altında sınıflandırabiliriz. Bunlardan ilki, döngü tarafından değeri otomatik olarak artırılan bir sayaç değişkeninin bulunduğu sayaçlı döngülerdir. Diğer tür olan koşullu döngülerde ise döngünün sonlanması için belirli bir koşulun sağlanması söz konusudur.

140PHP Programlama - 2. Bölüm Tolga GÜYER

Page 141: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Belirli bir indis değişkenine bağlı olarak işlem yapan döngü türleridir. PHP’de iki tür sayaçlı döngü vardır: For döngüsü ve Foreach döngüsü.

141PHP Programlama - 2. Bölüm Tolga GÜYER

Page 142: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

For döngüsünde indis değişkeninin doğrudan döngünün tanımlama bloğu içersinde belirtilmesi gerekir. Foreachdöngüsünde ise indis değişkeninin yerini bir dizi alır. Dizinin kendi yapısında bir indis değeri zaten tanımlı olduğundan, Foreachyapısında sayaç olarak bu indis değerinin kullanıldığı söylenebilir.

142PHP Programlama - 2. Bölüm Tolga GÜYER

Page 143: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

For Döngüsü

Genel yapısı aşağıdaki gibidir:For (Başlangıç değeri; Sınır koşulu; Artış miktarı){

Döngü tarafından çalıştırılacak kod;}

143PHP Programlama - 2. Bölüm Tolga GÜYER

Page 144: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Başlangıç değeri çoğunlukla sayaç işlevini görecek değişkene ilk değerinin atanması şeklinde belirlenir.

144PHP Programlama - 2. Bölüm Tolga GÜYER

Page 145: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Sınır koşulu, her döngü adımında yeniden hesaplanan bir Boolean değer üretir. Sonuç True olduğu sürece döngü çalışır, aksi halde sonlanır. Genellikle sayaç değişkeni için bir üst sınır değerinin atanması şeklinde belirlenir.Artış miktarı sayaç değişkeninin nasıl artacağının (ya da azalacağının) belirlendiği parametredir.

145PHP Programlama - 2. Bölüm Tolga GÜYER

Page 146: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Örnek olarak, daha önce yaptığımız “PHP Öğreniyorum!” uygulamasını bu kez Fordöngüsünü kullanarak gerçekleştirelim.

146PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpfor ($i=1; $i<=7; $i++){echo "<font size=$i>";echo "<br><b>PHP Öğreniyorum!</b></font>";

}?>

Page 147: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Sonuç yine aynı olacaktır. Ancak kodun ilk hali ile karşılaştırıldığında kod kalabalığının oldukça azaldığı görülmektedir.

Burada sayaç değişkeni olarak $i belirlenmiş, bu değer yazıtipi büyüklüğünü 1’den 7’ye kadar artırmak için kullanılmıştır.

147PHP Programlama - 2. Bölüm Tolga GÜYER

Page 148: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Diğer bir örnek, bilinen faktöriyel işlemini gerçekleştirecek döngünün tanımlanmasıdır.

148PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$sayi=8; $faktoryel=1;for ($i = 1; $i <= $sayi; $i++) {

$faktoryel = $faktoryel * $i; }echo $faktoryel;

?>

Page 149: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Örnekte, 8 sayısının faktöriyeli, yani 8×7×6×5×4×3×2×1 çarpımı hesaplanmaktadır.

149PHP Programlama - 2. Bölüm Tolga GÜYER

Aynı örneği, faktöriyeli hesaplanacak sayı bir form aracılığı ilekullanıcı tarafından girilecek şekilde tasarlayabilir misiniz?

Page 150: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Döngüleri iç içe kullanabiliriz. Bu durumda en içteki döngü, en hızlı dönen döngü olacaktır.

150PHP Programlama - 2. Bölüm Tolga GÜYER

Page 151: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bu mekanizmayı daha iyi anlayabilmek için, eski kasetçalar ya da video oynatıcı cihazlarda, ya da günümüzde de kullanılan elektrik ya da su sayaçlarında bulunan mekanik sayaçları düşünebiliriz.

151PHP Programlama - 2. Bölüm Tolga GÜYER

Page 152: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Üç basamaklı mekanik bir sayacın çalışma prensibi şu şekilde olacaktır: Birler hanesi,0 ile 9 arasındaki değerleri alırken, bu hanenin her turunda onlar hanesi 0 ile 9 arasındaki yeni değerini alacaktır.

Aynı durum onlar ve yüzler haneleri arasında gerçekleşecektir.

152PHP Programlama - 2. Bölüm Tolga GÜYER

Page 153: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bu çalışma biçiminin, içi içe üç Fordöngüsünden oluşan bir yapıda simülasyonunu gerçekleştirelim.

153PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpfor ($yuzler = 0; $yuzler <= 9; $yuzler++) { for ($onlar = 0; $onlar <= 9; $onlar++)

{ for ($birler = 0; $birler <= 9; $birler++) { echo "$yuzler $onlar $birler <br>“;

}}

}?>

Page 154: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Biraz daha karmaşık bir örneği şu şekilde geliştirelim:

A2+B2=C2

eşitliğini sağlayan pozitif tamsayılara “Pisagor Üçlüleri” adı verilir.

154PHP Programlama - 2. Bölüm Tolga GÜYER

Page 155: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Örneğin32+42=52

gibi. Bu durumda (3,4,5) bir Pisagor üçlüsüdür.

Öyle bir kod yazalım ki, 1 ile 99 arasındaki bütün Pisagor üçlülerini bulsun ve sonuçları ekranda biçimlendirilmiş bir şekilde yazsın.

155PHP Programlama - 2. Bölüm Tolga GÜYER

Page 156: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

156PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpecho "<font size=\"5\">Pisagor

Üçlüleri</font>";echo "<p>";$kareler="<font

color=\"#000000\"><sup>2</sup></font>";$sayac=1;for ($a = 1; $a <= 99; $a++) {

for ($b = 1; $b <= 99; $b++){

for ($c = 1; $c <= 99; $c++){

Page 157: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

157PHP Programlama - 2. Bölüm Tolga GÜYER

if ($a*$a+$b*$b==$c*$c and $a<$b)

{echo $sayac++,"). <font

color=\"#FF0000\"><b>$a</b></font>",$kareler," + <font color=\"#FF0000\"><b>$b</b></font>",$kareler," = <font color=\"#FF0000\"><b>$c</b></font>",$kareler,"<br>";

}}

}}

?>

Devamı

Page 158: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Foreach Döngüsü

Genel yapısı aşağıdaki gibidir:Foreach ($dizi as $deger){

Döngü tarafından çalıştırılacak kod;}

158PHP Programlama - 2. Bölüm Tolga GÜYER

Page 159: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Giriş parametresi olarak dizi kullanan Foreach döngüsü, her bir tekrarda dizinin sıradaki değerini $deger değişkenine aktarır.

159PHP Programlama - 2. Bölüm Tolga GÜYER

Page 160: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

160PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$dizi=array("bir","iki","üç","dört");foreach ($dizi as $deger){

echo "$deger<br>";}

?>

birikiüçdört

Page 161: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

161PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$a = array();$a[0][0] = "a";$a[0][1] = "b";$a[1][0] = "c";$a[1][1] = "d";foreach ($a as $v1) {foreach ($v1 as $v2) {

echo "$v2<br>“; }}

?>

abcd

Page 162: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Burada $v1 değişkeni $a dizinin birinci ve ikinci boyutunu oluşturan iki diziyi temsil etmektedir. $v2 değişkeni ise bu tek boyutlu dizilerin terimlerini gösterir.

162PHP Programlama - 2. Bölüm Tolga GÜYER

Page 163: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Koşullu Döngüler

Koşullu döngülerde, tekrarlanacak kodun tekrar sayısı bir koşul tarafından belirlenir. Bu tür döngü yapılarında otomatik olarak artan bir sayaç değişkeni bulunmamaktadır.

163PHP Programlama - 2. Bölüm Tolga GÜYER

Page 164: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Koşullu döngülerin iki alt türü vardır. Bunlardan ilki koşulun döngü başlangıcında denetlendiği yapılardır. Bu durumda koşul sağlanmadığı takdirde döngü içersindeki kod hiçbir şekilde çalışmaz.

164PHP Programlama - 2. Bölüm Tolga GÜYER

Page 165: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Diğer alt türde ise koşul, döngünün sonunda denetlenir. Birinci yapıdan farklı olarak bu durumda, koşul ne olursa olsun döngü içersindeki koşul en az bir defa çalıştırılacaktır.Söz edilen döngü türlerinin PHP’dekikarşılıkları sırasıyla While ve Do..Whiledöngü ifadeleridir.

165PHP Programlama - 2. Bölüm Tolga GÜYER

Page 166: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

While Döngüsü

Genel yapısı aşağıdaki gibidir:while (koşul){

Döngü tarafından çalıştırılacak kod; }

166PHP Programlama - 2. Bölüm Tolga GÜYER

Page 167: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Kelime anlamı “iken” olan while deyimi, döngünün etki alanında kalan kodu koşul sağlandığı sürece çalıştıracaktır. Bu yapıda otomatik olarak artan bir sayaç değeri bulunmamaktadır, eğer bir sayaç kullanılması gerekiyorsa bunun kontrolünün programcı tarafından ayrıca yapılması gerekmektedir.

167PHP Programlama - 2. Bölüm Tolga GÜYER

Page 168: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

168PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$i=1;while ($i<=10) {

echo "$i ";$i++;

}?>

1 2 3 4 5 6 7 8 9 10

Page 169: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Döngünün çalışma şeklini daha karmaşık bir örnek üzerinde inceleyelim:

153 sayısının aşağıdaki gibi bir aritmetik özelliği vardır:

13 + 53 +33 = 153

169PHP Programlama - 2. Bölüm Tolga GÜYER

Page 170: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Yani 153 sayısının basamaklarının küplerinin toplamı, yine sayının kendisine eşittir. Acaba 100 ile 999 arasında bu özelliğe sahip başka bir üç basamaklı sayı var mıdır?

170PHP Programlama - 2. Bölüm Tolga GÜYER

Page 171: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Problemin çözümü için şu yolu izleyeceğiz:

Yüzler basamağını 1 ile 9, onlar ve birler basamaklarını ise 0 ile 9 arasında bir döngüye sokarak, iç-içe oluşturulan bu döngüsel yapı içersinde basamakların küplerinin toplamının sayının bütününe eşit olup olmadığına bakacağız.

171PHP Programlama - 2. Bölüm Tolga GÜYER

Page 172: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Eğer eşit ise bu sayının basamaklarını yazdıracağız. Sonuç olarak ekranda görüntülenen sayılar, 100 ile 999 arasında -eğer varsa- 153 ile aynı özelliğe sahip sayıların basamakları olacaktır.

172PHP Programlama - 2. Bölüm Tolga GÜYER

Page 173: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

173PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$yuzler = 1;

while ($yuzler <= 9) {

$onlar = 0;while ($onlar <= 9){

$birler = 0;while ($birler <= 9){

$sayi=$yuzler*100+$onlar*10+$birler;

Page 174: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

174PHP Programlama - 2. Bölüm Tolga GÜYER

if ($birler*$birler*$birler +

$onlar*$onlar*$onlar +

$yuzler*$yuzler*$yuzler==$sayi){

echo "$yuzler - $onlar -$birler <br>";

}$birler++;

}$onlar++;

}$yuzler++;

}?>

Devamı

Page 175: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Kod çalıştırıldığında ekranda aşağıdaki sayılar görüntülenecektir:

175PHP Programlama - 2. Bölüm Tolga GÜYER

1 - 5 - 3 3 - 7 - 0 3 - 7 - 1 4 - 0 - 7

Page 176: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

176PHP Programlama - 2. Bölüm Tolga GÜYER

Aynı örneği For döngüsünü kullanarak yapınız.

Page 177: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Do..While Döngüsü

Genel yapısı aşağıdaki gibidir:do {

Döngü tarafından çalıştırılacak kod; }

while (koşul);

177PHP Programlama - 2. Bölüm Tolga GÜYER

Page 178: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Do..while döngüsünün While döngüsü ile arasındaki tek fark, koşulun döngü sonunda denetlenmesidir. Bunun sonucu olarak, bu yapıda döngünün etki alanında yer alan kod, koşulun sağlanıp sağlanmadığına bakmaksızın en az bir defa çalıştırılır.

178PHP Programlama - 2. Bölüm Tolga GÜYER

Page 179: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

179PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$i=1;do{

echo "$i ";$i++;

}while ($i<=10)

?>

1 2 3 4 5 6 7 8 9 10

Page 180: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

While ve do..while döngü yapıları arasındaki farkı daha açık olarak gösterebileceğimiz bir örnek geliştirelim.

180PHP Programlama - 2. Bölüm Tolga GÜYER

Page 181: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

$a herhangi bir pozitif tamsayı olmak üzere, bu değerden başlayarak sıradaki her terimi aşağıdaki kurala elde edilecek bir sayı dizisi oluşturalım:

Eğer $a çift sayı ise bir sonraki terim=$a/2; Aksi halde bir sonraki terim=3*$a+1.

181PHP Programlama - 2. Bölüm Tolga GÜYER

Page 182: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Örneğin $a=5 olsun. Bu sayı tek olduğundan bir sonraki terim, 3*5+1=16 olacaktır.

16 çift olduğundan bir sonraki terim 16/2=8 olacaktır. Böylece dizinin terimleri,

5,16,8,4,2,1,4,2,1,4,2,1,…biçiminde gidecektir.

182PHP Programlama - 2. Bölüm Tolga GÜYER

Page 183: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Görüldüğü gibi dizinin terimi 1’e ulaştıktan sonra 4,2,1 kısır döngüsüne ulaşmaktadır. Üstelik hangi değerle başlanırsa başlansın, sonuçta dizi mutlaka bu kısır döngüye takılıp kalmaktadır.

183PHP Programlama - 2. Bölüm Tolga GÜYER

Page 184: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bilgisayarlar kullanılarak milyonlarca başlangıç değeri için dizinin 1 değerine ulaştığının gözlemlenmesine karşın, bunun her pozitif tamsayı için böyle olacağı günümüze kadar matematiksel olarak kanıtlanamamıştır.Collatz Problemi olarak bilinen bu problem, henüz çözülmemiş ödüllü bir problemdir.

184PHP Programlama - 2. Bölüm Tolga GÜYER

Page 185: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Aynı örneği, iki döngü yapısını da kullanarak yapalım.

185PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$a=10;while ($a!=1){

if ($a % 2 == 0) {$a=$a/2;} else {$a=3*$a+1;} echo "$a ";

} ?>

Page 186: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

186PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$a=10;do{

if ($a % 2 == 0) {$a=$a/2;} else {$a=3*$a+1;} echo "$a ";

}while ($a!=1)

?>

Page 187: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bu şekliyle her iki kod çalıştırıldığında da aynı sonuç elde edilir:

187PHP Programlama - 2. Bölüm Tolga GÜYER

5 16 8 4 2 1

Page 188: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Ancak örnek kodlarda $a başlangıç değeri, $a=1;

olarak belirlendiğinde iki döngü yapısının çalışma sistemleri arasındaki fark ortaya çıkacaktır.

188PHP Programlama - 2. Bölüm Tolga GÜYER

Page 189: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

Bu durumda while döngüsünün kullanıldığı birinci örnek kod herhangi bir çıktı üretmezken, do..while döngüsünün kullanıldığı ikinci örnek kodun çıktısı,

189PHP Programlama - 2. Bölüm Tolga GÜYER

4 2 1

olacaktır.

Page 190: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Akış Kontrol Deyimleri

190PHP Programlama - 2. Bölüm Tolga GÜYER

Bu programı dizinin başlangıç sayısı kullanıcı tarafından girilecek şekilde tasarlayabilir misiniz?

Page 191: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerŞu ana kadar edindiğimiz bilgilerimizi kullanabileceğimiz kapsamlı bir örnek uygulama geliştirelim.Amacımız, sihirli kare adı verilen ve sayılardan oluşan karelerin bilgisayar tarafından oluşturulmasını sağlayacak bir program yazmak. Bu sayı karelerinin özelliği, satır, sütun ve köşegen üzerindeki sayıların toplamlarının eşit olmasıdır.

191PHP Programlama - 2. Bölüm Tolga GÜYER

Page 192: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerSihirli karelerin inşası için bir çok algoritma bulunmaktadır. Bizim kullanacağımız algoritma, n bir tek sayı olmak üzere, nxnboyutunda bir sihirli karenin oluşturulmasını sağlamaktadır.Algoritma, 1’den başlayarak bütün kare doluncaya kadar sayıların kare üzerine belirli kurallar dahilinde yerleştirilmesi ilkesine dayanır.

192PHP Programlama - 2. Bölüm Tolga GÜYER

Page 193: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerBu kuralları aşağıdaki gibi sıralayabiliriz:KURALLAR1. İlk sayı olan 1, karenin ilk satırının orta

hücresine yerleştirilir.2. Sıradaki her sayı, kendisinden önceki

sayının sağ-üst köşesinde yer alan hücreye yerleştirilir.

193PHP Programlama - 2. Bölüm Tolga GÜYER

Page 194: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerBu kuralların işletilmesi sırasında ortaya çıkabilecek dört aykırı durum vardır:

1. Sıradaki sayıyı yerleştireceğimiz hücre dolu olabilir. Bu durumda sıradaki sayı, bir önceki sayının bulunduğu hücrenin altındaki hücreye yerleştirilir.

194PHP Programlama - 2. Bölüm Tolga GÜYER

Page 195: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli Kareler2. Sıradaki sayıyı yerleştireceğimiz hücre

karenin üstünden dışında kalıyor olabilir. Bu durumda sıradaki sayı, dışarıda kalan hücrenin hizasındaki sütunun en altındaki hücreye yerleştirilir.

195PHP Programlama - 2. Bölüm Tolga GÜYER

Page 196: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli Kareler3. Sıradaki sayıyı yerleştireceğimiz hücre

karenin sağ tarafından dışında kalıyor olabilir. Bu durumda sıradaki sayı, dışarıda kalan hücrenin hizasındaki satırın en solundaki hücreye yerleştirilir.

196PHP Programlama - 2. Bölüm Tolga GÜYER

Page 197: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli Kareler4. Sıradaki sayıyı yerleştireceğimiz hücre

karenin sağ-üst çaprazından dışında kalıyor olabilir. Bu durumda sıradaki sayı, bir önceki sayının bulunduğu hücrenin altındaki hücreye yerleştirilir.

Üç satır ve üç sütundan oluşan sihirli kareyi algoritmanın kurallarını uygulayarak oluşturalım.

197PHP Programlama - 2. Bölüm Tolga GÜYER

Page 198: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerÖncelikle ilk sayımız olan 1’i karenin ilk satırının orta hücresine yerleştirelim:

198PHP Programlama - 2. Bölüm Tolga GÜYER

1

Page 199: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerSıradaki sayı olan 2, 1 sayısının bulunduğu hücrenin sağ-üst köşesindeki hücreye yerleşecek. Ancak burada, karenin üzerinden dışarıya çıkıldığı için 2 sayısı dışarıya çıkılan hizadaki sütunun en alt hücresine yerleştiriliyor:

199PHP Programlama - 2. Bölüm Tolga GÜYER

1

2

Page 200: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerSıradaki sayı olan 3, 2 sayısının bulunduğu hücrenin sağ-üst köşesindeki hücreye yerleşecek. Ancak burada, karenin sağ tarafından dışarıya çıkıldığı için 3 sayısı dışarıya çıkılan hizadaki satırın en solundaki hücreye yerleştiriliyor:

200PHP Programlama - 2. Bölüm Tolga GÜYER

13

2

Page 201: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerSıradaki sayı olan 4, 3 sayısının bulunduğu hücrenin sağ-üst köşesindeki hücreye yerleşecek. Ancak bu hücre dolu olduğu için 4 sayısı 3 sayısının bulunduğu hücrenin altında yer alan hücreye yerleştiriliyor:

201PHP Programlama - 2. Bölüm Tolga GÜYER

134 2

Page 202: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerSıradaki sayı olan 5, 4 sayısının bulunduğu hücrenin sağ-üst köşesindeki hücreye yerleştiriliyor:

202PHP Programlama - 2. Bölüm Tolga GÜYER

13 54 2

Page 203: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerSıradaki sayı olan 6, 5 sayısının bulunduğu hücrenin sağ-üst köşesindeki hücreye yerleştiriliyor:

203PHP Programlama - 2. Bölüm Tolga GÜYER

1 63 54 2

Page 204: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerSıradaki sayı olan 7, 6 sayısının bulunduğu hücrenin sağ-üst köşesindeki hücreye yerleşecek. Ancak burada, karenin sağ-üst çaprazından dışarıya çıkıldığı için 7 sayısı 6 sayısının bulunduğu hücrenin altında yer alan hücreye yerleştiriliyor:

204PHP Programlama - 2. Bölüm Tolga GÜYER

1 63 5 74 2

Page 205: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerSıradaki sayı olan 8, 7 sayısının bulunduğu hücrenin sağ-üst köşesindeki hücreye yerleşecek. Ancak burada, karenin sağ tarafından dışarıya çıkıldığı için 8 sayısı dışarıya çıkılan hizadaki satırın en solundaki hücreye yerleştiriliyor:

205PHP Programlama - 2. Bölüm Tolga GÜYER

8 1 63 5 74 2

Page 206: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerVe son olarak sıradaki sayı olan 9, 8 sayısının bulunduğu hücrenin sağ-üst köşesindeki hücreye yerleşecek. Ancak burada, karenin üzerinden dışarıya çıkıldığı için 9 sayısı dışarıya çıkılan hizadaki sütunun en alt hücresine yerleştiriliyor:

206PHP Programlama - 2. Bölüm Tolga GÜYER

8 1 63 5 74 9 2

Page 207: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerSonuç olarak elde ettiğimiz sihirli karede her satırda, her sütunda ve her iki köşegende yer alan hücrelerdeki sayıların toplamı aynıdır:

15

207PHP Programlama - 2. Bölüm Tolga GÜYER

8 1 63 5 74 9 2

Page 208: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerŞimdi bu algoritmanın PHP’de kodlamasını gerçekleştireceğiz. Programımız, bizim için n=11 boyutlu sihirli kareyi oluşturacaktır.

Programda ağırlıklı olarak akış kontrol deyimlerini ve dizileri kullanacağız.

208PHP Programlama - 2. Bölüm Tolga GÜYER

Page 209: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli Kareler

209PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$dizi1=range(1,11);$dizi2=range(1,11);$dizi=array($dizi1,$dizi2);$sayi=11;$sayikare=$sayi*$sayi;$toplam=0;for($i=1;$i<=$sayi;$i++){

for($j=1;$j<=$sayi;$j++){

$dizi[$i][$j]=0;}

}

Page 210: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli Kareler

210PHP Programlama - 2. Bölüm Tolga GÜYER

$i=1;$j=floor(($sayi+1)/2);

for ($k=1;$k<=$sayikare;$k++){

if ($dizi[$i][$j]>0){

$i=$i+2;$j=$j-1;

}$dizi[$i][$j]=$k;$i=$i-1;$j=$j+1;

Devamı

Page 211: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli Kareler

211PHP Programlama - 2. Bölüm Tolga GÜYER

if (($i==0) and ($j>$sayi)){

$i=$i+2;$j=$j-1;

}if ($i==0) {$i=$sayi;}if ($j>$sayi) {$j=1;}$toplam=$toplam+$k;

}echo "<table border=\"2\"

align=\"center\"><tr>”;

Devamı

Page 212: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli Kareler

212PHP Programlama - 2. Bölüm Tolga GÜYER

for($i=1;$i<=$sayi;$i++){

echo "</tr><tr>";for($j=1;$j<=$sayi;$j++){

$a=$dizi[$i][$j];print "<td

align=\"center\">$a</td>";}

}

$stoplam=$toplam/$sayi;echo "<p>Toplamlar : $stoplam";echo "<p>";echo "</table>";

?>

Devamı

Page 213: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerÖrnek kodda iki boyutlu dizi tanımlaması alternatif bir yolla yapılmıştır:

$dizi1=range(1,11);$dizi2=range(1,11);$dizi=array($dizi1,$dizi2);

213PHP Programlama - 2. Bölüm Tolga GÜYER

Page 214: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli KarelerBu yöntemde öncelikle range fonksiyonu kullanılarak uzunluğu 11 terimden oluşan iki tane tek-boyutlu dizi tanımlanmakta, daha sonra bunlar kullanılarak 11×11=121 terimden oluşan iki boyutlu dizimiz tanımlanmaktadır.

214PHP Programlama - 2. Bölüm Tolga GÜYER

Page 215: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Sihirli Kareler

215PHP Programlama - 2. Bölüm Tolga GÜYER

Aynı programı sihirli karenin boyutu kullanıcı tarafından girilecek şekilde tasarlayabilir misiniz?

Page 216: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Dinamik olarak kullanılabilen altprogramlar biçiminde tanımlayabileceğimiz fonksiyonlar, PHP dilinin gücünü aldığı en önemli bileşenlerdir. Şöyle ki, günümüzde yazılmış 700’den fazla dahili PHP fonksiyonu bulunmaktadır. Bunlara anonim olarak yazılmış ve İnternetten ulaşılabilen binlerce kullanıcı-tanımlı fonksiyonu da katarsak, konunun önemi ortaya çıkacaktır.

216PHP Programlama - 2. Bölüm Tolga GÜYER

Page 217: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Fonksiyonları yazma amacımız, çeşitli programlar tarafından kullanılan, ya da aynı program içersinde tekrarlanması gereken işlevsel kodları tekrar kullanılabilir programcıklar olarak oluşturmaktır. Bu programcıklar, ana program ile iki yönlü olarak veri alışverişinde bulunabilirler. Kendi kendilerine çalışmazlar, sadece ana program tarafından çağırıldıklarında çalışırlar.

217PHP Programlama - 2. Bölüm Tolga GÜYER

Page 218: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Kullanıcı-tanımlı fonksiyonlar, PHP dilini kullanarak uygulama geliştirenler tarafından yazılan fonksiyonlardır. Bunlar İnternet üzerinden yoğun olarak paylaşılmaktadır.

218PHP Programlama - 2. Bölüm Tolga GÜYER

Page 219: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Dahili fonksiyonlar ise doğrudan PHP çözümleyicisi tarafından denetlenen, PHP geliştirme grubu tarafından yazılmış kullanıma hazır fonksiyonlardır.

219PHP Programlama - 2. Bölüm Tolga GÜYER

Page 220: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Kullanıcı-Tanımlı FonksiyonlarKendi programlarınızda kullanmak üzere, kendi fonksiyonlarınızı yazabilirsiniz. Bunun için genel olarak aşağıdaki gibi bir tanımlama yapmanız yeterli olacaktır:

function fonksiyonAdı(){ fonksiyon tarafından çalıştırılacak

kodlar; }

220PHP Programlama - 2. Bölüm Tolga GÜYER

Page 221: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Bu şekilde tanımlanan bir fonksiyonu çağırmak için adını yazmamız yeterli olacaktır.

Basit bir örnekle başlayalım. İşlevi ekrana adınızı yazmak olan bir fonksiyon tanımlayalım ve onu ana programımızdan çağırarak kullanalım.

221PHP Programlama - 2. Bölüm Tolga GÜYER

Page 222: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

222PHP Programlama - 2. Bölüm Tolga GÜYER

<html><body><?phpfunction adimiYaz(){

echo "Murat Sönmez";}

echo "Benim adım ";adimiYaz();

?>

</body></html>

Benim adım Murat Sönmez

Page 223: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Kırmızı renkle gösterilen fonksiyon tanımı, PHP tarafından doğrudan çalıştırılmaz. Ana program bloğu içersinden çağırıldığında çalıştırılacaktır.

223PHP Programlama - 2. Bölüm Tolga GÜYER

Page 224: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Parametreler ve Dönen Değerler

Fonksiyonlar, ana programdan farklı türlerde veriyi alabilirler. Değerleri ana programdan fonksiyonlara taşıyan bu yapılara parametre adı verilir.

224PHP Programlama - 2. Bölüm Tolga GÜYER

Page 225: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Bir fonksiyon, parametreleri kullanarak ya doğrudan bir işlevi yerine getirir, ya da ana program için bir değer üretir. Eğer bir değer üretmiş ise bu değerin ana programa döndürülmesi için kullanılan deyim, “return” deyimidir.

225PHP Programlama - 2. Bölüm Tolga GÜYER

Page 226: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

226PHP Programlama - 2. Bölüm Tolga GÜYER

<html><body>

<?phpfunction adimiYaz($ad){

echo "$ad Sönmez“;}echo "Benim adım "; adimiYaz("Murat");echo "<br>Kardeşimin adı ise ";adimiYaz("Merve");

?>

</body></html>

Benim adım Murat SönmezKardeşimin adı ise Merve Sönmez

Page 227: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Aşağıdaki örnekte ise, fonksiyon tarafından üretilen değer ana programa gönderilmektedir.

227PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$Gelir=1100;function vergiyi_dus ($Geliriniz) {

$Geliriniz = $Geliriniz -(($Geliriniz/100)*20);

return $Geliriniz; }echo "$Gelir TL gelirin vergi düşülmüş hali "; echo(vergiyi_dus ($Gelir));echo " TL dir.";

?>

Page 228: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

228PHP Programlama - 2. Bölüm Tolga GÜYER

Aynı programı gelir tutarı kullanıcı tarafından girilecek şekildetasarlayabilir misiniz?

Page 229: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Diğer bir örnek olarak, daha önce yapmış olduğumuz tek basamaklı bir sayının Türkçe okunuşunu yazacak programı, bu defa fonksiyon kullanarak tasarlayalım.

229PHP Programlama - 2. Bölüm Tolga GÜYER

Page 230: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

230PHP Programlama - 2. Bölüm Tolga GÜYER

<?php

function turkce_oku ($Gelen_Sayi){switch ($Gelen_Sayi) {case 1:

$bir="BİR";break;

case 2:$bir=“İKİ";break;

case 3:$bir="ÜÇ";break;

case 4:$bir="DÖRT";break;

Page 231: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

231PHP Programlama - 2. Bölüm Tolga GÜYER

case 5:$bir="BEŞ";break;

case 6:$bir="ALTI";break;

case 7:$bir="YEDİ";break;

case 8:$bir="SEKİZ";break;

case 9:$bir="DOKUZ";break; }

return $bir;}

Devamı

Page 232: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

232PHP Programlama - 2. Bölüm Tolga GÜYER

$Sayi=8;echo "$Sayi Sayısının Türkçe Okunuşu : "; echo(turkce_oku ($Sayi));

?>

Devamı

Page 233: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Şimdi, çok parametreli olarak geliştirilen örnek fonksiyonumuz, iki sayı ve işlem kodunu alarak sonucu ana programa geri göndermektedir.

Öncelikle kullanıcı girişi için formumuzu tasarlayalım.

233PHP Programlama - 2. Bölüm Tolga GÜYER

Page 234: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

234PHP Programlama - 2. Bölüm Tolga GÜYER

<form action="" method="post"><p>Birinci Sayı : <input type="text" name="sayi_1" size="4"></p><p>İkinci Sayı : <input type="text" name="sayi_2" size="4"></p><p>İşlem Kodu : <select size="1" name="kod">

<option value="-1" selected="selected">== S E Ç İ N İ Z ==</option>

<option value="1">Toplama</option><option value="2">Çıkarma</option> <option value="3">Bölme</option><option value="4">Çarpma</option>

</select></p><p><input name="dugme" type="submit" value="Hesapla"></p></form>

Page 235: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Örneğimizin PHP kodundan oluşan devamı:

235PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpif(isset($_POST["dugme"])){function islemYap($sayi1,$sayi2,$islemKodu) {

switch ($islemKodu) {case 1:

$sonuc=$sayi1+$sayi2;break;

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

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

Page 236: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

236PHP Programlama - 2. Bölüm Tolga GÜYER

case 4:$sonuc=$sayi1*$sayi2;break; }

return $sonuc; }$s1=(int)$_POST['sayi_1'];$s2=(int)$_POST['sayi_2'];$kod=$_POST['kod'];echo islemYap($s1,$s2,$kod); }

?>

Devamı

Page 237: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Formdan gönderilen değerleri taşıyan HTML değişkenlerinin (sayi_1 ve sayi_2), formdan gelen değerleri tutacak PHP değişkenlerinin ($s1 ve $s2) ve fonksiyonun parametrelerinin ($sayi1 ve $sayi2) farklı isimlendirildiklerinde dikkat ediniz.

237PHP Programlama - 2. Bölüm Tolga GÜYER

Page 238: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Değişkenler arasındaki değer aktarmalarında, değişkenlerin isimleri değil, içinde bulundukları yapılarda yer aldıkları konumlar önemlidir. Dolayısıyla bir fonksiyon için parametrelerinin isimlerinin, ana programda karşılık gelen değişken adlarıyla aynı olması gerekmemektedir. Bu durumda hangi sıradaki parametreye hangi değerin geldiği önemli olacaktır.

238PHP Programlama - 2. Bölüm Tolga GÜYER

Page 239: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Dahili (İçsel) Fonksiyonlar

Dahili fonksiyonlar, sayıları itibarı ile dersimiz kapsamında bütün detayı ile ele alıp anlatabileceğimiz bir konu değildir. Bu fonksiyonların öğrenilmesi daha çok, gereksinim duydukça referans kaynakları vasıtasıyla gerçekleşmektedir.

239PHP Programlama - 2. Bölüm Tolga GÜYER

Page 240: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

Bu kesimde, PHP fonksiyonlarından ortak kullanılanlar sınıflandırılarak listelenmiş, temel işlevleri verilmiş ve mümkün olduğunca örneklendirilmeye çalışılmışlardır.

240PHP Programlama - 2. Bölüm Tolga GÜYER

Page 241: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

241PHP Programlama - 2. Bölüm Tolga GÜYER

Fonksiyon İşleviarray() Bir dizi tanımlararray_change_key_case() Dizinin indislerini büyük ya da küçük harf

olarak değiştirirarray_chunk() Diziyi bölerarray_combine() Bir dizinin indislerini, bir diğerinin değerlerini

kullanarak yeni bir dizi oluştururarray_count_values() Her değerin dizi içersindeki tekrarlanma

sayılarından yeni bir dizi oluştururarray_diff() Dizileri karşılaştırır ve farklar gönderirarray_diff_assoc() Dizilerin değerlerini ve indislerini karşılaştırır

ve farklar gönderirarray_diff_key() Dizilerin indislerini karşılaştırır ve farklar

gönderir

Dizi Fonksiyonları

Page 242: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

242PHP Programlama - 2. Bölüm Tolga GÜYER

Fonksiyon İşleviarray_diff_uassoc() Dizilerin değerlerini ve indislerini kullanıcı-

tanımlı bir fonksiyonu kullanarak karşılaştırır ve farklar gönderir

array_diff_ukey() Dizilerin indislerini kullanıcı-tanımlı bir fonksiyonu kullanarak karşılaştırır ve farklar gönderir

array_fill() Diziyi belirlenen değerlerle doldururarray_filter() Dizinin terimlerini kullanıcı-tanımlı bir

fonksiyonu kullanarak filtrelerarray_flip() Dizideki bütün indisleri, kendileriyle

ilişkilendirilmiş değerlerle yer değiştirirarray_intersect() Dizilerin değerlerini karşılaştırarak eşleşmeleri

gönderir

Dizi Fonksiyonları

Page 243: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

243PHP Programlama - 2. Bölüm Tolga GÜYER

Dizi Fonksiyonları

Fonksiyon İşleviarray_intersect_assoc() Dizilerin değerlerini ve indislerini

karşılaştırarak eşleşmeleri gönderirarray_intersect_key() Dizilerin indislerini karşılaştırarak eşleşmeleri

gönderirarray_intersect_uassoc() Dizilerin değerlerini ve indislerini kullanıcı-

tanımlı bir fonksiyonu kullanarak karşılaştırır ve eşleşmeleri gönderir

array_intersect_ukey() Dizilerin indislerini kullanıcı-tanımlı bir fonksiyonu kullanarak karşılaştırır ve eşleşmeleri gönderir

array_key_exists() Belirli bir indisin dizide olup olmadığını denetler

Page 244: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

244PHP Programlama - 2. Bölüm Tolga GÜYER

Dizi Fonksiyonları

Fonksiyon İşleviarray_keys() Biz dizinin bütün indislerini gönderirarray_map() Biz dizinin bütün terimlerini kullanıcı-tanımlı

bir fonksiyona gönderirarray_merge() İki ya da daha çok diziyi diğer bir dizide

birleştirirarray_merge_recursive() İki ya da daha çok diziyi özyinelemeli olarak

diğer bir dizide birleştirirarray_multisort() Çok-boyutlu dizileri sıralararray_pad() Diziye belirli sayıda terim eklerarray_pop() Dizinin son terimini silerarray_product() Biz dizideki terimlerin çarpımını hesaplararray_push() Bir ya da daha çok sayıda terimi dizinin sonuna

yerleştirir

Page 245: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

245PHP Programlama - 2. Bölüm Tolga GÜYER

Dizi Fonksiyonları

Fonksiyon İşleviarray_rand() Diziden bir ya da daha çok rastgele anahtarı verirarray_reduce() Diziyi kullanıcı-tanımlı bir fonksiyonu kullanarak

string türüne dönüştürürarray_reverse() Diziyi ters sıradaki biçimine dönüştürürarray_search() Dizide girilen bir değeri arar ve bulunduysa

indisini gönderirarray_shift() Diziden ilk terimi siler ve sildiği terimini değerini

gönderirarray_slice() Bir dizinin belirlenen bir parçasını gönderirarray_splice() Bir dizinin belirlenen terimlerini siler ve değiştirirarray_sum() Dizinin terimlerinin değerlerini toplar

Page 246: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

246PHP Programlama - 2. Bölüm Tolga GÜYER

Dizi Fonksiyonları

Fonksiyon İşleviarray_udiff() Dizinin değerlerini kullanıcı-tanımlı bir

fonksiyonu kullanarak karşılaştırır ve bir dizi gönderir

array_udiff_assoc() Dizinin indislerini kullanıcı-tanımlı bir fonksiyonu kullanarak karşılaştırır ve bir dizi gönderir

array_udiff_uassoc() Dizinin değerlerini ve indislerini kullanıcı-tanımlıbir fonksiyonu kullanarak karşılaştırır ve bir dizi gönderir

array_uintersect() Dizinin değerlerini kullanıcı-tanımlı bir fonksiyonu kullanarak karşılaştırır ve bir dizi gönderir

Page 247: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

247PHP Programlama - 2. Bölüm Tolga GÜYER

Dizi Fonksiyonları

Fonksiyon İşleviarray_uintersect_assoc() Dizinin indislerini kullanıcı-tanımlı bir

fonksiyonu kullanarak karşılaştırır ve bir dizi gönderir

array_uintersect_uassoc() Dizinin değerlerini ve indislerini kullanıcı-tanımlı bir fonksiyonu kullanarak karşılaştırır ve bir dizi gönderir

array_unique() Diziden tekrarlanan değerleri silerarray_unshift() Bir ya da daha çok terimi dizinin başlangıcına

eklerarray_values() Dizinin bütün değerlerini gönderirarray_walk() Kullanıcı-tanımlı bir fonksiyonu dizinin bütün

terimlerine uygulararray_walk_recursive() Kullanıcı-tanımlı bir fonksiyonu dizinin bütün

terimlerine özyinelemeli uygular

Page 248: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

248PHP Programlama - 2. Bölüm Tolga GÜYER

Dizi Fonksiyonları

Fonksiyon İşleviarsort() Dizinin terimlerini ters sıraya dönüştürür ve indisleri buna

göre düzenlerasort() Diziyi sıralar ve indisleri yeniden düzenlercompact() Değişkenleri ve taşıdıkları değerleri içeren bir dizi oluştururcount() Dizinin terim sayısını gönderircurrent() Dizinin anlık işlemdeki terimini gönderireach() Dizinin anlık işlemdeki değerini ve indisini gönderirend() İşaretçiyi dizinin son terimine yönlendirirextract() Dizinin anlık işlemdeki terimine değişken ekler

Page 249: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

249PHP Programlama - 2. Bölüm Tolga GÜYER

Dizi Fonksiyonları

Fonksiyon İşleviin_array() Belirli bir değerin dizide bulunup bulunmadığını denetlerkey() Diziden bir indis çekerkrsort() Diziyi indise göre ters sırada sıralarksort() Diziyi indise göre sıralarlist() Değişkenleri dizideymiş gibi atarnatcasesort() Diziyi “doğal sıralama” algoritmasını kullanarak

büyük/küçük harf duyarlı olarak sıralarnatsort() Diziyi “doğal sıralama” algoritmasını kullanarak sıralarnext() Dizinin işaretçisini bir sonraki terime ötelerpos() İşaretçinin anlık işlemdeki konumunu verirprev() Dizinin işaretçisini bir önceki terime ötelerrange() Terim sayısı belirterek dizi oluşturur

Page 250: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

250PHP Programlama - 2. Bölüm Tolga GÜYER

Dizi Fonksiyonları

Fonksiyon İşlevireset() İşaretçiyi dizinin ilk terimine yönlendirirrsort() Diziyi ters sırada sıralarshuffle() Dizi terimlerini karıştırırsizeof() Dizinin terim sayısısort() Diziyi sıralaruasort() Diziyi kullanıcı-tanımlı bir fonksiyon kullanarak sıralar ve

indisleri yeniden düzenleruksort() Diziyi kullanıcı-tanımlı bir fonksiyon kullanarak indislerine

göre sıralarusort() Diziyi kullanıcı-tanımlı bir fonksiyon kullanarak

değerlerine göre sıralar

Page 251: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

251PHP Programlama - 2. Bölüm Tolga GÜYER

Dizin (Klasör) Fonksiyonları

Fonksiyon İşlevichdir() İşlemdeki dizini değiştirirchroot() O andaki işlemin kök dizinini değiştirirdir() Dizini açarclosedir() Açılan dizini kapatırgetcwd() Anlık işlemdeki dizini gönderiropendir() Dizini açarreaddir() İşlemdeki dizinden bir girdi okurrewinddir() Anlık işlemdeki dizini sıfırlarscandir() Belirlenen konumdaki dizin ve dosyaları gönderir

Page 252: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

252PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpprint_r(scandir("odevler"));

?>

Array([0] => .[1] => ..[2] => 050535002.rar[3] => 050535003.rar[4] => 050535005.rar[5] => 050535006.rar[6] => 050535007.rar[7] => 050535010.rar)

Page 253: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

253PHP Programlama - 2. Bölüm Tolga GÜYER

Hata Fonksiyonları

Fonksiyon İşlevidebug_backtrace() Geriye-doğru tarama işlemi (backtrace)

başlatırdebug_print_backtrace() Geriye-doğru tarama işlemini ekrana yazarerror_get_last() Alınan en son hatayı verirerror_log() Bir hatayı sunucunun hata izlencesine, bir

dosyaya ya da belirlenecek bir uzak hedefe gönderilmesini sağlar

error_reporting() Hangi hataların rapor edileceğini belirlerrestore_error_handler() Restores the previous error handlerrestore_exception_handler() Bir önceki istisnai durum ayarına dönerset_error_handler() Hata takibi için bir kullanıcı-tanımlı

fonksiyonu atarset_exception_handler() İstisnai durumlar için bir kullanıcı-tanımlı

fonksiyonu atar

Page 254: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

254PHP Programlama - 2. Bölüm Tolga GÜYER

Hata Fonksiyonları

Fonksiyon İşlevitrigger_error() Kullanıcı-tanımlı bir hata mesajı oluştururuser_error() Kullanıcı-tanımlı bir hata mesajı oluşturur

<?php$sayi=1;if ($sayi<2){

trigger_error("Kullanıcı-tanımlı hatadurumu tetiklendi.");}?>

Programın çalışması durdurularak belirtilen hata mesajı verilecektir.

Page 255: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

255PHP Programlama - 2. Bölüm Tolga GÜYER

Matematik Fonksiyonları

Fonksiyon İşlevi

abs() Sayının mutlak değerini gönderiracos() Sayının ters kosinüs değerini gönderiracosh() Sayının ters hiperbolik kosinüs değerini gönderirasin() Sayının ters sinüs değerini gönderirasinh() Sayının ters hiperbolik sinüs değerini gönderiratan() Sayının -PI/2 ve PI/2 radyan değerleri arasında kalan ters

tanjant değerini gönderir atan2() Bir (x,y) noktasının açısını -PI ve PI radyan değerleri

arasında nümerik olarak gönderiratanh() Sayının ters hiperbolik tanjant değerini gönderirbase_convert() Sayıyı bir tabandan başka bir tabana dönüştürür

Page 256: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

256PHP Programlama - 2. Bölüm Tolga GÜYER

Matematik Fonksiyonları

Fonksiyon İşlevi

bindec() İkili (binary) tabandaki sayıyı onlu (decimal) tabana dönüştürür

ceil() Sayıya en yakın bir üst tamsayıyı gönderircos() Sayının kosinüs değerini gönderircosh() Sayının hiperbolik kosinüs değerini gönderirdecbin() Onlu (decimal) tabandaki sayıyı ikili (binary) tabana

dönüştürürdechex() Onlu (decimal) tabandaki sayıyı onaltılı (hexadecimal)

tabana dönüştürürdecoct() Onlu (decimal) tabandaki sayıyı sekizli (octal) tabana

dönüştürürdeg2rad() Dereceyi radyan birimine dönüştürür

Page 257: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

257PHP Programlama - 2. Bölüm Tolga GÜYER

Matematik Fonksiyonları

Fonksiyon İşlevi

exp() ex değerini gönderirexpm1() ex – 1 değerini gönderirfloor() Sayıya en yakın bir alt tamsayıyı gönderirfmod() Sayının bölmede kalanını (mod) gönderirgetrandmax() rand() fonksiyonu ile elde edilebilecek en büyük

rastgele sayıyı gönderirhexdec() Onaltılı (hexadecimal) tabandaki sayıyı onlu (decimal)

tabana dönüştürürhypot() Dik üçgenin hipotenüs uzunluğunu gönderiris_finite() Değer sonlu bir sayı ise True değerini üretiris_infinite() Değer sonsuz bir sayı ise True değerini üretir

Page 258: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

258PHP Programlama - 2. Bölüm Tolga GÜYER

Matematik Fonksiyonları

Fonksiyon İşlevi

is_nan() Değer bir sayı değil ise True değerini üretirlcg_value() (0,1) aralığında bir pseudo rastgele sayı üretirlog() Bir sayının E tabanındaki doğal logaritma değerini

üretirlog10() Bir sayının 10 tabanındaki logaritma değerini üretirlog1p() log(1+sayı) değerini üretirmax() İki sayıdan büyük olanı gönderirmin() İki sayıdan küçük olanı gönderirmt_getrandmax() mt_rand() fonksiyonu ile elde edilebilecek en büyük

rastgele sayıyı gönderirmt_rand() Mersenne Twister algoritmasını kullanarak rastgele sayı

üretir

Page 259: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

259PHP Programlama - 2. Bölüm Tolga GÜYER

Matematik Fonksiyonları

Fonksiyon İşlevi

mt_srand() Mersenne Twister rastgele sayı üreticisini başlatıroctdec() Sekizli (octal) tabandaki sayıyı onlu (decimal) tabana

dönüştürürpi() PI sayısının değerini gönderirpow() x sayısının y’nci kuvvetini gönderirrad2deg() Radyanı dereceye dönüştürürrand() Rastgele tamsayı üretirround() Sayıyı en yakın tamsayıya yuvarlarsin() Sayının sinüs değerini gönderirsinh() Sayının hiperbolik sinüs değerini gönderirsqrt() Sayının karekök değerini gönderir

Page 260: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

260PHP Programlama - 2. Bölüm Tolga GÜYER

Matematik Fonksiyonları

Fonksiyon İşlevi

srand() Rastgele sayı üreticisini başlatırtan() Sayının tanjant değerini gönderirtanh() Sayının hiperbolik tanjant değerini gönderir

Page 261: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

261PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpecho "ceil(6.1)=",ceil(6.1); echo "<hr>"; echo "ceil(7.9)=",ceil(7.9); echo "<hr>"; echo "round( 13.4)=",round( 13.4); echo "<hr>"; echo "round( 32.5)=",round( 32.5); echo "<hr>"; echo "floor(8.1)=",floor(8.1); echo "<hr>"; echo "floor(4.9)=",floor(4.9); echo "<hr>";

?>

ceil(6.1)=7--------------------------------------------------ceil(7.9)=8--------------------------------------------------round( 13.4)=13--------------------------------------------------round( 32.5)=33--------------------------------------------------floor(8.1)=8--------------------------------------------------floor(4.9)=4

Page 262: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

262PHP Programlama - 2. Bölüm Tolga GÜYER

<?php/* 0-360 derece arasındaki bütün açıların sinüs, kosinüs ve tanjant değerleri hesaplanıyor. */echo "<h1>Trigonometrik Değerler Tablosu</h1><table border=1>

<tr bgcolor=#AEEEF9><td width=70>Açı</td><td width=110>Sinüs</td><td width=110>Kosinüs</td><td width=110>Tanjant</td>

</tr>";for ($aci=0;$aci<=360;$aci++){

$sinus = number_format(sin(deg2rad($aci)),6);

Page 263: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

263PHP Programlama - 2. Bölüm Tolga GÜYER

$kosinus = number_format(cos(deg2rad($aci)),6);if (!($aci==90) and !($aci==270)){

$tanjant=number_format(tan(deg2rad($aci)),6);}else{$tanjant="=sonsuz=“;}

echo "<tr bgcolor=#CACBEE><td width=70>$aci</td><td width=110>$sinus</td><td width=110>$kosinus</td><td width=110>$tanjant</td></tr>

";}

?>

Devamı

Page 264: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

264PHP Programlama - 2. Bölüm Tolga GÜYER

Trigonometrik Değerler TablosuAçı Sinüs Kosinüs Tanjant0 0.000000 1.000000 0.0000001 0.017452 0.999848 0.0174552 0.034899 0.999391 0.0349213 0.052336 0.998630 0.0524084 0.069756 0.997564 0.0699275 0.087156 0.996195 0.0874896 0.104528 0.994522 0.105104... ... ... ...

Page 265: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

265PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpfunction turkce_oku ($Gelen_Sayi){$birler = fmod($Gelen_Sayi,10);$onlar = floor($Gelen_Sayi/10);switch ($onlar) {case 1:

$on="ON";break;

case 2:$on="YİRMİ";break;

Daha önce tek basamaklı sayılar için yaptığımız, bir sayının Türkçe okunuşu örneğini, iki basamaklı sayılar için yapalım.

Page 266: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

266PHP Programlama - 2. Bölüm Tolga GÜYER

case 3:$on="OTUZ";break;

case 4:$on="KIRK";break;

case 5:$on="ELLİ";break;

case 6:$on="ALTMIŞ";break;

case 7:$on="YETMİŞ";break;

Devamı

Page 267: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

267PHP Programlama - 2. Bölüm Tolga GÜYER

case 8:$on="SEKSEN";break;

case 9:$on="DOKSAN";break; }

switch ($birler) {case 1:

$bir="BİR";break;

case 2:$bir=“İKİ";break;

case 3:$bir="ÜÇ";break;

Devamı

Page 268: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

268PHP Programlama - 2. Bölüm Tolga GÜYER

case 4:$bir="DÖRT";break;

case 5:$bir="BEŞ";break;

case 6:$bir="ALTI";break;

case 7:$bir="YEDİ";break;

case 8:$bir="SEKİZ";break;

Devamı

Page 269: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

269PHP Programlama - 2. Bölüm Tolga GÜYER

case 9:$bir="DOKUZ";break; }

return $on.$bir; }$Sayi=48;echo "$Sayi Sayısının Türkçe Okunuşu : "; echo(turkce_oku ($Sayi));?>

Devamı

Bu örnekte öncelikle iki basamaklı sayı onlar ve birler basamaklarına ayrılıyor, daha sonra onlar ve birler basamağına karşılık gelen Türkçe okunuşlar belirlenerek birleştiriliyor.

Page 270: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

270PHP Programlama - 2. Bölüm Tolga GÜYER

Burada dikkat edilmesi gereken nokta, iki basamaklı sayının nasıl basamaklarına ayrıldığıdır. Sayının 10 modundaki değeri, doğrudan birler basamağını verir:

43 mod 10 = 3 gibi…Bu işlem PHP’de fmod dahili fonksiyonu kullanılarak gerçekleştiriliyor:

$birler = fmod($Gelen_Sayi,10);

Page 271: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

271PHP Programlama - 2. Bölüm Tolga GÜYER

Onlar basamağını ise sayıyı 10’a bölüp, çıkan sonucun tam kısmını alarak elde ediyoruz.

43 / 10 = 4.3Tam kısım (4.3) = 4 gibi…

Bu işlem PHP’de “floor” dahili fonksiyonu kullanılarak gerçekleştiriliyor:

$onlar = floor($Gelen_Sayi/10);

Page 272: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

272PHP Programlama - 2. Bölüm Tolga GÜYER

Üç basamaklı bir sayının Türkçe okunuşunu ekrandanyazacak programı yazabilir misiniz?

Page 273: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

273PHP Programlama - 2. Bölüm Tolga GÜYER

Karekökü tamsayı olan sayılara “tamkaresayılar” adı verilir. Örneğin 4, karekökü olan 2 tamsayı olduğundan bir tamkaredir. 9, 16 ve 25 de tamkare sayılardır, ancak 5,6,7,8 değildir.

Yazacağımız PHP programı, 1 ile 1000 arasındaki tamkare sayıları listelesin.

Page 274: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

274PHP Programlama - 2. Bölüm Tolga GÜYER

<?php$sayi = 1;while ( $sayi <= 1000 ) {

if (floor(sqrt($sayi))==sqrt($sayi)){

echo "$sayi, “;}$sayi ++;

}?>

1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961,

Page 275: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

275PHP Programlama - 2. Bölüm Tolga GÜYER

Bu örnekte dikkat etmemiz gereken nokta, sayının karekökünün tamsayı olup olmadığının anlaşılması için PHP fonksiyonlarının nasıl kullanıldığıdır.Bu işlem için iki matematik fonksiyonu kullanılmıştır:

“floor” ve “sqrt”

Page 276: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

276PHP Programlama - 2. Bölüm Tolga GÜYER

Eğer bir sayının karekökünün tam kısmı, sayının kareköküne eşit ise o sayı bir tamkaresayıdır:

if (floor(sqrt($sayi))==sqrt($sayi))

Programın çıktısında tamkare sayılar birbirlerinden virgülleayrılmış biçimde listelenmiştir. Ancak en sonda fazladan birvirgül basılmıştır.Koda yapacağınız bir ekleme ile bunu engelleyebilir misiniz?

Page 277: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

277PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşleviaddcslashes() Bir stringde belirlenen karakterlerden

öncesine \ karakteri ekleraddslashes() Bir stringde ön tanımlı (tırnak işareti gibi)

karakterlerden öncesine \ karakteri eklerbin2hex() Stringin ASCII karakterlerini onaltılık

tabandaki değerlere dönüştürürchop() rtrim() ile aynı işleve sahiptirchr() Belirli bir ASCII değere karşılık gelen

karakteri gönderirchunk_split() Stringi daha küçük parçalara bölerconvert_cyr_string() Kril alfabesinden dönüşüm yaparconvert_uudecode() uuencoded olarak şifrelenmiş stringi çözer

Page 278: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

278PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşleviconvert_uuencode() Stringi uuencoded olarak şifrelercount_chars() Bir ASCII karakterin string içersinde kaç

defa geçtiğini sayarcrc32() Bir string için 32-bit CRC hesabını yaparcrypt() Stringi hashing metoduna göre şifrelerecho() Stringin ekran çıktısını verirexplode() Stringi diziye dönüştürürfprintf() Formatlı bir stringi belirlenen çıktı

formatına uygun olarak ekrana yazarget_html_translation_table() htmlspecialchars() ve htmlentities()

fonksiyonları tarafından kullanılan HTML dönüşüm tablosunu verir

Page 279: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

279PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevihebrev() Hebrew metni görsel metne dönüştürürhebrevc() Hebrew metni satırbaşları yaparak görsel

metne dönüştürürhtml_entity_decode() HTML girdilerini karaktere dönüştürürhtmlentities() Karakterleri HTML girdilerine dönüştürürhtmlspecialchars_decode() Bazı ön-tanımlı HTML girdilerini (&quot gibi)

karaktere dönüştürürhtmlspecialchars() Bazı ön-tanımlı karakterleri HTML girdilerine

dönüştürürimplode() Biz dizinin terimlerini kullanarak string

oluştururjoin() implode() ile aynı işleve sahiptir

Page 280: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

280PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevilevenshtein() İki string arasındaki Levenshtein measafesini

hesaplarlocaleconv() Yerel sayı ve para birimi bilgisini görüntülerltrim() Stringin solunda yer alan boşlukları kesermd5() Bir stringin MD5 hash değerini hesaplarmd5_file() Bir dosyanın MD5 hash değerini hesaplarmetaphone() Bir stringin metaphone anahtarını hesaplarmoney_format() String biçimini para birimine dönüştürürnl_langinfo() Özel yerel bilgiyi verirnl2br() Bir stirngde her yeni satırdan önce satırbaşı

yapar

Page 281: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

281PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevinumber_format() Stringi binler ayıraçlı sayı formatına

dönüştürürord() Bir stringin ilk karakterinin ASCII değerini

verirparse_str() Bir sorgulama stringini değişkenlere ayrıştırırprint() Stringin çıktısını verirprintf() Biçimlendirilmiş (formatlı) stringin çıktısını

verirquoted_printable_decode()quotemeta() Meta karakterleri tırnak içine alırrtrim() Stringin sağında yer alan boşlukları kesersetlocale() Yerel bilgiyi ayarlar

Page 282: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

282PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevisha1() Bir stringin SHA-1 hash değerini hesaplarsha1_file() Bir dosyanın SHA-1 hash değerini hesaplarsimilar_text() İki string arasındaki benzerliği hesaplarsoundex() Bir stringin soundex anahtar değerini hesaplarsprintf() Formatlı bir stringi değişkene yazarsscanf() Belirlenen bir formata göre stringden girdileri

ayrıştırırstr_ireplace() String içinde karakter değişimi yapar

(büyük/küçük harf duyarlı değildir)

Page 283: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

283PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevistr_pad() Stringin uzunluğunu belirlenen bir karakter kullanarak

değiştirirstr_repeat() Bir stringi belirlenen bir sayıda tekrarlarstr_replace() String içinde karakter değişimi yapar (büyük/küçük

harf duyarlıdır)str_rot13() Bir string üzerinde ROT13 şifrelemesini çalıştırırstr_shuffle() Stringi oluşturan tüm karakterleri rastgele karıştırırstr_split() Stringi diziye ayrıştırırstr_word_count() Stringde yer alan kelime sayısını hesaplarstrcasecmp() İki stringi karşılaştırır (büyük/küçük harf duyarlı

değildir)

Page 284: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

284PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevistrchr() String içersinde string ararstrcmp() İki stringi karşılaştırır (büyük/küçük harf duyarlıdır)strcoll() Yerel temelli string karşılaştırmasıstrcspn() Belirli bir string parçasından önce yer alan karakterlerin

sayısını verirstrip_tags() String içersinden HTML ve PHP etiketlerini silerstripcslashes() addcslashes() fonksiyonu ile eklenen \ işaretlerini silerstripslashes() addslashes() fonksiyonu ile eklenen \ işaretlerini silerstripos() Bir string içersinde başka bir stringin ilk bulunuş

konumunu verir (büyük/küçük harf duyarlı değildir)stristr() Bir string içersinde başka bir stringin ilk bulunuşunu

verir (büyük/küçük harf duyarlı değildir)

Page 285: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

285PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevistrlen() Stringin uzunluğunu gönderirstrnatcasecmp() İki stringi “doğal sıralama" algoritmasını kullanarak

karşılaştırır (büyük/küçük harf duyarlı değildir)strnatcmp() İki stringi “doğal sıralama" algoritmasını kullanarak

karşılaştırır (büyük/küçük harf duyarlıdır)strncasecmp() İlk n karakterin string karşılaştırması (büyük/küçük

harf duyarlı değildir)strncmp() İlk n karakterin string karşılaştırması (büyük/küçük

harf duyarlıdır)strpbrk() Bir string içersinde herhangi bir karakter setini arar. strpos() Bir string içersinde başka bir stringin ilk bulunuş

konumunu verir büyük/küçük harf duyarlıdır)

Page 286: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

286PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevistrrchr() Bir stringin başka bir string içersindeki son bulunuşunu

verirstrrev() Stringi tersine çevirirstrripos() Bir string içersinde başka bir stringin en son

bulunuşunun konumunu verir (büyük/küçük harfduyarlı değildir)

strrpos() Bir string içersinde başka bir stringin en son bulunuşunun konumunu verir (büyük/küçük harfduyarlıdır)

strspn() Bir string içersinde belirlenen bir karakter listesinde yer alan karakterlerin sayısını verir

Page 287: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

287PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevistrstr() Bir string içersinde başka bir stringin ilk bulunuşunun

konumunu verir (büyük/küçük harf duyarlıdır)strtok() Bir stringi daha küçük parçalara bölerstrtolower() Stringi küçük harflere dönüştürürstrtoupper() Stringi büyük harflere dönüştürürstrtr() String içersinde belirlenen karakterleri dönüştürürsubstr() Stringin istenen parçasını verirsubstr_compare() İki stringi belirlenen bir karakterden itibaren

karşılaştırır (büyük/küçük harf duyarlıdır)substr_count() Bir stringde başka bir stringin bulunuş sayısını gönderirsubstr_replace() Bir stringin belirli bir parçasını başka bir string ile

değiştirir

Page 288: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

288PHP Programlama - 2. Bölüm Tolga GÜYER

String Fonksiyonları

Fonksiyon İşlevitrim() Stringin her iki tarafındaki boşlukları keserucfirst() Stringin ilk karakterini büyük harfe dönüştürürucwords() Stringi oluşturan her kelimenin ilk karakterini büyük

harfe dönüştürürvfprintf() Formatlı stringin belirtilen yöne çıktısını gönderirvprintf() Formatlı stringin çıktısını gönderirvsprintf() Formatlı stringi değişkene yazarwordwrap() Stringi belirli bir uzunluğa ulaştığında yeni satırlara

böler

Page 289: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

289PHP Programlama - 2. Bölüm Tolga GÜYER

Şimdi stringler üzerine bazı örnek programlar tasarlayalım.İlk örneğimizde, kullanıcının adını, soyadını ve e-posta uzantısını kullanarak e-posta adresini otomatik olarak oluşturacak programı yazalım.

Page 290: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

290PHP Programlama - 2. Bölüm Tolga GÜYER

Uygulamamız e-posta adresini şu kurala göre oluştursun:

<Adın ilk harfi>.<Soyad>@<e-posta uzantısı>

Page 291: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

291PHP Programlama - 2. Bölüm Tolga GÜYER

Örneğin adı Çetin, soyadı Öztürk olan bir kullanıcı için, gazi.edu.tr e-posta uzantısına göre,

[email protected] adresi oluşturulsun.

Page 292: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

292PHP Programlama - 2. Bölüm Tolga GÜYER

Burada çözmemiz gereken en önemli problem, Türkçe harflerin benzer İngilizce harflere dönüştürülmesidir. Örneğin “ğ” harfinin “g” harfine dönüştürülmesi gibi.

Bunu bizim için, yazacağımız bir dönüşüm fonksiyonu yapacak.

Page 293: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

293PHP Programlama - 2. Bölüm Tolga GÜYER

<body>

<form action="" method="post"><p>Ad : <input size="20" type="text" name="ad"></p><p>Soyad : <input size="20" type="text" name="soyad"></p><p>E-Posta Uzantısı : <input size="20" type="text" name="eposta" value="gazi.edu.tr"></p><p><input name="dugme" type="submit" value="E-Posta Adresi"></p></form>

Page 294: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

294PHP Programlama - 2. Bölüm Tolga GÜYER

<?php

function turkceharf_donustur ($harf){

switch ($harf) {case "ç":

$harf="c";break;

case "ğ":$harf="g";break;

case "ö":$harf="o";break;

Devamı

Page 295: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

295PHP Programlama - 2. Bölüm Tolga GÜYER

case "ş":$harf="s";break;

case "ü":$harf="u";break;

case "İ":$harf="i";break;

case "ı":$harf="i";break;

}return $harf;}

Devamı

Page 296: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

296PHP Programlama - 2. Bölüm Tolga GÜYER

function eposta_olustur ($adi, $soyadi){

$adilk=strtolower(substr($adi,0,1));$soyad=strtolower($soyadi);$eposta = $adilk.".".$soyad;$yeni_eposta="";for ($i = 0; $i <= strlen($eposta); $i++) {$yeni_eposta=$yeni_eposta.turkceharf_donustur(

substr($eposta,$i,1));}

return $yeni_eposta;}

Devamı

Page 297: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

297PHP Programlama - 2. Bölüm Tolga GÜYER

if(isset($_POST["dugme"])){ $ad = $_POST['ad'];$soyad = $_POST['soyad'];$e_posta = $_POST['eposta'];echo "<p>e-posta adresi : "; echo

eposta_olustur($ad,$soyad)."@".$e_posta; }

?></body></html>

Devamı

Page 298: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

298PHP Programlama - 2. Bölüm Tolga GÜYER

Yazdığımız turkceharf_donustur() fonksiyonu, kendisine gelen Türkçe harfi benzeri İngilizce harfe dönüştürmektedir.Önce adın ilk harfi ile soyad küçük harfe dönüştürülerek ve araya nokta işareti konularak birleştirilmektedir. Daha sonra oluşturulan bu string, harf harf fonksiyonumuza gönderilmekte ve içersinde bulunan Türkçe harfler dönüştürülmektedir.

Page 299: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

299PHP Programlama - 2. Bölüm Tolga GÜYER

Sonuç olarak elde edilen string, e-posta uzantısı ile birleştirilmek suretiyle e-posta adresi elde edilmektedir.

Aynı işleve sahip, ancak kodu önemli ölçüde azaltacak başka bir yöntemde, dönüştürme işleminde diziler kullanılmaktadır.

Page 300: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

300PHP Programlama - 2. Bölüm Tolga GÜYER

<?phpfunction Tr_Donustur($gelen_metin){

$gelen_metin = trim($gelen_metin);$aranan_harfler =

array('ç',‘ğ',‘ı','ö',‘ş','ü',‘İ');$degistirilecek_harfler =

array('c','g','i','o','s','u','i');return

str_replace($aranan_harfler,$degistirilecek_harfler,$gelen_metin); }if(isset($_POST["dugme"])){

$ad = $_POST['ad']; $soyad = $_POST['soyad'];$e_posta = $_POST['eposta'];echo "<p>e-posta adresi : "; echo

Tr_Donustur(strtolower($ad[0].".".$soyad))."@".$e_posta; }?>

Page 301: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

301PHP Programlama - 2. Bölüm Tolga GÜYER

strstr() fonksiyonunun kullanıldığı başka bir örnek:<?php

$sifreniz = "tolgaguyer";$adiniz = "tolga";if ( strstr( $sifreniz, $adiniz ) )print "Şifreniz içersinde adınız yer

almamalıdır!";elseprint "Teşekkürler...";

?>

Page 302: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

302PHP Programlama - 2. Bölüm Tolga GÜYER

Kullanıcı tarafından girilen bir metni Morsealfabesine göre kodlayan bir örnek:<form action="" method="post"><p>Metni Giriniz: <input type="text" name="metin" ></p><p><input name="dugme" type="submit" ></p></form>

<?php$morseKodlari = array ('A' => '.-', 'B' => '-...', 'C' => '-.-.', 'D' => '-..', 'E' => '.', 'F' => '..-.', 'G' => '--.', 'H' => '....', 'I' => '..', 'J' => '.---‘,'K' => '-.-', 'L' => '.-..', 'M' =>

Page 303: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

303PHP Programlama - 2. Bölüm Tolga GÜYER

'--', 'N' => '-.', 'O' => '---', 'P' => '.--.', 'Q' => '--.-', 'R' => '.-.', 'S' => '...', 'T' => '-', 'U' => '..-', 'V' => '...-', 'W' => '.--', 'X' => '-..-', 'Y' => '-.--', 'Z' => '--..', '0' => '-----', '1' => '.----', '2' => '..---', '3' => '...--', '4' => '....-', '5' => '.....', '6' => '-....', '7' => '--...', '8' => '---..', '9' => '----.', '.' => '.-.-.-', ',' => '--..--', ':' => '---...', '?' => '..--..', '-' => '-....-', '/' => '-..-.', '(' => '-.--.-', ' ' => '(bosluk)');

Devamı

Page 304: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

304PHP Programlama - 2. Bölüm Tolga GÜYER

if(isset($_POST["dugme"])){

$metin=$_POST['metin'];$uzunluk=strlen($metin);$morseKodu='';for($i=0;$i<=$uzunluk-1;$i++){

$morseKodu=$morseKodu . $morseKodlari[strtoupper($metin[$i])] . ' ';

}echo("<strong> $morseKodu </strong>");

}

?>

Devamı

Page 305: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

305PHP Programlama - 2. Bölüm Tolga GÜYER

Bu örnekte dikkat etmemiz gereken önemli bir nokta,

($metin[$i])kullanımdır. Burada $metin bir stringdeğişkenidir ancak $i indisi ile bir dizi gibi kullanılmıştır.

Page 306: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Fonksiyonlar

306PHP Programlama - 2. Bölüm Tolga GÜYER

Buradan çıkaracağımız sonuç, stringtüründeki her değişkenin, karakterlerden oluşmuş bir dizi olarak kullanılabileceği gerçeğidir.

Bu özellik, stringler üzerinde işlem yaparken burada olduğu gibi bize önemli kolaylıklar sağlamaktadır.

Page 307: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

307PHP Programlama - 2. Bölüm Tolga GÜYER

Geliştireceğimiz bu uygulama, İnternet üzerinde bilgisayar parçaları siparişi vermek için tasarlanmıştır. Uygulama iki dosyadan oluşmaktadır. İlki, sipariş formunun yer aldığı HTML uygulaması, ikincisi ise sipariş bilgilerini alarak hesaplamaları ve raporlamayı gerçekleştiren PHP uygulamasıdır.

Page 308: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

308PHP Programlama - 2. Bölüm Tolga GÜYER

<html><head><title>Bilgisayar Parçaları Satışı</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9"></head><body><h1>Bilgisayar Parçaları Satışı</h1><h2>Sipariş Formu</h2><form action="siparisi_al.php" method=post><table border=1><tr bgcolor=#BEE9E9><td width=150>Parça Adı</td><td align=center width=110>Birim Fiyat</td><td width=15>Adet</td>

</tr>

Page 309: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

309PHP Programlama - 2. Bölüm Tolga GÜYER

<tr bgcolor=#FFFFAA><td>Kasa</td><td align=right>85.50 TL</td><td align=center><input type="text" name="kasa"

size=3 maxlength=3></td></tr><td>Anakart</td><td align=right>150.00 YTL</td><td align=center><input type="text"

name="anakart" size=3 maxlength=3></td></tr>

Devamı

Page 310: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

310PHP Programlama - 2. Bölüm Tolga GÜYER

<tr bgcolor=#FFFFAA><td>İşlemci</td><td align=right>275.30 YTL</td><td align=center><input type="text"

name="islemci" size=3 maxlength=3></td></tr><tr bgcolor=#FFFFAA><td>Sabit Disk</td><td align=right>120.80 YTL</td><td align=center><input type="text"

name="sabitdisk" size=3 maxlength=3></td></tr>

Devamı

Page 311: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

311PHP Programlama - 2. Bölüm Tolga GÜYER

<tr bgcolor=#FFFFAA><td>CD/DVD Sürücüsü</td><td align=right>90.00 YTL</td><td align=center><input type="text" name="cddvd"

size=3 maxlength=3></td></tr><tr bgcolor=#FFFFAA><td>Bellek</td><td align=right>134.20 YTL</td><td align=center><input type="text"

name="bellek" size=3 maxlength=3></td></tr>

Devamı

Page 312: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

312PHP Programlama - 2. Bölüm Tolga GÜYER

<tr bgcolor=#BEE9E9><td colspan=3 align=left><input type=submit

value="Siparişi Al"></td></tr></table></form>

</body></html>

Devamı

Page 313: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

313PHP Programlama - 2. Bölüm Tolga GÜYER

Form çalıştırıldığında devreye siparisi_al.phpdosyası girecektir. Bu dosya birim fiyat sabitlerini ve formdan gelen parça adetleri verisini kullanarak toplam tutarı hesaplayacak, string fonksiyonlarının kullanıldığı bir yöntemle bu tutarı yazı ile de yazacaktır.

Page 314: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

314PHP Programlama - 2. Bölüm Tolga GÜYER

<html><head><title>Bilgisayar Parçaları Satışı</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9"></head><body><h1>Bilgisayar Parçaları Satışı</h1><h2>Sipariş Bilgileri</h2>

siparisi_al.php

Page 315: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

315PHP Programlama - 2. Bölüm Tolga GÜYER

<?php

function birler_oku ($Gelen_Sayi){switch ($Gelen_Sayi) {case 0:

$bir="";break;

case 1:$bir="BİR";break;

case 2:$bir="İKİ";break;

case 3:$bir="ÜÇ";break;

Devamı

Page 316: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

316PHP Programlama - 2. Bölüm Tolga GÜYER

case 4: $bir="DÖRT";break;

case 5: $bir="BEŞ";break;

case 6: $bir="ALTI";break;

case 7: $bir="YEDİ";break;

case 8: $bir="SEKİZ";break;

case 9: $bir="DOKUZ";break;

}return $bir;}

Devamı

Page 317: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

317PHP Programlama - 2. Bölüm Tolga GÜYER

function onlar_oku ($Gelen_Sayi){switch ($Gelen_Sayi) {case 0: $on="";

break;case 1: $on="ON";

break;case 2: $on="YİRMİ";

break;case 3: $on="OTUZ";

break;case 4: $on="KIRK";

break;case 5: $on="ELLİ";

break;

Devamı

Page 318: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

318PHP Programlama - 2. Bölüm Tolga GÜYER

case 6: $on="ALTMIŞ";break;

case 7: $on="YETMİŞ";break;

case 8: $on="SEKSEN";break;

case 9: $on="DOKSAN";break;}

return $on;}

Devamı

Page 319: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

319PHP Programlama - 2. Bölüm Tolga GÜYER

function oku ($sayi){$basamak_sayisi=strlen($sayi);

switch ($basamak_sayisi) {case 1:

$sonuc=birler_oku((int)$sayi);break;case 2:

$sonuc=onlar_oku((int)$sayi[0]).birler_oku((int)$sayi[1]);

break;case 3:

if ($sayi[0]=="1") {

Devamı

Page 320: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

320PHP Programlama - 2. Bölüm Tolga GÜYER

$sonuc="YÜZ".onlar_oku((int)$sayi[1]).birler_oku((int)$sayi[2]);

}else{

$sonuc=birler_oku((int)$sayi[0])."YÜZ".onlar_oku((int)$sayi[1]).birler_oku((int)$sayi[2]);

}break;

case 4:if ($sayi[0]=="1") {

if ($sayi[1]=="0" and $sayi[2]=="0")

{

Devamı

Page 321: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

321PHP Programlama - 2. Bölüm Tolga GÜYER

$sonuc="BİN".birler_oku((int)$sayi[3]);}elseif ($sayi[1]=="0") {

$sonuc="BİN".onlar_oku((int)$sayi[2]).birler_oku((int)$sayi[3]); }

else {if ($sayi[1]=="1"){

$sonuc="BİNYÜZ".onlar_oku((int)$sayi[2]).birler_oku((int)$sayi[3])}

else{

Devamı

Page 322: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

322PHP Programlama - 2. Bölüm Tolga GÜYER

$sonuc="BİN".birler_oku((int)$sayi[1])."YÜZ".onlar_oku((int)$sayi[2]).birler_oku((int)$sayi[3]);

}}

}else{

if ($sayi[1]=="0" and$sayi[2]=="0")

{

$sonuc=birler_oku((int)$sayi[0])."BİN".birler_oku((int)$sayi[3]);

}elseif ($sayi[1]=="0") {

Devamı

Page 323: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

323PHP Programlama - 2. Bölüm Tolga GÜYER

$sonuc=birler_oku((int)$sayi[0])."BİN".onlar_oku((int)$sayi[2]).birler_oku((int)$sayi[3]); }

else{if ($sayi[1]=="1"){

$sonuc=birler_oku((int)$sayi[0])."BİNYÜZ".onlar_oku((int)$sayi[2]).birler_oku((int)$sayi[3]);

}else {

$sonuc=birler_oku((int)$sayi[0])."BİN".birler_oku((int)$sayi[1])."YÜZ".onlar_oku((int)$sayi[2]).birler_oku((int)$sayi[3]);}

}}

break; }return $sonuc;}

Devamı

Page 324: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

324PHP Programlama - 2. Bölüm Tolga GÜYER

function TL_Oku ($para){

$noktayeri=strpos($para,".");if ($noktayeri<>0) {

$tl=substr($para,0,$noktayeri);

$kr=substr($para,$noktayeri+1,strlen($para)-$noktayeri);

return oku($tl)." TL ".oku($kr)." Kr";

}else {

return oku($para)." TL";}}

Devamı

Page 325: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

325PHP Programlama - 2. Bölüm Tolga GÜYER

echo "<p>Siparişiniz "; // Siparişle ilgili bütün detaylar bu php kodu

// tarafından hesaplanmaktadır.

echo date("j/m/y");echo " tarihinde, saat ";echo date("H:i");echo " itibarı ile işleme konmuştur.";echo "<p>Siparişinizle ilgili detaylar aşağıda

verilmiştir:";echo "<p>"; $kasa = (int)$_POST['kasa'];$anakart = (int)$_POST['anakart'];$islemci = (int)$_POST['islemci'];

Devamı

Page 326: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

326PHP Programlama - 2. Bölüm Tolga GÜYER

$sabitdisk = (int)$_POST['sabitdisk'];$cddvd = (int)$_POST['cddvd'];$bellek = (int)$_POST['bellek'];$kasa_ucreti = (double)$_POST['kasabirim'];$anakart_ucreti = (double)$_POST['anakartbirim'];$islemci_ucreti = (double)$_POST['islemcibirim'];$sabitdisk_ucreti =

(double)$_POST['sabitdiskbirim'];$cddvd_ucreti = (double)$_POST['cddvdbirim'];$bellek_ucreti = (double)$_POST['bellekbirim'];define("kasa_ucreti", 85.50);define("anakart_ucreti", 150.0);define("islemci_ucreti", 275.30);define("sabitdisk_ucreti", 120.80);define("cddvd_ucreti", 90.0);define("bellek_ucreti", 134.20);

Devamı

Page 327: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

327PHP Programlama - 2. Bölüm Tolga GÜYER

define("kdv_orani", 15);$toplam_parca = 0;$toplam_tutar = 0.00;$toplam_parca = $kasa + $anakart + $islemci +

$sabitdisk + $cddvd + $bellek;$toplam_birim_fiyat = kasa_ucreti +

anakart_ucreti + islemci_ucreti+ sabitdisk_ucreti +

cddvd_ucreti + bellek_ucreti;$toplam_tutar = $kasa * kasa_ucreti

+ $anakart * anakart_ucreti+ $islemci * islemci_ucreti+ $sabitdisk * sabitdisk_ucreti+ $cddvd * cddvd_ucreti+ $bellek * bellek_ucreti;

?>

Devamı

Page 328: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

328PHP Programlama - 2. Bölüm Tolga GÜYER

<table border=1><tr bgcolor=#C399C3><td width=150>Parça Adý</td><td width=25>Adet</td><td width=110 align=center>Birim Fiyat</td><td width=110 align=center>Tutar</td><td width=110 align=center>KDV (%<?php echo

kdv_orani ?>)</td><td width=110 align=center>KDV Dahil

Tutar</td></tr><tr bgcolor=#D4FFD4><td>Kasa</td><td align=right><?php echo $kasa ?></td><td align=right> <?php echo

number_format(kasa_ucreti,2)." TL" ?></td>

Devamı

Page 329: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

329PHP Programlama - 2. Bölüm Tolga GÜYER

<td align=right> <?php echo number_format($kasa * kasa_ucreti,2)." TL" ?></td>

<td align=right> <?php echonumber_format($kasa * kasa_ucreti * $kdv_orani,2)." TL" ?></td>

<td align=right> <?php echonumber_format($kasa * kasa_ucreti * (1 + $kdv_orani),2)." TL" ?></td></tr>

<tr bgcolor=#D4FFD4><td>Anakart</td><td align=right><?php echo $anakart ?></td><td align=right> <?php echonumber_format(anakart_ucreti,2)." TL" ?></td><td align=right> <?php echo

number_format($anakart * anakart_ucreti,2)." TL" ?></td>

Devamı

Page 330: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

330PHP Programlama - 2. Bölüm Tolga GÜYER

<td align=right> <?php echo number_format($anakart* anakart_ucreti * kdv_orani,2)." TL" ?></td>

<td align=right> <?php echonumber_format($anakart * anakart_ucreti * (1 + kdv_orani),2)." TL" ?></td></tr>

<tr bgcolor=#D4FFD4><td>Ýþlemci</td><td align=right><?php echo $islemci ?></td><td align=right> <?php echo

number_format(islemci_ucreti,2)." TL" ?></td><td align=right> <?php echo

number_format($islemci * islemci_ucreti,2)." TL" ?></td>

<td align=right> <?php echonumber_format($islemci * islemci_ucreti * kdv_orani,2)." TL" ?></td>

Devamı

Page 331: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

331PHP Programlama - 2. Bölüm Tolga GÜYER

<td align=right> <?php echo number_format($islemci* islemci_ucreti * (1 + kdv_orani),2)." TL" ?></td></tr>

<tr bgcolor=#D4FFD4><td>Sabit Disk</td><td align=right><?php echo $sabitdisk ?></td><td align=right> <?php echo

number_format(sabitdisk_ucreti,2)." TL" ?></td><td align=right> <?php echo

number_format($sabitdisk * sabitdisk_ucreti,2)." TL" ?></td>

<td align=right> <?php echonumber_format($sabitdisk * sabitdisk_ucreti * kdv_orani,2)." TL" ?></td>

Devamı

Page 332: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

332PHP Programlama - 2. Bölüm Tolga GÜYER

<td align=right> <?php echonumber_format($sabitdisk * sabitdisk_ucreti * (1 + kdv_orani),2)." TL" ?></td>

</tr><tr bgcolor=#D4FFD4><td>CD/DVD Sürücüsü</td><td align=right><?php echo $cddvd ?></td><td align=right> <?php echo

number_format(cddvd_ucreti,2)." TL" ?></td><td align=right> <?php echo

number_format($cddvd * cddvd_ucreti,2)." TL" ?></td>

<td align=right> <?php echonumber_format($cddvd * cddvd_ucreti * kdv_orani,2)." TL" ?></td>

Devamı

Page 333: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

333PHP Programlama - 2. Bölüm Tolga GÜYER

<td align=right> <?php echo number_format($cddvd * cddvd_ucreti * (1 + kdv_orani),2)." TL" ?></td> </tr><tr bgcolor=#D4FFD4>

<td>Bellek</td><td align=right><?php echo $bellek ?></td><td align=right> <?php echo

number_format(bellek_ucreti,2)." TL" ?></td><td align=right> <?php echo

number_format($bellek * bellek_ucreti,2)." TL" ?></td>

<td align=right> <?php echonumber_format($bellek * bellek_ucreti * kdv_orani,2)." TL" ?></td>

Devamı

Page 334: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

334PHP Programlama - 2. Bölüm Tolga GÜYER

<td align=right> <?php echo number_format($bellek * bellek_ucreti * (1 + kdv_orani),2)." TL" ?></td></tr>

<tr bgcolor=#FFFFAA><td>TOPLAM</td><td align=right><?php echo $toplam_parca

?></td><td align=right> <?php echo

number_format($toplam_birim_fiyat,2)." TL" ?></td><td align=right> <?php echo

number_format($toplam_tutar,2)." TL" ?></td><td align=right> <?php echo

number_format($toplam_tutar * kdv_orani,2)." TL" ?></td>

Devamı

Page 335: Tolga GÜYER ©2009-2010 Bolum.pdf · bir HTML deyimidir. Bu deyim içersinde, “size“ parametresinin değerinin belirlenmesi için çift tırnak işareti bulundurmaktadır. Bu

Öğrendiklerimizi Uygulayalım: Bilgisayar Parçaları Siparişi

335PHP Programlama - 2. Bölüm Tolga GÜYER

<td align=right> <?php echonumber_format($toplam_tutar * (1 + kdv_orani),2)." TL" ?></td></tr></table>

<?phpecho "<p>YAZI İLE : "; echo

TL_Oku((string)(number_format($toplam_tutar * (1 + kdv_orani),2)));echo "<p>TEŞEKKÜRLER...";

?></body></html>

Devamı