· Dizi değişkenleri, aynı tipte birçok veriyi bir arada tutmayı sağlar.
· Benzer işlemlerde kullanılan değişkenler bir dizi altında listelenebilir.
· Birden fazla boyutlu olabilir.
· Dizi değişkeni tanımlamak için değişken adından sonra parantez içinde yazılan sayısal değer ile kaç adet değişkenin olması gerektiğini belirtiriz.
Örn: Dim personel(4) as integer bu şekilde tanımlanan değişkenlere dizi değişken denir. Örnekte parantez içinde tanımladığım 4 sayısı diğer programlama dillerinde 4 elemanlı dizi değişken anlamına gelebilir bu durum vbasic de farklıdır ve 5 elemanlı dizi değişkeni olarak bilinir. Yani örnekte 5 elemanlı personel dizisi tanımladım. Çünkü vbasic de dizi değişkenlerde ilk elemanın sıra numarası 0 dır. Örneğin 5 elemanlı personel dizi sinin ilk elemanına değer aktarmak istersem;
Personel(0)=”esin” şeklinde ilk elemanın değeri “esin” oldu. Aşağıdaki örnekte diğer elemanlara da değer aktardım ve sonucu mesaj kutusunda gösterdim.

Yukarıdaki örnekte tek tek değer aktardım elemanlara. Aynı şekilde diziyi tanımlarkende elemanlara ilk değer verilebilir.
Dizi değişkenlerinde elemanların farklı tiplerde bilgiler içermesini istiyorsak dizi değişkenin tipini object olarak seçebiliriz.
Tanımlanan bir değişkenin dizi olup olmadığını kontrol etmek istersek vbasic kütüphanesinde bulunan IsArray() metodunu kullanabiliriz. Bu metod geriye boolean tipinde true/false değerlerini gönderir. Değişkenimiz dizi ise True aksi halde geriye false değerini gönderir.

String değişkenler metinsel veri anlamının yanında aynı zamanda char tipinde veriler tutan dizi değişkenlerdir diyebiliriz. Aşağıdaki örnekte string bilgiyi char tipinde dizi değişkenine aktardım. İsim adında string değişkene “esin” degerini verdim. Char tipinde karakter isminde dizi tanımladım ve boyutunu isim değişkeninin uzunluğunu verdim ve 1 eksilttim. Çünkü uzunluk 4 dür fakat dizilerde baslangıc numarası 0 dır bu yüzden 1 eksilttim. Bir döngü oluşturup isim dizisindeki karakterleri char tipindeki karakter dizime aktardım sonrada ekrana tek tek karakter dizisinin elemanlarının değerlerini alt alta yazdırdım.

