You are on page 1of 30

r.Gr.

Blent OBANOLU, Visual BASIC Ders Notlar-I

KONTROL YAPILARI (CONTROL STRUCTURES)


GR
Kontrol yaplar, program akn deitirmek iin kullanlan yaplardr. Yapsal programlama dillerinde programn ileyii ilk satrdan son satra doru ilerler ve bu ileyi sras, artl veya artsz olarak deitirilebilir. te; programn ileyi ynnn artl veya artsz olarak deitirilmesi ilemine dallanma (branching) denir. Dallanma ilemini gerekletiren komutlara da kontrol komutlar denir. Program aknn deimedii sral yaplar saymaz isek seimli ve tekrarl yaplar olmak zere iki farkl tipte kontrol yaps ve komutlar mevcuttur. Programn ileyi ynn artsz olarak deitirmede GOTO ( Git) deyimi kullanlr. Kullanm ekli; GoTo <etiket> eklindedir. Yapsal programlamada GOTO komutunu sk kullanmaktan kanmak gerekir. GOTO kullanm, hata kontrol ve program takibini zorlatrr. NOT: GOTO komutu yerine seimli ve tekrarl kontrol yaplar kullanlmaldr.

SIRALI YAPI (SEQUENCE STRUCTURE)


Sral yap, komutlarn sras ile gerekletii en basit kontrol yapsdr. Program ileyii ilk satrdan son satra doru sras ile gerekleir. Tek girili, tek kl basit bir kontrol yapsdr.

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

ekil 3.1. Sral Yap

SEML (KARAR) YAPILAR (SELECTION STRUCTURES)


Seimli (selection) yapda bir arta (koula) bal olarak bir ya da daha fazla seeneklerden bir tanesine dallanma ilemi gerekletirilir. artl dallanma ilemi sayesinde, program arta bal olarak hangi ilemi yapacana karar verir. Visual Basic, Java gibi dillerde adet seme ilemini gerekletiren yap vardr. Bunlar IF, IF / ELSE, SELECT( SWITCH) CASE yaplardr.

TEK SEML YAPI ( IF/THEN DEYM)


Koula bal olarak tek bir ilemi yerine getiren yani artl dallanma ilemini gerekletiren yapdr. Hemen hemen tm programlama dillerinde bu ilem iin IF deyimi kullanlr. Tek seimli yaplara rnek verirsek; Eer Hava yamurlu se emsiyeni al. Eer Yemek piti se ocan altn kapat Eer Aldn Not 50 den fazla se snav getin

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

eklindeki ifadelerde bir koula bal olarak tek bir ilem gerekleir. Koul doru (true) ise ilem yaplr. Koul yanl (false) ise herhangi bir ilem yaplmaz, program ileyii bir alt satrdan devam eder.

ekil 3.2. Tek Seimli Yap (IF/THEN deyimi) rnek 3.1. Dardan girilen Say sfrdan byk ise girilen saynn karesini alan program yaznz. zm: Algoritmas;
1. Bala 2. Say gir (sayi) 3. Eer sayi >0 ise kare=sayi^2 4. Yaz kareyi 5. Dur

VB Dilinde Kodlanmas;
Sayi=Val(Inputbox(Say gir)) IF sayi >0 THEN kare=sayi^2 END IF PRINT kare

NOT: IF li ifade tek bir satra smyorsa END IF ile sonlandrlr

FT SEML YAPI ( IF /THEN / ELSE DEYM )

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

Bu kullanmda eer (IF) den sonra verilen art salanrsa <ilem 1> art salanmazsa ELSEden sonraki < ilem 2 >gerekletirilir. EER < koul > doru SE < ilem 1 > yap deilse < ilem 2> yap.

ekil 3.3. ift Seimli Yap (IF/THEN/ELSE deyimi)

Kullanm ekli; a) . IF <art> THEN <Yaplacak lemler 1> ELSE <Yaplacak lemler 2> END IF NOT: Bu kullanm ekilleri arasndaki tek fark If /Then yaps tek satra smyorsa End If komutu ile sonlandrlmaktadr. b). IF < art >THEN <lem 1> ELSE <lem 2>

NOT: Koul ksmnda karlatrma operatrlerinden mutlaka kullanlmaldr.

= , < >, >, < , >= , <=

biri

