Download - PHP Sunusu - 3
![Page 1: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/1.jpg)
PHP2. Hafta
PHP‟de Kod Akışı
ve
Algoritmik Düşünebilmek
http://www.ubenzer.com/
![Page 2: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/2.jpg)
Bu derste görülecekler
• Algoritma nedir?
• Neden algoritmik düşünmek zorundayız?
• PHP‟de temel yapılar− Sabitler, değişkenler
− if … elseif … else yapısı
− switch yapısı
− while ve do while yapısı
− for döngüsü
− Operatörler
• PHP‟de tip kontrolleri nasıl yapılmaktadır?
http://www.ubenzer.com/
![Page 3: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/3.jpg)
Algoritma nedir?
• Belli bir durumdan başlayarak sonlu
sayıda adımda belli bir sonucu elde
etmenin yöntemini tarif eden iyi
tanımlanmış kurallar kümesine algoritma
denir.
http://www.ubenzer.com/
![Page 4: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/4.jpg)
Yani?
• Problemimizi çözmek için adım adım
uygulanması gereken işlemler dizisidir.
Bu işlemler sonludur ve daha önceden
belirlenmiştir.
http://www.ubenzer.com/
![Page 5: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/5.jpg)
Örnek: Lambayı yakma algoritması
http://www.ubenzer.com/
![Page 6: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/6.jpg)
Örnek: N! Hesaplama Algoritması
http://www.ubenzer.com/
![Page 7: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/7.jpg)
Neden algoritmik düşünmek
zorundayız?
• Normal bir hayatta sabah uyanır okula
gider dersi dinlersiniz. Bu kadar basittir.
• Bir bilgisayar ise böyle düşünemez. Ona
her şeyi adım adım anlatmak
zorundasınız.
• Bir bilgisayarın sabah uyanıp okula
gitmesi için…
http://www.ubenzer.com/
![Page 8: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/8.jpg)
Bilgisayarın okula gidiş hikayesi
• Saati kontrol et. Eğer saat 09.00 ise uyan. Değilse, bir dakika bu adımı
tekrarla.
• Yatakta doğrul. Sol tarafa bak. Eğer kalkacak yer varsa ayağa kalk, yoksa
sağ tarafa bak, kalkacak yer varsa ayağa kalk. İkisi de yoksa hata ver.
• Tuvalete gitmeye hazırlan. Bunun için yatakla tuvalet arasındaki en kısa
yolu hesapla.
• Hesapladığın yoldan tuvalete git. Tuvalet aydınlıksa içeri gir, değilse ışığı
aç.
• Önce soğuk suyu, saniyede yarım litre açacak şekilde aç, daha sonra
toplam su sıcaklığı 22 derece olana kadar sıcak su vanasını aç.
• Avucuna su doldur, yüzüne hızlıca götür ve yüzünü yıka.
... (bilgisayar okula gider) …
http://www.ubenzer.com/
![Page 9: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/9.jpg)
Bilgisayarın okula gidiş hikayesi
(Devam)• Ders geçen hafta sıkıcı mıydı? Sıkıcıysa bu hafta da sıkıcı
olabilir. İstatistikleri hesapla. Eğer sıkıcı geçeceği tahmin
ediliyorsa, arkalarda bir yere otur. Değilse önlerde bir yere
otur.
• Oturulacak bölgenin yanında samimi arkadaş var mı? Varsa
yanına git. Yanında yer var mı? Yoksa başka samimi arkadaş
aramaya başla. Varsa otur. Samimi arkadaş yoksa iki yanı
boş bir koltuk seç. Otur.
• Hoca geldi mi kontrol et. Eğer gelmediyse geyik muhabbeti
yap. Sonra bu adımı tekrar işle.
• Hoca geldiyse, kafayı sıraya koy ve uyumaya başla.
http://www.ubenzer.com/
![Page 10: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/10.jpg)
Düşündüklerimizi PHP’de ifade edebilmek de, en az algoritmik
düşünebilmek kadar önemlidir.
Bunu yapabilmek için programlama dilinin bize hangi olanakları
sunduğunu iyi bilmek gerekir.
http://www.ubenzer.com/
![Page 11: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/11.jpg)
Sabitler
• Sabitler: Değeri sadece bir defa atanan ve
atanan değer bir daha değiştirilemeyen
yapılardır.
• define (“SABITADI”, “DEGERI”);
şeklinde tanımlanır.
• Sabit adları rakam ile başlayamaz. Ayrıntılı
isimlendirme kuralları ile ilgili kaynak
“Okunması Gerekenler” kısmında bulunabilir.
http://www.ubenzer.com/
![Page 12: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/12.jpg)
Sabitler (devam)
• Örnek:
− define (“PI”,3.14);
− define (“ANTALYA”,07);
• defined (“SABİTADI”); ile sabitin daha
önce tanımlanıp tanımlanmadığı kontrol
edilebilir.
http://www.ubenzer.com/
![Page 13: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/13.jpg)
Değişkenler
• Program akışı boyunca içerisinde veri
tutabileceğimiz, bu verileri okuyabileceğimiz ve
değiştirebileceğimiz parçacıklardır.
• PHP‟de değişkenlerin başında $ vardır.
• Değişkenler harf ya da _ ile başlar, rakam ile de
devam edebilir. Daha ayrıntılı değişken
isimlendirme kuralları için “Okunması
Gerekenler” kısmındaki belgelere bakılabilir.
http://www.ubenzer.com/
![Page 14: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/14.jpg)
Değişkenler (devam)
• $birsayi = 12;
• $biryazi = “hörölöy”;
• $baskabiryazi = “12”;
• Başka programlama dilleri bilenlerin fark ettiği üzere,
PHP‟de değişken türü tanımlamak söz konusu değildir.
• Değişkenin içine ne atarsanız, değişkenin tipi ve harcadığı
bellek miktarı ona göre dinamik olarak değişecektir.
• Bu önemli bir kolaylık getirse de, hata yapmayı ve olan
hataları tespit etmeyi zorlaştıracağı da unutulmamalıdır.
http://www.ubenzer.com/
![Page 15: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/15.jpg)
Değişkenler (devam)
• $birsayi = 12;
• $biryazi = “hörölöy”;
• $baskabiryazi = “12”;
• Başka programlama dilleri bilenlerin fark ettiği üzere, PHP‟de
değişken türü tanımlamak söz konusu değildir.
• Değişkenin içine ne atarsanız, değişkenin tipi ve harcadığı bellek
miktarı ona göre dinamik olarak değişecektir.
• Bu önemli bir kolaylık getirse de, hata yapmayı ve olan hataları
tespit etmeyi zorlaştıracağı da unutulmamalıdır.
• Veri tiplerinin nasıl kontrol edildiğine sonraki slaytlarda
değinilecektir.
http://www.ubenzer.com/
![Page 16: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/16.jpg)
if … elseif … else yapısı
if (ŞART) {
− Şartı sağlıyorsa yapılacaklar
} elseif (ŞART) {
− Başka bir şartı sağlıyorsa yapılacaklar
} else {
− Hiçbir şartı sağlamıyorsa yapılacaklar
}
şeklinde çalışan bir karar mekanizmasıdır.
http://www.ubenzer.com/
![Page 17: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/17.jpg)
if … elseif … else yapısı (devam)
Örnek
$sayi = 3;
if ($sayi < 3) {
echo “sayi 3‟ten kucuk”;
} elseif ($sayi > 3) {
echo “sayi 3‟ten buyuk”;
} else {
echo “sayi 3”;
}
http://www.ubenzer.com/
![Page 18: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/18.jpg)
switch
switch ($gun) {
case “1”:
echo “Pazartesi”;
break;
case “2”:
….
case “7”:
….
default:
echo “Böyle bir gün yok.”;
}
http://www.ubenzer.com/
![Page 19: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/19.jpg)
while
while (ŞART) {
… şart sağlandığı sürece tekrarlanacak
işlemler …
}
http://www.ubenzer.com/
![Page 20: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/20.jpg)
do while
do {
… şart sağlandığı sürece tekrarlanacak
işlemler …
} while (ŞART);
http://www.ubenzer.com/
![Page 21: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/21.jpg)
for
Bir olayın birden fazla tekrarlanacağı
durumlarda kullanılır.
for ($degisken = İLK DEĞER; ŞART ; ARTIŞ
MİKTARI) {
… şart sağlandığı sürece yapılacak
işlemler …
}
http://www.ubenzer.com/
![Page 22: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/22.jpg)
Sık Kullanılan Operatörler• Operatör Anlamı
• == eşitse
• != eşit değilse
• === değer ve tip olarak eşitse
• > büyükse
• < küçükse
• <= küçük eşitse
• >= büyük eşitse
• ! değil (NOT)
• . metin birleştirme
• + toplama;
• ++ Bir arttırma
• -- Bir azaltma
• += Var olan değere toplamak
• -= Var olan değerden çıkarmak
• .= Var olan metne yenisini eklemek
http://www.ubenzer.com/
![Page 23: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/23.jpg)
PHP ve Veri Tipleri
• PHP‟de veri tipleri dinamiktir. Siz
değişkenin içine ne koyarsanız verinin
tipi de o olur.
• Örneğin:
− $degisken = 1; /* integer */
− $degisken = 1.0; /* float */
− $degisken = (float)1 /* float */
− $degisken = „1‟; /* string */
http://www.ubenzer.com/
![Page 24: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/24.jpg)
PHP ve Veri Tipleri (devam)
• Bir değişkenin hangi tipte olduğu
gettype($degisken) komutu ile
bulunabilir ancak bu kullanım önerilmez.
• Bir değişkenin hangi tipte olduğu (ve
bulunup bulunmadığı) “is” fonksiyonları
ile sorgulanabilir.
http://www.ubenzer.com/
![Page 25: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/25.jpg)
PHP ve Veri Tipleri (devam)
• Örnekler
$degisken1 = 1;
if (is_int($degisken1)) {
echo “degisken1 integer”;
}
http://www.ubenzer.com/
![Page 26: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/26.jpg)
isset
• Bir değişkenin olup olmadığını ve varsa
içinde değer olup olmadığını denetleyen
fonksiyondur.
• Örnek:
$degisken = NULL;
if (isset($degisken)) { echo “degiskenin değeri
var.”; }
http://www.ubenzer.com/
![Page 27: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/27.jpg)
NULL da ne?
• NULL: Hiçbir şey. Boşluk. Değersiz.
Değeri atanmamış. Kara delik.
http://www.ubenzer.com/
![Page 28: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/28.jpg)
Veri Tipi Dönüşümleri
• PHP‟de veri tipleri birbirine “casting” ile
dönüştürülebilir.
• Örneğin iki sayısal değer arasında dönüşüm
aşağıdaki gibi yapılabilir.− $deger = 12.5;
− $yenideger = (int)$deger;
• Yeni değer integer tipinde olacaktır. 12.5
tam sayıya dönüştürülürken bir veri kaybı
meydana gelir.
http://www.ubenzer.com/
![Page 29: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/29.jpg)
Sormak istedikleriniz?
• Neden sabitlere ihtiyacımız var?
• Neden gettype önerilmez?
• Bir string‟i integer‟a cast edersek ne olur?
http://www.ubenzer.com/
![Page 30: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/30.jpg)
Ek 1: Akış Şemalarıyla Neler
Yapılabilir?
http://www.ubenzer.com/
• Sorundan kaçma
algoritması
![Page 31: PHP Sunusu - 3](https://reader031.vdocuments.net/reader031/viewer/2022020207/5591ca891a28abff218b47b2/html5/thumbnails/31.jpg)
Okunması Gerekenler
• PHP‟de sabitler:− http://tr.php.net/manual/en/language.constants.php
• PHP‟de değişkenler:− http://tr.php.net/manual/en/language.variables.basics.php
• PHP‟de akış kontrolörleri:− http://tr.php.net/manual/en/language.control-structures.php
− http://tr.php.net/manual/en/control-structures.for.php
− http://tr.php.net/manual/en/control-structures.if.php
• PHP‟deki operatörler:− http://tr.php.net/manual/en/language.operators.php
• PHP‟de veri tipleri ve dönüşümler:− http://www.php.net/manual/en/language.types.php
− http://php.net/manual/en/language.types.type-juggling.php
http://www.ubenzer.com/