SetValue Metodu : Dizi değişkenlere SetValue metodu ile de bilgi aktarabiliriz. Bu metod istenilen bilgi ve sıra numarası olmak üzere 2 parametre kullanır.;
GetBytes() Metodu: Parametre olarak aldığı string değişkenin içerdiği bilgiye bağlı olarak byte dizisini boyutlandırır. Aşağıdaki örnekte personel adında string değişkene “esin” değerini verdim. Ve bu bilgiyi byte dizisine aktardım. Aktarırken getbytes metodu ile okudum ve bu metod; bilgiyi byte cinsinden okudu ve dizimizi boyutlandırdı. Sonrada ekrana ascii kodunu ve ascii koda denk gelen karakteri char metodu ile ekrana yazdırdım.
Dizileri tek tanımladığımız gibi birkaç boyutlu da tanımlayabiliriz. Bir işyerinin finans ve muhasebe departmanı çalışanlarını ele alalım. Finans departmanında 3 personel var iken, muhasebe departmanında 4 personel, Toplam departman sayımız 2, maximum bir departmanda calısacak eleman sayısı 6 olsun. Dizimizi tanımlarken Dim dizi(departmansayisi,maxelemansayisi) şeklinde yani (1,5) şeklinde aşağıdaki gibi tanımlama yapacağız.
ReDim ve Preserve: Dizileri tanımladıktan sonra, programın çalışma anında eleman sayısı yeterli olmayabilir. Bu gibi durumda tekrar boyutlandırmaya ihtiyaç duyarız. Yukarıdaki örneğimizde eleman sayımız 6 idi. Çalışma esnasında 10 yapmak istersek bu ifadeyi kullanırız. Fakat bu ifadeyi tek başına kullanırsak dizideki değerler korunmayacaktır. Bu değerleri korumak için preserve anahtar kelimesi ile tekrar boyutlandırırız. Aşağıdaki örnekte dizinin eleman sayısını yeniden belirledim ve 0.elemanın değerini ekrana yazdırdım. Sonuc olarak preserve deyimini kullandığım için 0.eleman nothing gelmedi.
Dizi Özellikleri ve Metodları : Diziler, .net framework içinde tanımlı Array sınıfında yer alır. Ve array sınıfındaki tanımlı özellikleri ve metodları kullanırlar.
.length: Dizinin bütün boyutlarındaki eleman sayısını verir.
Örn: dim personel(5) as string ‘sonuç:6 verir.
Dim personel(2,5) as string ‘ sonuc:18 verir.
.Rank: Personel.rank ‘ sonuc:2 verir.
.GetLength: Index i verilen boyutun kaç elemanlı oldugunu gösteririr.
Personel(getlength(1) ‘sonuc:6 verir.
.Clear:Parametresinde belirtilen dizinin, belirtilen index aralığında temizleme yapar. 2.parametresi ilk index, 3. parametresi son index anlamındadır. Bu metod ile silinen bilgilerde tip string ise boşluk, sayı ise 0, boolean ise false geriye döner.
.Reverse: Parametresinde belirtilen dizinin eleman sırasını tersine çevirir.
.Copy: Dizi elemanlarının içeriklerini başka bir diziye aktarmak için kullanılır 1.parametresi:kopyalanacak dizi, 2.parametresi:hangi diziye kopyalanacak, 3.parametre: kopyalanacak diziden alınacak eleman sayısı. Aşağıdaki örnekte aynı tipten dizi tanımladım. Kaynak diziden 2 eleman aldım ve 3 elemanlı dizi2 dizisine kopyaladım ve dizi2 deki elemanları ekrana gösterdim.
. Dizideki istediğimiz elemanları kopyalamak istersek ;aşağıdaki örnekte dizi adlı diziden 3. elemandan başlayarak hedef dizi2 nin 0. ve 1. elemanlarına kopyala dedim. Dizi değişkenimiz 3 elemanlı olduğu için 1 tane eleman kopyalanacaktır. Ve dizi2 değişkenimizin 0. elemanına aktarılacaktır.
Copy metoduna benzer CopyTo metodu da; kaynak diziyi hedef diziye ilk elemanından itibaren kopyalar. Örn:Dizi.CopyTo(dizi2,0)
.Ubound & GetUpperBound: ubound(dizi) dizinin en son eleman sıra numarasını verir. Dizi.getupperbound(boyut)
.GetLength: Çok boyutlu dizilerde belirtilen boyutun eleman sayısını gösterir.
Dim dizi:(4,5,7) as integer
Dizi.getlength(2) sonuc:8 dir.
.GetLowerBound & .GetUpperBound: lowebound dizinin ilk sıra numarasını upper ise son numarasını verir.
Dim dizi:(4,5,7) as integer
Dizi.getlowerbound(0) sonuc 0 dır. Dizi.getupperbound(0) sonuc 2 dir.
Sıralama(sort): Dizi değişkenlerini A dan Z ye sıralamak için array sınıfının sort metodunu kullanabiliriz.
.BinarySearch Metodu: Dizi içinde bilgi aramak için kullanılır. Aradığımız bilgi dizi elemanlarında yoksa geriye -1 döner, var ise; geriye dizi elemanının sıra numarasını geriye döner. BinarySearch metodunun çalışması için ilk önce sort metodu ile sıralama yapmalıyız. Bu metod sıralanmış dizilerde arama yapar.
.indexOf Metodu: BinarySearch yerine tercih edilebilir. BinarySearch de sort yapmamız gerekirken indexOf metodunda sort yapmak zorunlu değildir. Aradığımız bilgi dizi elemanlarında yoksa geriye -1 döner, var ise; geriye dizi elemanının sıra numarasını geriye döner.
.lastindexOf Metodu: Dizi değişkenlerde içeriği aynı olan var ise; son elemanın sıra numarasını geriye döner.
String.join Metodu: Dizi değişkenlerinin içeriğini birleştirmek için kullanılır. 2 parametreye sahiptir. 1. parametre dizinin elemanlarını belirlediğimiz karakter ile birbirinden ayırır. 2.parametresi ise dizi değişkenimizin ismi. Join metodu dizideki tüm elamanları birleştirilmiş olarak geriye döner.
Dizi değişkenlerde Structure yapısı ile farklı veri tipleri kullanmak:
STRUCTURE: Structure veri tipleri; programcıların tanımladığı veri tipleridir. Birkaç veri tipinin bir araya gelmesiyle oluşan birleşik tipde verilerdir.
Aşağıda hazırladığım örnekte personel isminde structure yapı oluşturdum. Bu yapıda personelin adı ve boyu bulunmakta. Ad değişkeninin veri tipi string iken, boy değişkenin veritipini double yaptım. Listele isminde bir metod hazırladım. Listele Metodunun görevi kendisine parametre olarak gelen dizi değişkenin uzunlugunu alıp elemanlarını ekrana listeler.Bu metoda parametre olarak listeleyeceğim birleşik veri tipine (structure) sahip dizi değişkeni belirtip ekranda göstereceğim. Oluşturduğum personel (structure) yapıdan 2 elemanlı bir kisi isminde dizi oluşturup bunlara değerlerini belirttim. Ve hazırladığım metodla listeledim.
Jagged(düzensiz diziler) : Çok boyutlu dizilerde her boyutun eleman sayısının farklı olması anlamındadır. Aşağıdaki örnekde elemanların değerlerine nasıl ulaşacağımızı görüyoruz. 3 adet integer tipinde dizi hazırladım. Her birinin eleman sayısı biribirinden farklı. Ve bu dizileri çok boyutlu tümdegerler adı altında bir dizi değişkene aktardım aynı zamanda dizimiz 3 boyutlu olmuş olacak. Boyut sayısına göre döngüye girdim ve bu döngü içindeki dizileri 2. bir döngüyle dolaşarak elemanların değerlerini mesaj isminde string değişkene aktarıp ekrana yazdırdım.
0 yorum: