http://alikoker.name.tr



Benzer belgeler
7. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Internet Programming I. Hafta V. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Internet Programming I. Hafta II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

2. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

08220 Internet Programcılığı II

08217 Internet Programcılığı I

How to ASP Language. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

ASP Procedures. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Metin (Textstream) Nesnesi

How to ASP Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

How to ASP Language. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. Hafta V

08217 Internet Programcılığı I

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Öğr. Gör. Serkan AKSU 1

Program AkıĢ Kontrol Yapıları

JAVASCRIPT JAVASCRIPT DİLİ

6. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

VBScript'e Giriş

1. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Cookie s. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 17 Ara 2013

Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir:

BÖLÜM 3 OPERAT A ÖRLER

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

Program akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1


C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

<%=date()%> 1/26/2011. Tarih&Saat:: 1/26/2011. <%response.write("tarih&saat: "&now())%> 10:20:30 AM

Önsöz ASP ye Giriş Kişisel Web Server Kuralım PWS Kurulurken Hata Verirse... 9 Bir Örnek Yapalım... 10

2-Hafta Temel İşlemler

İÇERİK YÖNETİM SİSTEMİ KULLANMA KILAVUZU

BÖLÜM 4 KONTROL DEYİMLERİ

4 Front Page Sayfası Özellikleri

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat

SESSİON KULLANIMI. .Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim. Language=VBScript Codepage="1254"%>

PROGRAMLAMA ALGORĠTMA

Esra- ASP/KİTAP 1. asp/kitap Önsöz ASP ye Giriş Kişisel Web Server Kuralım... 8

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

U y g u l a m a A i l e s i (Abakus 360, T-Panel, T-CRM) Tarayıcı Ayarları. IPera İletişim Teknolojileri

Örnek bir kullanım ve bilgisayar ağlarını oluşturan bileşenlerin özeti

ASP (Active Server Pages)

ÖĞRENME FAALĠYETĠ 3 ÖĞRENME FAALĠYETĠ 3

Genel Programlama II

Merhaba değerli Dostlar;

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Veritabanı. SQL (Structured Query Language)

Diziler İndisli Değişkenler

SM 100 Terazi Ayarları. Digi SM 100. SM 100 Terazi Ayarları

Python Programlama Dili

PROGRAMLAMA DERSİ 1. İNTERNET

AOSB 2017 EĞİTİM PROGRAMI


BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

Microsoft FrontPage Web Sitesi Hazırlama. Ögr.Gör.N.Nilgün Çokça

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

ÖĞRENME FAALĠYETĠ 4 ÖĞRENME FAALĠYETĠ 4 4. SAYFA YAPISI

Response : Sunucunun istemciye veri yollamasını

Şekil 1 : Şablonumuzun Photoshopda açılmış hali

2. HTML Temel Etiketleri

GRAFĠKLER. WORD PROGRAMI KULLANARAK GRAFĠK OLUġTURMA EĞĠTĠCĠ KILAVUZU. HAZIRLAYAN Mehmet KUZU

İNTERNET PROGRAMCILIĞI - II

Bilgisayar Programlama MATLAB

WEB PROGRAMLAMA. PHP Temelleri 2. Dr. Erman Yukselturk

ENF182 Temel Bilgisayar Bilimleri Ö Ğ R. G Ö R. G Ö K H A N K U T L U A N A

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

08217 Internet Programcılığı I Internet Programming I

ÖĞRENME FAALĠYETĠ 8 ÖĞRENME FAALĠYETĠ ÖZELLEġTĠRME

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Değişkenler ve Veri tipleri. Ders Notları

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Samsun Çocuk Hizmetleri İ l Koordinasyon Sekretarya Birimi

Internet Programming II

Nesne Tabanlı Programlama

İnternet Programcılığı Dersi 2.Dönem Ders Notu

Bu amaçla, if ve switch gibi karar verme deyimleri, for, while, do..while gibi döngü deyimleri kullanılır.

PASCAL PROGRAMLAMA DİLİ YAPISI

Bölüm 10: PHP ile Veritabanı Uygulamaları

Önsöz ASP ye Giriş Kişisel Web Server Kuralım PWS Kurulurken Hata Verirse... 9 Bir Örnek Yapalım... 10


BİLGİSAYAR PROGRAMLAMA. Yrd. Doç. Dr. Beytullah EREN

BİLTEK AKADEMİ EXCELL DERS NOTLARI. GRAFĠK OLUġTURMA

MTM 305 MĠKROĠġLEMCĠLER

C#(Sharp) Programlama Dili

FORMÜL ADI (FONKSİYON) FORMÜLÜN YAZILIŞI YAPTIĞI İŞLEMİN AÇIKLAMASI

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Eki Öğr. Gör. Murat KEÇECĠOĞLU

HESAP TABLOSU PROGRAMLARI

İnternet Programcılığı

Transkript:

ASP'yeGiriĢ ASP yani Active Server Pages Microsoft firması tarafından klasik HTML sayfalarına dinamik bir yapı kazandırmak amacıyla ortaya çıkarılmıģ bir programlama dilidir. Internet yeni bir teknoloji olduğundan insanlar hayal gücü sınırlarını bu yeni teknoloji ile zorlamaktadırlar. ASP de bu yeni teknolojinin yeni bir parçası olmuģtur. ASP ile web sayfalarınızı dinamik hale getirebilirsiniz, bunu yapmak için ASP sunucu(server) tarafında sizin yazmıģ olduğunuz kodları çalıģtırır ve istemci(client) tarafına ona özel görüntülenmesini istediğiniz sayfayı görür. ġimdi ilk baģlangıç için karıģık görünebilir bu yüzden isterseniz web progracılığından biraz bahsedeyim. Web programcılığı, W3C tarafından standart haline getirilen HTML(Hiper Metin Anlamlandırma Dili) ile start almıģ ve CGI, JavaScript, ASP, VRML gibi dillerle devam etmiģtir. ġimdi bu dillerin farkı Ģudur; bu dillerin bazıları sunucu tarafında bazıları ise istemci tarafında çalıģmaktadır. Ġlk olarak HTML i ele alalım; HTML dosyarınının içeriğini hepimiz biliyoruz. Bu içerik bağlandığınız sunucu tarafıdan bilgisayarınıza yollanır ve sizde bulunan web görüntüleyici(internet Explorer, Netscape gibi.) tarafından size sayfa anlamdırılarak gösterilir. Yani tüm görüntüleme iģlemini sizin bilgisayarınız yapar. HTML den sonra çıkan Javascript teknolojisi de buna yakındır. Yani dosyalar bağlandığınız bilgisayar tarafından size yollanır ve siz onları bilgisayarınızda düzenleyip görüntülersiniz. Dikkat ettiyseniz javascript(js) içeren sayfalar diğer sayfalara göre daha geç yüklenmektedir, çünkü tüm o js kodları sizin bilgisayarınızda çalıģtırılır ve tabi bu da performans kaybına yol açar. ASP ise tamamen Ġstemci Tarafında (server side) çalıģan bir programlama dilidir. Tüm kodlar sunucu tarafında çalıģtırılır ve size sadece HTML kodları gönderilir. Böylece performans olarak büyük bir avantaj elde edilmiģ olur, tabi bu web sunuculuğu yapacak bilgisayarınızın hızlı olmasına da bağlıdır. Örnek olarak OSYM yi düģünün sizden aldığı bir ösym numarası ile orada bir program çalıģtırır ve bu program size sadece girmiģ olduğunuz numaraya ait sonucu bir html dökümanı olarak döndürür. Sunucu taraflı programlamanın diğer bir avantajı ise güvenliktir. Örneğin js kodları Kaynağı görüntüle dediğinizde görülebilmektedir. Eğer siz güvenlik açısından kullanıcıların görmemesini istediğiniz bir program çalıģtırıyorsanız sunucu tarafı programlama yapmalısınız. Bu tip programlamanın ilk örneği CGI ile gerçekleģmiģtir. Perl dili kullanılarak üretilen bu kodlar pekçok kiģi tarafından rahatça kullanılamamıģtır çünkü CGI çalıģtırmak için hosting yaptığınız yerde bu desteğin verilmesi gerekmektedir. Fakat asıl en büyük sorun bu kodları geliģtiriken sizin hiçbir Ģekilde deneyememiz olmuģtur. ÇalıĢtığından emin olmak için programı sunucuya yüklemeniz gerekmektedir. ġimdi bahsedeceğim diğer bir özellik de ASP geliģtirmede kullanılan diller. En yaygın olarak kullanılan script dili VBScript tir. Hepimiz ilk programcılık günlerimizi herhalde qbasic kodu yazarak geçirmiģizdir. VBScript de temel itibariyle Visual Basic dilini kullanarak program üretmemize yarar. Bunun yanında JavaScript de kullanılabilir, fakat günümüzde js yi kullanarak program geliģtirmemizi sağlayan yeni bir dil JSP(Java Server Pages) bulunmaktadır. ASPileNelerYapabilirsiniz Asp nin avantajlarıdan ve çalıģma mantığından bir önceki konuda söz ettim. Bu avantajlar göz önüne alındığında elelktronik ticaret için en kullanıģlı dil olma avantajı vardır. Çünkü güvenlik bu tür uygulamalarda çok önemlidir ve Asp de bize bu güvenliği sağlamaktadır. Diğer avantajı ise çok kolay bir dil olmasıdır. Gerçekten bir perl ile program geliģtirebilecek kiģi sayısı sınırlıdır ama Asp yi biraz programlama bilgisi olan herkes çözebilir ve çok kısa zamanda iyi iģler ortaya koyabilir. Asp ile veritabanına bağlanıp gelen verilerden faydalanarak sayfalar üretebilirsiniz. Bunun için SQL, Access veya Oracle kullanabilirsiniz. ODBC bağlantısı yapabileceğiniz tüm veritabanlarına Asp kullanarak eriģebilirsiniz.

