4.Ders: Visual Basic’te If Yapısı ve Döngüler

ASP.NET derslerinin bugünkü kısmında web programlamada önemli bir yere sahip olan If Yapısı ve Döngüler konusuna değiniyoruz. Visual Basic dilinde If komutunun, For Next, For Each, Do While ve Do Until komutlarının kullanımını örneklerle anlatmaya çalışacağım.

If … End If Bloğu

If … End If bloğu sayesinde mantıksal sınamalar yaparak, şarta bağlı olarak istediğimiz işlemi yaptırtabiliriz. Bu yapının Türkçesi şudur: “eğer şöyle ise şunu yap; öyle değilse şunu yap”. Örnekle açıklamak gerekirse:

If ortalama > 70 then
'şart doğru ise çalıştırılacak kodlar
Else
'şart doğru değilse çalıştırılacak kodlar
End If

Yukarıdaki örnekte; mantıksal şart ortalama değişkeninin 70’ten büyük olmasıdır (ortalama > 70). Eğer ortalama adındaki değişken 70’ten büyükse, yani şart doğru ise If’ten sonraki blok; değilse, Else’den sonraki blok çalıştırılacaktır. Yani her If bloğunda ya If’ten sonraki, ya da Else’den sonraki blok çalıştırılır.

Bu ifadeler sayesinde eğer ortalama 70’ten büyükse geçti bilgisini, değilse kaldı bilgisini kullanıcıya bildirebiliriz. Veya şu durumlarda If … End If bloğunu kullanabiliriz:

  • Kullanıcı girişi yapılmışsa sayfayı görüntüle, değilse uyarı göster.
  • Daha önce oy verilmişse oyu geçersiz say, değilse verilen cevabı bir arttır.
  • Yorum yazılmışsa kaç tane olduğunu göster, değilse yorum yazılmadı mesajını göster gibi.

If … End If bloğunda Else ifadesi ‘değilse’ anlamı taşır ve kullanılmak zorunda değildir. Bu durumda sadece şart doğru ise çalıştırılacak kodlar yazılır. Örneğin;

If dogumTarihi > 2000 then
'şart doğru ise çalıştırılacak kodlar
End If

Select Case Bloğu

Select Case bloğu, If … End If bloğuna benzer. Farklı yönü ise şudur: If bloğu ile normal şartlarda 2 durumu kontrol edebiliriz. Yani bir şart ya geçerlidir, ya da geçersizdir. Select Case bloğunda ise çok daha fazla durumu kontrol edebiliriz. Örnekle açıklamak gerekirse;

Select meslek
Case "öğretmen"
'meslek="öğretmen" ise yapılacak işlemler
Case "doktor"
'meslek="doktor" ise yapılacak işlemler
Case "mühendis", "mimar"
'meslek="mühendis" veya meslek="mimar" ise yapılacak işlemler
Case Else
'yukarıdakilerden hiçbiri değilse yapılacak işlemler
End Select

Bu örneği If ile yapmaya çalışsaydık pek pratik olmayacaktı. Çünkü meslek değişkeninin alabileceği çok fazla değer var. Bu yüzden çok fazla değer alınabilecek durumlarda Select … Case yapısı kullanılır.

Döngüler

Döngüler Visual Basic’te bir kod parçasının pek çok defa çalıştırılmasını sağlar. Yani biz bir kod parçası yazarız ve bunu bir döngü komutu arasına yerleştiririz. Bu kod parçası döngüye bağlı olarak çok defa çalıştırılabilir. Visual Basic’te kullanılan temel döngüler şunlardır:

  • For … Next Döngüsü
  • For … Each Döngüsü
  • Do While … Loop Döngüsü
  • Repeat … Until Döngüsü

For Next Döngüsü

Bu döngüde kod parçasının belli bir sayıda çalıştırılmasını sağlayabiliriz. Genelde i olarak tanımlanan bir döngü değişkeni kullanılır. i değişkeninin bir başlangıç değeri, bir bitiş değeri, bir de artış miktarı vardır. i değişkeni bitiş değerine ulaşana kadar döngü tekrar eder. Örneğin:

Dim i As integer
For i = 1 to 5 Step 1 'i 1 den başlayarak 5'e kadar birer birer artacak
Response.Write("ASP.NET<br/>")
Next

Yukarıdaki örneğe göre döngü değişkenimiz olan i değişkeninin alacağı ilk değer 1. i değişkeninin alacağı her bir değer için For … Next arasındaki kodlar çalıştırılacaktır. i 5’e ulaşana kadar kodlar çalıştırılacak ve ekran çıktısı: ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET olacaktır. Yani ekrana 5 kez ASP.NET yazdırılacaktır.

For … Next döngüsünde döngü değişkeninin değeri de kullanılabilir:

Dim i As Integer
For i = 1 to 5 Step 1 'i 1 den başlayarak 5'e kadar birer birer artacak
Response.Write(i)
Next

