VBScript  Değişken ve Sabitler  -  Variables and Constants           

          

  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

  <% OPTION EXPLICIT %>

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:

  <%=Gunler(6)%>

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? 

 

Variants

VBScript'in kullandığı tek tür değişkene variant denir. Variant, karakter-dizini (String) de olabilir, sayı (Number) da. Fakat bir variant'ın içindeki değer, veri olarak nitelendiğinde şu türlerden birine girer:

 Variants aldığı değerler 
  Boolean Değişkenin değeri ya True (doğru) ya da False (yanlış) olur; 
True'nun değeri -1, False'un değeri ise 0'dır.
  Byte 0 ile 255 arasında bir sayısal değer olabilir.
  Double Yüzen noktalı değer denilen veri türüdür. Pozitif sayılar için 4.9E-324 ile 1.8E308 arasında, negatif sayılarda -4.9E-324 ile -1.8E308 arasında bir değer alabilir.
  Date/Time Önceden belirlenmiş biçimlerde tarih ve zaman bilgisi içerir.
  Empty Tanımlanmış ancak henüz değer atanmamış (boş) değişken türüdür.
  Error Programın hata mesajlarını ve hata değerlerini tutar.
  Integer Noktalık bölüm içermeyen tamsayı verilerdir; değeri -32.768 ile +32.767 arasında olabilir.
  Long Noktalık bölüm içermeyen tamsayı verilerdir; değeri -2.147.483.648 ile 2.147.483.648 arasında olabilir.
  Null İçinde veri bulunmamak üzere tanımlanmış değişkenlerdir.
  Object Windows OLE Nesnelerini tutmak üzere tanımlanmış değişkenlerdir.
  Single Yüzen noktalı değer denilen veri türüdür. Pozitif sayılar için 1.4E-45 ile 3.4E38 arasında, negatif sayılarda -1.4E-45 ile -3.4E38 arasında bir değer alabilir.
  String Alfanumerik veri tutan değişkenlerin değeridir
   

 

Sabit Değerler   -  Constants 

VBScript'te bir kere verdiğiniz değeri hiç değişmeyen unsurlar (değişken diyemezdik, değil mi?) vardır. Sabit değer, bütün ASP sayfası boyunca (hatta isterseniz, bütün site, yani Uygulama boyunca) değişmeden kalır. Bu değerleri Const (constant, sabit kelimesinden türetilme) komutuyla belirtiriz:

  Const DolarDeger = 560780 

Const SirketinAdi = "Web Tasarım ve Site Onarım A.Ş." 

Const Slogan = "Siteler ve Kırık Kalpler Onarılır" 


ASP ve VBscript    
konu 7: VBScript Operatörler