İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

ASP KONTROL DEYİMLERİ VE YAPISI

ASP KONTROL DEYİMLERİ VE YAPISI

Şimdiye kadar oluşturduğumuz ASP programcıkları önce ilk satır sonra ikinci ve üçüncü satır şeklinde ilerleyen basit bir işleyişe sahipti. Fakat gerçek uygulamalar için yazılan ASP kodları çok daha kompleks biçimlerde çalışabilir. ASP kontrol deyimleri programlarımızı istediğimiz yönlerde çalıştırabilmek için kullanılırlar. En basit şekliyle bu deyimler:

KONTROL DEYİMLERİ, TİPLERİ

Herhangi bir programlama dilinde (bu durum ASP script dili içinde geçerli) 3 tip kontrol deyimi bulunur.Bunlar;

BRANCHING (DALLANMA) DEYİMLERİ

ASP dallanma için 2 farklı tip de kontrol deyimi sunar. If...Then yapısı bir veya birkaç seçim olduğunda, Select...Case ise daha karmaşık yapılarda kullanılır

IF...Then Kontrol Deyimi

If...Then yapısı 4 bölümden oluşur.

İF...then yapısı ve kullanımı ile ilgili olarak aşağıda ki örnekleri inceleyebilirsiniz.

<%
If Faks="Evet" then Response.Write" Lütfen Faks numaranızı giriniz"
%>

Yukarıda Faks değişkenine verilen yanıt "Evet" ise ekrana (Http içeriğine) "Lütfen faks numaranızı giriniz" şeklinde bir mesaj yazılır.

Eğer If...then yapısında şart gerçekleştiğinde yapılması gereken birden fazla işlem varsa;If...then aşağıdaki gibi kullanabilirsiniz.

<%
if Faks= "Evet" then
	Response.Write "Lütfen aşağıdaki linke tıklayarak Faks numaranızı giriniz. "
	Response.Write "<A href=http:/www.godoro.com/Fax Form >tıklayın.</A>"
End if
%>

if...then yapısındaki elde edilen şartın sağlanmaması durumunda yapılması gereken işlemler ELSE sözcüğünden sonra tanımlanabilir

<%
if Faks="Evet" then
	Response.Write "Lütfen Faks numaranızı giriniz" 
Else
	Response.Write "Faks numarası forma gönderilmeyecek"
End if
%>

Yukarıdaki kod bloğunda eğer Faks değişkenine verilen cevap "Evet" den farklı ise Else' den sonra yazılan kodlar icra edilir.

İf...then yapısının en son ve geniş kullanımı ise Elseif yapısı ile birden fazla şart içeren durumlardır.

<%
if method= "Faks" then
	Response.Write "Lütfen Faks numaranızı giriniz "
Elseif method= "Email" then
	Response.Write "Lütfen E-mail adresinizi giriniz"
Elseif method= "Telefon" then
	Response.Write "Lütfen telefon numaranızı giriniz"
Else
	Response.Write "Herhangi bir bilgi iletilmeyecektir"
End if
%>

Select Case

Olasılık sayısı artan daha karmaşık bir yapıda if...then yapısı karmaşık bir çözüm olacaktır. Böyle durumlarda Select...Case yapısı daha uygun bir çözüm olarak kullanılır . Aşağıda verilen örneğe göz atalım:

<%
Select Case Secim 
	Case "Faks"
		Response.Write "Lütfen Faks numaranızı giriniz"
	Case "Telefon"
		Response.Write "Lütfen telefon numaranızı giriniz"
	Case "E-mail"
		Response.Write "Lütfen e-mail adresinizi giriniz"
End Select
%>

Kod Nasıl Çalışır ? Select Case kod bloğun başlangıcı, Select Case' den sonra gelen "Secim" ise içeriğe bakacağımız değişkenin adıdır. Daha sonra kullanılan Case "..." şeklindeki bloklar ise Secim değişkenin içeriğine bağlı olarak işletilecek olan ASP kodlarına işaret eder. Sözgelimi; Case "Faks" eğer Secim değişkeninin değeri Faks ise yani Secim="Faks" ise çalıştırılacak kod bloğunu işaret eder. End Select ise Select Case bloğunu bitirmek için kullanılır. Select Case' nin bir diğer kullanımına bakalım :