rnek 3.2. Dardan girilen nota gre rencinin o dersten geip, gemediini ekranda gsteren program yaznz. zm: Algoritmas;
1. Bala

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


2. Eer rencinin notu 50 den byk veya eitse Yaz Deilse Yaz 3. Dur Kald Geti

VB Dilinde Kodlanmas;
Dim not1 As Integer not1 = Val(InputBox("Notu giriniz")) If not1 >= 50 Then Print "Geti" End If If not1 < 50 Then Print "Kald" End If

IIF FONKSYONU: IF deyiminin kstl bir eklidir. Yalnzca iki olasln sz konusu
olduu durumlarda IF /THEN/ELSE deyimi yerine IIF fonksiyonu kullanlabilir c). Kullanm ekli: IIF (Koul, birinci ifade, ikinci ifade)

rnek 3.3. rnek 3.2 i IIF Fonksiyonunu kullanarak yaznz. zm:


Dim not1 as integer, sonuc as string giriniz)) not1=val(inputbox(Notu Print sonuc

sonuc = IIf (not1 >= 50, "Geti", "Kald")

rnek 3.4. Dardan girilen saynn negatif mi, pozitif mi olduunu ekranda gsteren program yaznz. zm: Bu program 3 farkl ekilde kodlayabiliriz. Doal olarak de ayn sonucu verecektir. a).
sayi=Val(inputbox(Say Giriniz)) IF sayi<0 THEN

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


PRINT Say Negatif ELSE PRINT Say Pozitif END IF

b)
sayi=Val(inputbox(Say Giriniz)) IF sayi<0 THEN PRINT Say Negatif ELSE PRINT Say Pozitif

c)
sayi=Val(inputbox(Say Giriniz)) Print IIF( sayi<0 , Say Negatif , Say Pozitif)

OK SEML YAPI ( e IF ya da Select Case Yaps )


Bu yapda koula veya koullara bal olarak ikiden fazla seim varsa Select Case deyimi veya i ie IF/THEN/ELSE yaplar kullanlr. Yani bu yapda birden fazla karar yaps i ie kullanlr.

ekil 3.4.oklu Seim Yaplar (Select Case Deyimi) Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

E IF/ ELSEIF YAPISI


Daha nce belirttiimiz gibi koul says ikiden fazla olduunda kullanlacak yaplardan biridir. ie IF yapsnda kontrol edilmesi gereken koul saysnn bir eksii kadar IF komutu kullanlr. Kullanm ekli; IF <Koul 1> Then Yaplacak lemler 1 ELSEIF <Koul 2> Then Yaplacak lemler 2 ELSEIF <Koul 3> Then Yaplacak lemler 3 ELSE Yaplacak lemler 4 END IF

SELECT CASE YAPISI


Girilen deikenin belirli deerlerine gre yaplacak farkl ilemlerin seiminde kullanlr. Select Case deyimi tek bir deikenin deerine gre, snrsz sayda ilem yapma imkn veren bir komuttur. Kullanm ekli; Select Case deiken Case d1
Deikenin d1 deeri ald durumlarda yaplacak ilemler

Case d2 Deikenin d2 deeri ald durumlarda yaplacak ilemler Case d3 to d9 Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


d3 ve d9 aralndaki tm deerler iin yaplacak ilemler

Case Is > d10


Deikenin d10 dan daha byk deerler aldnda yaplacak ilemler

Case Else
Deikenin farkl deerler ald durumlarda yaplacak ilemler

End Select

NOT: Koul saysnn 4 den fazla olduu durumlarda i ie IF ya da Select Case yaps kullanlr. rnek 3.5: Girilen ya deerine gre kiinin durumunu aadaki kriterlere gre bulan program yaznz.

zm: Algoritmas;
1.Bala

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


2.Ya Deerini gir 3.Eer Girilen Ya Deeri 0 ile 5 arasnda ise Bebek 4.Deilse-Eer 5 ile 14 arasnda ise ocuk 5.Deilse-Eer 15 ile 35 arasnda ise Gen 6.Deilse-Eer 36 ile 45 arasnda ise Orta Yal Deilse htiyar Yaz 7.Dur

Algoritmasn oluturduumuz program 3 farkl komut yaps ile Visual Basic dilinde kodunu yazarsak; a) ie IF / THEN / ELSE kullanarak
Dim yas As Integer yas = Val(InputBox("Ya giriniz")) If yas >= 0 And yas <= 5 Then Print "Bebek" ElseIf yas > 5 And yas <= 14 Then Print "ocuk" ElseIf yas > 15 And yas <= 35 Then Print "Gen" ElseIf yas > 35 And yas <= 45 Then Print "Orta Yal" Else Print "htiyar" End If

b) Select Case Deyimini kullanarak;


Cls yas = Val(InputBox("Ya Giriniz")) Select Case yas Case 0 To 5: Print "BEBEK" Case 6 To 14 MsgBox("OCUK") Case 15 To 35: Print "GEN" Case 36 To 45: Print "ORTA YALI" Case Else Print "HTYAR"

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


End Select

c) Switch komutunu kullanarak (Visual Basic 2010 da kaldrld);


Cls Dim yas as integer, sonuc as string yas = Val(InputBox("Ya Giriniz")) Sonuc = Switch(yas <= 5, "BEBEK",yas <= 15, "OCUK", yas <= 35, "GEN", _ yas <= 45, "ORTA YALI", yas > 45, "HTYAR") Print Sonuc

NOT: Visual Basic dilinde kod yazm bir alt satrdan itibaren devam edecekse boluk ve _ iareti konur.

Choose FONKSYONU: kiden fazla oklu seimlerde IF /THEN/ELSE veya IIF yerine
choose fonksiyonu kullanlabilir c). Kullanm ekli: Choose (Deiken, birinci deer, ikinci deer, nc deer, )

rnek 3.6: Girilen ay numarasna gre ayn ismini yazan program

Dim ay As Integer, sonuc As String ay = Val(InputBox("ay deerini giriniz")) sonuc = Choose(ay, "Ocak", "ubat", "Mart", "Nisan", "Mays", "Haziran", "Temmuz", "Austos", "Eyll", "Ekim", "Kasm", "Aralk") MsgBox(sonuc)

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

10

rnek : Select Case komutlar ile drt ilem yapan program yaznz. zm:
Sub Main() Dim sayi1, sayi2 As Integer Dim sonuc As Single Dim islec As String sayi1 = Val(InputBox("birinci sayi")) sayi2 = Val(InputBox("ikinci sayi")) islec = InputBox("ilem operatotorunu giriniz") Select Case islec Case "+" : sonuc = sayi1 + sayi2 Case "-" : sonuc = sayi1 - sayi2 Case "*" : sonuc = sayi1 * sayi2 Case "/" : sonuc = sayi1 / sayi2 Case "^" : sonuc = sayi1 ^ sayi2 End Select MsgBox("sonuc=" & sonuc) End Sub

Uygulama rnei: Aadaki hesap makinesini gerekletiriniz.

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


zm:
Public Class Form1 Dim sayi1 As Single Dim sayi2 As Single Dim sonuc As Double Dim islec As String

11

Private Sub cmd0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd0.Click text1.Text = text1.Text & "0" End Sub Private Sub cmd1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd1.Click text1.Text = text1.Text & "1" End Sub Private Sub cmd2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd2.Click text1.Text = text1.Text & "2" End Sub Private Sub cmd3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd3.Click text1.Text = text1.Text & "3" End Sub Private Sub cmd4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd4.Click text1.Text = text1.Text & "4" End Sub Private Sub cmd5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd5.Click text1.Text = text1.Text & "5" End Sub Private Sub cmd6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd6.Click text1.Text = text1.Text & "6" End Sub Private Sub cmd7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd7.Click text1.Text = text1.Text & "7" End Sub Private Sub cmd8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd8.Click text1.Text = text1.Text & "8" End Sub Private Sub cmd9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd9.Click text1.Text = text1.Text & "9" End Sub Private Sub cmdEsit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEsit.Click

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


sayi2 = Val(text1.Text) Select Case islec Case "+" : sonuc = sayi1 Case "-" : sonuc = sayi1 Case "*" : sonuc = sayi1 Case "/" : sonuc = sayi1 Case "^" : sonuc = sayi1 End Select text1.Text = sonuc End Sub

12

+ * / ^

sayi2 sayi2 sayi2 sayi2 sayi2

Private Sub cmdTopla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTopla.Click sayi1 = Convert.ToSingle(text1.Text) text1.Clear() islec = "+" End Sub Private Sub cmdNokta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNokta.Click text1.Text = text1.Text & "." End Sub Private Sub cmdCikar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCikar.Click sayi1 = Convert.ToSingle(text1.Text) text1.Clear() islec = "-" End Sub Private Sub cmdUs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUs.Click sayi1 = Convert.ToSingle(text1.Text) text1.Clear() islec = "^" End Sub Private Sub cmdKarakok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdKarakok.Click text1.Text = Math.Sqrt(Val(text1.Text)) End Sub Private Sub cmdClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClear.Click text1.Clear() End Sub Private Sub cmdCarp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCarp.Click sayi1 = Convert.ToSingle(text1.Text) text1.Clear() islec = "*" End Sub Private Sub cmdBol_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBol.Click sayi1 = Convert.ToSingle(text1.Text) text1.Clear() islec = "/" End Sub

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


Private Sub cmdYuzde_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdYuzde.Click text1.Text = (Val(text1.Text)) / 100 End Sub End Class

13

TEKRARLI YAPILAR -DNGLER (REPETITION STRUCTURES - LOOPS)


Algoritma gelitirirken baz ilemleri srekli tekrarlanmamz gerekir. Tekrar edilen ilemleri gstermenin ya da ifade etmenin daha kolay ve anlalr bir yolu vardr, bu yola dng ya da tekrarl yaplar denir. Tekrarlama ileminin ka kez yaplacann batan belli olduu yaplara tekrar says belli olan dngler (fornext dngs gibi), tekrarlamann bitiinin koula bal olduu dier bir ifade ile koul gerekletii veya gereklemedii srece ilemlerin tekrar ettii yaplara tekrar says koula bal dngler ( Do While .. Loop, Do Until Loop dngleri gibi ) denir. rnek vermek gerekirse 1den 10a kadar saylar toplayan bir program yazdnzda 9 kez tekrarlama yaptryorsanz bu tekrarlama saysnn balangta belli olduu anlamna gelir. Ancak girilen say sfrdan farkl olduu srece saynn karesini alan bir programda tekrar saysn batan bilemeyiz.

TEKRAR SAYISI BELL OLAN DNGLER


Daha nceki blmlerde ilemleri tekrar etmek iin Saya kullanmtk. Saya deikenine balang deerini atadktan sonra artrma ya da azaltma ilemi yapyorduk ve sayacn son deerine ulap ulamadn her ilemden sonra kontrol ediyorduk. Dng yaplar bu ilemleri olduka basitletirmektedir. Tekrar saysnn batan belli olduu dnglere en gzel rnek For / Next dng yaplardr. Bu yapnn ak emas aada gsterilmitir.

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

14

ekil 3.5. Tekrar Says Belli Olan Dngler ( For / Next Deyimi ) Dng Sonu: Dng deikeninin son deere ulap ulamadn kontrol eder. Bir nevi dng yapsnn patronudur. Dng deikeni: Dng yapsnn tekrarnn denetlenmesi amac ile kullanlan deikendir. lk deer: Dng deikeninin alaca ilk deerdir. Son deer: Dng deikeninin alaca son deerdir. Art miktar: Dng Deikeninin ilk deerden son deere kadar alaca deerlerdeki art miktardr. Art miktar belirtilmez ise bu deer bir (1) kabul edilir. Tekrarlanan lemler: Dng ierisinde yaplan ilemlerdir.

For / Next Deyiminin Kullanm ekli;


FOR deiken= ilk deer TO Son deer [ Step Art Miktar ]* NEXT deiken
* Art Miktar ( STEP komutu ) istee baldr, belirtilmez ise artm miktar 1 kabul edilir

rnek 3.9a. 2 den 20 ye kadar olan ift saylar ekranda gsteren program dng ile yaznz. zm:
For s=2 to 20 Step 2 Print s; Next s

Komut satrlarn yazmamz yeterlidir.

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

15

NOT: Programn Ekran kts

eklindedir.

rnek 3.9b: 1 den 10 a kadar ift saylarn toplamn veren programn konsol uygulamas:
Sub Main() Dim i, t As Integer For i = 1 To 10 Step 2 t += i Next Console.WriteLine(t) Console.ReadKey() End Sub

NOT: For/Next dngsnden kmak iin Exit For deyimi kullanlr. rnek 3.10. Aadaki programn ekran kts ne olur.
Dim i As Integer For i = 1 To 10 If i = 6 Then Exit For End If Print i; Next i Print "dngden kldnda i deeri ="; i Dngden klyor

zm: Program normalde 1 den 10 kadar yazmas gerekirken i=6 deerine ulatnda dngden klr ve

Programn ekran kts

eklindedir

rnek 3.11. 5 defa ekrana HANZAR yazan program dng ile yapnz. zm:
Dim i As Integer For i = 1 To 5 Print "hanzar"

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


Next i

16

Ekran kts:

rnek 3.12. Dardan girilen saynn faktriyelini alan program yaznz. zm: Algoritmas;
1. Bala 2. Faktriyeli alnacak Sayy gir ( N ) 3. Faktriyel deikenini 1 e eitle (Fakt=1) 4. Dng olutur ( For I= 1 TO N ) 5. Dng ierisinde gerekleecek ilemi yaz. ( Fakt=Fakt * I ) 6. Dngy Sonlandr ( Next I ) 7. Sonucu gster ( Fakt ) 8. Dur

VB Dilinde Kodlanmas;
Dim n As Integer, fakt As Integer n = Val(InputBox("faktriyeli alnacak sayy giriniz")) fakt = 1 For i = 1 To n fakt = fakt * i Next i Print n; "!=" ; fakt

Programn Ekran kts;

5 says girildiinde yandaki sonu elde edilmitir. rnek 3.13. 0dan 100 e kadar olan tek saylarn toplamn bulan program yaznz. zm: Algoritmas ; Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


1. Bala 2. Toplam deikenini sfra eitle(Top=0) 3. Sadece tek saylar sayan Dngy balat (For a=1 to 100 step 2) 4. Tek saylar birbiri ile topla (Top=Top + a) 5. Dngy sonlandr ( Next a) 6. Toplam deeri ekranda gster 7. Dur

17

VB Dilinde Kodlanmas;
Cls Top=0 For a=1 To 100 Step 2 Top=Top+a Next a Print Toplam=; Top

Programn ekran kts; Toplam=2500 olarak elde ettik. rnek 3.14. Klavyeden girilen iki pozitif tamsaynn arpmn arpma operatr kullanlmadan bulan program yaznz. zm: Algoritmas ;
1. Bala 2. Toplama deikenini sfra eitle { Carp=0 } { S1, S2 } 3. Birbiri ile arplacak olan saylar gir 5. kinci sayy kendisiyle topla 6. Dngy sonlandr 8. Dur { Next I }

4. Dngy balat {1 den ilk sayya kadar -- For I= 1 To S1 } { Carp=Carp+S2 }

7.Toplam sonucunu ekrana yaz ( S1*S2=Carp)

VB Dilinde Kodlanmas;
Cls Dim Carp as integer, S1 as integer, S2 as integer, I as integer Carp=0 S1=Val( Inputbox( 1.Sayy Giriniz:))

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


S2=Val( Inputbox( 2.Sayy Giriniz:)) For I= 1 To S1 Carp=Carp+S2 Next I Print S1; * ; S2 ; = ; Carp

18

Program, rnein 3*4 ilemini, arpma operatrn kullanmadan 4 saysn 3 kez toplayarak gerekletirir.

rnek:
Dim numara = {125, 138, 156, 205, 308, 947} Dim dizi As Integer For Each dizi In numara Console.Write(dizi & " ") Next Console.ReadKey()

Programn ekran kts:

TEKRAR SAYISI KOULA BALI DNGLER


lemlerin ne kadar tekrarlanacann batan belli olmad ancak bir koulun doru ya da yanl olmasna bal olarak tekrar saysnn belirlendii bu dngleri, koul kontrolnn yapld yere gre ikiye ayrrz. Birincisinde program banda koul kontrol yaplr,

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

19

dierinde ise bir defa ilem yapldktan sonra koulun doru ya da yanl olmasna gre ilem tekrar yaplr. Koul denetiminin dng banda gerekletii yaplarda Do While / Loop, Do Until / Loop ve While / End While deyimleri kullanlrken, koul denetiminin bir defa ilem gerekletikten sonra yapld dnglerde Do / Loop While ve Do / Loop Until deyimleri kullanlr. Bu deyimlerin ak emalar ile gsterimi aada verilmitir.

