VisualBasic .NET ile Diziler

Merhaba arkadaslar, bu yazimda diziler, dizilerin kullanim sekilleri, dizilere nasil deger verilir kaç farkli sekilde diziye deger verilir ve dizilerle ilgili bilinmesi gereken diger özellikler gibi temel konulari anlatacagim.

Ilk önce dizi nedir, ne ise yarar, programlamada diziler bizlere ne gibi kolayliklar saglar diye sorular soracaksiniz. Simdi ise bu sorularimiza teker- teker cevap verelim.

Diziler, ayni tipteki degiskenleri bir arada tutmaya yarar. Bir örnek vermek istiyorum daha iyi anlasilmasi için, elimizde 100 adet adres bilgisi var. Bu adres bilgilerini bilgisayarda tanimlarken, her adres bilgisi için farkli bir degisken tanimlamaniz gerekiyor.

Kod:

Dim adres1 As String

Dim adres2 As String

Dim adres3 As String

 

Düsünsenize sadece adres bilgileri için 100 satir kod yazacaksiniz… Ne kadar yorucu bir is öyle degil mi? Sirf adres bilgilerine yüz satir kod ayirmak hem yorucu bir is hem de programciligin mantigina aykiri bir harekettir.

Iste tam bu nokta da bizlerin yardimina diziler kosuyor. Bu adres bilgilerini yüz satirda tanimlamak yerine tek satirda tanimlayarak isi bitiriyoruz.

Kod:

Dim adres(99) As String

 

hayir yanlis görmediniz, bu kadar

Akliniza hemen su soru gelecektir eminim:

             Ya kardesim bizim yüz tane adresimiz yok muydu? E, sen burada doksan dokuz olarak tanimlamissin. Neden yüz yazmadin da doksan dokuz yazdin?

Hemen açiklayayim . Arkadaslar, diziler sifirdan baslar. Sifiri “Birinci eleman” olarak aliyoruz. Bu yüzden doksan dokuz yazdim

Simdi gelelim dizileri nasil tanimlayacagimiza. Dizilerin birden çok tanimlama yöntemi vardir. Bu tanimlama yöntemlerini görelim:
.

Kod:

Dim dizi(boyut) As Tipi

Dim dizi(0 To boyut) As Tipi

Dim dizi() As Tipi = New Tipi(boyut) {}

 

Yukarida da gördügünüz gibi dizilerin üç farkli tanimlama yöntemi var.

Buraya kadar hiçbir sikinti yok degil mi? Gördügünüz gibi çok basit bir tanimlama sekli var.

Dim  ile dizi degiskenimizi tanimliyoruz, sonra dizi degiskenimize bir isim veriyoruz, daha sonra dizimizin kaç boyutlu olacagina karar verdikten sonra tipini belirliyoruz.

Buraya kadar bir problem yok ise dizilere deger verme kismina gelmek istiyorum…

Dizilere iki farkli sekilde deger verebiliyoruz arkadaslar.

Örnekler üzerinden anlatmaya çalisacagim…

Bunlardan birincisi:

 

Kod:

Dim iller() As String = New String(3){}

 

Arkadaslar, yukarida tanimladigim dizi Bir boyutlu Dört elemanli bir dizidir.

Dizimizi tanimladik simdi degerlerini verelim:

Kod:

iller(0) = "Istanbul"

iller(1) = "Ankara"

iller(2) = "Izmir"

iller(3) = "Erzurum"

 

Bakin gördügünüz üzere dizilere deger vermenin de o kadar zor bir tarafi yok degil mi?

Tanimladigimiz dizimizin adin yaziyoruz, daha sonra kaçinci elemanina deger vermek istiyorsak onun indeks numarasini yaziyoruz ve esittir deyip degerini veriyoruz…

Bunlardan ikincisi:

SetValue() fonksiyonu.

Kod:

Dim dizi(0 To 2) As String

 

Dedik ve dizimiz tanimlandi.

Kod:

dizi.SetValue("Istanbul", 0)

dizi.SetValue("Izmir", 1)

dizi.SetValue("Ankara", 2)

 

Bu biraz karisik görünebilir ancak bunun da zor bir yani yok.

Tanimladigimiz dizinin adini yaziyoruz ve nokta koyarak onun özelliklerinden “SetValue” yi seçiyoruz. Daha sonra degeri yazip virgül koyup istedigimiz indeks numarasina degerimizi aktariyoruz…

Arkadaslar, dizilere deger vermeyi gördük. Dizilere deger verme oldugu gibi dogal olarak da dizilerin degerlerini silme de var. Simdi dizilerin degerlerini nasil silecegimizi görelim. Yine örneklerle anlatacagim ki size de pratik olsun. Kuru-kuru anlatmakla olmaz

 

Kod:

Dim dizi() As String = New String(1) {}

dizi(0) = "Adres"

dizi(1) = "Tarih"

Erase dizi

 

