Visual Basic'te Diziler (Array)Dizi, bellekte aynı isim altında toplamış değişkenler kümesine verilen
isimdir. Dizinin kullanım alanlarına gelince ise, aynı türe ait
bilgileri bellekte tutmak istediğimizde örneğin bir veri gurubunu
sıralamak istediğimizde ya da verilere ait bazı istatiksel bilgilerin
hesaplanmasında bize yardımcı olur. VB 'de diziler;
DiziAdi(ElemanSayisi)
Şeklinde gösterilir. Bir örnek verecek olursak
Sayilar(20)
Ucgen(2)
Kare(3)
Yukarda ki örneklerde Sayilar isminde 0 dan 20 ye kadar toplam 21
elemanlı bir dizi tanımlanmıştır.
VB 'de iki farklı dizi türü vardır bunlar;
1) STATİK DİZİLER:
Bu tip dizilerde dizinin eleman sayısı önceden belirlenir ve eleman
sayısı sabittir. Örneğin programımızda Dim Sayilar(20) as Integer diye
bir kod yazarsanız projenizde toplam 21 elamanlı ve sayısal bir veri
türünü tutacak bir dizi tanımlamış olursunuz. Eğer dizimizin 20
elamanlı yani Sayilar(1) 'den başlamasını istiyorsak Form 'un veya
Modülün General/Declarations kısmına Option Base 1 deyimini
kullanmamız gerekecekti Option Base 0 ise dizinin ilk elemanının 0
'dan başlayacağını bildirir ki zaten bu da standart(default) biçimidir
dolaysıyla kullanmaya gerek yoktur.
2.) DİNAMİK DİZİLER:
Bu tip dizilerde ise dizinin eleman sayısını program akışı içerisinde
kontrol edebiliyoruz bunu ise diziyi Dim Sayilar() as Integer şeklinde
dizinin eleman sayısı hakkında herhangi bir değer vermeden
belirttikten sonra ReDim Sayilar(10) as Integer şeklinde dizinin
eleman sayısını program akışı esnasında tanımlıyoruz. Ancak diziyi
yeniden boyutlandırırken unutulmaması gereken nokta dizinin içindeki
verilerin silineceğidir. Eğer verilerin silinmemesini istiyorsak
diziyi yeninden boyutlandırırken ReDim Preserve Sayilar(10) As Integer
şeklinde belirtmemiz gerekir.
Örnek 1: Girilen 10 tane sayının toplamını ve ortalamasını veren örnek
program
Yukarıdaki resimlerden de anlaşılacağı üzere 10 adet sayıyı teker
teker girdiğimizde programımız bize bu sayıların toplamını ve
ortalamasını verecektir.
Birden Fazla Boyutlu Diziler :
VB 'de istenirse birden fazla boyutta dizilerde tanımlanabilir.
Örneğin;
Dim Tablo(4,3) As Integer
Dim DersSonuçları(3,3,1) As Integer
Yukarda ki tanımlama ile çok boyutlu diziler yaratmış olduk Dikkat
ettiyseniz her boyuta ait index numarası birbirinden virgülle
ayrılarak diziler boyutlandırılabiliyor.
Örnek :
Bileşenleri formumuza yukarda ki gibi yerleştirdikten sonra Matematik
dersi için koyduğumuz 3 tane "Text Box" 'ın adını VB 'nin sol
tarafındaki "Properties" Penceresinde ki "(Name)" değerini
değiştirerek sırası ile "Matematik1", "Matematik2" ve "Matematik3"
yapalım bu işlemi diğer dersler içinde tekrarlayalım daha sonra
"Ortalaması" başlıklı Labellerimizin hepsinede "Ortalama" adını
verelim bu sırada VB bize "You have already a control named
'Ortalama'. Do you want to create a control array?" diyerek bir
kontrol dizisi oluşmak isteyip istemediğimizi soracak bu soruyu "Evet"
diye cevaplandırarak bir kontrol dizisi oluşturalım(*) "Ortalama"
başlıklı düğmemize çift tıklayarak aşağıda ki kodları yazalım.
Yukarda ki örneğimizde derslere ait notlar dizimize aktarılıyor daha
sonra ise dizimizde ki notları "For ...Next" döngüsü ile kod tekrarı
yapmadan ortalamasını alıp bunu Ortalama isimli kontrol dizimizde ki
Etiketlerimiz de (Label) görüntülüyoruz.
Dizi İçin Sınırlar :
VB 'de dizi için alt ve üst sınırlar belirleyebiliriz bu sınır 0 ve
pozitif sayılar olabileceği gibi negatif sayılarda olabilir. Örneğin
Dim Dizi1(1 To 20) As Integer
Dim Dizi2(0 To 5) As String
Dim Dizi2(-10 To 10) As Byte
LBOUND ve UBOUND Fonksiyonları :
İstenilen bir dizinin belirtilen boyutunun alt ve üst sınırlarının ne
olduğunu öğrenmemize yarar. Örneğin;
Private Sub Command1_Click()
Dim Dizi(-5 To 15, -10 To 20) AsInteger
Print "Dizinin ;"
Print "-------------------------------------------"
Print "1. Boyutunun Alt Sınırı : " & LBound(Dizi, 1)
Print "1. Boyutunun Üst Sınırı : " & UBound(Dizi, 1)
Print "-------------------------------------------"
Print "2. Boyutunun Alt Sınırı : " & LBound(Dizi, 2)
Print "2. Boyutunun Üst Sınırı : " & UBound(Dizi, 2)
End Sub
devamı gelecek..