Select Case Ay
Case "Nisan"
	Response.Write "Toplantı tarihi olarak Nisan ayını seçtiniz"
Case "Mayıs"
	Response.Write "Toplantı tarihi olarak Mayıs ayını seçtiniz"
Case "Aralık"
	Response.Write "Toplantı tarihi olarak Aralık ayını seçtiniz"
Case Else
	Response.Write "Toplantı için bir tarih seçmelisiniz"
End Select

Yukarıda tek farklı olan nokta CASE ELSE deyiminin eklenmesidir. Case Else Bloğu eğer değişkenin değeri Case' lerde belirtilen değerden herhangi birine uymazsa devreye girer yani Ay değişkeninin değeri "Nisan", "Mayıs" veya "Aralık" değerinden biri değilse ekrana "Toplantı için bir tarih seçmelisiniz" şeklinde bir mesaj yazılır.

Daha geniş bir Select Case kullanımı ise aşağıda verilmiştir.

<%
Select Case Sayi
	Case 1,2,3,4,5
		Response.write " 1 ile 5 arasında bir seçim yaptınız "
	Case 6,7,8,9,10
		Response.write " 6 ile 10 arasında bir seçim yaptınız "
	Case Else
		Response.write " Seçiminiz 1 le 10 arasında değil "
End Select

Eğer kullanıcının girmiş olduğu sayı veya başka bir deyişle sayı değişkeninin değeri 1,2,3,4 veya 5 ise ekrana " 1 ile 5 arasında bir seçim yaptınız " mesajı yazılır. Burada "," virgül değişik değerleri birbirinden ayırmak için kullanılmıştır.

Aşağıda Select Case kullanımını anlatan örneği inceleyebilirsiniz. Select Case kullanımını anlatan bir örnek görebilirsiniz.

Problem: Kullanıcı illerin bulunduğu kutucuktan ilgilendiği ili seçer ve submit butonuna basarak seçimini onaylar. Yazılacak bir select case yapısı ile seçilen ili ekrana basınız.

Gerekli olacak Http formu aşağıdaki gibi olmalıdır

 select name= "iller" >
 Form action="selectcase.asp" method="POST" >
< option value= "ankara" > Ankara < /option >
< option value= "İstanbul" >Istanbul < /option >
< option value="ordu" > Ordu < /option >
< /select >
< input type="submit" value="Gönder" >
< input type="reset" value="Reset" >
< /Form >

Yukarıda ki Html kodu aşağıdaki gibi bir ekran oluşturur.

Gönderilen değere yani seçilen ile bağlı olarak sonuç üretecek selectcase.asp dosyasını oluşturalım.

<%
secilen-il=Request.Form("iller")
select case secilen-il
	case "Ankara"
		Response.Write "Ankara yı seçmeniz büyük incelik"
	Case "İstanbul"
		Response.Write "İstanbul da her milliyetten insan bulabiliriz"
	Case Else
		Response.Write "İstanbul veya Ankara dışında bir il seçtiniz"
End Select
%>

LOOPING (DÖNGÜ)TEKRAR KONTROLLERİ

ASP 2 farklı tipte döngü kontrolü sunar; Do While ve For...Next döngüler bu iki tipten herhangi birinin seçimi tamamı ile programcının yazdığı programın yapısına göre değişiklik gösterebilir. Eğer kod bloğunun kaç defa tekrarlanacağını biliyorsanız veya bu tekrar sayısı bir değişkende saklanıyor ise FOR...NEXT uygun bir çözümdür. Eğer döngünün kaç defa tekrarlanacağını kesin olarak biliyorsanız veya bu tekrar sayısı program içerisinde gerçekleşebilecek bir şarta bağlı ise DO WHILE döngüsü daha uygun bir yöntem olacaktır.

For...Next

For...NEXT 3 bölümden oluşur. İlk bölümde döngünün kaç defa tekrar edeceği yer alır. İkinci bölümde ise tekrarlamak istediğimiz kod bloğumuz yer alır. En son ise tekrarlanacak kod bloğunun bittiğini ve For... ile başlayan satırlara geri dönüleceğini belirten NEXT deyimi gelir.

Beş adet öğrenci adı ve email alanı bulunan bir formu for...next kullanarak oluşturalım

<%

Response.Write "Öğrenci yoklama Listesi 2000 " & "<BR>"
For sayac=1 to 5 
Response.Write "Öğrenci Adı: ___________________" & "<BR>"
Response.Write "Öğrenci Email: ___________________" & "<BR>"
Next
%>

For sayac=1 to 5 ile döngünün 1 den 5' e kadar tekrarlanacağını belirtmiş oluyoruz. Next deyimine kadar olan satırlar ise tekrarlanacak satırlardır. Next döngünün tekrar For ile başlayan satırlara geri dönmesine ve sayac değerinin 1 artışla 2 olmasına neden olur. Bu durum sayac 5 oluncaya kadar devam eder.

For Each... Next

For...Next kullanımının özel bir türüdür. Bir dizi veya koleksiyon içerisinde kullanılır. (Koleksiyon nedir ? Daha detaylı olarak anlatılacaktır. ) For döngüsü dizi veya koleksiyon içerisinde kalan eleman sayısı kadar gerçekleştirilir. Aşağıda ki örneği inceleyebilirsiniz.

<%

Dim eleman
Dim sehirler(2)
sehirler(0)="Ankara"
sehirler(1)="İstanbul"
sehirler(2)="Ordu"

For Each eleman In sehirler
Response.Write eleman & "<BR>"
Next

%>

Kod Nasıl Çalışır ?Döngü şehirler dizisi içerisinde yer alan her eleman ( Şehir için, her dizi elemanı ) için tekrarlanır. Eleman (şehir ) sayısı 3 olduğuna göre döngü 3 defa tekrarlanacak ve ekrana dizinin içerisinde yer alan elemanlar yazılacaktır.

Do...While

Do...While döngüsü daha öncede anlatıldığı gibi kaç defa tekrar edeceğini bilmediğimiz başka bir değişle kaç kez tekrarlanacağı kod içerisinde gerçekleşecek bir şarta bağlı olarak değişen durumlarda kullanılması uygun olan bir döngü tipidir. Döngünün devamı şartın sağlanıp sağlanmadığına bakılarak sağlanır.

Genel kullanımı aşağıdaki gibidir

Do While ' Buraya ilgili şartıgetirilir.
.............
Tekrarlanacak satırlar
.............
Loop
' Döngünün başa dönmesini sağlayan Loop deyimi

Basit bir örnekle kullanımı anlatmaya çalışalım

<%
sayac=0

Do while sayac<10
Response.Write sayac & "<BR>"
sayac=sayac+1

Loop
%>

Öncelikle sayac değeri 0' a eşitlenmiş. Döngü sayac değerinin 10 dan küçük olup olmadığına bakıyor ve ilgili satırların tekrarı sağlanıyor. Sayac=sayac+1 satırı ise döngünün tekrar edilip edilmeyeceğinin kontrolünü tutan sayac değerinin her döngüden sonra 1 artmasını sağlıyor. Böylece kodlar sayac değeri 10 dan küçük olduğu süre içerisinde tekrarlanıyor.

Do...Until

Do...while döngüsünde while teriminin until ile değiştirilmesi ile elde edilen bir türevidir. İki döngü arasındaki fark ise ; Do...while döngüsü while ile belirtilen şart mevcut olduğu sürece döngü tekrarlanır. Untilde ise belirtilen durum doğru olduğu takdirde döngü devam ettirilir untilde belirtilen şart ortadan kalktığında döngü son bulur.

YÖNLENME, SIÇRAMA ( JUMPING ) KONTROLLERİ

ASP ile programlar ürettiğimizde bazı durumlarda aynı kod parçasını birden fazla kullanmamız gerekebilir ASP ile oluşturulmuş bir kod bloğunun ana program içerisinde islenildiği anda kullanılması programcıya esneklik ve kolaylık sağlar. Bu tekrarlanacak mini program parçacıkları alt program (prosedür ) ve fonksiyon olarak adlandırılır. Basit bir örnek vermek gerekirse; iletişim ve adres bilgileriniz sitenizde bulunan her sayfanın altına eklemeniz gerektiğini düşünelim. Bu işlem sürekli tekrar gerektiren bir grup kod olduğuna göre, prosedür kullanımı uygun bir çözüm olacaktır. Böylece herhangi bir sayfada iletişim bilgilerimizi eklemek istediğimizde gerekli prosedürü çağırmak yeterli olacaktır.