Yukarida bir boyutlu iki elemanli bir dizi tanimladim. Altinda tanimladigim diziye degerlerini verdim. Buraya kadar olan kisimlari zaten yukarida da göstermistim. Daha sonra ise “Erase” fonksiyonunu kullanarak dizinin bütün degerlerini sildim.

Arkadaslar, Erase fonksiyonu dizinin bütün elemanlarini, ne var ne yok hepsini siliyordu. Simdi sizlere dizilerde istenilen indeks numarasinin degerini silmeyi anlatmak istiyorum. Bunun için "Array" sinifinin "Clear()"metodunu kullanacagiz. Asagidaki gibi dizinin istedigimiz degerini silebiliyoruz:

Kod:

Dim dizi() As String = New String(3) {}

dizi.SetValue("Asp", 0)

dizi.SetValue(“Php”1,)

dizi.SetValue("CSS", 2)

dizi.SetValue("HTML", 3)

Array.Clear(dizi, 2, 1)

 

Kod bölümünün en basinda String tipinde dört elemanli ve bir boyutlu dizimizi tanimladik. Daha sonra dizimize degerlerini verdik. Daha sonra da Array sinifinin Clear metodunu kullanarak istedigim degeri sildim.

Bu nasil oldu? Aynen söyle oldu arkadaslar: Array.Clear dedikten sonra parantez içine ilk önce tanimladigimiz dizinin adini, daha sonra hangi elemani silmek istiyorsak onun indeks numarasini ve silecegimiz elemandan itibaren kaç satir silmek istedigimizi yaziyoruz.

Burasi biraz karisik ama siz kendiniz evde ya da baska bir yerde bunun üstüne örnekler gelistirdikçe daha iyi kavrayacaksiniz…

Arkadaslar simdi dizilerin yeni bir özelligini anlatmak istiyorum. Dizileri Yeniden Boyutlandirma. Diziyi yeniden boyutlandirmanin da üç farkli yöntemi var. Örnekler üzerinden anlatacagim.

Bunlardan birincisi "ReDim" fonksiyonu:

ReDim ile sadece boyuttaki eleman sayisini degistirebilirsiniz. Bu özellikle Boyut sayisi degistirilemez!

Kod:

Dim dizi(2, 2) As String

ReDim dizi(4, 4)

dizi(4, 4) = "ankara"

MsgBox(dizi(4, 4))

 

Simdi bunu açiklayayim:

“dizi” adinda iki boyutlu bir dizi tanimladim. Bu dizinin birinci boyutunda üç eleman ve ikinci boyutunda da ayni sekilde üç eleman bulunmakta ve toplamda alti elemanimiz var. Alt satir da "ReDim" fonksiyonu ile dizinin eleman sayisini degistirdim. dizi(4,4) olmasini istedim.

Bakin "ReDim"i açiklarken de dedigim gibi, "ReDim" ile boyuttaki eleman sayisini degistirebilirsiniz. Boyut sayisi degistirilemez. Daha sonrasinda da diziye deger verip ekranda görünmesini istedim.

Bunlardan ikincisi "Array.ReSize" fonksiyonu:

Dizileri yeniden boyutlandirmada kullandigimiz ikinci yöntem, Array sinifinin ReSize metodu. Bu metot ile sadece bir boyutlu dizileri yeniden boyutlandirabiliyorsunuz. "ReDim"de de oldugu gibi bunda da dizinin boyut sayisi degistirilemez. Sadece boyuttaki eleman sayisi degistirilebilir. Bir örnek verelim.

Kod:

Dim dizi(1) As String

Array.Resize(dizi, 2)

dizi(2) = "GündemPC.Com"

MsgBox(dizi(2))

 .

“dizi” adinda bir boyutlu iki elemanli bir dizi tanimladim. Daha sonra bu diziyi yeniden boyutlandirmak için Array sinifinin ReSize metodunu kullandim. Dizimiz artik bir boyutlu üç elemanli. Daha sonra da bu dizimize deger verip ekranda gösterdim.

Bunlardan üçüncüsü "CreateInstance" metodu:

Dizileri yeniden boyutlandirmada kullandigimiz üçüncü yöntem ise Array sinifinin "CreateInstance" metodu. Bu "CreateInstance"nin yaninda "GetType" fonksiyonu nu da kullanacagiz. Hemen bir örnekle açiklayayim:

Kod:

Dim dizi As Array

dizi = Array.CreateInstance(GetType(String), 2)

dizi(0) = "Istanbul"

dizi(1) = "Ankara"

 

Simdi buraya baktiginizda gayet normal bir görüntü görebilirsiniz ama biraz daha dikkatli baktiginizda burada dizimizi üç boyutlu olarak tanimladigimizi ve altinda da diziye deger verirken bir elemana deger vermedigimiz göreceksiniz.

Ta en basta dizileri tanimlarken söyledigim ”Diziler sifirdan baslar” kurali burada geçerli degildir arkadaslar.