Asp ile her Ģeyin baģında dinamik sayfalar hazırlayabilirsiniz. Böylece her kullanıcıya farklı bir sayfa gösterebilirsiniz. Html ile bunu ypamanız imkansızdır ancak farklı sayfalar yaparak bu sorunu çözebilirsiniz. Bu da zamandan ve yerden büyük kayıp demektir. Asp kullanarak elinizdeki bilgiyi kolayca diğer insanların kullanımına açabilirsiniz. Sizde bulunan bir uygulama programını Asp ile entegre çalıģtırabilirsiniz. Bu da sizin B2B ve B2C uygulamalar geliģtirmenizi sağlar. ASP kullanan bir tasarımcı olarak, esasında ASP nin nesneleri ile bir Ģeyler yaparız. BaĢka bir deyiģle, ASP kodlarımız bu nesnelere yöneliktir. Onları kullanma ve bir sonuç alma veya bir sonuç aktarma amacına yöneliktir. ASP nin nesneleri altı grupta toplanır: Application (Uygulama): Bir ASP sitesi, gerçekte bir program olarak görülür. Bu, HTML/CGI geleneğine aģina olan tasarımcılar için yeni bir kavram. ASP yi bulan üstatlar, bir ziyaretçi, bir ASP sayfasından girerek, sitede gezinmeye baģladığında, onu bir programı iģleten bilgisayar kullanıcısı olarak görüyorlar. Böylece sitemiz, her ziyaretçinin karģısına çıktığında bir program çalıģmıģ gibi sayılıyor. Bu yaklaģımın Web tasarımcısı olarak bize harika imkanlar sunuyor. Bunları daha sonra ele alacağız hiç merak etmeyin... Session (Oturum) : Bir ziyaretçi sitemize geldiğinde, hangi sayfamızı talep ederse etsin, bu bağlantı ASP açısından bir oturum sayılır. Her oturumun belirli bir süre devam eden özellikleri, değiģkenleri ve değerleri vardır. Site tasarımında oturum özelliklerinden geniģ ölçüde yararlanacağız. Ancak Application nesnesi ile karıģtırılmaması çok önemli. Request (Talep): Browser dan server a ulaģan bütün bilgiler, Request (Talep) nesnesinin öğeleridir. Bu nesneyi kullanarak, istemciden gelen her türlü HTTP bilgisini kullanabiliriz. Response (KarĢılık): Server dan ziyaretçinin bilgisayarına gönderdiğimiz bütün bilgiler, çerezler (cookie) ve baģlıklar (header) Response (karģılık) nesnesinin öğeleridir. Bu nesneyi kullanarak, ziyaretçiye göndermek istediklerimizi iletebiliriz. Server (Sunucu): ASP, Web Server programını bir nesne olarak ele alır ve onun bize sağladığı araçları ve imkânları kullanmamızı sağlar. ObjectContext (Nesne Bağlamı): Microsoft un Transaction Server (MTS) programının sunduğu hizmetlere eriģmemizi sağlar. MTS, ASP sayfaları içinden, uygulama programlarından yararlanmamızı sağlar. ASP uzmanlığınızı ileri düzeylere ulaģtırdığınız zaman MTS ve ObjectContext nesnesinden yararlanabilirsiniz. karakteri (Shift+ 2 tuģ kombinasyonu) ile baģlayan satırlar açıklama satırlarıdır. ASP.dll, bu iģaret ile karģılaģtığı satırları iģleme sokmadan geçer. Az çok bildiğiniz gibi ASP kodları... iģaretleri arasına yazılırlar. ASP.dll e yönlenen bir ASP dosyasının satırları teker teker okunurken bu iģaretle baģlayan bir satır görülünce ĠĢte yine baģlıyoruz... Bu bir ASP kodu ve bu sefil kod, ben olmadan hiçbir iģe yaramaz diyen muzur.dll imiz iģbaģı yapıyor; aradaki kodları icra ediyor ve sonuçları bize gösteriyor. Eğer kodumuz içerisinde bir değiģken tanımlamamız gerekir ise bunu Dim ifadesi ile yaparız. (Örnek: Dim SiraNo,Adi,Soyadi). Birden fazla değiģken tanımlamamız gerekirse aralarına virgül koymalıyız. <HTML> <HEAD> <TITLE>JavaScript ile Tarih</TITLE> <meta http-equiv="content-type" content="text/html; charset=iso-8859-9"> <meta http-equiv="content-type" content="text/html; charset=windows-1254"> </HEAD> <BODY BGCOLOR=WHITE>

Dim metin metin="<h1>merhaba...yine ben...ne o hala asp mi çalıģıyorsunuz...sizi tebrik ederim.çok azimlisiniz...</h1>" response.write metin <br> metin="<h1>heyyy... Unuttunuz mu benim adım değiģken.benim değiģmemden daha normal ne olabilir ki???</h1>" response.write metin </BODY> </HTML> Ġlk önce metin denen kavramın bir değiģken olduğunu belirttik. Ardından metin değiģkenine bir değer atadık. Dim SiraNo SiraNo=3265 Ardından Response nesnesinin write metodunu kullanarak bunu sayfaya yazdırdık. ĠĢte bu kadar kolay. Madem bu Ģey in adı değiģken, değiģtirdik ve yeniden yazdırdık... UltraEdit i Nasıl Kullanacağız? Kullanımı gayet basit ve her Ģeyden öte oldukça hızlı çalıģan bir editör... Kurulum esnasında (daha doğrusu bitiminde), size kısayolunu nerelere koymak istediğinizi soracak. mutlaka Sağ tıklayınca açılan menüye seçeneğini iģaretleyin ki, açmak istediğiniz dosyayı sağ tıkladığınızda Edit With UltraEdit yazısını görebilesiniz. Programı çalıģtırdıktan sonra, araç çubuğunda, View/Set font bölümünden yazıtipinizi Türkçe desteği bulunan bir fonta ayarlayın.

ODBC Kolları sıvayıp, ASP ye kodu yazmaya baģlamadan önce yapmamız gereken bir iģ daha var: ASP sayfaları geliģtirme ortamımızda, ODBC (Open Database Connectivity - Açık Veritabanı Bağlantısı) olması gerekir. Windows 98, 95 (OSR2) veya NT4.0 iģletim sisteminizde Denetim Masası nda ODBC, ODBC32 veya ODBC Veri Kaynakları (32 Bit) adlı bir simge görüyor olmalısınız. Bunu açın, Sistem DSN sekmesini ve açılan pencerede göreceğiniz Ekle düğmesini tıklayın. Buradaki Access, dbase, Excel, FoxPro, Paradox sürücüleri 4.00.3711.08 veya daha büyük mü? Değilse, Microsoft un sitesinden (www.microsoft.com/data/download.htm) Microsoft Data Access Components (sürüm 2.1.1.3711.11 GA, 6.2 MB) güncelleme dosyasını indirip sisteminizi güncelleģtirin. Windows 2000 kurulu sistemlerde bunu yapmaya gerek yok. Böylece sisteminiz, ileride yazacağımız veriyönlendirmeli Web uygulamaları için hazır hale gelmiģ olacaktır. ASP nin Derinliklerine Doğru Hemen hemen bütün dillerin birer derleyicisi vardır. Yani yazdığınız programı.exe ya da.dll haline getirmeden önce sınayabileceğiniz bir platform. Bu platform o kadar akıllıdır ki, yazım hatalarınızı veya hatalı kodlamalarınızı anında tespit eder ve size sormaya bile gerek duymadan anında düzeltir. ASP kodları yazarken böyle bir Ģansınız maalesef yok. Kodlar zaten düz yazı metinlerinden oluģuyor ve direkt yorumlayıcı tarafından okunarak sonuç bize gösteriliyor.kısacası ya doğru yazmıģsınızdır, mantık hatası da yoksa kod sorunsuca çalıģır; ya da bir yerlerde küçük bir Ģeyi yanlıģ yazmıģsınızdır ve kodunuz çalıģmaz. VBScript komutları, anahtar kelimeleri ve değiģken adlarının büyük harfküçük harf olması önemli değildir. Örneğin ileride ayrıntılı bir Ģekilde göreceğimiz for döngü deyimini aģağıdaki bütün Ģekillerde yazabiliriz. For kisisayisi= 1 To 6 FOR KISISAYISI=1 TO 6 for kisisayisi = 1 to 6 VBScript çiler genellikle komutların birinci harfini büyük yaparlar: For gibi. DeğiĢken adlarında ise kendinize anlamlı gelen bir biçim tutturabilir ve öyle devam edebilirsiniz. Eğer bir kod satırı çok uzun geliyor ve daha sonra anlaģılması imkânsız derecede uzuyorsa, bu satırı alt çizgi (_) ile aģağı satırda devam ettirebilirsiniz. Örnek: If AdayNumarasi > 100 And _... AdayNumarasi < 199 Then Bir de Response.write ( AdayNumarasi )

Yerine =AdayNumarasi yazılabilmesi vardır ki bu aslında bir yazım kuralı olmamakla beraber iģlerimizi oldukça kolaylaģtıracak bir özelliktir. Bir kod ne kadar kısa ve sade olursa o kadar güzel demektir. Ġçinden çıkılmaz ve karmaģık kodlamalardan ne kadar kaçınırsak hata yapma ihtimâlimiz de o kadar azalacaktır. DeğiĢim rüzgarının etkisinden bir türlü kurtulamayanlar: DEĞĠġKENLER Programcılıkta iģlemlerimizi değiģkenlerle yaparız. değiģkeni bir kap gibi düģünebilirsiniz. Sözgelimi aylar, değiģkenin adı ise bu değiģkenin değeri Ocak, ġubat, Mart, vs. 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 de 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ık örneğidir. Ġyi programcılık değiģkenlerin önceden tanımlanmasını 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: DIM Gun, Ay, OgrenciAdi, OgrenciNo, Not Gun = Persembe Ay = Mart OgrenciAdi = Selim OgrenciNo = 1080 sayısal tanımlamalarda tırnak iģareti kullanmadığımıza dikkat edelim. Not = 4 ġimdi burada Gun, Ay, OgrenciAdi, OgrenciNo, Not adıyla beģ değiģken oluģturduğumuzu ve bunlara sırasıyla Persembe, Mart, Selim, 1080 ve 4 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? DeğiĢken isimleri, mutlaka harfle baģlamalıdır; içinde noktalama iģaretleri bulunamaz ve uzunluğu 255 karakteri geçemez. Daha Ģimdiden kötü programcı olmayın!!! 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ģigü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; 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.

Peki, değiģkenimizi tutup farklı bir Ģekilde tanımlarsak neler olur: DIM Gunler(31), Aylar(12), Ogrenciler(210), Notlar(10) Bu yöntemle oluģturduğumuz değiģkenler, aslında birer havuz olup birden fazla değer tutabilir. Yani: DIM Gunler(7), Aylar(12), Ogrenciler(21), Notlar(10) Gunler(1) = Pazartesi Gunler(5) = Cuma Aylar(10) = Ekim Ogrenciler(12) = Selim Notlar(4) = 4 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, 5 numaralı olanının değeri ise Cuma olacaktır. Aynı Ģekilde 12 değer tutabilecek olan Aylar değiģkeninin 10 numaralı olanının değeri Ekim, 100 farklı değer tutabilecek olan Ogrenciler değiģkeninin 12 numaralı olanının değeri Selim ve nihayet 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. Dizi DeğiĢkenler (Array fonksiyonu) VBScript dili kullanılmaya hazır bir çok fonksiyon içerir. Bunlardan biri olan Array ile, kolayca dizi değiģken oluģturabiliriz. Diyelim ki, Aylar(12) dizi-değiģkenini yıl içerisindeki ayların adları ile doldurarak oluģturmak istiyoruz: Dim Aylar = Array ( Ocak, ġubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık ) Ģeklindeki satırlar ile hem dizi-değiģkeni oluģturabiliriz; hem de değerlerini atayabiliriz. Bu yapıda oluģturduğumuz dizi değiģkenin üyelerini daha sonra sıra numaraları ile çağırabilirsiniz. Örneğin: =Aylar(3) bize Nisan ı verir. Neden? Çünkü hayatlarının büyük bölümünü bilgisayar baģında ve havasız ortamlarda geçiren, çoğunlukla asosyal kiģiler olan dil tasarımcıları, sayı saymaya biz normal insanlar gibi 1 den değil 0 dan baģlarlar. Dolayısıyla, Aylar dizi-değiģkeni Aylar(0) dan baģlar!

