Asp’nin Temelleri
1. ASP’nin Temelleri
1.1. Değişkenler
Bütün programlama dillerinde olduğu gibi vbscriptte de değişkenler terimi vardır. Bu terim sayesinde program içerisinde işleyeceğimiz sayısal veya metinsel değerleri kullanmaktansa bu değerlerin yerini tutan bir değişkeni kullanırız. Bu sayede program içerisinde daha esnek bir yapı kurabiliriz. Değişkenleri temsil eden adlar vardır, örneğin “isim” değişkeni (tarih, toplam… gibi) isim değerleri alır. Anlaşıldığı üzere değişkenin adı değişmiyor fakat değişken içerisinde tutulan değer değişebiliyor. (bu değişiklik programcının kontrolünde meydana geliyor). Verilen değer program akışına göre farklılaşabildiği için bu terime değişken diyoruz.
Piyasada kullanılan bütün programlama dillerinde değişkenler kullanılmadan önce tanımlanmalı ve boyutlandırılmalıdır. Fakat vbscript de bu dillerin aksine değişkenlerin tanımlanması ve boyutlandırılması zorunlu değildir. Vbscript tanımlanmamış değişkenleri hiç bir hata vermeden kabul eder. Fakat karmaşık programlarda sayfalar arası değişken problemleri yaşanabilir (daha önceden kullandığımız bir değişkene bir değer atamadan tekrar başka bir yerde kullanırsak eski değeri kalacağı için programda hatalar oluşacaktır). Bunu değişkenlerimizi kullanılmadan önce tanımlayarak engelleyebiliriz. (profesyonel bir programcı değişkenlerini kullanmadan önce mutlaka tanımlar böylece programın ilerleyen safhalarında değişken hatası yapmamış olacaktır) Bu alışkanlığı zorunluluk haline getirmek için vbscipt de “Option Explicit” komutu kullanılır. Komutu kullanmamız durumunda ASP yordamcısı her kullandığımız değişkeni kullanmadan önce tanımlanmasını zorunlu kılar, bu sayede sayfalar arası değişken karmaşası oluşmaz. Ve değişken adlarının yanlış yazılması bir nevi engellenmiş olur. Bu komutu mutlaka ASP programlarınızın ilk satırında kullanmalısınız, diğer hallerde program hata verecektir.
Asp de değişken tanıtma işlemi için “Dimension” (boyut) kelimesinin kısaltılmışı olan “DIM” komutu kullanılır. Bu komut yardımı ile, kullanılan değişkenler kod başlangıcında belirtilerek tanımlanır (iyi bir programlama için kod başında değişken tanımlaması yapmak daha iyidir. Ama sayfa içerisinde herhangi bir yerde değişken tanımlaması yapmak, bir hata meydana getirmeyecektir.).
| <%
Option Explicit Dim Ad %> |
Örnek 12 : Değişken Tanımlama.
Örnekte görüldüğü gibi “DIM” komutu ile “Ad” değişkenini tanımlamış olduk bu tanımlamayı yapmadan önce “option explicit” komutunu kullandık. Bu komutu kullanma amacımız Ad değişkenini programın ilerleyen aşamalarında bir daha kullandırtmamak (değişken adı olarak) ve karışıklık olmasını engellemektir (değişken değeri değiştirilebilir fakat bu isimde başka bir değişken kullanılamaz). Bu tanımlama işlemini:
| <%
Ad = “Günce Akkoyun” %> |
Örnek 13 : Değişkene Değer Atama.
Şeklinde kullansak dahi program hatasız çalışacaktır. Fakat kullanım pratikliği ve kodlama sağlamlığı bakımından “Option Explicit” kullanımı daha iyi olacaktır. “Option Explicit” komutu ile,
| <%
Option Explicit Ad = “Günce Akkoyun” %> |
Örnek 14 : Hatalı Değer Atama.
Şeklinde bir kullanım mutlaka hata verecektir.
| Microsoft VBScript runtime (0x800A01F4)
Variable is undefined: ‘Ad’ /asp/test.asp, line 3 |
Çıktı 1 : Tanımlanmamış Değişkene Değer Atama.
Bu hata bize değişkenimizin tanımlanmadan kullanıldığını belirtecektir. Doğru kullanımında mutlaka değişken tanımlanmalıdır.
| <%
Option Explicit Dim Ad Ad = “Günce Akkoyun” %> |
Örnek 15 : Geçerli Değişken Tanımlama ve Değer Atama.
Şeklinde olacaktır. Bu şekilde yapılan değişken tanımlamalarında programın ilerleyen aşamalarında tekrar “Ad” isimli bir değişken kullanamayacağımız için bir karışıklık olmayacaktır. Bu size şu anda anlamsız gelebilir ama büyük kodlar (10000-20000 satır) olduğu zaman bu size anlamlı gelecektir.
Temelde kullanılandığımız değişken türleri sayısal, alfa-sayısal ve mantıksal olmak üzere üçe ayrılmaktadır. Ancak VbScript, her programlama dilinde karşımıza çıkan integer, real, string, boolean vs.. gibi temel veri tipi tanımlarından yoksun bir dildir. Peki VbScript bir değişkenin hangi türde olduğunu nasıl anlar? Bunu o değişkene değer atandığı zaman anlar. Aşağıdaki atamaları inceleyelim,
| <%
Option Explicit Dim x, y, z, t, u
x = 15 y = “15” z = “Zeytinyağlı yiyemem aman” t = True u = ASPgüncesi %> |
Örnek 16 : Değişkene Değişik Veri Tipleri Atama.
Yukarıdaki örneğimizde “x” değişkenine sayısal bir değer atadığımız için o andan itibaren “x” değişkeni sayısal bir veri tipinde olacaktır (bu tip belirleme VbScript tarafından otomatik olarak yapılmaktadır). Bu nedenle tüm sayısal işlemlerde kullanılabilir. Durum “y” değişkeni için ise biraz farklıdır. “y” değişkeni tırnak içerisinde olduğundan dolayı alfa-sayısal bir veri tipinde olacaktır. Bu nedenle sayısal işlemlere girmeyecek ve sadece metinsel işlemlerde kullanılacaktır. “z” değişkeninde ise sayısal içeriğe sahip olmayan, metinsel bir değere sahip olan bir değişkeni temsil etmektedir. “t” değişkeninde ise sadece “doğru” (true – 1) veya “yanlış” (false – 0) değerini alabilen bir boolean veri tipi gösterilmektedir. “u” değişkeni de ne oluyor diye düşünüyor olmalısınız. Düşünmekte haklısınız çünkü metin değişkenleri sadece tırnak işareti içerisinde tanımlanabilir diğer hallerde hata verecektir.
1.1.1. Seri Değişkenler
Vbscript programları içerisinde bir değişkene birden çok değer verilebilmektedir. Bu olaya “Seri Değişken” denilmektedir. Örnek vermek gerekirse 7 kişilik bir sınıf içersindeki öğrencilerin isimlerini tek bir değişkende tutabiliriz.
| <%
Option Explicit Dim Ad(7)
Ad(1) = “Günce” Ad(2) = “Refiye” Ad(3) = “Haldun” Ad(4) = “Meral” Ad(5) = “Alp” Ad(6) = “Seda” Ad(7) = “Gökçe” %> |
Örnek 17 : Diziye Değer Atama.
Şeklinde bir tanımlama yaptığımız zaman “Ad” değişkenine 7 farklı değer vermiş olduk. Kaç farklı değer alabileceğini “DIM” komutu ile değişken tanımlarken parantez içerisinde boyutlandırmış olduk. Bu örnekte neden her isim için farklı değişken kullanmadık ta bir seri kullandık diyecek olursanız. Yani
| <%
Option Explicit Dim Ad1, Ad2, Ad3, Ad4, Ad5, Ad6, Ad7
Ad1 = “Günce” Ad2 = “Refiye” Ad3 = “Haldun” Ad4 = “Meral” Ad5 = “Alp” Ad6 = “Seda” Ad7 = “Gökçe” %> |
Örnek 18 : Kullanışsız Değişken Dizisi.
Hemen cevabını verelim; dizi değişkenlerde bir değişkeni numarasıyla kullanabilirsiniz ve numara yerine başka bir değişken kullanabilirsiniz.
Bilgi : String özelliği taşıyan değişkenler (yani tırnak içerisinde tanımlanmış metinsel değere sahip değişkenler) hiçbir şekilde dönüştürme işlemi yapılmadan matematiksel işlem içerisinde kullanılamaz.
| <%
… numara = 6 response.write Ad(numara) … %> |
Örnek 19 : Dizi İçindeki Bir Öğenin Kullanımı.
Şeklinde bir kullanım ile 6 numaralı “Ad” değişkenini ekrana yazdırmak gibi bir işlem gerçekleşecektir. (bu programcıkta ilk olarak “numara” değişkenine 6 değerini atadık ve bu “numara” değişkenini “Ad(numara)” şeklinde seri içerisinde kullandık.)
Bir dizi değişkeni boyutu isteklerimizin altındaysa yani elimizdeki toplam dizi öğesi adedi, dizinin tanım aralığı dışında kalmış ise, dizimizin tanım aralığını yani boyutunu genişletebiliriz. Bunun için “redim” komutu kullanılır (yeniden boyutlandır). Fakat bu komutun şöyle bir özelliği vardır: yeniden tanımlanan bir dizi yeniden tanımlama öncesi kendisine verilen hiçbir değeri yeniden boyutlandırma sonrası vermez. Bir diğer değişke içeriği sıfırlanır.
| <%
Option Explicit Dim Ad(5)
Ad(0) = “Günce” Ad(1) = “Refiye” Ad(2) = “Haldun” Ad(3) = “Meral” Ad(4) = “Alp”
ReDim Ad(7)
Ad(5) = “Seda” Ad(6) = “Gökçe” %> |
Örnek 20 : Redim Komutu ile Diziyi Yeniden Boyutlandırma.
Verilen örnekte yeniden tanımlama sonrası “Ad(0) – Ad(4)” değişkenleri sıfırlanacak yani null içeriğe sahip olacaktır. Yeniden tanımlama sırasında eski dizi değerlerinin korunmasını istersek “Redim” komutunu “Preserve” komutuyla beraber kullanmalıyız. Bu şekilde eskiye dönük verinin korunacağını yeniden tanımlama sırasında belirtmiş oluruz.
| <%
Option Explicit Dim Ad(5)
Ad(0) = “Günce” Ad(1) = “Refiye” Ad(2) = “Haldun” Ad(3) = “Meral” Ad(4) = “Alp”
ReDim Preserve Ad(7)
Ad(5) = “Seda” Ad(6) = “Gökçe” %> |
Örnek 21 : Redim Preserve Komutu ile Diziyi Yeniden Tanımlama.
Bu şekilde yeniden tanımlanan dizi eski değerlerinden hiçbir veriyi kaybetmez. Böylece eski verilerde kullanılabilmektedir.
Dizi değişkenleri yukarıdaki örneklerdeki gibi tek boyutlu olabilmesinin yanında birden çok boyuta da sahip olabilirler. Örnek vermek gerekirse matematikte kullanılan matriks sistemini düşünün bu size iki boyutlu dizi hakkında fikir verecektir. Matriks üzerinde birinci satır birinci sütunda ki değer x(1,1) şeklinde ifade edilmektedir. Örneğin aşağıdaki 4×4 matriksi ASP içerisinde tanımlamamız için,
|
|
|
Örnek 22 : Çok Boyutlu Dizi Kullanımı.
Şeklinde bir değişken ataması yapabiliriz. Bu atamada iki boyutlu bir matriksi VbScript’imize tanımlamış olduk aynı yöntemle üç ve dört boyutlu seriler tanımlayabilmekteyiz.
1.2. Sabitler
Program içerisinde her zaman değişken değerleri değişebilir değil bazen de sabit olmaları istenebilir. Bu tip değişkenlere (değişken demek biraz yanlış ama..) bir kere değer atandıktan sonra bir daha değiştirilemez (sabit değer bütün program boyunca (hatta isterseniz bütün site boyunca) değişmeden kalır). Bu işlemi vbscript içerisinde “Constant” (Sabit) kelimesinin kısaltılmışı olan “Const” komutu yardımı ile yapılır. Const terimi ile değer verilmiş bir değişkenin tanımlanmasına gerek yoktur.
Sabit olduğu “Const” komutu ile belirtilmiş bir değişkene..
| <%
Option Explicit Const Url = “www.akkoyun.net” %> |
Örnek 23 : Sabit Kullanımı.
Şeklinde kullanılan bir sabit değişkene başka bir veri atanmaya çalışıldığı zaman hata verecektir.
| <%
Option Explicit Const Url = “akkoyun.net” …. Url = “pcworld.com.tr” %> |
Örnek 24 : Bir Sabite Değer Atamak.
Yani “Url” sabitine kendi değeri dışında bir değer verilmek istenmiştir fakat hata mesajı verecektir. (Illegal assignment: ‘Url’ ).
Vbscript programlama dilinde kullanılan değişkenlere genel olarak variant denir. Variant genel olarak bir grubu temsil eder ve alt grupları mevcuttur. Bunlar değişkenin cinsine göre otomatik olarak tanınır. (diğer programlama dillerinde bu özellik yoktur ve değişken tanımlanırken veri tipi yani variant grubu tanımlanır fakat asp de bu olay yordamcı tarafından otomatik gerçekleşir).
VbScript içerisinde kullanıcıya kolaylık sağlamak için bazı hazır tanımlanmış sabitler mevcuttur. Bu sabitler kodlama sırasında istenildiği şekilde kullanılabilmektedir. Bu sabitler ve değerleri aşağıda verilmiştir.
1.2.1. Renk Sabitleri
|
Sabit |
Değer |
Açıklama |
|
vbBlack |
&h00 |
Siyah |
|
vbRed |
&hFF |
Kırmızı |
|
vbGreen |
&hFF00 |
Yeşil |
|
vbYellow |
&hFFFF |
Sarı |
|
vbBlue |
&hFF0000 |
Mavi |
|
vbMagenta |
&hFF00FF |
Gül Kurusu |
|
vbCyan |
&hFFFF00 |
Turkuaz |
|
vbWhite |
&hFFFFFF |
Beyaz |
Tablo 2 : Renk Sabitleri.
1.2.2. Tarih ve Zaman Sabitleri
|
Sabit |
Değer |
Açıklama |
|
vbSunday |
1 |
Pazar |
|
vbMonday |
2 |
Pazartesi |
|
vbTuesday |
3 |
Salı |
|
vbWednesday |
4 |
Çarşamba |
|
vbThursday |
5 |
Perşembe |
|
vbFriday |
6 |
Cuma |
|
vbSaturday |
7 |
Cumartesi |
|
vbUseSystem |
0 |
Sunucunun bölgesel ayarlarında yer alan tarih veya zaman biçimini kullan |
|
vbUseSystemDayOfWeek |
0 |
|
|
vbFirstJan1 |
1 |
1 Ocak gününün içerisinde yer aldığı haftayı kullan |
|
vbFirstFourDays |
2 |
En az 4 günü yeni yılda olan ilk haftayı kullan |
|
vbFirstFullWeek |
3 |
7 günüde yeni yıl içersinde yer alan ilk haftayı kullan |
Tablo 3 : Tarih ve Zaman Sabitleri.
1.2.3. Tarih Biçim Sabitleri
|
Sabit |
Değer |
Açıklama |
|
vbGeneralDate |
0 |
Sistem ayarlarındaki gösterim biçimi |
|
vbLongDate |
1 |
Uzun tarih gösterimi (June 26, 1943) |
|
vbShortDate |
2 |
Kısa tarih gösterimi (6/26/43) |
|
vbLongTime |
3 |
Uzun zaman gösterimi (3:48:01 Pm) |
|
vbShortTime |
4 |
Kısa zaman gösterimi (15:48) |
Tablo 4 : Tarih Biçim Sabitleri.
1.2.4. Çeşitli Sabitler
|
Sabit |
Değer |
Açıklama |
|
vbObjectError |
-2147221504 |
Kullanıcı tarafından tanımlanan hata tipi numaraları |
Tablo 5 : Çeşitli Sabitler.
1.2.5. Mesaj Kutusu Sabitleri
|
Sabit |
Değer |
Açıklama |
|
vbOkOnly |
0 |
Sadece OK butonu göster |
|
vbOkCancel |
1 |
Ok ve İptal butonu göster |
|
vbAbortRetryIgnore |
2 |
Abort, Retry ve Ignore butonu göster |
|
vbYesNoCancel |
3 |
Yes, No ve Cancel butonu göster |
|
vbYesNo |
4 |
Yes ve No butonu göster |
|
vbRetryCancel |
5 |
Retry ve Cancel butonu göster |
|
vbCritical |
16 |
Kritik mesaj iconu göster |
|
vbQuestion |
32 |
Uyarı soru mesajı iconu göster |
|
vbExclamation |
48 |
Uyarı mesajı iconu göster |
|
vbInformation |
64 |
Bilgi mesajı iconu göster |
|
vbDefaultButton1 |
0 |
Ilk buton varsayılan |
|
vbDefaultButton2 |
256 |
Ikinci buton varsayılan |
|
vbDefaultButton3 |
512 |
Üçüncü buton varsayılan |
|
vbDefaultButton4 |
768 |
Dördüncü buton varsayılan |
Tablo 6 : Mesaj Kutusu Sabitleri.
1.2.6. Mesaj Kutusu Cevap Sabitleri
|
Sabit |
Değer |
Açıklama |
|
vbOk |
1 |
Ok butonu tıklandı |
|
vbCancel |
2 |
Cancel butonu tıklandı |
|
vbAbort |
3 |
Abort butonu tıklandı |
|
vbRetry |
4 |
Retry butonu tıklandı |
|
vbIgnore |
5 |
Ignore butonu tıklandı |
|
vbYes |
6 |
Yes butonu tıklandı |
|
vbNo |
7 |
No butonu tıklandı |
Tablo 7 : Mesaj Kutusu Cevap Sabitleri.
1.2.7. String Cevap Sabitleri
|
Sabit |
Değer |
Açıklama |
|
vbCr |
Chr(13) |
– |
|
vbCrLf |
Chr(13) & Chr(10) |
– |
|
vbFormFeed |
Chr(12) |
Form Besleme |
|
vbLf |
Chr(10) |
Satır Besleme |
|
vbNewLine |
Chr(13) & Chr(10) veya Chr(10) |
Yeni Satır |
|
vbNullChar |
Chr(0) |
0 değerine sahip karakter |
|
vbNullString |
– |
“” |
|
vbTab |
Chr(9) |
Horizantal Tab |
|
vbVerticalTab |
Chr(11) |
Vertical Tab |
Tablo 8 : String Cevap Sabitleri.
1.2.8. Durum Sabitleri
|
Sabit |
Değer |
Açıklama |
|
vbTrue |
-1 |
Doğru |
|
vbFalse |
0 |
Yanlış |
Tablo 9 : Durum Sabitleri.
1.2.9. Karşılaştırma Sabitleri
|
Sabit |
Değer |
Açıklama |
|
VbBinaryCompare |
0 |
Binary Karşılaştırma |
|
VBTextCompare |
1 |
Metin Karşılaştırma |
|
VBDataBaseCompare |
2 |
Veri Tabanı Karşılaştırması |
Tablo 10 : Karşılaştırma Sabitleri.
1.2.10. Değişken Tipi Sabitleri
|
Sabit |
Değer |
Açıklama |
|
vbEmpty |
0 |
Tanımsız data |
|
vbNull |
1 |
Geçerli data içermeyen |
|
vbInteger |
2 |
Integer |
|
vbLong |
3 |
Long |
|
vbSingle |
4 |
Single |
|
vbCurrency |
6 |
Currency |
|
vbDate |
7 |
Date |
|
vbString |
8 |
String |
|
vbObject |
9 |
Object |
|
vbError |
10 |
Error |
|
vbBoolean |
11 |
Boolean |
|
vbVariant |
12 |
Variant |
|
vbDataObject |
13 |
Data object |
|
vbDecimal |
14 |
Decimal |
|
vbByte |
15 |
Byte |
|
vbArray |
16 |
Array |
Tablo 11 : Değişken Tipi Sabitleri.
1.2.11. Sürücü Tipi Sabitleri
|
Sabit |
Değer |
Açıklama |
|
Unknown |
0 |
Tanımlanmamış sürücü |
|
Removable |
1 |
Tüm taşınabilir medya aygıtları. Içerisinde disket sürücüleri de vardır |
|
Fixed |
2 |
Sabit diskler |
|
Remote |
3 |
Network sürücüleri |
|
CDROM |
4 |
CdRom sürücüsü |
|
RamDisk |
5 |
RAM üzerinde yer alan sanal disk alanı |
Tablo 12 : Sürücü Tipi Sabitleri.
1.2.12. Dosya Özelliği Sabitleri
|
Sabit |
Değer |
Açıklama |
|
Normal |
0 |
Normal dosya |
|
ReadOnly |
1 |
Salt okunur |
|
Hidden |
2 |
Gizli |
|
System |
4 |
Sistem dosyası |
|
Directory |
16 |
Dizin |
|
Archive |
32 |
Arşiv |
|
Alias |
1024 |
Link veya kısayol |
|
Compressed |
2048 |
Sıkıştırılmış dosya |
Tablo 13 : Dosya Özelliği Sabitleri.
1.2.13. Dosya Girdi Çıktı Sabitleri
|
Sabit |
Değer |
Açıklama |
|
ForReading |
0 |
Dosyayı sadece okuma için aç. Bu tip açılan dosyaya yazılamaz. |
|
ForWriting |
1 |
Dosyayı yazma için aç. Eğer bu dosya daha önceden varsa üzerine yazar. |
|
ForAppending |
8 |
Dosyayı yazmak için açar ve sonuna yazar |
Tablo 14 : Dosya Girdi Çıktı Sabitleri.
1.2.14. Özel Dizin Sabitleri
|
Sabit |
Değer |
Açıklama |
|
WindowsFolder |
0 |
Windowsun kurulu olduğu dizin |
|
SystemFolder |
1 |
Fontların ve sürücülerin bulunduğu sistem dizini |
|
TemporaryFolder |
2 |
Temprorary dizini |
Tablo 15 : Özel Dizin Sabitleri.
1.3. Operatörler
Değişkenlerimiz arasında işlemler yaptırabiliriz. Bu işlemler için operatör dediğimiz işaretleri kullanırız. Bu operatörler bildiğiniz matematiksel operatörlerdir.
|
Aritmetik |
Karşılaştırma |
Lojik |
|||
| Açıklama |
Sembol |
Açıklama |
Sembol |
Açıklama |
Sembol |
| Üst Alma |
^ |
Eşitlik |
= |
Lojik Zıtlık |
Not |
| Çıkarma |
– |
Eşitsizlik |
<> |
Lojik ve |
And |
| Çarpma |
* |
Küçüktür |
< |
Lojik veya |
Or |
| Bölme |
/ |
Büyüktür |
> |
Lojik özel veya |
Xor |
| Integer Bölme |
\ |
Küçük Eşittir |
<= |
Lojik eşdeğer |
Eqv |
| Modüler |
Mod |
Büyük Eşittir |
>= |
Lojik içerme |
Imp |
| Toplama |
+ |
Obje Eşdeğeri |
Is |
|
|
| Metinsel Birleştirme |
& |
|
|
||
Tablo 16 : Operatörler.
Kullanımları ise şu şekildedir.
1.3.1. Aritmetik Operatörler
1.3.1.1. Üst Alma
İstenilen sayısal değerin (integer) istenilen sayısal kuvvetini almaya yarayan operatördür. Üstü alınan sayı veya üst değeri “Null” ise sonuçta “Null” olacaktır. Üst alma operatörü SHIFT+3 tuşlarına basarak elde edilebilir.
|
|
Örnek 25 : Üst Alma. |
Sonuç “6103515625” olacaktır.
1.3.1.2. Matematiksel İşlemler (+,-,*,\,/)
Matematikte kullanıldığı gibi istenilen şekilde işlemlerde kullanılabilir fakat unutulmaması gereken bir kaç nokta vardır. Bunlardan birincisi işlem yapılacak değişkenin veya sabitin numerik sayı değerine sahip olduğundan yani değişken alt tipinin uygun olduğundan emin olunuz. Eğer emin olamıyorsanız dönüştürme işlemi ile bu veri tipine çeviriniz. İkinci dikkat etmeniz gereken nokta ise işlemlerin sırasıdır. Bu sıra çarpma, bölme, toplama ve çıkartma sırasına göre yapılamaktadır.
|
|
Örnek 26 : Matematiksel Eşitlikler. |
Sonuç olarak “0,3753” dönecektir.
1.3.1.3. Modüler Aritmetik
İstenilen bir sayının modüler aritmetiğe uygun olarak hangi sistemde hangi değeri alacağını veriri. Matematikte kullanılan “Mod” fonksiyonu ile aynıdır hiçbir farkı yoktur.
|
|
Örnek 27 : Modüler Aritmetik. |
Yukarıdaki örnekte 7’lik tabanda 25 değerini verecektir. Yani “4” değeri dönecektir.
1.3.1.4. Metin Birleştirme
Metin birleştirme işlemi temel olarak iki veya daha çok karakter tabanlı değişkenin tek bir değişken gibi birleştirilmesine dayanır. Bu işlemi yaparken operatör seçimimize dikkat etmemiz gerekecektir.
| <%
Option Explicit Dim Ad,Soyad,isim
Ad = “Günce ” Soyad = “Akkoyun” isim = Ad & Soyad
respose.write isim %> |
Örnek 28 : Metin Birleştirme.
Sonuç “GünceAkkoyun” şeklinde olacaktır. Unutmamak gerekir ki her operatör her veri tipinde kullanılamaz. Sayısal veya metinsel özellikteki verilere göre kullanım alanları değişir. Son olarak operatörlerin kullanımı sırasında veri tipine uygun operatör kullanmak gereklidir. Örneğin iki karakter değişkenini toplarken (birleştirirken) “+” yerine metinsel işlemlerde birleştirme anlamına gelen “&” sembolü kullanılmalıdır.
Not : İki veya daha fazla metin birleştirilirken, örneğin bir “Ad” ve “Soyad”, bu ikisi arasında boşluk bırakılmadan birleştirilecektir. Oysaki çoğu durumlarda arada boşluk bırakılması istenebilir. Böyle durumlarda manuel olarak araya boşluk bırakılmalıdır.
1.3.2. Karşılaştırma Operatörleri
Programlarımız içerisinde kimi zaman iki farklı değişkeni birbirine göre kıyaslamamız (karşılaştırmamız) gerekebilmektedir. Bu gibi durumlarda karşılaştırma operatörleri kullanılmaktadır. Karşılaştırma operatörleri sayesinde iki değişken birbirine eşit mi?, eşit değil mi?, büyük mü?, küçük mü? veya bunların kombinasyonları şeklinde sınarız.
1.3.3. Lojik Operatörler
Lojik operatörler karşılaştırma gibi kullanılabildikleri gibi birden çok operatörü birleştirmek içinde kullanılabilir (and veya or ile). Bu kullanımın dışında pek fazla kullanımı yoktur daha çok mantıksal sorgularda birkaç şartı birleştirmek için kullanılır. Özellikle “and”, “or” veya “not” operatörleri çok fazla kullanılmaktadır.
1.4. Hazır Fonksiyonlar
Vbscript içerisinde değişkenlerimizi kontrol altında tutabilmemiz için bir dizi hazır fonksiyon bulunmaktadır. Bu fonksiyonları gruplar halinde inceleyeceğiz. Tüm bu fonksiyonları beş ana grupta toplayabiliriz.
- Metin işlemleri
- Sayısal işlemler
- Tarih işlemleri
- Test işlemleri
- Dönüştürme işlemleri
- Biçimlendirme işlemleri
1.4.1. Metin işlemleri
Metin işlemleri isminden anlaşılacağı metinler üzerinde işlemler yapmamıza olanak tanıyan fonksiyonlardır. Bu fonksiyonlar diğer programlama dillerinde de aynen vardır. Kullanımları sadece metinsel tabanlı değişkenler (string,char,byte..) üzerinde mümkündür.
1.4.1.1. Asc
Açıklama
İçerisine gönderilen metinin (veya karakterin) ilk harfine ait ANSI karakter kodunu gönderir. ANSI karşılık tablosu bu kitap içerisinde yer alan tabloda sunulmuştur.
Yazım
Deger = Asc(String)
Fonksiyon içerisine gönderilen değer mutlaka bir karakter tabanlı değer içermek zorundadır. Fonksiyona gönderilen string eğer boş olursa çalışma zamanı hatası oluşacaktır.
Örnek
| <%
Option Explicit Dim Deger
Deger = ASC(“A”) ‘ 65 değeri döner. Deger = ASC(“a”) ‘ 97 değeri döner. Deger = ASC(“Armut”) ‘ 65 değeri döner. %> |
Örnek 29 : ASC Fonksiyonu.
1.4.1.2. Chr
Açıklama
Asc fonksiyonunun tam tersini yapar ve verilen numerik değerleri ANSI karşılığı olan karaktere çevirir.
Yazım
Deger = Chr(numeric)
Fonksiyon içerisine gönderilen değer mutlaka bir sayısal değer içermek zorundadır. Fonksiyona gönderilen numerik değer 0-31 aralığında olduğu zaman bir karakter görüntülenmez, bunun sebebi ise bu aralıktaki karakterlerin özel karakterler olmasıdır. Örneğin Chr(10) satır atlatma kodudur ve görüntülenmesi mümkün değildir (kullanıldığı satırın bir altındaki satıra geçiş sağlar).
Örnekler
| <%
Option Explicit Dim Karakter
Karakter = Chr(65) ‘ A değeri döner. Karakter = Chr(97) ‘ a değeri döner. Karakter = Chr(62) ‘ > değeri döner. Karakter = Chr(37) ‘ % değeri döner. %> |
Örnek 30 : Chr Fonksiyonu.
1.4.1.3. Lcase
Açıklama
Lcase fonksiyonu içerisine gönderilen karakterleri veya karakter setlerini tamamen küçük harfe dönüştürülmüş olarak geri verir.
Yazım
Deger = Lcase(string)
Fonksiyon içerisine gönderilen değer mutlaka bir metinsel değer içermek zorundadır. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır. Dikkat edilecek nokta şudur fonksiyona gönderilen metindeki sadece büyük harfler küçük harfe dönüştürülecektir. Metin içerisindeki küçük harfler veya metin tabanlı olmayan harfler bir dönüşüme uğramayacaktır.
Örnekler
| <%
Option Explicit Dim Degisken, KucukMetin
Degisken = “VBScript” KucukMetin = LCase(Degisken) ‘ “vbscript” değeri döner. %> |
Örnek 31 : LCase Fonksiyonu.
1.4.1.4. Ucase
Açıklama
Ucase fonksiyonu çalışma olarak Lcase fonksiyonunun tamamen zıttıdır. Ucase fonksiyonu içerisine gönderilen karakterleri veya karakter setlerini tamamen büyük harfe dönüştürülmüş olarak geri verir.
Yazım
Deger = Ucase(string)
Fonksiyon içerisine gönderilen değer mutlaka bir metinsel değer içermek zorundadır. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır. Dikkat edilecek nokta şudur fonksiyona gönderilen metindeki sadece küçük harfler büyük harfe dönüştürülecektir. Metin içerisindeki büyük harfler veya metin tabanlı olmayan harfler bir dönüşüme uğramayacaktır.
Örnekler
| <%
Option Explicit Dim Degisken, BuyukMetin
Degisken = “VBScript” BuyukMetin = UCase(Degisken) ‘ “VBSCRIPT” değeri döner. %> |
Örnek 32 : UCase Fonksiyonu.
1.4.1.5. Left
Açıklama
Left fonksiyonu verilen bir metinsel değişkenin solundan belirtilen kadar karakteri alması için kullanılır. Soldaki birinci harf her zaman 1. harf olacaktır.
Yazım
Deger = Left(string, sayı)
Fonksiyon içerisine gönderilen stringin solundan itibaren yine fonksiyona gönderilen sayı kadar karakterini alacaktır. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır.
Örnekler
| <%
Option Explicit Dim Degisken, SolMetin
Degisken = “VBScript” SolMetin = Left(Degisken, 3) ‘ “VBS” değeri döner. %> |
Örnek 33 : Left Fonksiyonu.
1.4.1.6. Right
Açıklama
Right fonksiyonu verilen bir metinsel değişkenin sağından belirtilen kadar karakteri alması için kullanılır. Sağdaki ilk harf her zaman 1. harf olacaktır.
Yazım
Deger = Right(string, sayı)
Fonksiyon içerisine gönderilen stringin solundan itibaren yine fonksiyona gönderilen sayı kadar karakterini alacaktır. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır.
Örnekler
| <%
Option Explicit Dim Degisken, SagMetin
Degisken = “VBScript” SagMetin = Right(Degisken, 6) ‘ “Script” değeri döner. %> |
Örnek 34 : Right Fonksiyonu.
1.4.1.7. Mid
Açıklama
Bir string içerisinde başlangıç noktasını ve karakter olarak boyutunu verdiğimiz alanda yer alan stringi verecektir. Soldaki ilk harf 1. harf olarak kabul edilmektedir.
Yazım
Deger = Mid(string, başlangıç[, uzunluk])
Fonksiyon içerisine gönderilen stringin solundan itibaren yine fonksiyona gönderilen başlangıç değeri kadara içeriden, fonksiyona gönderilen uzunluk değeri kadar bir kısmı keser alır. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır. Uzunluk opsiyonu zorunlu değildir gönderilmediği zaman başlangıçtan son harfe kadar olan kısmı alır.
Örnekler
| <%
Option Explicit Dim Degisken, Metin
Degisken = “Erhan Arı” Metin = Mid(Degisken, 7, 3) ‘ “Arı” değeri döner. %> |
Örnek 35 : Mid Fonksiyonu.
1.4.1.8. Len
Açıklama
Fonksiyon içerisine gönderilen metinsel değişkenin karaktersel olarak uzunluğunu bize verir.
Yazım
Deger = Len(string)
Fonksiyon içerisine gönderilen stringin solundan itibaren boyu sayılacak ve fonksiyon çıktısı olarak verilecektir. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır.
Örnekler
| <%
Option Explicit Dim Degisken, Uzunluk
Degisken = “Arif Haldun Özer” Uzunluk = Len(Degisken) ‘ 16 değeri döner. %> |
Örnek 36 : Len Fonksiyonu.
1.4.1.9. Ltrim
Açıklama
Fonksiyon içerisine gönderilen metinsel değişkenin solunda yer alan boşlukları atar ve değişkenin solunda yer alan boşluklar hariç diğer kısımları alır.
Yazım
Deger = LTrim(string)
Fonksiyon içerisine gönderilen stringin solundan itibaren kontrol ederek solda yer alan boşlukları yok eder. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = LTrim(“ Alp İlhan “) ‘ “Alp İlhan “ değeri döner. %> |
Örnek 37 : LTrim Fonksiyonu.
1.4.1.10. Rtrim
Açıklama
Fonksiyon içerisine gönderilen metinsel değişkenin sağında yer alan boşlukları atar ve değişkenin sağında yer alan boşluklar hariç diğer kısımları alır.
Yazım
Deger = RTrim(string)
Fonksiyon içerisine gönderilen stringin sağından itibaren kontrol ederek sağda yer alan boşlukları yok eder. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = RTrim(“ Alp İlhan “) ‘ “ Alp İlhan“ değeri döner. %> |
Örnek 38 : RTrim Fonksiyonu.
1.4.1.11. Trim
Açıklama
Fonksiyon içerisine gönderilen metinsel değişkenin sağında ve solunda yer alan boşlukları atar ve değişkenin sağ ve sol boşlukları hariç diğer kısımları alır.
Yazım
Deger = Trim(string)
Fonksiyon içerisine gönderilen stringin sağında ve solunda yer alan boşlukları yok eder. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Trim(“ Alp İlhan “) ‘ “Alp İlhan” değeri döner. %> |
Örnek 39 : Trim Fonksiyonu.
1.4.1.12. Space
Açıklama
Fonksiyon içerisine gönderilen sayı değeri kadar boşluktan oluşan bir metinsel değişken oluşturur.
Yazım
Deger = Space(Sayı)
Fonksiyon içerisine gönderilen sayı değeri kadar boşluk olur. Fonksiyona gönderilen değer “Null” olursa geriye dönen değerde “Null” olacaktır.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Space(10) ‘ 10 adet boşluk değeri döner. Degisken = “Merhaba” & Space(1) & “Dünya” ‘ “Merhaba Dünya” değeri döner. %> |
Örnek 40 : Space Fonksiyonu.
1.4.1.13. String
Açıklama
Fonksiyon içerisine gönderilen sayı değeri kadar yine fonksiyon içerisine gönderilen karakteri yan yana koyar. Mantık olarak “space” fonksiyonuna çok benzer.
Yazım
Deger = String(Sayı, Karakter)
Fonksiyon içerisine gönderilen sayı değeri kadar karakteri yan yana koyar fakat fonksiyon içerisine gönderilen karakterin sadece ilk harfini alır yani karakter yerine bir metin girilirse sadece metnin ilk harfini alır. Bunun dışında karakter yerine karakterin ANSI kodunu da yazabilirsiniz.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = String(5, “*”) ‘ “*****” değeri döner. Degisken = String(5, 42) ‘ “*****” değeri döner. Degisken = String(10, “ABC”) ‘ “AAAAAAAAAA” değeri döner. %> |
1.4.1.14. Replace
Açıklama
Verilen string içerisinde istenilen bölümleri bulup başka bir string ile değiştirmeye yarar.
Yazım
Deger = Replace(Metin, bulunacakmetin, değiştirilecekmetin)
Fonksiyon içerisine gönderilen metin içerisinde bulunacakmetini arayarak yerine değiştirilecekmetin i değiştirir.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Replace(“XXpXXPXXp”, “p”, “Y”) ‘ “XXYXXPXXY” değeri döner. %> |
Örnek 41 : Replace Fonksiyonu.
1.4.1.15. InStr
Açıklama
Uzun bir değişken içerisinde (string) daha kısa bir değişkenin (string) bulunup bulunmadığını arar; bulursa kısa değişkenin uzun değişken içerisinde kaçıncı karakterden itibaren başladığını belirtir.
Yazım
Deger = InStr(Metin, aranacakmetin)
Fonksiyon içerisine gönderilen metin içerisinde aranacakmetin’i bulup soldan itibaren kaçıncı karakterden başladığını verir.
Örnekler
| <%
Option Explicit Dim Degisken, Bul, Sonuc
Degisken = “XXpXXpXXPXXP” Bul = “P” Sonuc = Instr(Degisken, Bul) ‘ 9 değeri döner. %> |
Örnek 42 : Instr Fonksiyonu.
1.4.1.16. InStrRev
Açıklama
Uzun bir değişken içerisinde (string) daha kısa bir değişkenin (string) bulunup bulunmadığını metinin sonundan itibaren arar; bulursa kısa değişkenin uzun değişken içerisinde sondan kaçıncı karakterden itibaren başladığını belirtir.
Yazım
Deger = InStrRev(Metin, aranacakmetin)
Fonksiyon içerisine gönderilen metin içerisinde aranacakmetin’i bulup sağdan itibaren kaçıncı karakterden başladığını verir.
Örnekler
| <%
Option Explicit Dim Degisken, Bul, Sonuc
Degisken = “XXpXXpXXPXXP” Bul = “P” Sonuc = Instrrev(Degisken, Bul) ‘ 1 değeri döner. %> |
Örnek 43 : Instrrev fonksiyonu.
1.4.1.17. StrReverse
Açıklama
Fonksiyon içerisine gönderilen metinin tersten okunuşu olarak bize verir.
Yazım
Deger = StrReverse(Metin)
Fonksiyon içerisine gönderilen metinin tersten okunuşunu verir.
Örnekler
| <%
Option Explicit Dim Degisken, Sonuc
Degisken = “VbScript” Sonuc = StrReverse(Degisken) ‘ “tpircSbV” değeri döner. %> |
Örnek 44 : StrReverse Fonksiyonu.
1.4.2. Sayısal işlemleri
Kullanılan tüm sayısal fonksiyonların kullanım biçimi aynıdır. Fonksiyon sonucu bir değişkene atılır ve işlemlerimize devam edilir. Matematikte kullanılan tüm fonksiyonlar aynen geçerlidir bunların bazıları Cos, Sin, Tan, Exp, vb.. şeklindedir. Kısa kısa bu fonksiyonlara değinelim.
1.4.2.1. Abs
Açıklama
Fonksiyon içerisine gönderilen sayının tam değerini verir. Negatif sayıları tam değer fonksiyonu ile kullandığımız zaman pozitif değer dönecektir.
Yazım
Deger = Abs(Sayı)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Abs(50.3) ‘ 50.3 değeri döner. Degisken = Abs(-50.3) ‘ 50.3 değeri döner. %> |
Örnek 45 : Abs Fonksiyonu.
1.4.2.2. Atn
Açıklama
Fonksiyon içerisine gönderilen sayının arctanjantını verir. Fakat bu işlemi radyan üzerinde yapar.
Yazım
Deger = Atn(Sayı)
Örnekler
| <%
Option Explicit Dim Pi Pi = Atn(1) * 4 ‘ pi değeri (3.14159276) döner. %> |
Örnek 46 : Atn Fonksiyonu.
1.4.2.3. Log
Açıklama
Fonksiyon içerisine gönderilen sayının doğal logaritmasını verir.
Yazım
Deger = Log(Sayı)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Log(10) ‘ e tabanında logaritma 10 u hesaplar. %> |
Örnek 47 : Log Fonksiyonu.
1.4.2.4. Exp
Açıklama
Doğal logaritma tabanı olan “e” değerinin üstel fonksiyonu yapar. Yani logaritma işleminin tam tersi söz konusudur.
Yazım
Deger = Exp(Sayı)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Exp(10) ‘ e üstü 10 u hesaplar. %> |
Örnek 48 : Exp Fonksiyonu.
1.4.2.5. Cos, Sin, Tan
Açıklama
Sayının radyan degeri olarak trigonometrik fonksiyonunu hesaplar. Tüm trigonometrik fonksiyonların kullanımları aynıdır. Eğer derece olarak çalışılacaksa mutlaka dönüşüm işlemi yapılmalıdır.
Yazım
Deger = Cos(Sayı)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Cos(10) ‘ radyan olarak 10 un kosinisinü verir. %> |
Örnek 49 : Cos Fonksiyonu.
1.4.2.6. Sqr
Açıklama
Sayının karekökünü verir.
Yazım
Deger = Sqr(Sayı)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Sqr(25) ‘ 5 değerini verir. %> |
Örnek 50 : Sqr Fonksiyonu.
1.4.2.7. Rnd
Açıklama
Rastgele bir sayı geri döndürür.
Yazım
Deger = Rnd(Sayı)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Rnd(25) ‘ rastgele bir değer verir. %> |
Örnek 51 : Rnd Fonksiyonu.
1.4.2.8. Round
Açıklama
Fonksiyona gönderilen sayıyı istenilen basamak kadar yuvarlar.
Yazım
Deger = Round(Sayı, basamak)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Round(3.14159276, 2) ‘ 3.14 değerini verir. %> |
Örnek 52 : Round Fonksiyonu.
1.4.2.9. Int, Fix
Açıklama
Fonksiyona gönderilen sayının tam sayısını verir.
Yazım
Deger = Int(Sayı)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Int(99.8) ‘ 99 değerini verir. Degisken = Fix(99.8) ‘ 99 değerini verir. Degisken = Int(-99.8) ‘ -100 değerini verir. Degisken = Fix(-99.8) ‘ -99 değerini verir. Degisken = Int(-99.2) ‘ -100 değerini verir. Degisken = Fix(-99.2) ‘ -99 değerini verir. %> |
Örnek 53 : Int ve Fix Fonksiyonu.
1.4.2.10. Sgn
Açıklama
Fonksiyona gönderilen sayının işaret fonksiyonu değerini verir.
Yazım
Deger = Sgn(Sayı)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Sgn(12) ‘ 1 değerini verir. Degisken = Sgn(-2.4) ‘ -1 değerini verir. Degisken = Sgn(0) ‘ 0 değerini verir. %> |
Örnek 54 : Sgn Fonksiyonu.
1.4.3. Tarih işlemleri
Visual basic programlama dilinin hemen hemen tüm zaman fonksiyonları vbscript’te de aynen kullanılır. Bunlara ek olarak ekstra birkaç fonksiyon eklenmiştir. Tüm tarih fonksiyonlarını sırasıyla inceleyelim;
1.4.3.1. Date
Açıklama
Bu fonksiyon sunucuda ayarlı olan tarih formatına uygun olarak o güne ait tarihi verir.
Yazım
Deger = Date
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Date() ‘ o günkü tarih değerini verir. %> |
Örnek 55 : Date Fonksiyonu.
1.4.3.2. Time
Açıklama
Bu fonksiyon sunucuda ayarlı olan zaman formatına uygun olarak o ana ait zamanı verir.
Yazım
Deger = Time
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Time() ‘ o an ki zaman değerini verir. %> |
Örnek 56 : Time Fonksiyonu.
1.4.3.3. Now
Açıklama
Bu fonksiyon sunucuda ayarlı olan tarih ve zaman formatına uygun olarak o an ki tarih ve zamanı birlikte verir.
Yazım
Deger = Now
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Now() ‘ o an ki tarih ve zaman değerini verir. %> |
Örnek 57 : Now Fonksiyonu.
1.4.3.4. Day
Açıklama
Bu fonksiyon içerisine gönderilen tarihe ait gün değerini sayısal olarak verir. Bu tarih başka fonksiyonların çıktıları olabildiği gibi metinsel tabanlı değişkende olabilmektedir.
Yazım
Deger = Day(Tarih)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Day(“25.07.1997”) ‘ “25” değerini verir. %> |
Örnek 58 : Day Fonksiyonu.
1.4.3.5. Month
Açıklama
Bu fonksiyon içerisine gönderilen tarihe ait ay değerini sayısal olarak verir. Bu tarih başka fonksiyonların çıktıları olabildiği gibi metinsel tabanlı değişkende olabilmektedir.
Yazım
Deger = Month(Tarih)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Month(“25.07.1997”) ‘ “7” değerini verir. %> |
Örnek 59 : Month Fonksiyonu.
1.4.3.6. Year
Açıklama
Bu fonksiyon içerisine gönderilen tarihe ait yıl değerini sayısal olarak verir. Bu tarih başka fonksiyonların çıktıları olabildiği gibi metinsel tabanlı değişkende olabilmektedir.
Yazım
Deger = Year(Tarih)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Year(“25.07.1997”) ‘ “1997” değerini verir. %> |
Örnek 60 : Year Fonksiyonu.
1.4.3.7. WeekDay
Açıklama
Bu fonksiyon içerisine gönderilen tarihin haftanın kaçıncı günü olduğunun değerini sayısal olarak verir. Bu tarih başka fonksiyonların çıktıları olabildiği gibi tarih tabanlı değişkende olabilmektedir. Geriye donen değer sabitler bölümünde anlatılan değerler olacaktır.
Yazım
Deger = WeekDay(Tarih)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = WeekDay(“25.07.1997”) ‘ “3” değerini verir. %> |
Örnek 61 : Weekday Fonksiyonu.
1.4.3.8. WeekDayName
Açıklama
Bu fonksiyon içerisine gönderilen tarihin haftanın kaçıncı günü olduğunun değerini gün ismi olarak verir. Bu tarih başka fonksiyonların çıktıları olabildiği gibi tarih tabanlı değişkende olabilmektedir. Geriye donen değer metin tabanlı olarak gün ismi olacaktır.
Yazım
Deger = WeekDayName(Tarih)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = WeekDayName(“25.07.1997”) ‘ “Salı” değerini verir. %> |
Örnek 62 : Weekdayname Fonksiyonu.
1.4.3.9. MonthName
Açıklama
Bu fonksiyon içerisine gönderilen sayısal değere karşılık gelen ay adını verir. Geriye donen değer metin tabanlı olarak ay ismi olacaktır. Fakat bu isim sunucunun bölgesel ayarlarında ayarlandığı şekilde olacaktır.
Yazım
Deger = MonthName(Sayı)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = MonthName(11) ‘ “Kasım” değerini verir. %> |
Örnek 63 : MonthName Fonksiyonu.
1.4.3.10. Hour
Açıklama
Bu fonksiyon içerisine gönderilen zamana ait saat bilgisini sayısal olarak verir. Geriye donen değer sayısal olarak saati verecektir. Bu alınan saat bilgisi bölgesel ayarlara bağlı değildir.
Yazım
Deger = Hour(Zaman)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Hour(“15:32:33”) ‘ “15” değerini verir. %> |
Örnek 64 : Hour Fonksiyonu.
1.4.3.11. Minute
Açıklama
Bu fonksiyon içerisine gönderilen zamana ait dakika bilgisini sayısal olarak verir. Geriye donen değer sayısal olarak dakikayı verecektir. Bu alınan dakika bilgisi bölgesel ayarlara bağlı değildir.
Yazım
Deger = Minute(Zaman)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Minute(“15:32:33”) ‘ “32” değerini verir. %> |
Örnek 65 : Minute Fonksiyonu.
1.4.3.12. Second
Açıklama
Bu fonksiyon içerisine gönderilen zamana ait saniye bilgisini sayısal olarak verir. Geriye donen değer sayısal olarak saniyeyi verecektir. Bu alınan saniye bilgisi bölgesel ayarlara bağlı değildir.
Yazım
Deger = Second(Zaman)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = Second(“15:32:33”) ‘ “33” değerini verir. %> |
Örnek 66 : Second Fonksiyonu.
1.4.3.13. DateAdd
Açıklama
Bu fonksiyon içerisine gönderilen zamana, belirtilen miktarda belirtilen birimi ekleyecektir. Geriye dönen değer yine tarihsel bir değişken olacaktır. Kullanımda adı geçen birimler aşağıdaki şekillerde olabilir.
yyyy Yıl
q Çeyrek yıl
m Ay
d Gün
w Hafta
h Saat
n Dakika
s Saniye
Yazım
Deger = DateAdd(Birim, Miktar, Tarih)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = DateAdd(“m”, 1, “25.07.2002”) ‘ “25.08.2002” değerini verir. Degisken = DateAdd(“yyyy”, 3, “25.07.2002”) ‘ “25.07.2005” değerini verir. %> |
Örnek 67 : DateAdd Fonksiyonu.
1.4.3.14. DateDiff
Açıklama
Bu fonksiyon içerisine gönderilen iki farklı zaman arasında belirtilen birimle ne kadar fark olduğunu verecektir. Geriye dönen değer sayısal bir değişken olacaktır. Kullanımda adı geçen birimler aşağıdaki şekillerde olabilir.
yyyy Yıl
q Çeyrek yıl
m Ay
d Gün
w Hafta
h Saat
n Dakika
s Saniye
Yazım
Deger = DateDiff(Birim, Tarih1, Tarih2)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = DateDiff(“m”, “25.07.2001”, “25.07.2002”) ‘ “12” değerini verir. %> |
Örnek 68 : DateDiff Fonksiyonu.
1.4.3.15. DateSerial
Açıklama
Bu fonksiyon içerisine gönderilen tarih değerlerini birleştirerek tarih formatında bir tarih değişkeni oluşturur. Geriye dönen değer tarihsel bir değişken olacaktır.
Yazım
Deger = DateSerial(Yıl, Ay, Gün)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = DateSerial(“1997”, “07”, “25”) ‘ “25.07.1997” değerini verir. %> |
Örnek 69 : DateSerial Fonksiyonu.
1.4.3.16. DateValue
Açıklama
Bu fonksiyon içerisine gönderilen metinsel tabanlı tarih değerini tarih formatında bir tarih değişkenine çevirir. Geriye dönen değer tarihsel bir değişken olacaktır.
Yazım
Deger = DateValue(Metin)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = DateValue(“4 November 1979”) ‘ “04.11.1979” değerini verir. %> |
Örnek 70 : DateValue Fonksiyonu.
1.4.3.17. TimeSerial
Açıklama
Bu fonksiyon içerisine gönderilen zaman değerlerini birleştirerek zaman formatında bir zaman değişkeni oluşturur. Geriye dönen değer zaman değişkeni olacaktır.
Yazım
Deger = TimeSerial(Saat, Dakika, Saniye)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = TimeSerial(“12”, “07”, “25”) ‘ “12:07:25” değerini verir. %> |
Örnek 71 : TimeSerial Fonksiyonu.
1.4.3.18. TimeValue
Açıklama
Bu fonksiyon içerisine gönderilen metinsel tabanlı zaman değerini zaman formatında bir zaman değişkenine çevirir. Geriye dönen değer zaman değişkeni olacaktır.
Yazım
Deger = TimeValue(Metin)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = TimeValue(“4:35:32 PM”) ‘ “04.35.32 PM” değerini verir. %> |
Örnek 72 : TimeValue Fonksiyonu.
1.4.4. Test işlemleri
Bazen de değişkenlerimizin hangi tip de olduğunu sınamamız gerekir bu eksiği kapatmak için vbscript içerisinde test fonksiyonları geliştirilmiştir. Bu fonksiyonlardan dönen değer 1 veya 0 yani doğru yada yanlıştır. Bu fonksiyonlar şunlardır.
1.4.4.1. IsArray
Açıklama
Bu fonksiyon içerisine gönderilen değişkenin dizi değişkeni olup olmadığını sınamak için kullanılır.
Yazım
Deger = IsArray(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken, Degisken1
Degisken = IsArray(Degisken1) ‘ Degisken1 dizi ise “true” değerini verir. %> |
Örnek 73 : IsArray Fonksiyonu.
1.4.4.2. IsDate
Açıklama
Bu fonksiyon içerisine gönderilen değişkenin tarih değişkeni olup olmadığını sınamak için kullanılır.
Yazım
Deger = IsDate(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken, Degisken1
Degisken = IsDate(Degisken1) ‘ Degisken1 tarih ise “true” değerini verir. %> |
Örnek 74 : IsDate Fonksiyonu.
1.4.4.3. IsEmpty
Açıklama
Bu fonksiyon içerisine gönderilen değişkenin bir değere sahip olup olmadığını sınamak için kullanılır.
Yazım
Deger = IsEmpty(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken, Degisken1
Degisken = IsEmpty(Degisken1) ‘ Degisken1 boş ise “true” değerini verir. %> |
Örnek 75 : IsEmpty Fonksiyonu.
1.4.4.4. IsNull
Açıklama
Bu fonksiyon içerisine gönderilen değişkenin tanımlanıp tanımlanmadığını sınamak için kullanılır.
Yazım
Deger = IsNull(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken, Degisken1
Degisken = IsNull(Degisken1) ‘ Degisken1 null ise “true” değerini verir. %> |
Örnek 76 : IsNull Fonksiyonu.
1.4.4.5. IsNumeric
Açıklama
Bu fonksiyon içerisine gönderilen değişkenin sayısal bir değişken olup olmadığını sınamak için kullanılır.
Yazım
Deger = IsNumeric(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken, Degisken1
Degisken = IsNumeric(Degisken1) ‘ Degisken1 sayısal ise “true” değerini verir. %> |
Örnek 77 : IsNumeric Fonksiyonu.
1.4.4.6. ScriptEngine
Açıklama
Bu fonksiyon sunucu üzerinde kullanılan “Script Engine” de kullanılan script dilinin ne olduğunu verir. Sonuç olarak “VbScript” veya “JsScript” değerini verir.
Yazım
Deger = ScriptEngine
Örnekler
| <%
Option Explicit Dim Degisken, Degisken1
Degisken = ScriptEngine ‘ Sunucunun Kullandığı Dili verir. %> |
Örnek 78 : ScriptEngine Fonksiyonu.
1.4.4.7. VarType
Açıklama
Bu fonksiyon içerisine gönderilen değişkenin tipini verir. Sonuç olarak sayısal bir değer döner bu değer sabitler konusunda anlatılan sabit değerlerinden birisi olacaktır.
Yazım
Deger = VarType(Degisken)
Örnekler
| <%
Option Explicit Dim Degisken, Degisken1
Degisken = VarType(Degisken1) ‘ degisken1 in ne tip olduğunu verir
Select Case VarType(Degisken1) Case 0 : Response.Write “Empty” Case 1 : Response.Write “Null” Case 2 : Response.Write “Integer” Case 3 : Response.Write “Long Integer” Case 4 : Response.Write “Single-Precision Number” Case 5 : Response.Write “Double-Precision Number” Case 6 : Response.Write “Currency” Case 7 : Response.Write “Date” Case 8 : Response.Write “String” Case 9 : Response.Write “Object” Case 10 : Response.Write “Error” Case 11 : Response.Write “Boolean” Case 12 : Response.Write “Variant” Case 13 : Response.Write “Data Object” Case 17 : Response.Write “Byte” Case 8192 : Response.Write “Variant Array” End Select %> |
Örnek 79 : VarType Fonksiyonu.
1.4.5. Dönüştürme işlemleri
Bazen de değişkenlerin birbirleri arasında dönüştürülmesi gerekebilir. Bu dönüştürme fonksiyonları şunlardır.
1.4.5.1. Array
Açıklama
Bu fonksiyon içerisine gönderilen değişkenleri statik tek boyutlu bir seri değişken tipine dönüştürür. İçerisine gönderilecek değer sayısına göre boyut büyüyebilir. Unutulmaması gereken en önemli nokta seri değişkenlerin “0” dan başladığıdır. Yani ilk seri değişkeni 0 olacaktır.
Yazım
Deger = Array(DeğişkenListesi)
Örnekler
| <%
Option Explicit Dim Degisken, A
Degisken = Array(10, 20, 30, 40) ‘ Fonksiyon yardımı ile diziye dönüştürdük. A = Degisken(2) ‘ A değeri olarak “30” değeri döner. %> |
Örnek 80 : Array Fonksiyonu.
1.4.5.2. CBool
Açıklama
Bu fonksiyon içerisine gönderilen değişkenin değerine göre boolean veri tipinde bir değer döndürür. Bunu yaparken de değişken eğer “0” sa dönüştürülen değer “False” olacaktır. Bunun yanında eğer değişken “0” dan farklı ise o zaman dönüştürülen değer “True” olacaktır.
Yazım
Deger = CBool(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = CBool(0) ‘ “False” değeri dönecektir. Degisken = CBool(434) ‘ “True” değeri dönecektir. %> |
Örnek 81 : CBool Fonksiyonu.
1.4.5.3. CByte
Açıklama
Fonksiyona gönderilen değişkeni Byte tipi bir değişkene dönüştürür. Byte tipinden kasıt string değildir unutmamak gerekir.
Yazım
Deger = CByte(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = CByte(125.567) ‘ “126” değeri dönecektir. %> |
Örnek 82 : CByte Fonksiyonu.
1.4.5.4. CDate
Açıklama
Fonksiyona gönderilen değişkeni tarih tipi bir değişkene dönüştürür.
Yazım
Deger = CDate(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = CDate(“4.11.1979”) ‘ “04.11.1979” değeri dönecektir. %> |
Örnek 83 : CDate Fonksiyonu.
1.4.5.5. CInt
Açıklama
Fonksiyona gönderilen değişkeni sayısal veri tipi bir değişkene dönüştürür.
Yazım
Deger = CInt(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = CInt(“2507”) ‘ “2507” değeri dönecektir. %> |
Örnek 84 : CInt Fonksiyonu.
1.4.5.6. CStr
Açıklama
Fonksiyona gönderilen değişkeni metinsel veri tipi bir değişkene dönüştürür.
Yazım
Deger = CStr(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = CStr(2507) ‘ “2507” değeri dönecektir. %> |
Örnek 85 : CStr Fonksiyonu.
1.4.5.7. TypeName
Açıklama
Fonksiyona gönderilen değişkenin tipini verir. Bu tipler sabitler kısmında tanımlanmış değerlerden oluşmaktadır.
Yazım
Deger = TypeName(Değişken)
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = TypeName(“2507”) ‘ “String” değeri dönecektir. Degisken = TypeName(2507) ‘ “Integer” değeri dönecektir. Degisken = TypeName(37.5) ‘ “Double” değeri dönecektir. %> |
Örnek 86 : TypeName Fonksiyonu.
1.4.6. Biçimlendirme işlemleri
Bazen de değişkenleri biçimlendirmek gerekebilir. Bu biçimlendirme işlemleri için aşağıda verilen bir dizi fonksiyon kullanılır.
1.4.6.1. FormatNumber
Açıklama
Fonksiyona gönderilen numerik değişkeni biçimlendirmek için kullanılır. Bu biçimlendirme işlemi sunucunun bölgesel ayarlarına göre yapılabildiği gibi verilen opsiyonlara göre de yapılabilmektedir.
Yazım
Deger = FormatNumber(Değişken, [Ondalık Kısım], [Öncü Değer], [Mutlak Değer], [Binlik Grup Ayırma])
Yazım içerisinde kullanılan “[“ ve “]” işaretleri içerisinde olan kısımlar zorunlu olmayan opsiyonlardır. Bu opsiyonlar belirtilmediği zaman sistem otomatik olarak sunucunun geçerli değerlerini alacaktır. Bu opsiyonların açıklamaları şu şekildedir.
Ondalık Kısım : Bu seçeneğe verilen numerik değer kadar ondalık kısım basamağı oluşturacaktır. Yani virgülden sonra kaç basamağın gösterileceği ayarlanabilmektedir. Unutulmaması gereken en önemli konu virgülden sonraki ondalık değerin burada atanan basamak sayısına yuvarlanmasıdır. Örneğin “1,2506943543” değerinin “4” haneli bir ondalık kısmına yuvarlandığı zaman “1,2507” şeklinde bir biçim alacaktır.
Öncü Değer : Bu seçeneği aktif hale getirdiğimiz zaman sıfırdan küçük ondalık değerler için sayının öncü değerini aktif hale getirecektir. Örneğin “,44” değerini bu seçeneği aktif hale getirdiğimiz zaman “0,44” şeklinde görüntülenecektir. Bu seçeneği aktif hale getirmek için sabitler kısmında anlatılan “durum sabitleri” kullanılmalıdır, bu sabitlerin yerine, pasifleştirmek için “0”, aktifleştirmek için “-1” değeri girilebilir.
Mutlak Değer : Bu seçeneği aktif hale getirdiğimiz zaman fonksiyona gönderilen negatif değerin pozitif değerini verecektir. Bu seçeneği aktif hale getirmek için sabitler kısmında anlatılan “durum sabitleri” kullanılmalıdır, bu sabitlerin yerine, pasifleştirmek için “0”, aktifleştirmek için “-1” değeri girilebilir.
Binlik Grup Ayırma : Bu seçenek aktif hale getirildiği zaman sayıyı sağdan başlamak üzere binlik gruplara ayıracaktır. Örneğin “1000000” değerini binlik grupladığımız zaman “1.000.000” şeklinde gruplayacaktır. Bu seçeneği aktif hale getirmek için sabitler kısmında anlatılan “durum sabitleri” kullanılmalıdır, bu sabitlerin yerine, pasifleştirmek için “0”, aktifleştirmek için “-1” değeri girilebilir.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = FormatNumber(2507) ‘ “2.507,00” değeri dönecektir. Degisken = FormatNumber(2507,4) ‘ “2.507,0000” değeri dönecektir. Degisken = FormatNumber(.2507,4,-1) ‘ “0.2507” değeri dönecektir. Degisken = FormatNumber(-2507,2,0,-1) ‘ “2.507,00” değeri dönecektir. Degisken = FormatNumber(15.678,2,-1,-1) ‘ “15.68” değeri dönecektir. %> |
Örnek 87 : FormatNumber Fonksiyonu.
1.4.6.2. FormatDateTime
Açıklama
Fonksiyona gönderilen tarihsel değişkeni biçimlendirmek için kullanılır. Bu biçimlendirme işlemi sunucunun bölgesel ayarlarına göre yapılabildiği gibi verilen opsiyonlara göre de yapılabilmektedir.
Yazım
Deger = FormatDateTime(Değişken, [Tarih, Zaman Formatı])
Yazım içerisinde kullanılan “[“ ve “]” işaretleri içerisinde olan kısımlar zorunlu olmayan opsiyonlardır. Bu opsiyonlar belirtilmediği zaman sistem otomatik olarak sunucunun geçerli değerlerini alacaktır. Bu opsiyonların açıklamaları şu şekildedir.
Tarih Zaman Formatı : Bu seçeneğe verilen sabit (sabitler kısmında verilmiştir) tarih veya zamanın nasıl biçimlenmesi gerektiğini belirtir.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = FormatDateTime(“25/7/97”) ‘ “25/07/1997” değeri dönecektir. Degisken = FormatDateTime(“15:34”) ‘ “3:34:00 PM” değeri dönecektir. Degisken = FormatDateTime(“3:34:00 PM”, 4) ‘ “3:34” değeri dönecektir. %> |
Örnek 88 : FormatDateTime Fonksiyonu.
1.4.6.3. FormatCurrency
Açıklama
Fonksiyona gönderilen para değeri içeren değişkeni biçimlendirmek için kullanılır. Bu biçimlendirme işlemi sunucunun bölgesel ayarlarına göre yapılabildiği gibi verilen opsiyonlara göre de yapılabilmektedir.
Yazım
Deger = FormatCurrency(Değişken, [Ondalık Kısım], [Öncü Değer], [Mutlak Değer], [Binlik Grup Ayırma])
Yazım içerisinde kullanılan “[“ ve “]” işaretleri içerisinde olan kısımlar zorunlu olmayan opsiyonlardır. Bu opsiyonlar belirtilmediği zaman sistem otomatik olarak sunucunun geçerli değerlerini alacaktır. Bu opsiyonların açıklamaları şu şekildedir.
Ondalık Kısım : Bu seçeneğe verilen numerik değer kadar ondalık kısım basamağı oluşturacaktır. Yani virgülden sonra kaç basamağın gösterileceği ayarlanabilmektedir. Unutulmaması gereken en önemli konu virgülden sonraki ondalık değerin burada atanan basamak sayısına yuvarlanmasıdır. Örneğin “1,2506943543” değerinin “4” haneli bir ondalık kısmına yuvarlandığı zaman “1,2507 TL” şeklinde bir biçim alacaktır.
Öncü Değer : Bu seçeneği aktif hale getirdiğimiz zaman sıfırdan küçük ondalık değerler için sayının öncü değerini aktif hale getirecektir. Örneğin “,44” değerini bu seçeneği aktif hale getirdiğimiz zaman “0,44 TL” şeklinde görüntülenecektir. Bu seçeneği aktif hale getirmek için sabitler kısmında anlatılan “durum sabitleri” kullanılmalıdır, bu sabitlerin yerine, pasifleştirmek için “0”, aktifleştirmek için “-1” değeri girilebilir.
Mutlak Değer : Bu seçeneği aktif hale getirdiğimiz zaman fonksiyona gönderilen negatif değerin pozitif değerini verecektir. Bu seçeneği aktif hale getirmek için sabitler kısmında anlatılan “durum sabitleri” kullanılmalıdır, bu sabitlerin yerine, pasifleştirmek için “0”, aktifleştirmek için “-1” değeri girilebilir.
Binlik Grup Ayırma : Bu seçenek aktif hale getirildiği zaman sayıyı sağdan başlamak üzere binlik gruplara ayıracaktır. Örneğin “1000000” değerini binlik grupladığımız zaman “1.000.000 TL” şeklinde gruplayacaktır. Bu seçeneği aktif hale getirmek için sabitler kısmında anlatılan “durum sabitleri” kullanılmalıdır, bu sabitlerin yerine, pasifleştirmek için “0”, aktifleştirmek için “-1” değeri girilebilir.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = FormatCurrency(2507) ‘ “2.507,00 TL” değeri dönecektir. Degisken = FormatCurrency(2507,4) ‘ “2.507,0000 TL” değeri dönecektir. Degisken = FormatCurrency(2507,4,-1) ‘ “0,2507 TL” değeri dönecektir. %> |
Örnek 89 : FormatCurrency Fonksiyonu.
1.4.6.4. FormatPercent
Açıklama
Fonksiyona gönderilen para değeri içeren değişkeni biçimlendirmek için kullanılır. Bu biçimlendirme işlemi sunucunun bölgesel ayarlarına göre yapılabildiği gibi verilen opsiyonlara göre de yapılabilmektedir.
Yazım
Deger = FormatCurrency(Değişken, [Ondalık Kısım], [Öncü Değer], [Mutlak Değer], [Binlik Grup Ayırma])
Yazım içerisinde kullanılan “[“ ve “]” işaretleri içerisinde olan kısımlar zorunlu olmayan opsiyonlardır. Bu opsiyonlar belirtilmediği zaman sistem otomatik olarak sunucunun geçerli değerlerini alacaktır. Bu opsiyonların açıklamaları şu şekildedir.
Ondalık Kısım : Bu seçeneğe verilen numerik değer kadar ondalık kısım basamağı oluşturacaktır. Yani virgülden sonra kaç basamağın gösterileceği ayarlanabilmektedir. Unutulmaması gereken en önemli konu virgülden sonraki ondalık değerin burada atanan basamak sayısına yuvarlanmasıdır. Örneğin “1,2506943543” değerinin “4” haneli bir ondalık kısmına yuvarlandığı zaman “%125,07” şeklinde bir biçim alacaktır.
Öncü Değer : Bu seçeneği aktif hale getirdiğimiz zaman sıfırdan küçük ondalık değerler için sayının öncü değerini aktif hale getirecektir. Örneğin “,44” değerini bu seçeneği aktif hale getirdiğimiz zaman “% 0,44” şeklinde görüntülenecektir. Bu seçeneği aktif hale getirmek için sabitler kısmında anlatılan “durum sabitleri” kullanılmalıdır, bu sabitlerin yerine, pasifleştirmek için “0”, aktifleştirmek için “-1” değeri girilebilir.
Mutlak Değer : Bu seçeneği aktif hale getirdiğimiz zaman fonksiyona gönderilen negatif değerin pozitif değerini verecektir. Bu seçeneği aktif hale getirmek için sabitler kısmında anlatılan “durum sabitleri” kullanılmalıdır, bu sabitlerin yerine, pasifleştirmek için “0”, aktifleştirmek için “-1” değeri girilebilir.
Binlik Grup Ayırma : Bu seçenek aktif hale getirildiği zaman sayıyı sağdan başlamak üzere binlik gruplara ayıracaktır. Örneğin “1000” değerini binlik grupladığımız zaman “%1.000” şeklinde gruplayacaktır. Bu seçeneği aktif hale getirmek için sabitler kısmında anlatılan “durum sabitleri” kullanılmalıdır, bu sabitlerin yerine, pasifleştirmek için “0”, aktifleştirmek için “-1” değeri girilebilir.
Örnekler
| <%
Option Explicit Dim Degisken
Degisken = FormatPercent(.25) ‘ “%25” değeri dönecektir. Degisken = FormatPercent(.2507) ‘ “%25” değeri dönecektir. Degisken = FormatPercent(.2507,4,-1) ‘ “%0,2507” değeri dönecektir. %> |
Örnek 90 : FormatPercent Fonksiyonu.
1.5. Mantık kontrolleri :
İster ASP diliyle, ister başka programlama diliyle yazılmış olsun, bilgisayar programlarının varlık sebebi, çeşitli durumları değerlendirmek ve kararlar verip bu doğrultuda işlemine devam etmektir. Bunu programlarda mantık kontrol komutları ile yaparız. Program bu öğeler sayesinde karşılaştırmalar yapar, belirli koşulların yerine gelip gelmediğine bakar veya belirli bir durumun oluşuna veya sona erişine bağlı olarak başka bir işlemi başlatır veya bitirir. Kimi zaman da, programa yapmakta olduğu işi durdurarak, başka bir iş yapmasını bildirebiliriz. Bunlara süreçler veya prosedürler denir.
ASP programlarında kara mekanizmasının en temel kontrol öğesi “eğer…se…yap!” şeklindedir.
1.5.1. If – Then – Else
Vereceğiniz bir durumun oluşup oluşmadığını sınar.
| <%
if şart then [şart doğru ise yapılacak işlemler] else [şart yanlış ise yapılacak işlemler] end if %> |
Örnek 91 : İf Blok Diyagramı.
Bunu bir örnekle ifade edelim; Programımız eğer saat 12’den önce çalıştırılırsa sayfada “Günaydın”; eğer saat 12’den sonra çalıştırılırsa sayfa da “Tünaydın” yazısının yazdırılacağı bir program yazalım.
| <%
if hour(now) < 12 then response.write “Günaydın!” else response.write “Tünaydın!” end if
response.write “Sayfamıza hoş geldiniz” %> |
Örnek 92 : İf Yapısı.
Program çalıştırıldığı zaman, çalıştırdığınız saate göre programdaki selam tarzının değiştiğini göreceksiniz. Programın nasıl çalıştığına gelirsek. Önce ki sayılarda asp içerisinde kullanmaya hazır mevcut fonksiyonların varlığından söz etmiştik bunlardan biriside o an ki saati ve tarihi bildiren now() fonksiyonudur. (hour() fonksiyonu ise içindeki tarih ve saatin yalnızca saat basamağını gösteren bir fonksiyondur) fonksiyondan dönen değer eğer 12’den küçükse, programımız response (karşılık) nesnesinin write (yazdır) methodunu kullanarak (nesne ve method konularına fazla takılmayın, ileri sayılarda anlatılacaktır) ziyaretçinin browser penceresine “Günaydın” yazdırır.
Eğer bu ilk karşılaştırmanın sonucu doğru değil ise yani saat 12 den büyük ise, doğru ise yapılacaklar alanındaki komutlar pas geçilerek yanlış ise yapılacaklar alanındaki komutlar işleme sokulur. Bu işlem sonucunda “Tünaydın” kelimesi çıktı olacaktır.
Fakat burada bir eksik var: programı saat 18’den sonra çalıştıranlara “iyi akşamlar” şeklinde bir karşılama yazmamız daha doğru olmaz mı? If döngüsü kendi içerisinde sınırsız “elseif” imkanı vererek bize bunu sağlar. Her “elseif” yeni bir “if” gibi işlem yapar.
| <%
if şart1 then [şart1 doğru ise yapılacak işlemler] elseif şart2 then [şart2 doğru ise yapılacak işlemler] . . else [şartlar yanlış ise yapılacak işlemler] end if %> |
Örnek 93 : Elseif Fonksiyonu.
Yeni öğrendiğimiz bu komutu kullanarak karşılama sistemimizi biraz genişletelim.
| <%
if hour(now) < 12 then response.write “Günaydın!” elseif hour(now) > 18 then response.write “İyi akşamlar” else response.write “Tünaydın!” end if
response.write “Sayfamıza hoş geldiniz” %> |
Örnek 94 : Elseif Yapısı.
1.5.2. Select case
VbScript’in bir diğer duruma bakarak karar verme ifadesi, “select case” (durum seç) yapısıdır. Bu kontrol öğesinin nasıl çalıştığını şöyle özetleyebiliriz:
| <%
durum seç Durum1 : yapılacak işler Durum2 : yapılacak işler Durum3 : yapılacak işler Seçmeyi bitir %> |
Örnek 95 : Select Case Fonksiyonu.
Vbscript, verdiğiniz durum listesine veya içinde çeşitli değerler bulunan değişkene bakarak, bu değişkeni bir “durum” sayacak ve verdiğimiz durumlardan hangisini tutuyorsa, ona ait komut dizisini çalıştıracaktır. Yukarıdaki örneğimizi bu kez bu yapıyı kullanarak yazalım.
| <%
select case Hour(Now) case 5,6,7,8,9,10,11 response.write “Günaydın!” case 12,13,14,15,16,17,18 response.write “Tünaydın” case 19,20,21,22 response.write “İyi akşamlar” case else response.write “İyi geceler” end select
response.write “Sayfamıza hoş geldiniz” %> |
Örnek 96 : Select Case Yapısı.
“Select case” komutuna, içindeki değerleri “durum” sayacağı dizi veya değişken olarak vbscript’in kullanmaya hazır fonksiyonlarından Hour(Now)’ı veriyoruz. Bu fonksiyonlardan, 0 ile 24 arasında bir değer dönecektir. Bu değer “select case” için durum demektir. Select case bu değer ile altta sıralanan case’leri karşılaştıracak ve elindeki değer hangi case’i tutuyorsa ona ait komutlar çalıştırılacaktır. Sonuncu case’e lütfen dikkat edin: burada case olarak else (başka) veriliyor. Bu bizi 22 den 5 e kadar olan saatleri sıralamaktan kurtarır. 22 – 5 arasında kullanıcılarımıza “iyi geceler” diyebiliriz.
1.6. Döngüler
Mantık kontrolleri bir programın akışını kontrol için kullanacağımız birinci önemli unsur ise, döngü de ikinci en önemli unsur sayılır. Hatta programcının tembellik katsayısına göre belki de birinci en önemli unsur bile sayılabilir! Çünkü döngü (loop) programa, bir işi bitesiye kadar yaptırma imkanı verir. Tabii bu iş sonsuza kadar sürecek olursa, buna “endles loop” (sonsuz döngü) denir. Vbscript‘te kullanabileceğiniz döngü yöntemleri şunlardır.
1.6.1. For-Next döngüsü
Programın bir işi belirli kere yapmasını istiyorsak, ona yapacağı işi bir sayaç değişkeni ile birlikte, “for” döngüsüyle bildiririz.
| <%
for sayac = baslangic to son step adim yapılacak işler Next %> |
Örnek 97 : For – Next Yapısı.
Burada, “sayaç” yerine istediğimiz bir değişken adını, “başlangıç” yerine sayacın başlatılmasını istediğimiz sayıyı, “son” yerine sayacın durmasını istediğimiz sayıyı, ve “adım” yerine, sayacın kaçar kaçar artmasını istediğimizi yazabilirsiniz. En sondaki “next” deyimi ise döngünün bir sonraki adıma geçmesini sağlar. Bu adımda sayaç, “step” kelimesi varsa karşısındaki değer kadar artırılır ve yapılacak işler yeniden yapılır.
| <%
Dim gunler gunler = Array(“Pazartesi”, “Salı”, “Çarşamba”, “Perşembe”, “Cuma”, “Cumartesi”, “Pazar”)
for sayac = 0 to 6 response.write gunler(sayac) next %> |
Örnek 98 : For – Next Örneği.
Bu asp kodunda, gunler adıyla bir dizi-değişken oluşturuyoruz ve bu değişkenin 7 hanesine, günlerin adlarını atıyoruz. Sonra sayac adlı sayacı 0 dan 6’ya kadar arttırıyoruz (sayacın birer birer artmasını istersek step komutunu yazmayız). Şimdi kendimizi bir an için vbscript yerine koyalım ve birinci adımda yaptığımız işi düşünelim: “hımm.. programcı bey, benim sayac’ı önce 0 yapmamı istiyor; peki sayac 0 olsun. Sonra günler dizi-değişkeninden sayac değeri ile aynı sayıyı taşıyan değişkeni alıp bunu ekrana yazdırmamı istiyor. Peki, gunler(0) ne imiş, bakalım. gunler(0) Pazartesi imiş. O halde ziyaretçinin ekranına bir Pazartesi kelimesi yazalım. Şimdi sırada next var. Yani sonraki adıma devam edeceğiz, step değeri olmadığına göre sayacı bir artırayım. Sayaç böylece 1 oldu”
Ve böylece vbscript, sayacın son değeri olan 6’ya ulaşıncaya kadar günler dizi değişkeninden sayacın değerine göre değer seçerek ve bunu ekrana yazdırarak, işini yapacaktır. Bu bakımdan vbscript güvenilir ve çalışkan bir arkadaştır.
Unutulmaması gereken bir diğer noktada diğer programlama dillerinde olduğu gibi “next” komutunun “next a” gibi yani bir değişkenle beraber kullanılmamasıdır. Vbscript de bu tip bir kullanım hata verecektir.
1.6.2. While-wend döngüsü
Bazen program içerisinde kullanacağımız döngü sabit olmayabilir, yani programın üst kesimlerinden veya kullanıcıdan alınan bir değer kadad döngü kurulması istenebilir. Özetle yapılmasını gereken işin ancak sayaç bir değerden azsa, çoksa ve eşitse yapılmasını, bu durum değişirse durmasını isteyebiliriz. Bunu while (..iken) komutuyla yapabiliriz. While döngüsü kullandığımız zaman sayacı bizim artırmamız gerekir.
Sözgelimi, yukarıdaki programın 7 günün tümünü ekrana yazdırması değil de, mesela gün sayısı 5’den küçük ise yazdırmasını istiyor olabiliriz. Bu durumda kodumuzda for-next arasındaki bölümde şu değişikliği yapmalıyız.
| while sayac <= 5
response.write gunler(sayac) sayac = sayac + 1 Wend |
Örnek 99 : While-Wend Yapısı.
Burada while döngüsünün wend kelimesi ile sonlandığına dikkat edin. While satırındaki sayacı değiştirdik, programın sayaç 5’den küçük veya 5’e eşit ilen çalışmasını sağladık. For’dan farklı bir diğer ifade ise sayacı artıran “sayac = sayac + 1” ifadesidir. Bu ifade ilk bakışta garip görünebilir. Fakat bilgisayar açısından bu “sayacın o anki değerini al, 1 ile topla ve bulduğun yeni değeri sayacın mevcut değerinin üzerine yaz” demektir.
1.6.3. Do-Loop döngüsü
Bazende bir döngü içerisinde bir durumun oluşması halinde döngünün sonlandırılması istenebilir. Böyle durumlarda do-loop döngüsü kullanılabilir. Kullanılması diğer döngülerle hemen hemen aynıdır. Türkçe anlatımı “şart sağlanana kadar döngüyü devam ettir” şeklinde olacaktır.
| Do while Şart
…. …. …. [Exit do] … … … Loop |
Örnek 100 : Do – Loop Fonksiyonu.
Döngü sırasında başka bir şartın sağlanması durumunda ise exit do ifadesi ile do döngüsü sonlandırılabilmektedir.
Do-loop ile while-wend arasında bir fark görememiş olabilirsiniz ama ikisi arasında çok ufak bi fark vardır. Do-loop da döngüye girildikten sonra şart kontrol edilir, while-wend de ise döngüye girmeden önce şart kontrol edilir.
1.7. Diğer faydalı komutlar
1.7.1. With – End With
Yukarıda belirtilen ve açıklanan komutların yanında bir takım kullanışlı komut da yer almaktadır. Bunlardan ilki “with” komutudur. Bu komut yardımı ile bir objenin birden fazla komut için kullanılması istenirse işimize yarayacaktır. Bu komut sayeside “with” komutuna atayacağız obje, with bloğu içerisinde adı geçmeden de kullanılabilmektedir. Örneğin:
| With Obje
.metod = xx End With |
Örnek 101 : With Kullanımı.
Örnekte de görüleceği gibi with bloğu içerisinde obje adı vermeden sadece “.” Yazılır ve objeye ait özellik veya metod kullanılabilir. Böylece birçok kere aynı obje adını yazmaya gerek kalmaz.
1.8. Script Performansı
Genelde web sunucuları dağıtılmış işlemci yapısında çalışır. Örnek vermek gerekirse 20 işlemin aynı anda çalıştığı bir sunucu düşünelim bu işlemlerin hepsi sırayla bir miktar işletilir. Bu sıra işlemcinin saat hızı ile doğru orantılıdır (1.4 GHz işlemci saniyenin 1/ 1468006,4 si bir sürede işletmektedir.). bu sıra ile işletme sırasında işlemlerden birisi takıntıya uğrarsa diğerleri de dolaylı olarak bu gecikmeden etkilenir. Bu sebeple ASP içerisinde işlemleri aza indirmek bu performansı yükseltecektir. ASP programcıları arasında yaygın olarak şu hatalar (hata demek belki yanlış olacaktır, sadece bu tip kullanımlar performans düşüklüğüne yol açacaktır ki bu bazı uygulamalarda yanlış işe aynı anlamdadır.) yapılmaktadır.
Aynı sayfa içerisinde birden fazla script dili kullanmak: bu şekilde bir kullanımca aynı sayfa içerisinde birden fazla script engine çalıştırılacağı için verimde ciddi düşüş meydana gelecektir.
Gereksiz yere değişken ataması yapmak: bu programlama aksaklığı yüzünden hafızada gerektiğinden fazla yer atanacak ve uygulama yavaşlayacaktır. Mümkün olduğu kadar az değişkenden kastım özellikle yazdırılacak bir değerin ilk olarak bir değişkene aktarılması daha sonra bu değişkenin ekrana yazdırılmasıdır. Bunun yerine direkt olarak değeri yazdırmak daha performanslıdır.
Çok fazla işlem gerektiren fonksiyonlar için component tasarlanması : sunucu içerisinde EXE dosyalarının derlenmesi ASP dosyalarının derlenmesinden çok daha hızlıdır. Bu sebeple işlemleri componentlere (exe veya dll dosyasına) yaptırmak işlemciyi rahatlatacaktır.
1.9. Nesne Kavramı
Günlük hayat da olduğu gibi proglamlamada da işlemlerimizi değişik nesnelere yaptırırız. Örneğin birşey kesmek istediğimizde bıçak kullanırız, su içmek istediğimizde bardak kullanırız vs. Kullandığımız her nesnenin ise belirli özellikleri vardır. Örneğin kesme işlevini gerçekleştiren bıçak keskindir. Yada su içeceğimiz bardak suyun dökülmesini engelliyecek şekilde kapalı bir cisimdir.
ASP tekniğinde işlemlerimizi gerçek hayat da olduğu gibi nesnelere yaptırtırız. Nesne yönelimli programlama kavramı (Object Oriented Programming OOP) bu şekilde ortaya çıkmıştır. Diyelim ki öğretmensiniz ve ASP programınızda her öğrencinin notunu veritabanına işleyen, veritabanından notları alarak geçeni kalanı belirleyen veya öğrencilerle ilgili yapılması gereken birçok işi yapan programcıklarımız mevcut; bu programcıkların kullandığı birçok değişkenimiz var: demek ki sizin ASP programınızda “öğrenci” diye bir nesneniz var. Ve siz bu nesneye yönelimli program yazmışsınız.
Her program nesnesi iki unsura sahiptir.
Özellik (property) : bir nesnenin özellikleri, onun değişkenleridir. “Öğrenci” nesnesinin “Öğrenci Adı”, “Notlar”, “Adresi” gibi değişkenleri yani özellikleri vardır.
Metod (method) : bir nesnenin işlemesi, çalışması için kısaca kendisinden bekleneni yerine getirebilmesi için çalışma yöntemlerine ihtiyacı vardır. Dolayısıyla bir ASP nesnesinin fonksiyonları, onun metodlarıdır.
Fakat ASP’de nesneler sadece sizin öbekler halinde toplayacağınız fonksiyonlar ve değişkenlerden ibaret değildir. Bir kere, ASP programında kullandığımız script dilinin getirdiği nesneler vardır. ASP programınızı javascript ile yazarsanız başka, vbscript ile yazarsanız başka nesnelere sahip olursunuz; ancak her ikisinde de ortak olan “scripting” nesneleri vardır. Bunları birazdan ayrıntılı olarak ele alacağız. Sonra web serverin size hazır sunduğu nesneler vardır. Bunları daha sonraki sayılarda göstereceğiz. Ve tabii, browser’ın bir HTML sayfasının bölümlerini nesne sayarak oluşturduğu nesneler vardır. Bunları da diğer nesneleri ele alırken sırası geldikçe değineceğiz. (Tabii bir de ASP programınızı javascript ile yazarsanız vbscript’ten farklı olarak kendisi nesne-yönelimli bir dil olan javascript’in oluşturmanıza imkan veren nesneleri vardır. Fakat bu nesneler bizim konumuz dışında kaldığı için incelenmeyecektir.)
Nesneler nasıl olmuş olursa olsunlar, daima size bir değer verirler.
Nesne.Özellik = Değer
Bir nesnenin bir özelliğinin değeri, bizim için değişken değeri gibi önem taşır.
İf Nesne.Özellik > Değer Then
Nesnelerin özelliklerinin değerini değişkenlere atayabiliriz ancak bunu yaparken nesnenin bir metoduna (fonksiyonu) göndermede bulunmamız ve gerekiyorsa bu fonksiyona kullanması için veri göndermeliyiz. (bir fonksiyona kullanması için gönderilen değere argüman/argument denir);
Değişken = Nesne.Metod (argüman1,argüman2..)
Tarayıcı nesne modelinin tam aksine ASP nesnelerinde bir hiyerarşi söz konusu değildir. Nesne modeli, bize bir sunucu nesnesini metodları ve özellikleri ile birlikte, scriptler arasında kullanabilmemizi, sağlar. Bir ASP uygulaması geliştirebilmek için server (sunucu), application (uygulama), session (oturum), request (istek) ve (response) yanıt nesneleri kullanılır.
1.9.1. Uygulama ve Oturumlar
Aplication (uygulama) nesnesi bir ASP uygulamasının tamamını simgelendirir. Session (oturum) nesnesi ise, her bir kullanıcının uygulamadan istediği sayfaları simgelendirmektedir. Bu durum “Hata! Başvuru kaynağı bulunamadı.)” de açıklanmıştır. Her istemci için ayrı ayrı oluşturulan “session” nesnesi yine her kullanıcı için oluşan request ve response nesneleri ile iletişim sağlanır. Bütün bunları kapsayan “application” nesnesi ise tüm kullanıcı oturumlarını kapsar şekilde oluşacaktır. Uygulama objesi siteden herhangi bir sayfa istendiği an otomatik olarak oluşacaktır fakat oturum objesi sadece isteyen kullanıcı için oluşacaktır.
Bir oturum, bir request nesnesinin HTTP iletişimini başlatır, bir web gezgininden, bir sunucuya gönderilir ve sunucudan response nesnesi ile geri gönderilen sonuç bilgisi ile sonlanır.
Resim 6 : Kullanıcıya göre ASP obje dağılımları.
Hafızada oluşturulan kullanıcıya veya aplikasyona ilişkin objeler içinde herhangi bir terslik olması halinde bu diğer çalıştırılan objeleri de etkileyecektir. Bunu önlemek için Microsoft firması “IIS” üzerine bir opsiyon koyarak her sitenin kendisine ait bir bellek alanında çalışmasını olağan kılmıştır. Bu seçenek normalde kapalı haldedir yani sunucudaki tüm objeler tek bir bellek alanında çalışacaktır. Bu özelliği aktif hale getirmek için “IIS” üzerinden, genel bellek alanından ayırmak istediğimiz sitenin özelliklerine girilir. Açılan özellik alanında en üstteki sekmeleri kullanarak “Home Directory” kısmına gelinir (Hata! Başvuru kaynağı bulunamadı.).
Resim 7 : IIS Site Özellikleri.
Bu alanda yer alan “application protection” yani “uygulama koruma” alanında üç maddeden oluşan seçenek kısmı görülmektedir bu seçeneklerden bizim için hangisi uygunsa onu seçeriz ve okleyip işlemi sonlandırabiliriz. Bu seçeneklerin neler olduğunu isterseniz teker teker inceleyelim.
Low (IIS Process) : Bu seçenek aktif olduğu zaman tüm asp uygulamaları ve nesneler tek bir hafıza alanında ortak çalışıyor olacaktır. Bu hafıza alanı web sunucunun kendi işlemleri ile aynı yerde tutulacaktır ve “Windows Görev Yöneticisi” nde “Inetinfo.exe” dosyası olarak gözükecektir. Ve bu uygulamanın sonlandırılması halinde sunucuda yer alan ve ortak çalışan uygulamalara ait bilgiler (çalışma ve oturum bilgileri) silinecektir. Bu seçenek aktif olduğu zaman sunucu bir risk altında olacaktır çünkü tüm uygulamaların tek bir alanda çalışması ki özellikle bu alanın web sunucu çalışma alanı olduğu düşünülürse, uygulamaların birinde hata olsa bile diğerlerini etkileyeceği için; ayrıca herhangi bir hatanın web sunucuyu şişirip çalışmaz hale getireceği için uygunsuz olacaktır. Mümkün oldukça seçili olmamasına dikkat ediniz.
Medium (Pooled) : Bu seçeneğin aktif olması halinde tüm asp uygulamaları ve nesneleri tek bir hafıza alanında çalışacaktır fakat bu alan web sunucunun işlemlerinin yapıldığı alandan farklı olacaktır. Bu sebepten dolayı sitede herhangi bir aksaklı olsa bile bu sadece siteleri etkileyecektir. Sunucunun şişmesini ve çalışmaz hale gelmesini engelleyecektir. Bu web sunucudan bağımsız yerde işletilen uygulamalar “Windows Görev Yöneticisi” nde “DLLHost.exe” dosyası olarak gözlenecektir.
High (Isolated) : Bu seçenek aktif olduğu zaman her sitenin uygulamaları ve objeleri kendisine ait bir hafıza alanında çalıştırılmasına olanak verecektir. Böylece sitelerde oluşacak aksaklıklardan sadece kendisi sorumlu olacaktır ne web sunucuyu nede diğer siteleri aksatabilecektir. Bu hafıza alanı bir önceki seçenekte olduğu gibi “Windows Görev Yöneticisi” nde “DLLHost.exe” olarak gözlemlenecektir fakat tek fark her site için ayrı ayrı bir “DLLHost.exe” olmasıdır. Seçenekler arasında en sağlıklı olanı budur fakat sunucunun sistem kaynaklarının yeterli olması gerekmektedir