Gördügünüz gibi dizimizi tanimladik daha sonra Array sinifinin "CreateInstance" metodu ile birlikte "GetType" fonksiyonunu kullanarak dizimizi String tipinde bir boyutlu iki elemanli olarak boyutlandirdik.

Parantez içine dizi degiskenin tipini yaziyoruz ve daha sonra kaç boyutlu olacagina karar veriyoruz. Daha sonra da degerlerini verdik.

Simdi dizilerle ilgili yeni bir özelligi anlatmak istiyorum arkadaslar. Dizi degiskenin eleman sayisini bulma.

Dizi degiskenin eleman sayisini bulurken dizinin kaç boyutlu oldugunu bilmemiz gerekir. Eger dizinin boyutu iki boyuttan fazla ise is biraz karisiyor.

Simdi bir boyutlu dizinin eleman sayisini bulma ile baslayalim.

Dizi degiskeniminiz kaç elemanli oldugunu ögrenmek için "Lenght" fonksiyonunu kullanacagiz. Örnekler üzerinden anlatayim.

Kod:

Dim dizi() As String = New String(3) {}

dizi.SetValue("ASP", 0)

dizi.SetValue("PHP", 1)

dizi.SetValue("VB .NET", 2)

dizi.SetValue("CSharp,3")

MsgBox(dizi.Lenght)

 

Simdi yazdigim kodlarin açiklamasini yapayim.

“dizi” adinda bir boyutlu dört elemanli bir dizi tanimladik. Daha sonra "SetValue" fonksiyonu ile degerlerini verdik. Dizimizin kaç elemanli oldugunu görmek için, "MsgBox"’la beraber "Lenght" fonksiyonunu kullandik…

Bir boyutlu dizinin eleman sayisini bulmada bir sikinti yoktur umarim. Sorunuz varsa da sorabilirsiniz.

Simdi iki boyutlu dizinin eleman sayisini bulmayi görelim.

Iki boyutlu dizinin eleman sayisini bulurken yine ayni sekilde "Lenght" fonksiyonunu kullanacagiz. Kodlar ayni ancak iki boyutlu dizinin eleman sayisini bulurken mantigimiz farkli. Buyurun…

Kod:

Dim dizi(0 To 3, 0 To 3) As Integer

MsgBox(dizi.Lenght)

"dizi" adinda iki boyutlu bir dizi tanimladim. Dizimizin ilk boyutunda dört eleman var. Ikinci boyutunda da dört eleman var. Sizce bu dizi kaç elemanlidir? Bu dizi 16 elemanlidir.

Neden sekiz degil de on alti elemanli diyeceksiniz.

Bakin arkadaslar, dizileri satir ve sütunlar olarak düsünebilirsiniz. Dizi bir boyutlu ise sadece satirdan olusur. Eger iki ve daha fazla boyutlu ise satirin altina bir satir daha eklendiginden sütunlar olusur.

Dizimizin ilk boyutunda dört satir ve dört sütun var, ayni sekilde ikinci boyutunda da dört satir ve dört sütun var. Hepsini toplarsaniz zaten kaç elemanli oldugunu ögrenmis olursunuz.

Evet arkadaslar. Bu makalemi burada bitirmek istiyorum. Insallah yardimci olabilmisimdir.

Ihsan ÖLMEZ

10 thoughts on “VisualBasic .NET ile Diziler

  1. iölmez resule laf soyleyecegine banami soyluyorsun. ben suursuzca yorum yazan resule laf soyluyorum sende bana 🙂 hehe komik

  2. Gezgin, çok tesekkür ederim. Çok önemli bir konuyu gündeme getirdin.

    Gezgin neden böyle oluyor biliyor musun? Insanlar elestirinin ne oldugunu bilmedikleri için saga sola satasiyorlar, karsida ki kisinin nasil bir yikima ugradiklarini hesaba katamiyorlar.

    Elestiri YAPICI oldugu takdirde iyidir. Insan iliskileri çok hassastir ve buna çok dikkat edilmesi gerekir. Sen ve daha bir çok kisi suursuzca hareket ediyorlar, yapacagin seyi yapmadan önce 5 saniye düsün bakalim :"Bunu yaparsam sonuç ne olur?" diye.
     

    Sen ve senin gibiler suursuzca ve yikici elestiriler yaptigi sürece ülkemizde ki parlak yildizlar kayip gidecek, insanlarin sevkini kiriyorsunuz..

  3.  bu nasil bir sitedir ne yaziyorum siz ne yayimliyorsunuz isde bu yüzden de avrupadan geriyiz

  4. resul bey neden geriyiz biliyormusun. senin gibiler sadece elestiri yapiyor ama hiç bir ise yaramiyorlarda ondan. burda insanlar en azindan bir seyler paylasiyorlar. eger sende bu isi biliyorsan yaz makaleni paylas insanlarla. sanirim bu sitede makale yayinlamak serbest. bos bogazlilik yapma bence

  5.  bu nasil bir sitedir ne yaziyorum siz ne yayimliyorsunuz isde bu yüzden de avrupadan geriyiz

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir