Değişkenlerin
Kapsamı
Değişkenler,
program içerisinde sıkça kullandığımız ve verileri
sakladığımız kaplardır. Her değişken, kullanımı kolay ve
hatırda kalan ismi ile, bellek alanında bir adres bölgesine işaret
ederek önemli bir işi yapmaktadırlar. Bunu tıpkı domain
adlarının, IP'leri işaret etmesi ve akılda zor tutulabilecek
sayısal bir dizgeyi ezberlemek uğraşından bizi kurtarmasına
benzetebiliriz.
Değişkenler,
program içerisinde tanımlanır, değer alır ve bu değeri program
içerisinde değişiklik gösterebilir.
Değişkenlerin,
aldıkları değer kadar, bu değerlerin hafıza bölgesinde saklanma
ömürleri ve bu ömür içerisinde başka işlemler tarafından
algılanıp/algılanmaması söz konusudur.
İşte
bu konunun kavramsal adı, değişken kapsamıdır.
Değişkenler,
kapsam açısından iki kısma ayrılır,
-Yerel
(Local)
-Genel
(Global) değişkenler.
Global
değişkenler, etki alanların en yüksek olan değişkenlerdir. Ve
tanımlandıkları tüm kod bölgesi içerisinde okunabilir ve
değiştirilebilirler.
Yerel
değişkenler ise tanımlandıkları bölge içerisinde etkin olup,
bu bölge içerisinde okunup, yazılabilirler.
Söz
gelimi, bir fonksiyon, döngü ya da yapı içerisinde tanımlanan
değişken, varsayılan olarak yerel(local) bir değişkendir. Etkisi
ve ömrü tanımlandığı yapının kod blokları ile sınırlıdır.
Yorumlayıcı/Derleyici bu kod bloğunun dışına çıktığında,
bu değişken de miadını doldurmakta ve hafıza bölgesinden
silinmektedir.
Bunu
iç içe kümeler olarak düşünebilir.
Kümelerimizi
birer kod yapıları olarak kabul edelim
A,B
ve C isimli kümelerimizin her biri kod yapılarıdır.
A
kümesi, B kümesini; B kümesi de C 'yi kapsamaktadır.
A
kümesinde bulunan bir değişken hem B, hem de C için global
değerdedir.
B
kümesinde tanımlanan bir değişken A için yerel; C için ise
global değerdedir.
C
içinde tanımlanan değişken ise, A ve B kümeleri için yerel; C
kümesinin içerdiği tüm elemanlar için ise global yani evrensel
değerdedir.
FONKSIYONLAR
Fonksiyonlar,
bir işi yapmak üzere tanımlanmış, özel kod bloklarıdır.
Hafıza bölgesine bir kez yüklendikten sonra, çağrıldıkları
her an, kendileri için tanımlanmış işlemi yapar ve kendilerini
sonlandırırlar.
Function
EkranaYaz()
{
echo
“Bu bir fonksiyondur”;
}
Fonksiyonlar
iki kısma ayrılır: Değer
döndüren ve değer döndürmeyen fonksiyonlar.
Değer
döndüren fonksiyonlar, icralarının sonunda, geriye, X
tipinde(herhangi bir tip olabilir) bir sonuç bırakırlar; değer
döndürmeyen değişkenler ise, çağrıldıkları an icra edilirler
ve kendilerini sonlandırırlar.
İster
değer döndürsün, ister değer döndürmesin fonksiyonlar,
dışarıdan değer alıp, işlemleri bu değerler ile yapabilirler.
Bunlara, dinamik ya da etkileşimli fonksiyonlar diyebiliriz.
Söz
gelimi:
function
Hesapla()
{
echo
$a+$b;
}
Yukarıdaki
fonksiyon, parametresiz çağrılan ve değer döndürmeyen bir
fonksiyondur. $a ve $b
değişkenlerinin toplamını ekrana yazmakla görevlidir. $a
ve $b değişkenlerinin
değeri, parametrik olarak dışarıdan alınmadığı için,
fonksiyon içerisinde tanımlanmak zorundadır. Bu da fonksiyonun
varoluş amacı ile terstir.
Ama
yukarıdaki Hesapla() isimli fonksiyon aşağıdaki şekilde olabilir
function
Hesapla($a,$b)
{
echo
$a+$b;
}
Dinamik
bir fonksiyon yazdık. A ve B değerlerini dışarıda almakta ve
yalnızca yapacağı işlemi bilmektedir. A ve B değeri ne olursa
olsun; Hesapla()
fonksiyonu bu iki sayıyı toplayıp sonucu ekrana yazacaktır.
Parametreli
Fonksiyonlara Değer Aktarmanın Çeşitleri
Fonksiyon
çağrıldığında, işlem yapabilmesi için kendine değer ya da
değerler geçirilebilir. Birincisi, değişkenin yalnızca değerini
geçirerek fonksiyona parametre atayabiliriz. Peki ama bu ne
demektir?
$sayi=1;
function
arttir($sayi)
{
$sayi++;
echo
$sayi;
}
arttir($sayi);
echo
$sayi;
Ekran
çıktısı:
2
1
şeklinde
olacaktır. Fonksiyonumuza yalnızca $sayi isimli değişkenin
değerini geçirdik. Kendisini değil. Echo
$sayi komutundan da
görülebileceği gibi, $sayı
değişkeninin değerinde hiçbir değişiklik olmadı.
$sayi=2;
function
arttir()
{
$sayi++;
echo
$sayi;
}
arttir();
Kodumuzu
yukarıdaki şekilde yeniden yazıp sonucu kontrol ettiğimizde,
ekranda istediğimiz sonucun görüntülenmediğini görebiliriz.
Oysa ki $sayi
isimli değişken arttir()
fonksiyonu için, global
yani evrensel değerdedir. Fakat fonksiyonlar, kendilerine referans
ya da değer seçeneklerinden biri ile aktarılmayan değişkenleri
tanımamaktadır. Öyle ise, fonksiyonumuz içerisinde, $sayi
değişkeninin ne olduğunu /hangi öneme sahip olduğunu belirtmeğe
ihtiyacımız var.
$sayi=2;
function
arttir($sayi)
{
global
$sayi
$sayi++;
echo
$sayi;
}
Böylelikle,
$sayi isimli
değişkenin, fonksiyonun çağrıldığı yer açısından global
yani evrensel değerdeki $sayi
isimli değişkene ait olduğunu belirtiyoruz.
Hiç yorum yok:
Yorum Gönder