Burada aklınıza Ģu soru gelebilir: Dizi değiģken oluģturacağımıza, neden ogrenci1, ogrenci2, ogrenci3 ya da Gunler1, Gunler2 diye değiģkenler oluģturmuyoruz ve bunlara değerler atamıyoruz? Her Ģeyden önemlisi dizi değiģkenlerde bir değiģkene numarasıyla atıfta bulunabilirsiniz. Numara yerine bir baģka değiģkeni kullanabilirsiniz. Örneğin, OgrenciNo değiģkeninizin değeri 12 ise... If Ogrenciler(OgrenciNo) = Selim... Ģeklinde bir döngü ile aradığınız öğrencinin Selim olup olmadığını sınayabiliriz. BaĢka programlama dillerine özellikle Visual Basic e âģinâ 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, dizgi) 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 Kediler(12) değiģkeni için MinnoĢ değerini atamak istiyorsunuz. MinnoĢ 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 hepimiz biliyoruz!) 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 (belki de oldukça 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, strmailadresi 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ıralım: Option Explicit <HTML> Dim Degisken(2), Toplam Degisken(1) = "Mustafa" Degisken(2) = "Doğan" Toplam = degisken(1) + Degisken(2) =Toplam </HTML> Sonuç: MustafaDoğan değil mi? (Arada boģluk olmamasını Ģimdilik önemsemeyelim.) Peki; Ģ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. Haydaa! Sonuç 510? Peki, tırnakları kaldırın. Sonuç? 15. Ne o? Bu dili tasarlayanların matematik bilmediklerini mi sandınız :)

Bu durum VBScript in matematik bilgisinin kıtlığından değil, tırnak içindeki değerlerin, VBScript ayrım yapmıyor olsa bile, karakter dizgisi (string) iken toplama iģleminde art 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? 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: 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.8E 308 arasında, negatif sayılarda -4.9E -324 ile -1.8E 308 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.4E 38 arasında, negatif sayılarda 1.4E -45 ile -3.4E 38 arasında bir değer alabilir. String Alfanumerik veri tutan değiģkenlerin değeridir DeğiĢkenlere nispet, DeğiĢmeyenler Diyelim ki, bütün kodunuz boyunca kullanacağınız bir değiģmez değeriniz var. Bu tip sabit bir 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 dolarbirimfiyat = 677000 Const KarsilamaMetni = WELCOME...Web sitemize hoģ geldiniz. Const UreticiFirma = Sony Electronic VBScript te ĠĢlemciler (Operatörler) Bilgisayar operatörü ile program operatörü arasında fazla bir fark yoktur. Her ikisi de verdiğiniz değerleri ya karģılaģtırır bir sonuç bulurlar; ya da bu değerlerle aritmetik iģler yapar ve bir sonuç ortaya çıkartırlar. Bilgisayar operatörü daha sonra bu iģ için sizden para ister; program operatörü istemez. (Bilgisayarı edinebilmek için Türkiye Ģartlarında yeterince harcama yapıyorsunuz zaten!) VBScript in operatörleri ve yaptıkları iģler Ģöyle sıralanır: Operatör: ĠĢlev: Sınıfı: + Toplama Aritmetik - Çıkartma * Çarpma

/ Bölme ^ Üssünü alma \ Tamsayı bölme Mod Modüler aritmetik = Bir değiģkenin diğerine eģit olduğunu sınar KarĢılaĢtırma <> Bir değiģkenin diğerine eģit olmadığını sınar >and< Bir değiģkenin diğerinden büyük veya küçük olduğunu sınar (and kelimesi var) >= and <= Bir değiģkenin diğerinden büyük veya eģit, veya küçük veya eģit olduğunu sınar (and kelimesi var) Is Bir ifadedeki iki referansın aynı Nesne ye yapılıp yapılmadığını sınar And Bir veya daha fazla değiģkeni test olarak karģılaģtırır Mantıksal Or Bir iģlemin devamı için hangi koģulun oluģması gerektiğini sınar Not Bir ifadeyi negatif hale getirir XoR Sadece bir Ģartın doğru olup olmadığını sınar Eqv Ġki değiģkenin eģitliğini sınar Imp Ġki ifadede mantıksal implikasyon iģlemi yapar. VBScript ile yazacağımız ASP sayfalarında bu iģlemcileri beklediğimiz sonucu verebilmesi için kullanım sıraları önemlidir. Bunu bir örnekle açıklayalım: 100 den 6 yı çıkarmak ve sonucu 2 ye bölmek istiyorsunuz; sonuç 47 olacaktır. Yani, 100-6/2; değil mi? Bu iģlemin VBScript teki sonucu 97 olacaktır. Çünkü, VBScript önce 6 yı 2 ye bölecek ve elde ettiği sonucu 100 den çıkartacaktır. VBScript te, aritmetik iģlemlerin yapılma sırası Ģöyledir: Operatör: ĠĢlev: Öncelik: + Toplama 3 - Çıkartma 3 * Çarpma 2 / Bölme 2 ^ Üssünü alma 1 VBScript ile hesap iģlemi yaparken, aritmetik iģlem sırasını karıģtırarak hatalı sonuç almamak için sık sık parantez kullanmak yerinde olur. Yukarıdaki örnek Ģöyle yazılabilirdi: (100-6)/2. Tabiî amacınız 100 ü 6/2 ye bölmek ise bu iģlemi Ģöyle yazmalısınız: 100-(6/2). BAġ DÖNDÜREN KODLAR! Bir programın amacı ve büyük ölçüde varlık sebebi (ister basit bir script diliyle, ister gerçek programlama diliyle yazılsın), karģısına çıkabilecek veya ona yönlendirilecek çeģitli durumları değerlendirerek, kendisine izin verilen çizgiler içerisinde kendi kendine kararlar verebilmesidir. Bu noktada dizginleri elimizde tutabilecek yegâne kiģiler olarak biz, programcılar, program kontrol öğelerini kullanırız. Programlar, bu öğeler sayesinde karģılaģtırma yaparlar; belirli durumların oluģup oluģmadığını tahlil ederler. Ya da, belirli bir durumun oluģmasına veya sona ermesine bağlı olarak bir iģ yaparlar veya yapmazlar. Kısacası, karar verirler. Bunu sınamalarla (Ģartlı ifadelerle) veya döngülerle sağlarız. Örneğin, programımıza istediğimiz bir Ģart yerine gelene kadar hep aynı Ģeyi yapmasını söyleyebiliriz; yani, döngüye sokarız. ġartımız sağlandığında döngüye son verip bir sonraki adıma geçmesini sağlayabiliriz. Kimi zaman da, programa (programın mantığı çerçevesinde) istediğimiz anda yapmakta olduğu iģi durdurarak, baģka bir iģi yapmasını bildirebiliriz. Bunlara da süreçler (veya prosedürler) denir. VBScript te programın kendi kendine karar vermesini sağlayan en basit yapı, Eğer...ise...yap! Ģeklinde karģımıza çıkar. Bu yapıyı kullanmak için değiģik VBScript komutları vardır. IF...ELSE Bu yapı belki de en eski ve en kliģe mantıksal analiz yapısıdır. Hemen hemen bütün diller de bu Ģekilde kullanılıyor olması da cabası...

Bu komut, VBScript in vereceğiniz bir durumun bulunup bulunmadığını sınamasını sağlar. Genel yazım kuralı Ģöyledir: If Ģart Then Else End If [Ģart doğru ise yapılacak iģler] [Ģart doğru değilse yapılacak iģler] Bunu bir örnekle ifade edelim: Eğer saat 12 den önce ise sayfaya Günaydın yazdır. Ayrıca sayfanın arka plan rengini açık mavi yap; saat 12 den sonra ise Tünaydın yazdır ve arka plan rengini değiģtir. Saat 18 den sonra ise sayfaya Ġyi akģamlar! yazdır; ayrıca, arka plan rengini siyah yap. If döngüsü kendi içinde sınırsız Elseif (ikinci Ģartlı döngü) imkânı vererek bize bunu sağlar. Her Elseif i yeni bir If gibi düģünebilirsiniz. Bu pek de gerekli olmayan faaliyeti gerçekleģtirmek için gerekli olan kod: <HTML> <HEAD> <TITLE>ASP ILE SAATE GORE SELAM</TITLE> <META http-equiv="content-type" content="text/html; charset=iso-8859-9"> <META http-equiv="content-type" content="text/html; charset=windows-1254"> </HEAD> <CENTER> <h2> <font color="#ffffff"> <! -- birinci durum--> If Hour(Now) <12 Then Response.write "Günaydın!!" Response.Write "<body bgcolor='#0066cc'>" <! -- ikinci durum--> ElseIf Hour(Now) >= 18 Then Response.Write "Ġyi akģamlar! " Response.Write "<body bgcolor='#000000'>" <! -- üçüncü durum--> Else Response.Write "Tünaydın! " End If Response.Write "<body bgcolor='#ff9900'>" </font>

</H2> </CENTER> </HTML> Burada dikkat edeceğimiz hususlar; Response.write metodu ile sadece sayfanın metin kısmı ile uğraģmakla kalmayıp, sayfanın diğer unsurlarını da değiģtirebilirsiniz.mesela biz burada arka plan rengini değiģtirdik. Response.write <body bgcolor= #000000 > yazarak sayfanın body etiketini kendi istediğimiz Ģekilde oluģturmuģ olduk. Sizce buradaki süreç nasıl iģliyor? Kod iģlenmeye baģlandığında ve bu satıra gelindiğinde sayfanın içerisine o satır yazılıyor. Web tarayıcısına saf html kodları halinde ulaģan sayfamız, bu defa tarayıcı tarafından iģlenmeye baģlıyor. Bir de bakıyor ki ASP kodu tarafından sayfanın içine yazılan Ģey, aslında bir tag.görevi. Bu sefer hemen onu iģliyor ve sonucu bize gösteriyor. Bu programı çalıģtırdığınız zaman, çalıģtırdığınız saate göre sayfadaki selamın ve arka plan renginin değiģtiğini göreceksiniz. (Bu örnekte, sadece Ģartlı döngü iģlemi yapmıyoruz; fakat aynı zamanda Hour(Now) fonksiyonu ile tanıģıyoruz ve sayfadaki bütün unsurları ASP yöntemiyle yazdırıyoruz! Fakat Ģimdilik bu iki unsurun üzerinde durmayın.) Daha önceki yazılarımızda asp nin bir sürü hazır fonksiyonu var demiģtim. Bunlardan biri de o andaki saati ve tarihi bildiren Now() fonksiyonudur. Bu fonksiyondan dönen değerle bu andaki saati öğreniyoruz; bunu önce 12 ile karģılaģtırıyoruz. Fonksiyondan dönen değer, eğer 12 den küçükse, programımız Response (KarĢılık) Nesnesi nin.write Metodu nu kullanarak (Nesneler ve Metodlar meselesi üzerinde de durmayın!) ziyaretçinin Browser penceresine Günaydın yazdırıyor. Değer döndürenler... Fonksiyonlar, kendilerini göreve çağıran VBScript komutlarına ve iģlemlerine mutlaka bir sonuç döndürerek karģılık verirler. Buna fonksiyondan dönen değer denir. Yani, Now() fonksiyonunu göreve çağırdığınızı farzedelim. Bu fonksiyon derhal iģletim sisteminden saati ve tarihi öğrenerek kendisini göreve çağıran iģleme bildirir. Daha sonra VBScript in kullanılmaya hazır diğer bir çok fonksiyonunu kullanacağız ve kendi fonksiyonlarımızı yazacağız. Ne zaman bir fonksiyona bir noktada atıf yaparsak, o noktaya fonksiyon tarafından bir değer getirileceğini bilmemiz gerekir. Eğer bu ilk sınamanın sonucu doğru değilse, VBScript If satırından sonraki birinci deyimi atlayacak ve ikinci deyimi yerine getirecektir. Yani eğer saat 12 den küçük değilse, ElseIf satırı icra edilecektir. ElseIf de tıpkı If gibi iģlediği için bu kez yeni bir sınav yapılacak ve saatin 18 e eģit veya büyük olup olmadığı sınanacaktır. Eğer saat 18 e eģit veya büyükse, (sınav sonucu doğru ise) ilk satır icra edilecek ve ziyaretçinin Browser penceresine Ġyi akģamlar! yazdırılacak, background rengi değiģtirilecektir. Eğer bu sınavın sonucu da doğru değilse, ElseIf in ikinci satırı icra edilecektir. Bu satırda ise Else bulunuyor. Else; If ve ElseIf gibi sınav yapmaz; ne olursa olsun, kendisinden sonra gelen deyimi yerine getirir. Yani saat 12 den küçük değilse, 18 den küçük veya 18 e eģit değilse, yani 12 ile 17 arasında ise, ekrana Tünaydın yazılacaktır ve rengi değiģtirecektir. SELECT CASE VBScript in bir diğer duruma bakarak karar verme ifadesi, Select Case (Durum Seç) yapısıdır. ġimdi bu öğenin nasıl çalıģtığını görelim: Durum Seç (Durumların listesi veya durumları belirten bir değiģken) Durum 1 : Yapılacak iģler Durum 2: Yapılacak iģler Durum 3: Yapılacak iģler Durum n: Yapılacak iģler

Seçmeyi Bitir Yani; Select Case değiģken Case 1 --- yapılacak iģler --- Case 2 --- yapılacak iģler --- Case3 --- yapılacak iģler --- End Select VBScript, verdiğiniz durum listesine veya içinde çeģitli değerler bulunan (bu değerleri bir Ģekilde değiģkene yükleyecek olan sizlersiniz) değiģkene bakarak, bu değiģkenin her bir değerini bir durum sayacak ve verdiğiniz durumlardan hangisini tutuyorsa, ona ait komut dizisini icra edecektir. Bir örnekle görelim: ay = month(date()) gun = day(date()) sene = year(date()) Select Case ay Case "1" StrAy = "Ocak" Case "2" StrAy = "ġubat" Case "3" StrAy = "Mart" Case "4" StrAy = "Nisan" Case "5" StrAy = "Mayıs" Case "6" StrAy = "Haziran" Case "7" StrAy = "Temmuz" Case "8" StrAy = "Ağustos" Case "9" StrAy = "Eylül" Case "10" StrAy = "Ekim" Case "11" StrAy = "Kasım" Case "12" StrAy = "Aralık"

End Select <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1254"> <meta name="generator" content="microsoft FrontPage 4.0"> <meta name="progid" content="frontpage.editor.document"> <title>günün Tarihi</title> </head> <body> <p><font face="verdana" size="2"><b>günün Tarihi </b></font>: <font color="#800000"> =gun =stray =sene </font></p> </body> </html> Bu kodu yazıp çalıģtırdığımızda programımız üç tane farklı değiģkeni iģleme sokuyor. Bunlar ay,gün ve sene. Malum, bu değiģkenler, kendilerine bir değer atandığında bir iģe yararlar. Bu yapmak içinde VBScriptin hazır fonksiyonlarından olan month(date()) day(date()) year(date()) ifadelerini kullanıyoruz.aslında bunlar, Date() fonksiyonunun alt fonksiyonları. Daha sonra kendisine değer yüklenen ay değiģkeni Select case ifadesinde durum konumuna yerleģtiriliyor. Bu Ģu demek: Ey asp.dll, ay değiģkenini al, bu değiģkenin değiģik durumlarına göre aģağıda belirteceğim görevleri yerine getir! Ay değiģkeninin 1,2,3,4,5,6,7,8,9,10,11,12 olmasına göre farklı durum iģlevleri tanımlıyoruz. Tahmin edeceğiniz üzere bunu case 1, case 2,... ifadeleri ile yapıyoruz. Bu sayede ay değiģkeninin aldığı sayısal değere göre birer StrAy değiģkeni tanımlayabiliyoruz. Bu iģlemleri tamamladıktan sonra End Select komutu ile seçim iģlemini durduruyoruz. SIK KULLANACAĞIMIZ HAZIR FONKSĠYONLAR VBScript te kullanabileceğimiz bir iki hazır-fonksiyona yukarıda değindik. VBScript in kullanılmaya hazır daha bir çok fonksiyonu vardır. Ancak ASP uygulamalarında sık kullanacağımız ve özellikle metin düzenlemeye ait olan bir kaçını burada sıralayalım. TARĠH VE SAAT Visual Basic in hemen hemen bütün zaman-tarih fonksiyonları VBScript te de kullanılır. Date: Bugün tarihini verir. (25.03.2000 gibi.) Time: O andaki saati verir. (22:24:40 gibi.) Now: O andaki tarih ve saati birlikte verir. (25.03.2000 22:24:40 gibi.)

VBScript in buna ek olarak Weekday (haftanın günü), WeekdayName (günün adı) ve Monthname (ayın adı) fonksiyonları da vardır. Bu fonksiyonlar değerlerini Date fonksiyonuna göre alırlar. Örneğin, = WeekdayName(Weekday(Date)) komutu bize bugün Cumartesi ise Cumartesi değerini verir. = MonthName(Month(Date)) komutu bize bu ay Mart ise Mart değerini verir. VBScript in bunlara ek olarak Day (gün), Month (ay) ve Year (yıl) fonksiyonları da değerlerini Date fonksiyonundan alarak, size bir rakam verirler. Eğer tarih 25 Mart 2000 ise: = Day(Date) --- 25 = Month(Date)--- 3 = Year(Date)--- 2000 değerini verir. VBScript, bu değerleri doğruca iģletim sisteminden alır. Dolayısıyla, iģletim sisteminin bölgesel ayarları Türkiye için yapılmıģsa, gün adları Türkçe olarak dönecektir. Ayrıca, tarih ve saat biçimleri de bölgesel ayarlara bağlı olarak, ay önde, gün arkada veya tersi, saat de 12 saat veya 24 saat esasına göre döner. ASP programlarınızı kiģisel Web Server da denerken kendi bilgisayarınızın tarih ve saatini; gerçek Internet te çalıģtırırken Server ın tarih ve saatini alırsınız. Sayfalarınızda ay ve gün adlarını Türkçe görüntülemek için, önce server ın bölgesel ayarlarını denemeniz ve eğer isimler Türkçe gelmiyorsa, bunları çeviren sub lar veya fonksiyonlar yazmanız gerekebilir. (Yukarıda günün tarihini veren kodumuzda, sisteminizin bölge ayarları nasıl olursa olsun ay Türkçe olarak karģımıza çıkacaktır ) KARAKTER DĠZĠSĠ DÜZENLEME Karakter dizisi veya string, VBScript için herģey olabilir. Bugün 7 Ağustos 2000 bir String dir. Doğum Günün Kutlu Olsun! bir string dir. Web sitemizi ziyaret eden kiģinin formlarımıza yazacağı ve Gönder tuģunu tıklayarak server a göndereceği bilgiler string dir. Fakat bunların hepsi olduğu Ģekliyle iģimize yaramaz. Bunları yeniden düzenlemek, içinden seçmeler yapmak veya biçimlerini değiģtirmek gerekebilir. VBScript bu amaçla kullanılmaya hazır bir dizi fonksiyon verir: InStr Uzun bir string in içinde vereceğiniz daha kısa bir string in bulunup bulunmadığını arar. Bulursa bu kısa string in baģlama noktasının değerini verir. Diyelim ki, Sarı Çizmeli Mehmet Ağa string ini GereksizLaf değiģkenine, çizmeli kelimesini de Ara değiģkenine atadınız. InStr fonksiyonu ile Ara nın değerinin yerini GereksizLaf ın değerinin içinde bulabilirsiniz: Yer = InStr(GereksizLaf, Ara) Yer in değeri 6 olacaktır; çünkü çizmeli kelimesi, uzun string de 6 ncı karakterden baģlamaktadır. Len Bir string in uzunluğunu belirler. Yukarıdaki örnekte yer alan GereksizLaf değiģkenin uzunluğunu Ģöyle belirleyebiliriz: Uzunluk = Len(GereksizLaf) Uzunluk değiģkeninin değeri 23 olacaktır.

UCase Vereceğiniz bir string in tüm karakterlerini büyük harfe çevirir. YeniString = UCase(GereksizLaf) Yeni String in değeri: SARI ÇĠZMELĠ MEHMET AĞA olacaktır. LCase Vereceğiniz bir string in tüm karakterlerini küçük harfe çevirir. YeniString = LCase(GereksizLaf) Yeni string in değeri: sarı çizmeli mehmet ağa olacaktır. LTrim, RTrim, Trim: Verdiğiniz string in (sırasıyla) solunda yani baģ tarafında; sağında yani sonunda ve hem baģında ve hem de sonundaki boģlukları temizler. Space Ġçinde, vereceğiniz sayı kadar boģluk olan boģ bir String oluģturur. Örneğin Bosluk = Space(20) Bosluk değiģkenin değeri (20 adet boģluk karakteri) olacaktır. String Ġstediğiniz sayıda ve istediğiniz bir karakterle bir string oluģturur. YeniString = String(3, * ) YeniString değiģkeninin değeri *** olacaktır. Left, Right Bir String in içinde soldan (baģtan) veya sağdan (sondan) verdiğiniz sayıya kadar olan karakterleri verir. Örneğin, yine yukarıdaki GereksizLaf değiģkenini kullanırsak: Solda = Left(GereksizLaf, 4) Solda değiģkeninin değeri Sarı olacaktır. Çünkü, GereksizLaf değiģkeninin soldan itibaren dört harfi Sarı kelimesine denk geliyor. Mid Bir string in içinde baģlangıç noktasını ve karakter olarak boyunu verdiğiniz alanda yer alan string i verir. Ortada = Mid(GereksizLaf, 5, 8) Ortada değiģkeninin değeri çizmeli olacaktır; çünkü GereksizLaf değiģkeninin soldan 5 nci değiģkeninden itibaren 8 karakterlik alanda çizmeli karakterleri yer alıyor. Rnd Int Rastgele sayı üretmek için kullanılır. Bu fonksiyon ile ondalıklı bir sayının tam bölümünü alabiliriz. deger="2,25022" yenideger=int(deger) bu durumda deger değiģkeni 1 olacaktır. DĠZĠ DEĞĠġKEN FONKSĠYONU

VBScript in dizi değiģken oluģturmada Array() fonksiyonu ile sağladığı kolaylıklara kısaca değindik. Fakat Array ile daha bir çok iģ yapabiliriz ve dizi değiģken oluģturmakta VBScript in diğer bazı kolaylıklarından yararlanabiliriz. Dizi değiģkenler, özellikle Web ziyaretçilerimizden gelecek bilgilerin kaydedilmesinde; veritabanından çekeceğimiz verilerin kullanılır hale getirilmesinde yararlı bir araçtır. Dolayısıyla ASP sayfalarınızda sık sık çok boyutlu dizi değiģkenlerden yararlanacaksınız. Bunun için gerekli araçları kısaca ve topluca ele almamız yerinde olur. Bir dizi değiģken oluģtururken, değiģkenin eleman sayısını belirtmezsek, VBScript, kendi kendine AnlaĢılan bu diziyi dinamik yapmamı istiyorlar! der. Daha sonra elemanlarının değerleri sonradan belirtilebilecek ve eleman sayısı sonradan artırılabilecek bir dinamik dizi değiģken oluģturur. Örnek: Dim Ogrenciler() Bu komutla, Ogrenciler dizi değiģkeni oluģturulur. Ancak, eleman sayısı belirtilmediği için dizi dinamiktir. Daha sonra bu dizinin eleman sayını belirleyebilirsiniz. Bunu, ReDim Ogrenciler(15) gibi bir komutla yapabiliriz. ġimdi aklınıza Ģu soru gelebilir: Peki neden Ogrenciler dizisini baģtan eleman sayısını belirterek tanımlamıyoruz? Güzel soru! Cevabı Ģu olabilir mi? Dizi değiģkenimizin eleman sayısını henüz bilmiyoruz. Programın akıģı içinde bu sayı, baģka bir fonksiyonun, sub ın veya kullanıcı girdisinin sonucu olarak belirlenebilir. Fakat hemen belirtmek gereken bir nokta var: ReDim komutu, mevcut bir dizi değiģkenin içindeki herģeyi siler! Mevcut dizinin elemanlarını ve onların değerlerini korumak istiyorsak: ReDim Preserve Ogrenciler(20) yazmamız gerekir. Buradaki Preserve (koru) komutu, VBScript e mevcut dizi içindeki elemanları korumasını ve eleman sayısını 20 ye çıkartmasını bildirir. Buna neden gerek olabilir? Ziyaretçinin tercihleri değiģebilir. Örneğin, bir elektronik alıģveriģ sitesinde ziyaretçiniz yeni Ģeyler alabilir. Daha önceki alıģveriģlerine iliģkin verileri tuttuğunuz dizi değiģkenin eleman sayısını, daha önceki bilgileri silmeden arttırmanız gerekir. VBScript in dizi değiģkenlerini tümü aynı adı taģıyan bir liste olarak düģünebilirsiniz; sadece değiģken adının yanında dizinin kaçıncı elemanı olduğunu belirten sayı bulunur: Ogrenciler(1): Necip Ogrenciler(2): Serap Ogrenciler(3): Neslihan Fakat VBScript çok boyutlu dizi değiģken de oluģturabilir. Ġki boyutlu dizi değiģkeni tablo gibi düģünün. Dizinin elemanları aynı adı taģıyan değiģkenler fakat bu kez sadece tek sayı değil sıra ve sütun numaraları ile belirleniyorlar: Ogrenciler(1,1): Necip Ogrenciler(1,2): Serap Ogrenciler(1,3): Neslihan Ogrenciler(2,1): Selim Ogrenciler(2,2): Murat Ogrenciler(2,3): Merve Ogrenciler(3,1): Elif Ogrenciler(3,2); Hande Ogrenciler(3,3): Leyla ġimdi, burada üç sıralı, üç sütunlu bir tablo getirebilirsiniz gözünüzün önüne. Bu dizi-değiģkeni Ģu komutla oluģturabiliriz:

Dim Ogrenciler(3,3) Böyle bir değiģkende sözgelimi birinci sıra (numarası 1,x olanlar) çalıģkanları, ikinci sıradakiler (2,x ler) daha az çalıģkanları belirtebilir. VBScript, üç, dört ve hatta beģ boyutlu dizi değiģken oluģturur. Bunu nerede kullanacağınızı siz kararlaģtırabilirsiniz. Bir dizi değiģkenin herhangi bir elemanın değerini, programın herhangi bir aģamasında değiģtirebilirsiniz: Ogrenciler(3,2) = Caner komutu, Hande nin adını siler ve yerine Caner in adını yazar. Dizi değiģkenlerimizin eleman sayısını bilmek isteyebiliriz. Kimi zaman dizi değiģkenlerimizin eleman sayısı biz belirlemeyiz. Bu bilgi bir formdan gelebilir; bir veritabanından alınabilir. Ancak, mesela, bir döngü için bu değiģkenin kaç elemanı olduğunu bilmek gerekir. Elimizde 35 elemanı olan Ogrenciler dizi-değiģkeni varsa, bu sayıyı ElemanSayisi = UBound(Ogrenciler) komutu ile ElemanSayisi değiģkenine yazdırırız. ElemanSayisi nin değeri bu durumda 35 olacaktır. TEST FONKSĠYONLARI VBScript te kullandığımız bazı değiģkenlerin o andaki durumu, programımızın akıģını kontrolde kullanacağımız bilgiyi sağlayabilir. Sözgelimi bir değiģkenin değeri boģ ise, ziyaretçimizin formu tam olarak doldurmadığını düģünebiliriz. VBScript, bize değiģkenlerin durumunu sınamamız için bazı özel fonksiyonlar sağlar. Bu özel fonksiyonlardan dönen değer True (doğru) veya False (yanlıģ) olur; doğru sonucun değeri 1, yanlıģ sonucun değeri ise 0 dır: IsArray Bir değiģkenin dizi değiģken (Array) olup olmadığını sınar. IsDate Bir değiģkenin değerinin tarihe (Date) çevrilip çevrilemeyeceğini sınar. IsEmpty Bir değiģkenin tanımlanıp değer atanmıģ olup olmadığını sınar. IsNull Bir değiģkenin geçerli bir değer tutup tutmadığını sınar. IsNumeric Bir değiģkenin sayı olarak iģleme tâbi tutup tutulamayacağını sınar. IsObject Bir ifadenin geçerli bir ActiveX veya OLE nesnesine referansta bulunup bulunmadığını sınar. TypeName Bir değiģkenin türünü belirtir. VarType Bir değiģkenin türünü belirten sayıyı verir.

ASP NESNELERĠ ASP teknolojisi, tıpkı Visual Basic dili gibi nesne yönelimli programlama yapısına sahiptir. Nesne Yönelimli Programlama (Object Oriented Programming, OOP) deyimini bir çoğunuz daha önce duymuģsunuzdur. ASP kullanırken de, öncelikli amacımız nesnelerin özelliklerini kullanarak, ya bu özellikleri belirlemek ya da değiģtirmektir. Her Ģey nesne sayılabilir. Siz programlarınızı yazarken önce bir nesne tanımlar ya da hazır nesneleri kullanırsınız. Bu nesnelerin özelliklerine hükmeder, onları kullanırsınız. Diyelim ki bir stok kontrol programı yazıyorsunuz. Bu program sizden aldığı bilgiler ıģığında, merkez ambara mal girecek, mal çıkıģı yapacak, size hangi üründen ne kadar kaldığını gösterecek, stok miktarı kritik sınırın altına indiğinde haber verecek. Bu iģler için onlarca fonksiyon tanımlıyorsunuz ve Sub yazıyorsunuz. Bu demek oluyor ki, sizin ASP programınızda ambar diye bir nesneniz var; siz bu nesneye yönelimli program yazmıģsınız! Her bir program nesnesi temelde iki unsura sahiptir: Özellik (Property, Attribute): Bir nesnenin özellikleri, onun değiģkenleridir. Ambar nesnesinin malın cinsi, miktarı, tanımı, fiyatı, kritik miktarı 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. Öncelikle, ASP programında kullandığınız script dilinin size kazandırdığı nesneler vardır. ASP sayfasını JavaScript ile yazarsanız baģka, VBScript ile yazarsanız baģka dil nesnelerine sahip olursunuz. Ancak, her ikisinde de ortak olan scripting nesneleri vardır. Bunların çoğu ASP nin çalıģtığı platform olan IIS tarafından sağlanırlar. Nesneler kim tarafından oluģturulmuģ olurlarla olsunlar, bir değer döndürmekle yükümlüdürler. Nesne.Özellik = Değer Bir nesnenin herhangi bir özelliğinin değerini, değiģken değeri gibi kullanabilir program akıģını buna göre değiģtirebiliriz: If Nesne.Özellik > Değer Then... Nesnelerin özelliklerinin değerlerini değiģkenlere atayabiliriz; ancak bunu yaparken Nesne nin 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.) Degisken = Nesne.Metod(argüman1, argüman2...)

Daha sonra bu değiģkeni istediğimiz yerde kullanırız. ĠĢin teorisine daha fazla bulaģmadan örnek yapalım. Nesneler, diğer yararlarının yanı sıra, birbiri ile ilgili Sub larımızı, fonksiyonlarımızı ve değiģkenlerimizi bir arada tutmamızı sağlar. ġimdi VBScript ile bir nesne oluģturabiliriz: Class Ogrenci End Class Public Adi, Soyadi, No Function AdiSoyadi AdiSoyadi = Adi & & Soyadi End Function Nesne (object) adını verdik; fakat Class (sınıf) oluģturduk! Bu grubun Object..End Object olması gerekmiyor mu? Belki haklısınız. Ama bir sınıf ancak VBScript tarafından kullanılmaya baģlanırsa Nesne olur. Dolayısıyla biz sınıf yazarız; VBScript onu Nesne haline getirir. Peki, nesneyi oluģturduk; Ģimdi bunu nasıl kullanacağız. Çok kolay; önce bu nesneden yeni bir olgu (instance) oluģturacağız. Sonrasına geçmeden önce bunu nasıl yapacağımızı yazalım: Dim Ogr1 Set Ogr1 = New Ogrenci Ogr1.Adi = Kemal Ogr1.Soyadi = Sunal Ogr1.No = 444 Response.Write Ogr1.AdiSoyadi Her nesne, New (yeni) komutu ile yeni bir değiģkene bütün özelliklerini verir. Burada Ogr1 değiģkeni, yukarıda oluģturduğumuz Ogrenci nesnesinin bütün özelliklerini kazanmıģ oluyor. Ogrenci nesnesinin.adi,.soyadi ve.no özellikleri olması gerekir; nitekim Ogr1 e bu özelliklerini burada veriyoruz. Ogrenci nesnesinin bir de metodu (fonksiyonu) var; Ogr1 bunu da kazanabilir mi? Tabiî; hem kazanır, hem de bunu ziyaretçinin Web tarayıcı penceresine yazdırabilir. HATASIZ KUL OLMAZ! ASP kodlarınızda yazım hatası, olmayan değiģkenlere gönderim, noktalama hataları gibi hatalar bulunmamalıdır. Bu tür hataları, programınızı Web e göndermeden önce mutlaka ayıklamalısınız. Fakat programcı olarak öngöremeyeceğiniz ve çoğu Web ziyaretçisinden veya ziyaretçinin bilgisayarından kaynaklanan hata durumları olabilir. VBScript, Ģu standart komutla beklenmedik hata durumlarında programın yoluna devam etmesini sağlayabilir: On Error Resume Next Bu komutla VBScript e, hata halinde bir sonraki satırdan yoluna devam etmesi söylenir. Fakat oluģan hata, programın daha sonra vermesi beklenen sonucu vermesini önleyecek nitelikte olabilir.

VBScript, Err (Hata) Nesnesi nin bir çok özelliğinden özellikle hata sayısı (Number), tanımı (Description) ve kaynak (Source) özellikleri ile size hatanın ne olduğunu ve nereden kaynaklandığını söyleyebilir. Bu özellikleri kullanarak, programlarınızda, en azından geliģtirme aģamasında, örneğin, If Err:Number = xx Then Ģeklinde bir ifade ile hatanın türüne göre programın kazasız yürümesini sağlayabilirsiniz. Burada xx yerine 108 ayrı hata numarası yapabilirsiniz. Hata numaraları, Microsoft un VBScript sitesinden edinilebilir (http://msdn.microsoft.com/vbasic/). SUNUCU NESNELERĠ ASP yi diğer CGI teknolojilerinden ayıran baģlıca özelliklerden biri tek tek Web sayfalarını sanki bir bilgisayar programının çeģitli pencereleri, diyalog kutuları, mesaj kutuları, girdi kutuları gibi bir arada bir uygulama programı olarak bağlayabilmesidir. BaĢka bir deyiģle bize, ziyaretçinin sitemize bağlandığı ve ana sayfamızı açtığı andan itibaren sitemizin bir program bütünlüğünde çalıģmasını sağlayacak araçlar gerekir. Bunu ancak Web Server ın yardımıyla yapabiliriz. ASP sayfalarımızda kullanacağımız ikinci grup nesne, Sunucu Nesneleri dir. Bu grupta tabiî önce Sunucu nun kendisi yer alır; sonra ziyaretçi ile kurduğumuz iliģki gelir. Ziyaretçi ile iliģkimizi iki yönlü trafiğe benzetebilirsiniz: Ondan bize gelen talepler, bizim ona karģılıklarımız. Ziyaretçiden bize gelen trafiğe neden Talep diyoruz? Ziyaretçi, browser ının URL hânesine yazdığı her adresle veya formlardaki bir düğmeyi veya sayfalarımızdaki herhangi bir köprüyü tıklamakla, server a Bana Ģunu göndersene! demiģ olur. Bu taleptir. Ziyaretçi taleplerinin tümü Talep Nesnesi (Request Object) olarak bir arada ele alınabilir. Server ın bu taleplere verdiği karģılıklar, yani ziyaretçinin browser ına gönderdiği sayfalar, resimler, sesler, videolar ise karģılıktır ve ASP açısından KarĢılık Nesnesi ni (Response Object) oluģturur. SUNUCU NESNESĠ Web Server, ASP için bir nesnedir. ASP nin bir çok iģini bu nesnenin özellikleri ve metodları halleder. Server nesnesinin bir özelliği (ScriptTimeout) ve dört metodu (CreateObject, HTMLEncode, URLEncode, MapPath) vardır. Web Server çalıģtığı bilgisayarın sizin siteniz adına yönetiminden sorumludur. Dolayısıyla, bu kadar az özellik ve metodu var diye bu nesneden çok yararlanmayacağımızı sanmayın. ActiveX ve COM bileģenlerini çalıģtırmak server ın görevidir. ScriptTimeout Özelliği: Diyelim ki bir ASP Script i ya bizim, ya ziyaretçinin, ya da server ın bir hatası yüzünden sonsuz döngüye girdi! Döngünün durması için gerekli Ģart asla yerine gelmiyor ve script bir türlü yapacağı iģi yapıp, sonlandırmıyor. Bu durumlarda ziyaretçinin ve tabiî server ın sonsuza kadar beklemesi mümkün değil! Programın bir Ģekilde durdurulması gerekir. Bunu hemen hemen bütün Web server programlarının Script Timeout (Script süre sınırı) diyalog kutusuna bir değer girilerek yapılır. Örneğin MS-Internet Information Server için varsayılan Script Timeout süresi doksan saniyedir. Yani ISS, herhangi bir script in çalıģıp-durmasını doksan saniye bekler. Bu sürenin sonunda script in çalıģması tamamlanmazsa ziyaretçiye arzu ettiği sayfanın veya unsurun bulunamadığını bildirir. Bu süreyi (server ın varsayılan değerinin altında) kısaltmak değilse bile uzatmak elimizdedir. Bunu ScriptTimeout özelliğini kullanarak yaparız. ASP sayfasının herhangi bir yerine örneğin Ģu kodu koymak yeter: Server.ScriptTimeout = 100 Bu örneğe göre server ın varsayılan Script Timeout süresi doksan saniye ise yüz saniyeye çıkmıģ olur. Böyle bir Ģeyi neden yapmak isteyebiliriz? Script iniz çok karmaģık veya baģka bir server daki veritabanından veri çekiyor olabilir. Gerçi bu anlamda doksan saniye bilgisayar milleti için bir asır anlamına gelir ama yine de durdurulmasaydı iģini baģarıyla tamamlayacak bir script, bu sürenin