![]() |
|
|||||||
| Genel Web Tasarımı hakkında Genel görüş, sorun ve çözümlerinizi bu alanda paylaşabilirsiniz. |
![]() |
|
|
LinkBack | Konu Seçenekleri | Modları Göster |
|
|
#1 (permalink) |
![]() |
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 ([Linkleri Görebilmek İçin Üye Olmanız Gerekiyor. Ücretsiz Üye Olmak İçin Tıklayın.]) 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 veri-yönlendirmeli Web uygulamaları için hazır hale gelmiş olacaktır. |
|
|
|
|
|
#2 (permalink) |
![]() |
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 harf-küçü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.8E308 arasında, negatif sayılarda -4.9E-324 ile -1.8E308 arasında bir değer alabilir. Date/Time Önceden belirlenmiş biçimlerde tarih ve zaman bilgisi içerir. Empty Tanımlanmış ancak henüz değer atanmamış (boş) değişken türüdür. Error Programın hata mesajlarını ve hata değerlerini tutar. Integer Noktalık bölüm içermeyen tamsayı verilerdir; değeri -32.768 ile +32.767 arasında olabilir. Long Noktalık bölüm içermeyen tamsayı verilerdir; değeri -2.147.483.648 ile 2.147.483.648 arasında olabilir. ¤¤¤¤ İçinde veri bulunmamak üzere tanımlanmış değişkenlerdir. Object Windows OLE Nesnelerini tutmak üzere tanımlanmış değişkenlerdir. Single Yüzen noktalı değer denilen veri türüdür. Pozitif sayılar için 1.4E-45 ile 3.4E38 arasında, negatif sayılarda –1.4E-45 ile -3.4E38 arasında bir değer alabilir. String Alfanumerik veri tutan değişkenlerin değeridir 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 paran¤¤¤ 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 [şart doğru ise yapılacak işler] Else [şart doğru değilse yapılacak işler] End If 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. |
|
|
|
![]() |
| Konu Seçenekleri | |
| Modları Göster | |
|
|
Okuduğunuz Konuya Benzer Konular
|
||||
| Konu | Konuyu Açan | Forum | Cevaplar | Son Mesaj |
| MasaÜstüne koyacak resmınız yoksa Buyrun :):):) | solemiyo | Duvar Kağıtları | 58 | 21-07-2008 23:38 |
| Msn Süleme | :_ResPecT_: | Komik ve Geyik | 9 | 12-07-2008 16:44 |
| bu camiler bakmaya değer:) | H@RB!KIZ | Dini Resimler | 1 | 15-03-2008 21:05 |
| Nick Arşivi | ÇΛᄂIΥΛΚΛᄂI | Sohbet Programları | 32 | 19-11-2007 21:02 |
| SeRiYe DeVaM | .:La$TLêaÐe®:. | İmza ve Nick Yapım Merkezi | 2 | 02-09-2007 23:06 |