|
Değişkenler - Variables
Programcılıkta işlemlerimizi değişkenlerle ( variables )
yaparız. Değişkeni bir kap gibi düşünebilirsiniz. Sözgelimi
"Gün," değişkenin adı ise bu değişkenin değeri Pazar, Pazartesi,
Salı, vd., olabilir. Her değişken, türüne göre, ya bir ya
da daha fazla değer tutar. Adından da anlaşılacağı gibi değişkenin
değeri değişir! Bu değişikliği biz yapabiliriz; programın kendisi
yapabilir.
VBScript'te, bir çok başka bilgisayar programlama dilinden farklı
olarak değişkenlerin tanımlanması veya "beyan edilmesi,"
"boyutlandırılması" gerekmez. Belirtilmemiş, önceden tanımlanmamış
bir değişkene değer atamaya kalkarsanız, VBScript bunu mükemmel
şekilde kabul eder. Fakat bu kötü bir
programcılıktır.
İyi programcılık değişkenlerin önceden
beyan edilmesini gerektirir. Bunu DIM komutuyla yaparız. DIM,
Dimension (boyutlandır) kelimesinden kısaltılmıştır. Pek akıllıca
görünmese de bu komut, bilgisayarın değişken yeri olarak bir bellek
alanının boyutunu belirtmesini sağlar. Örnekler:
ASP, bir teknolojidir. Kendi başına bir yazım kuralı yoktur. ASP
tekniğini kullanabilmek için, ASP sayfasının talep edilmesi halinde
ziyaretçiye gönderilmeden önce ASP.DLL'ye teslim edilmesi bu
teknolojinin kullanılabilmesi için hemen hemen tek şarttır. Bunu,
dosya uzantısını .asp yaparak sağlarız.
ASP.DLL ise, dünyada mevcut bütün Script dilleri ile verilecek
komutları kabul edebilir. Sadece ASP.DLL'e sayfadaki kodların hangi
dilde olduğunu söylemeniz gerekir. Bunu, ASP sayfasının birinci
satırında yaparız. Örneğin ASP'ye VBScript dilini kullanmasını
belirtmek için bu satırı şöyle yazarız:
|
|
<% DIM Gun, Ay,
Ogrenci, Not Gun = "Pazartesi" Ay = "Ocak" Ogrenci =
"Necip" Not = 5 %> |
Şimdi burada Gun, Ay, Ogrenci, Not adıyla dört değişken oluşturduğumuzu ve bunlara
sırasıyla "Pazartesi," "Ocak," "Necip" ve "5" değerlerini
atadığımızı görüyorsunuz.
Bu noktada VBScript
yorumlayıcısına sorsanız, "Peki, söyle bakalım, Gun değişkeninin
değeri nedir?" diye, yorumlayıcı size "Bunu bilmeyecek ne var?
Elbette Pazartesi'dir!" derdi.
Belki bu noktada siz de
kendi kendinize "Pazartesi, Ocak ve Necip kelimeleri tırnak içinde
iken, acaba 5 rakamı neden tırnak içinde değil?" diye soruyorsunuz.
Güzel soru. Ama cevabı için biraz bekleyeceksiniz.
Değişken isimleri, mutlaka harfle başlamalıdır; içinde noktalama işaretleri bulunamaz ve uzunluğu
255 karakteri geçemez.
Kötü programcılığı önlemek için:
Option Explicit
Değişkenleri tanımlamadan kullanmak "kötü programcılıktır" demek,
ilerde kendi başınıza elinizle program hatası getirirsiniz demektir.
Daha sonra örneklerini göreceğiz; ASP, sitemize giren bir
ziyaretçiye bir oturum (Session) açar ve bazı değişkenleri oturum
boyunca aklında tutar. Bir sayfada kullandığınız bir değişkeni, daha
sonraki sayfada kullanabilmek için, bu değişkenin değerinin yeni
sayfada değişmemesi gerekir. ASP programı yazarken, bazen
gelişi-güzel değişkenlere değer atayabilirsiniz. Neden? O anda
aklınıza değişken adı olacak kelime gelmediği için! Bu değişken
adını daha önce kullanmışsanız ve içinde biraz sonra kullanacağınız
bir değer varsa, değer değiştirilmiş olacaktır. VBScript, savurgan
ve dağınık programcılığı önlemek için OPTION EXPLICIT imkanını
verir. Bir ASP sayfasının birinci satırı olarak
yazarsanız VBScript DIM komutuyla belirlenmemiş değişken
kullanmanıza izin vermez; kullanırsanız hata verir ve
durur.
Bu ifadenin işinize çok yarayacağı bir diğer
nokta, kodda değişken adını yazarken hata yapmanızı önlemektir.
VBScript sizin hata yaptığınızı bilemeyeceği için yanlış kelimeyi
yeni bir değişken sayacaktır. Değer atamadığınız bu yeni değişkeni
kullandığınız yerlerde ya programınız hata verir, ya da kendisine
doğru görünen işlemler yapar, fakat beklediğiniz sonucu elde
edemezsiniz. OPTION EXPLICIT, yanlış yazdığınız değişkeni yeni
değişken sayarak önceden tanımlanmamış değişken kullandığınızı
düşünerek, duracaktır.
Birden fazla değer tutabilen değişkenler : Dizi
Değişken - Array
Peki,
şöyle bir değişken tanımlama acaba ortaya nasıl bir değişken
çıkartır:
|
|
<% DIM Gunler(31),
Aylar(12), Ogrenciler(210),
Notlar(10) %> |
Bu yöntemle oluşturduğumuz kodlarla elde edilecek "kaplar,"
birden fazla değer tutabilir. Yani:
|
|
<% DIM Gunler(7),
Aylar(12), Ogrenciler(21), Notlar(10) Gunler(1) =
"Pazartesi" Aylar(3) = "Mart" Ogrenciler(12) =
"Necip" Notlar(5) = 5 %>
|
Bu durumda içinde :
7 ayrı değişken tutabilecek olan Günler değişkeninin 1 numaralı olanının değeri "Pazartesi,"
12 değer tutabilecek olan
Aylar değişkeninin 3 numaralı olanının değeri "Mart,"
21 ayrı değer tutabilecek
olan Ogrenciler değişkeninin 12 numaralı olanının değeri "Necip"
10 ayrı değer tutabilecek
olan Notlar değişkeninin 5 numaralı olanının değeri ise 5
olacaktır.
Böyle, birden fazla değer tutabilen
değişkenlere Dizi Değişken veya Array denir.
Array Fonksiyonu
VBScript'in kullanılmaya hazır bir çok fonksiyonu vardır;
bunlardan biri olan Array ile, kolayca dizi değişken
oluşturabiliriz.
Diyelim ki, Gunler(7) dizi-değişkenini
gün adları ile doldurarak oluşturmak istiyoruz:
|
|
<% Dim Gunler = Array
("Pazartesi" , "Salı" , "Çarşamba" , "Perşembe" ,
"Cuma" , "Cumartesi",
"Pazar") %>
|
ile hem dizi-değişkeni oluşturabiliriz; hem de değerlerini
atayabiliriz. Bu suretle oluşturduğumuz dizi değişkenin üyelerine
daha sonra sıra numaraları ile atıfta bulunabilirsiniz. Örneğin:
bize Pazar'ı verir. Neden? Çünkü hayatlarının büyük bölümünü
penceresiz ortamlarda geçiren kişiler olan dil tasarımcıları, sayı
saymaya biz normal insanlar gibi 1'den değil 0'dan başlarlar; dolayısıyla Gunler
dizi-değişkeni Gunler(0)'dan başlar!
Şimdi, aklınıza şu soru gelebilir: Dizi değişken
oluşturacağımıza, neden "ogrenci1," "ogrenci2," "ogrenci3" diye
değişkenler oluşturmuyoruz ve bunlara değerler atamıyoruz? Kötü
soru! Dolayısıyla cevabını hemen verelim.
Dizi
değişkenlerde bir değişkene numarasıyla
atıfta bulunabilirsiniz. Ve numara yerine bir başka
değişkeni kullanabilirsiniz.
Örneğin, OgrenciNo
değişkeninizin değeri 12 ise
|
|
<% .... If
Ogrenciler(OgrenciNo) =
"Necip" ... %> |
şeklinde bir döngü ile aradığınız öğrencinin Necip olup
olmadığını sınayabiliriz. (Döngülere birazdan geliyoruz!)
Başka programlama dillerine özellikle Visual Basic'e aşina
olanların aklına şöyle bir soru gelebilir:
VBScript'te
değişkenin metin mi, sayı mı olduğunu ayırt etmiyor
muyuz? Başka programlama dillerinde bir değişkenin değeri
harf ve rakamlardan oluşuyorsa, yani matematik işlem yapmaya
elverişli değilse bunlara String
(Alfanümerik, karakter değerler) denir.
Programlama
dillerinde bir de matematik işlem yapmaya elverişli değişken türü
vardır: Sayı (Number).
VBScript, bir değişkene
alfanümerik (karakter, metin) olarak
atadığınız değeri çift tırnak içine
almanızı ister. Sözgelimi Ogrenci(12) değişkeni için Necip değerini
atamak istiyorsunuz: Necip kelimesini çift tırnak içine almak
zorundasınız.
Sayı olarak kullanacağınız değerleri ise
tırnak içine almazsınız. (Sayı olarak kullanacağınız
değerlerin sadece rakam olabileceğini söylemek gerekmez!) Fakat,
işleri karıştıran nokta, VBScript açısından değişken türü diye bir şey
olmamasıdır.
Visual Basic, küçültülüp Script dili
haline getirilirken, değişken türü özelliği alınmayınca, ortaya
işleri karıştıran (veya kolaylaştıran) böyle bir durum çıkmış
bulunuyor.
Karışıklık, çift tırnak içinde verdiğiniz
bir değeri matematik işlemde kullanmaya kalktığınızda karşınıza
çıkabilir. Rakam olmayan bir karakter-dizisini bir değişkene
tırnaksız olarak atadığınızda VBScript "tanımsız değişken" vermeye
kalktığınızı söyleyerek, duracaktır.
VBScript'in bu eksikliğini gidermek için bazı ASP programcıları
değişken adlarının önüne karakter-dizileri için "str" harflerini
koyarlar: strAy, strOgrenciler, gibi.
İsterseniz, VBScript'in karakter-dizisi ve sayı değişkenleri
nasıl ayırt ettiğini veya etmediğini bir kaç örnekle görelim. Şu
kodu yazarak, çalıştırın:
|
|
<% Option Explicit
%> <HTML> <% Dim Degisken(2),
Toplam Degisken(1) = "Necip" Degisken(2) =
"Dayanır" Toplam = degisken(1) +
Degisken(2) %> <% =Toplam
%> </HTML>
|
Sonuç: "NecipDayanır" değil mi? (Arada boşluk olmamasına
aldırmayın şimdilik!)
Şimdi:
Degisken(1) değeri
olarak tırnak içine alarak 5, Degisken(2) değeri olarak yine
tırnak içinde 10
yazın.
Programı tekrar çalıştırın. Sonuç? 510 !?
Peki; tırnakları
kaldırın 5 ve 10
'un çevresinden. Sonuç? 15
.
Oh, neyse! Bir an için VBScript matematik
bilmiyor sandık! Bu durum VBScript'in matematik bilgisinin
kıtlığından değil, tırnak içindeki değerlerin, VBScript ayrım
yapmıyor bile olsa, karakter-dizisi (String) iken toplama
işleminde ard arda eklenmesinden (concatenate)
kaynaklanıyor.
Tırnakları kaldırdığınızda, VBScript bu
değerlerin sayı olduğunu anladı ve doğru işlemi, yani toplama
işlemini yaptı. Şimdi VBScript'in değişkenleri ele alış tarzını daha
iyi kavramak için Degisken(1) değeri olarak tırnak işareti koymadan
kendi adınızı, Degisken(2) değeri olarak da soyadınızı yazın ve
programı çalıştırın. Ne sonuç aldınız?
|