Prosedürler (Procedures )

Prosedürler 3 bölümden meydana gelirler. İlk bölümde prosedürün adı yer alır. İkinci bölümde ise çalıştırılacak kod bloğu, son bölümde ise sonlandırma deyimi ( End Sub ) bulunur.

Prosedürlerin genel yazım formatı aşağıda ki gibidir.

Sub prosedür_İsmi
---------------------
ASP Kodları
---------------------
End Sub

Daha önce vermiş olduğum iletişim bilgilerini ekrana basan bir alt program (prosedür ) oluşturalım:

<%
Sub İletisim_bilgileri

Response.Write "Ortaklar caddesi Yıldız Han " & "<BR>"
Response.Write "Işık Apartmanı Kat:1 No:7" & "<BR>"
Response.Write "Mecidiyeköy-İstanbul " & "<BR>"

End Sub
%>

ASP programımızın herhangi bir yerinde bu iletişim bilgilerini yazdırmamız gerektiğinde ise bu prosedürü çağırmak yeterli olacaktır. Bir prosedür CALL deyimi veya sadece prosedürün adı kullanılarak çağırılabilir

Aşağıda bahsettiğimiz 2 farklı prosedür çağırma işlemini görebilirsiniz:

<%
'Ana ASP Kodlarımız
---------------------
---------------------
CALL iletisim_bilgileri
---------------------
'Programımız devam ediyor
'Prosedür tıpkı aşağıda olduğu gibi sadece ismi yazılarak da çağırılabilir.
İletisim_bilgileri
---------------------
%>

Parametre Kullanımı

Prosedürler kendisine gönderilen değişkenlere bağlı olarak farklı çalışma şekilleri gösterebilirler. Bu değişkenler parametre olarak adlandırılır. Daha önce anlattığımız iletişim bilgileri prosedürünü şimdi parametre ile gerçekleştirelim. Düşünün ki farklı ülkeler için farklı iletişim bilgileri kullanmak istiyorsunuz. Bu problemi ülke adını parametre olarak alan bir prosedür ile çözebiliriz.

<%

Sub iletisim_bilgileri(ulke)
Select case ulke
Case "Türkiye"
	Response.Write "Türkiye için iletişim adresleri......." & "<BR>"
Case "İngiltere"
	Response.Write "Contact Information for England.." & "<BR>"
Case Else
	Response.Write "Yanlış parametre veya parametre tanımlamadınız !!!" & "<BR>"
End Select

End Sub

%>

Yukarıda anlatılan prosedür herhangi bir sayfaya dahil edilmek ve ilgili parametre sağlanmak suretiyle çalıştırılabilir. Aşağıdaki kodu inceleyiniz :

<%
'ASP Kodları
---------------------
---------------------
iletisim_blgileri("Türkiye")
---------------------
%>

Şeklinde bir kodlama ile alt programa "Türkiye" parametresini göndermiş oluyoruz böylece case "Türkiye" satırı devreye girecek ve Türkçe iletişim bilgileri ekrana basılacaktır. Aynı kod iletisim_bilgileri("İngiltere") şeklinde kullanılmak suretiyle İngilizce adres bilgileri ekrana yazılabilir eğer hiçbir parametre gönderilmezse veya yanlış bir parametre ile alt program çağırılırsa ekrana Case Else bloğundan dolayı devreye girecek olan " Yanlış parametre veya parametre tanımlamadınız !!! " mesajı yazılır

Neden Alt Program Kullanmalıyız ?

Konunun en başından beri üzerinde durduğumuz gibi alt program ( sub procedure ) kullanımı bizi tekrar gerektiren işlemlerde yeniden kod yazma zahmetinden kurtarır. Alt program kullanımının diğer bir avantajı ise programlarımızın okunulabilirliğinin, yeniden kullanımının ve merkezileştirilmesinin çok kolaylaşmasıdır. Bir çok programcının çalıştığı ortak bir uygulamada yazdığınız bir program parçasının diğer programcılar tarafından da kullanıldığını düşünün. Alt program kullanımı sayesinde sizin programınızda yapacağınız bir düzeltme veya geliştirme çalışması diğer programcıların kendi kodlarında bir değişiklik yapma gereksinimini ortadan kaldıracaktır.

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır