Merhaba arkadaşlar, bu yazımda diziler, dizilerin kullanım şekilleri, dizilere nasıl değer verilir kaç farklı şekilde diziye değer verilir ve dizilerle ilgili bilinmesi gereken diğer özellikler gibi temel konuları anlatacağım.
İlk önce dizi nedir, ne işe yarar, programlamada diziler bizlere ne gibi kolaylıklar sağlar diye sorular soracaksınız. Şimdi ise bu sorularımıza teker- teker cevap verelim.
Diziler, aynı tipteki değişkenleri bir arada tutmaya yarar. Bir örnek vermek istiyorum daha iyi anlaşılması için, elimizde 100 adet adres bilgisi var. Bu adres bilgilerini bilgisayarda tanımlarken, her adres bilgisi için farklı bir değişken tanımlamanız gerekiyor.
Kod:
Dim adres1 As String Dim adres2 As String Dim adres3 As String ... |
Düşünsenize sadece adres bilgileri için 100 satır kod yazacaksınız… Ne kadar yorucu bir iş öyle değil mi? Sırf adres bilgilerine yüz satır kod ayırmak hem yorucu bir iş hem de programcılığın mantığına aykırı bir harekettir.
İşte tam bu nokta da bizlerin yardımına diziler koşuyor. Bu adres bilgilerini yüz satırda tanımlamak yerine tek satırda tanımlayarak işi bitiriyoruz.
Kod:
Dim adres(99) As String |
hayır yanlış görmediniz, bu kadar
Aklınıza hemen şu soru gelecektir eminim:
- Ya kardeşim bizim yüz tane adresimiz yok muydu? E, sen burada doksan dokuz olarak tanımlamışsın. Neden yüz yazmadın da doksan dokuz yazdın?
Hemen açıklayayım . Arkadaşlar, diziler sıfırdan başlar. Sıfırı “Birinci eleman” olarak alıyoruz. Bu yüzden doksan dokuz yazdım
Şimdi gelelim dizileri nasıl tanımlayacağımıza. Dizilerin birden çok tanımlama yöntemi vardır. Bu tanımlama yöntemlerini görelim:
Kod:
Dim dizi(boyut) As Tipi Dim dizi(0 To boyut) As Tipi Dim dizi() As Tipi = New Tipi(boyut) {} |
Yukarıda da gördüğünüz gibi dizilerin üç farklı tanımlama yöntemi var.
Buraya kadar hiçbir sıkıntı yok değil mi? Gördüğünüz gibi çok basit bir tanımlama şekli var.
Dim ile dizi değişkenimizi tanımlıyoruz, sonra dizi değişkenimize bir isim veriyoruz, daha sonra dizimizin kaç boyutlu olacağına karar verdikten sonra tipini belirliyoruz.
Buraya kadar bir problem yok ise dizilere değer verme kısmına gelmek istiyorum…
Dizilere iki farklı şekilde değer verebiliyoruz arkadaşlar.
Örnekler üzerinden anlatmaya çalışacağım…
Bunlardan birincisi:
Kod:
Dim iller() As String = New String(3){} |
Arkadaşlar, yukarıda tanımladığım dizi Bir boyutlu Dört elemanlı bir dizidir.
Dizimizi tanımladık şimdi değerlerini verelim:
Kod:
iller(0) = "İstanbul" iller(1) = "Ankara" iller(2) = "İzmir" iller(3) = "Erzurum" |
Bakın gördüğünüz üzere dizilere değer vermenin de o kadar zor bir tarafı yok değil mi?
Tanımladığımız dizimizin adın yazıyoruz, daha sonra kaçıncı elemanına değer vermek istiyorsak onun indeks numarasını yazıyoruz ve eşittir deyip değerini veriyoruz…
Bunlardan ikincisi:
SetValue() fonksiyonu.
Kod:
Dim dizi(0 To 2) As String |
Dedik ve dizimiz tanımlandı.
Kod:
dizi.SetValue("İstanbul", 0) dizi.SetValue("İzmir", 1) dizi.SetValue("Ankara", 2) |
Bu biraz karışık görünebilir ancak bunun da zor bir yanı yok.
Tanımladığımız dizinin adını yazıyoruz ve nokta koyarak onun özelliklerinden “SetValue” yi seçiyoruz. Daha sonra değeri yazıp virgül koyup istediğimiz indeks numarasına değerimizi aktarıyoruz…
Arkadaşlar, dizilere değer vermeyi gördük. Dizilere değer verme olduğu gibi doğal olarak da dizilerin değerlerini silme de var. Şimdi dizilerin değerlerini nasıl sileceğimizi görelim. Yine örneklerle anlatacağım 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 |
Yukarıda bir boyutlu iki elemanlı bir dizi tanımladım. Altında tanımladığım diziye değerlerini verdim. Buraya kadar olan kısımları zaten yukarıda da göstermiştim. Daha sonra ise “Erase” fonksiyonunu kullanarak dizinin bütün değerlerini sildim.
Arkadaşlar, Erase fonksiyonu dizinin bütün elemanlarını, ne var ne yok hepsini siliyordu. Şimdi sizlere dizilerde istenilen indeks numarasının değerini silmeyi anlatmak istiyorum. Bunun için "Array" sınıfının "Clear()"metodunu kullanacağız. Aşağıdaki gibi dizinin istediğimiz değerini 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 başında String tipinde dört elemanlı ve bir boyutlu dizimizi tanımladık. Daha sonra dizimize değerlerini verdik. Daha sonra da Array sınıfının Clear metodunu kullanarak istediğim değeri sildim.
Bu nasıl oldu? Aynen şöyle oldu arkadaşlar: Array.Clear dedikten sonra parantez içine ilk önce tanımladığımız dizinin adını, daha sonra hangi elemanı silmek istiyorsak onun indeks numarasını ve sileceğimiz elemandan itibaren kaç satır silmek istediğimizi yazıyoruz.
Burası biraz karışık ama siz kendiniz evde ya da başka bir yerde bunun üstüne örnekler geliştirdikçe daha iyi kavrayacaksınız...
Arkadaşlar şimdi dizilerin yeni bir özelliğini anlatmak istiyorum. Dizileri Yeniden Boyutlandırma. Diziyi yeniden boyutlandırmanın da üç farklı yöntemi var. Örnekler üzerinden anlatacağım.
Bunlardan birincisi "ReDim" fonksiyonu:
ReDim ile sadece boyuttaki eleman sayısını değiştirebilirsiniz. Bu özellikle Boyut sayısı değiştirilemez!
Kod:
Dim dizi(2, 2) As String ReDim dizi(4, 4) dizi(4, 4) = "ankara" MsgBox(dizi(4, 4)) |
Şimdi bunu açıklayayım:
“dizi” adında iki boyutlu bir dizi tanımladım. Bu dizinin birinci boyutunda üç eleman ve ikinci boyutunda da aynı şekilde üç eleman bulunmakta ve toplamda altı elemanımız var. Alt satır da "ReDim" fonksiyonu ile dizinin eleman sayısını değiştirdim. dizi(4,4) olmasını istedim.
Bakın "ReDim"i açıklarken de dediğim gibi, "ReDim" ile boyuttaki eleman sayısını değiştirebilirsiniz. Boyut sayısı değiştirilemez. Daha sonrasında da diziye değer verip ekranda görünmesini istedim.
Bunlardan ikincisi "Array.ReSize" fonksiyonu:
Dizileri yeniden boyutlandırmada kullandığımız ikinci yöntem, Array sınıfının ReSize metodu. Bu metot ile sadece bir boyutlu dizileri yeniden boyutlandırabiliyorsunuz. "ReDim"de de olduğu gibi bunda da dizinin boyut sayısı değiştirilemez. Sadece boyuttaki eleman sayısı değiştirilebilir. Bir örnek verelim.
Kod:
Dim dizi(1) As String Array.Resize(dizi, 2) dizi(2) = "GündemPC.Com" MsgBox(dizi(2)) |
“dizi” adında bir boyutlu iki elemanlı bir dizi tanımladım. Daha sonra bu diziyi yeniden boyutlandırmak için Array sınıfının ReSize metodunu kullandım. Dizimiz artık bir boyutlu üç elemanlı. Daha sonra da bu dizimize değer verip ekranda gösterdim.
Bunlardan üçüncüsü "CreateInstance" metodu:
Dizileri yeniden boyutlandırmada kullandığımız üçüncü yöntem ise Array sınıfının "CreateInstance" metodu. Bu "CreateInstance"nin yanında "GetType" fonksiyonu nu da kullanacağız. Hemen bir örnekle açıklayayım:
Kod:
Dim dizi As Array dizi = Array.CreateInstance(GetType(String), 2) dizi(0) = "İstanbul" dizi(1) = "Ankara" |
Şimdi buraya baktığınızda gayet normal bir görüntü görebilirsiniz ama biraz daha dikkatli baktığınızda burada dizimizi üç boyutlu olarak tanımladığımızı ve altında da diziye değer verirken bir elemana değer vermediğimiz göreceksiniz.
Ta en başta dizileri tanımlarken söylediğim ”Diziler sıfırdan başlar” kuralı burada geçerli değildir arkadaşlar.
Gördüğünüz gibi dizimizi tanımladık daha sonra Array sınıfının "CreateInstance" metodu ile birlikte "GetType" fonksiyonunu kullanarak dizimizi String tipinde bir boyutlu iki elemanlı olarak boyutlandırdık.
Parantez içine dizi değişkenin tipini yazıyoruz ve daha sonra kaç boyutlu olacağına karar veriyoruz. Daha sonra da değerlerini verdik.
Şimdi dizilerle ilgili yeni bir özelliği anlatmak istiyorum arkadaşlar. Dizi değişkenin eleman sayısını bulma.
Dizi değişkenin eleman sayısını bulurken dizinin kaç boyutlu olduğunu bilmemiz gerekir. Eğer dizinin boyutu iki boyuttan fazla ise iş biraz karışıyor.
Şimdi bir boyutlu dizinin eleman sayısını bulma ile başlayalım.
Dizi değişkeniminiz kaç elemanlı olduğunu öğrenmek için "Lenght" fonksiyonunu kullanacağız. Örnekler üzerinden anlatayım.
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) |
Şimdi yazdığım kodların açıklamasını yapayım.
“dizi” adında bir boyutlu dört elemanlı bir dizi tanımladık. Daha sonra "SetValue" fonksiyonu ile değerlerini verdik. Dizimizin kaç elemanlı olduğunu görmek için, "MsgBox"’la beraber "Lenght" fonksiyonunu kullandık…
Bir boyutlu dizinin eleman sayısını bulmada bir sıkıntı yoktur umarım. Sorunuz varsa da sorabilirsiniz.
Şimdi iki boyutlu dizinin eleman sayısını bulmayı görelim.
İki boyutlu dizinin eleman sayısını bulurken yine aynı şekilde "Lenght" fonksiyonunu kullanacağız. Kodlar aynı ancak iki boyutlu dizinin eleman sayısını bulurken mantığımız farklı. Buyurun…
Kod:
Dim dizi(0 To 3, 0 To 3) As Integer MsgBox(dizi.Lenght) |
"dizi" adında iki boyutlu bir dizi tanımladım. Dizimizin ilk boyutunda dört eleman var. İkinci boyutunda da dört eleman var. Sizce bu dizi kaç elemanlıdır? Bu dizi 16 elemanlıdır.
Neden sekiz değil de on altı elemanlı diyeceksiniz.
Bakın arkadaşlar, dizileri satır ve sütunlar olarak düşünebilirsiniz. Dizi bir boyutlu ise sadece satırdan oluşur. Eğer iki ve daha fazla boyutlu ise satırın altına bir satır daha eklendiğinden sütunlar oluşur.
Dizimizin ilk boyutunda dört satır ve dört sütun var, aynı şekilde ikinci boyutunda da dört satır ve dört sütun var. Hepsini toplarsanız zaten kaç elemanlı olduğunu öğrenmiş olursunuz.