ekil 3.6. Do / Loop dnglerinin Ak emalar ile gsterimi NOT: Do While / Loop dngs ile While / End While dngs ayn ileve sahiptir. Ancak While / End While dngs yerine daha hzl alan Do While / Loop dngs tercih edilir.

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


DO - LOOP DNGLERNN KULLANIM EKLLER
a) Do While (koul) (lemler) Loop

20

Srece < koul > yap (ilemler) Verilen koul doru olduu srece belirtilen ilemler tekrar Verilen koul doruilemi olduu srece belirtilen ilemler tekrar edilir. Koul kontrol dngnn banda yaplr. edilir. Koul kontrol ilemi dngnn banda yaplr.

b)

Do (lemler)

Tekrarla (ilemler) ta ki

<koul>

Bir defa ilem yapldktan sonra koul doru olduu srece dngnn sonunda yaplr.

Loop While (Koul) belirtilen ilemler tekrar edilir. Koul kontrol ilemi

c)

Do Until (Koul) (lemler) Loop Srece < koul > yap (ilemler) Verilen koul yanl olduu srece belirtilen ilemler tekrar edilir. Koul kontrol ilemi dngnn banda yaplr.

d)

Do (lemler) Loop Until (Koul)

Tekrarla (ilemler) ta ki

<koul>

Bir defa ilem yapldktan sonra koul yanl olduu srece belirtilen ilemler tekrar edilir. Koul kontrol ilemi dngnn sonunda yaplr.

NOT: While ifadesi koul doru olduu srece ilem yaplacan, Until ifadesi ise koul yanl olduu srece ilem yaplacan belirtir.

rnek 3.15. Aadaki programlarn ekran ktlarn dikkatle inceleyiniz.

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

21

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

22

NOT: Dng yaplarnda muhakkak dngden k gerekletirecek yani koulu salayacak bir ifade dng ierisinde bulunmaldr. Aksi takdirde program kt vermez, ksr dngye girer. rnek 3.16. Aadaki programn ekran kts ne olur.

Program normalde 1 den 10 kadar olan saylarn toplamn yapyor ancak deikenler ilk deerlerini aldktan sonra Exit Do ifadesi dngden kmamza neden olur ve Ekrana t nin deerini 1 olarak yazlr. Programdan Exit Do ifadesini karrsak ekrana 55 deerini yazar. NOT: Do / Loop dnglerinden kmak iin Exit Do deyimi kullanlr. rnek 3.18. Dardan girilen say sfrdan farkl olduu srece o saynn karesini alan program yaznz. zm: Algoritmas;
1. Bala 2. Dngy balat 3. Say gir 4. Karesini al (Kare=Sayi^2) 5. Sonucu ekranda gster 6. Dng kontrol yap (sayi <>0) 7. Dur

VB Dilinde Kodlanmas; Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

23

Dim sayi As Integer Do sayi = Val(InputBox("bir say giriniz")) Kare = sayi ^ 2 Print Kare Loop While sayi <> 0

E DNG KULLANIMI
Birden fazla dng ve kontrol yapsn i ie kullanabiliriz. Sralama, matris veya tablo gibi iki boyutlu ilemlerin yapld uygulamalarda sklkla i ie dngleri kullanrz. ie dng yaplar, bir dng ierisinde baka bir dng ya da dnglerin kullanld yaplardr. ie dnglere verebileceimiz en gzel rneklerden biri zaman sistemimizdir. Bir gn, 24 saatten, 1 saat 60 dakikadan, 1 dakika 60 saniyeden ibarettir ve hepsi i iedir. Zaman sisteminde en iteki dngy saniye temsil etmektedir. Saniye en son deerine ulatnda yani 60 deerini aldnda dtaki dng bir artar yani dakika bir artar. Dakika en son deerine ulatnda dtaki dng yani saat bir artar. Saat son deerine ulatnda yani 24 olduunda bir gn tamamlanm olur.

ekil 3.7. Bir yllk zaman dngmz Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

24

Zaman sistemimize dikkat edilirse, saniye tamamlanmadan dakika, dakika tamamlanmadan saat balamaz. Yani dakika saniyenin, saat dakikann nne gemez, birbirine karmaz. Benzer ekilde ie dng kurulurken dikkat edilmesi gereken en nemli nokta, iteki dng tamamen bitmeden dtaki dngye geilmemesidir. Yani dnglerin birbiri ile akmamasna dikkat edilmelidir.