Bu durumda da döngü değişkenimiz olan i değişkeninin alacağı ilk değer 1. i değişkeninin alacağı her bir değer için For … Next arasındaki kodlar çalıştırılacaktır. i 5’e ulaşana kadar kodlar çalıştırılacak ve her seferinde ekrana i değişkeninin değeri yazdırılacaktır. Buna göre ekran çıktısı: 1 2 3 4 5 olacaktır. Diğer konuları öğrenince içinde for next geçen örnekler yapacağız.

For … Each Döngüsü

For … Each döngüsü For … Next döngüsüne benzer bir yapı gösterir. Farkı ise For … Next döngüsünde döngünün kaç defa döneceğini biz belirlerken, For … Each döngüsünde ise döngünün kaç defa döneceği genellikle döngüyle beraber kullanılan bir dizi değişkendeki eleman sayısı kadardır. Yani For … Each döngüsü genel olarak dizilerle beraber kullanılır. Bir örnekle açıklamak gerekirse;

Dim isimler As String = {"Ahmet", "Ayşe", "Fatma", "Zehra"}
For Each eleman As String In isimler
Response.Write(eleman & "<br/>")
Next

Bu örneğe göre isimler adında 4 elemanlı bir dizi değişken oluşturulmuş ve aynı satırda diziye değerler atanmıştır. Daha sonra ise For … Each döngüsü kullanılarak isimler adındaki dizinin herbir elemanı ekrana yazdırılmıştır.

Anlıyoruz ki for each bloğu arasında kalan kodlar dizideki eleman sayısı kadar çalıştırılır. Zaten yukarıdaki örneğin Türkçe’si şu şekilde: isimler dizisindeki her bir eleman için aşağıdaki komutları yerine getir.

Burada önemli bir başka nokta ise eleman adındaki döngü değişkenidir. Burada For … Each satırında oluşturduğumuz eleman değişkenini döngü içinde kullandık. eleman değişkeni döngü içerisinde dizininin değerlerini alır. Yani ilk seferde elemanın değeri “Ahmet”, daha sonra da sırasıyla “Ayşe”, “Fatma” ve “Zehra” olur. Herbir seferinde de bu değerler ekrana yazdırılıyor.

Do While ve Do Until Döngüleri

Bu iki döngü türünün pek fazla kullanım alanı yok. Hatta ben de çok kullandığımı söyleyemem. Neredeyse bütün işlemler For döngüleriyle halledilebilir. Ama döngüler konusunu işlediğimize göre bunlara değinmeden geçmek olmaz. Bu iki döngü birbirine çok benzer ve belirli bir şarta bağlı olarak belirli bir kod bloğunu çalıştırırlar. Ta ki o şart geçersiz olana kadar. Örneğin; a değişkeni 10’dan küçük olduğu sürece ekrana a değişkenini yaz. Döngüler arasındaki fark ise şu Do While döngüsünde şartı başta belirleriz. Do Until’de ise sonda. Dolayısıyla Repeat Until kullanıyorsak kodlar en az bir kere çalışır. Do While’da ise şart doğru değilse kodlar hiç çalıştırılmaz. Sanırım bir örneğin vakti geldi:

Aşağıda yer alan kodları Page_Load olayının arasına yazın. (Bu olayı oluşturmak için Design görünümünde iken boş bir yere çift tıklayabilirsiniz.)

Dim a As Integer = 10
Do While (a > 0)
Response.Write(a)
a = a - 1
Loop

Bu örneğe göre a değişkene 10 değeri veriliyor. a sıfırdan büyük olduğu sürece ekrana a değişkenini yazıyor ve a’nın değerini 1 azaltıyor. Bu şekilde döngü a değişkeni 0 olana kadar devam ediyor.  Başka bir deyişle şart doğru olduğu sürece kodlar çalıştırlıyor. Ekran çıktısı 10 9 8 7 6 5 4 3 2 1 olacak. Şimdi aynı örneği Do Until ile yapalım:

Dim a As Integer = 10
Do Until (a < 0)
Response.Write(a)
a = a - 1
Loop

Bu kodlarda farklı olarak şartımız a < 0 oldu. Çünkü Do Until arasındaki kodlar şart doğru olana kadar çalıştırılır. a 0’da küçük olana kadar ekrana a değişkeninin değerini yazacak ve a değişkenini bir azaltacak. Ekran çıktısı 10 9 8 7 6 5 4 3 2 1 0 olacak.

Özellikle Döngüler konusundan sonra, “Bu kodlar web sitesi yaparken nerede lazım olacak” diye düşünüyor olabilirsiniz. Kesinlikle bu kodları kullanmamız gerekecek. Mesela veritabanında bulunan, örneğin haberler olsun, haberleri veritabanından çekerken döngü kullanmamız gerekecek. Bunun gibi pek çok örneği zamanı geldiğincve yapacağız.

BENZER YAZILAR