ekil 3.8. ie For / Next Dngleri

ekil 3.9. ie Do/ Loop Dngleri NOT: ie dnglerde For / Next dngs ile Do / Loop dngleri birlikte kullanlabilir rnek 3.19. ekildeki arpm Tablosunu oluturup ekranda gsteren program yaznz. zm:

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

25

ie For / Next dnglerine en gzel rnek arpm tablosudur. teki dngnn her tamamlanndan sonra dtaki dng otomatik olarak bir artar. Dtaki dng deikeni i=1 iken iteki dng deikeni j, 1 den 10 a kadar deer alr. j=10 olduktan sonra i deikeni 2 deerini alr. i=2 iken j deikeni tekrar 1 den 10 a kadar deer alr ve bu ilem 10 kez tekrarlanr. Yani toplam 100 kez arpma ilemi gerekleir. Algoritmas; VB Dilinde Kodlanmas;

rnek 3.22. Aadaki ekran ktsn veren program yaznz.

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


Programn VB Dilinde Kodlanmas;
a = "BULENT" For i = 1 To Len(a) harf = Mid(a, i, 1) For j = 1 To i Print harf; Next j Print Next i

26

NOT: rneimizde MID komutu String bir ifadenin (a), istenilen bir karakterinden balamak zere (i), istenilen sayda (1) karakterini alr ve deikene (harf) aktarr.

Konsol Uygulama Kodu:


Dim a As String = "BULENT" Dim harf As Char For i = 1 To Len(a) harf = Mid(a, i, 1) For j = 1 To i Console.Write(harf) Next j Console.WriteLine() Next i Console.ReadKey()

rnek 3.23. Dardan girilen 8 adet say ierisinden pozitif ve negatif olanlarn saysn bulan program yaznz. zm: Algoritmas;
1) Bala 2) Pozitif ve negatif say deti deikenlerini (po, ne) sfra eitle. 3) Dngy balat {For i=1 to 8 } a) Say gir b) Eer girilen say sfrdan bykse po yu 1 artr {po=po+1} c) Eer girilen say sfrdan kkse ne yi 1 artr {ne=ne+1} 4) Dngy Sonlandr { Next i }

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I


5) Pozitif ve Negatif saylarn adedini ekrana yaz 6) Dur { po, ne }

27

VB Dilinde Kodlanmas;
Dim i As Integer, a As Integer , po As Integer, ne As Integer po = 0: ne = 0 For i = 1 To 8 a = Val(InputBox("sayi giriniz")) If a > 0 Then po = po + 1 End If If a < 0 Then ne = ne + 1 End If Next i Print "pozitif saylarn says..:"; po Print "negatif saylarn says..:"; ne

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

28

Diyalog Pencereleri
INPUTBOX fonksiyonu, kullancnn ekrandan bilgi giriini salar. Bu fonksiyonun genel formu aadaki ekildedir : INPUTBOX (Mesaj, Alacak formun bal, Giri kutusunda balangta bulunmas istenen deer, Giri formunun sol st kesinin X,Y koordinatlar) rnek: ad = InputBox("adinizi girin", "grenci girisi", "umit", 0, 0)

MessageBox.Show
Kullanm ekli: MessageBox.Show (Kullancya verilecek mesaj, Form Bal, Butonlar, kon, Varsaylan buton)

rnek:
MessageBox.Show("siralama yapildi", "ornek mesaj kutusu", 2, 64) veya Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009

r.Gr.Blent OBANOLU, Visual BASIC Ders Notlar-I

29

MessageBox.Show("siralama yapildi", "ornek mesaj kutusu", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Information)

rnek bir uygulama:


Bir kafedeki garsona sipari almada yardmc olacak bir program yazalm. { Baslan mesaj kutusundan alnan mesaja gre i yapan bir program olacak}
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If MessageBox.Show("Kahve stermisniz?", "VBasic Cafe", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = MsgBoxResult.Yes Then MessageBox.Show("Evet, isterim") Else MessageBox.Show("Hayr, teekkrler") End If Me.Close() End Sub End Class

Kaynaka: Algoritma Gelitirme ve Veri Yaplar, ISBN:9756477878 Yaynevi: Pusula Yaynclk, 3. Bask, Kasm. 2009