Diziler – İndisli Değişkenler
Aynı tür bilgileri (öğrenci isimleri, şehir isimleri, kapı numaraları, fakülteler vbg.) bellekte
tutmak için kullanabileceğimiz listelere dizi adı verilir. Dizi kullanmanın avantajı; aynı tür
bilgileri bir listede tutarak daha hızlı işlem yapılabilmesidir.
Visual Basic'de dizi ifadesinin genel gösterilişi aşağıdaki gibidir.
Değişken adı (İndis)
Örnekler
A(5)
B23(24)
isim(89)
Matris(3,4)
Tablo(2,8,3)
Dizi indis değerleri, her zaman sıfır sayısından başlar
Dizi tanımları aynen değişken tanımları gibi Dim komutu ile yapılır.
Dim değişken adı (indis değeri) [as değişken tipi]
[as değişken tipi] kısmı seçimliktir, kullanılmazsa kullanılan değişken Variant
tipinde işleme girer.
Dizi değişken isimleri, daha önce gösterilen değişken tanım ve kuralları ile aynıdır.
Örnek:
A1(5) - doğru,
1A(5) - yanlış
Dizilerin tanımlanmama gibi bir durumu yoktur.
General Declarations kısmında Option Explicit Off (Hatırlatma: Normal
değişkenlerin tanımlanma zorunluluğunu kaldıran komut satırı) komut satırı
yazılmış bile olsa, bir dizi mutlaka Dim komutu ile tanımlanmak zorundadır.
Dim dizi_adı(sayi) As Veri_Tipi
Bu tanımlamadaki "sayi" değeri, dizinin alacağı en az indis değeri kadar olmalıdır
(daha fazla da olabilir). Aksi halde bilgisayar hata mesajı verir (Ayrıca iki sayfa
sonraki: "Dizilerde karşılaşılan hatalar" başlığını inceleyin.
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 8/Sayfa1
Örnek
Dim a(5) as byte
Bu örnekte, a isimli dizi için hafızada, 0’dan 5 sayısına kadar, 6 adet sayının yerleşeceği
yer ayrılır (bunu tek boyutlu bir satır veya tek boyutlu bir sütun olarak düşünebilirsiniz).
Bu örnek gösterimde fark olmayacağı için, satır olarak gösterilmiştir (sütun olarak da
gösterilebilirdi)
a(0)
sayısının
yerleşeceği
yer
a(1)
sayısının
yerleşeceği
yer
a(2)
sayısının
yerleşeceği
yer
a(3)
sayısının
yerleşeceği
yer
a(4)
sayısının
yerleşeceği
yer
a(5)
sayısının
yerleşeceği
yer
Örnek
Dim ad(3) as string
Bu örnekte, ad isimli dizi için hafızada, 0’dan 3 sayısına kadar, 4 adet ismin yerleşeceği
yer ayrılır. Bu örnek gösterimde fark olmayacağı için, sütun olarak gösterilmiştir (satır
olarak da gösterilebilirdi)
ad(0) isminin
yerleşeceği
yer
ad(1) isminin
yerleşeceği
yer
ad(2) isminin
yerleşeceği
yer
ad(3) isminin
yerleşeceği
yer
Örnek
Dim tablo(1,3) as double
Bu örnekte, tablo isimli dizi için hafızada, satır için 0’dan 1’e kadar 2 adet satır ve 0’dan
3’e kadar 4 adet sütun için double sayıların yerleşeceği yer ayrılır.
tablo(0,0)
sayısının
yerleşeceği
yer
tablo(1,0)
sayısının
yerleşeceği
yer
tablo(0,1)
sayısının
yerleşeceği
yer
tablo(1,1)
sayısının
yerleşeceği
yer
tablo(0,2)
sayısının
yerleşeceği
yer
tablo(1,2)
sayısının
yerleşeceği
yer
tablo(0,3)
sayısının
yerleşeceği
yer
tablo(1,3)
sayısının
yerleşeceği
yer
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 8/Sayfa2
Dizilere değer atama/atamama !!
Bir diziye değer atama aşağıdaki şekilde yapılır.
Dizi_adı(indis_sırası1, indis_sırası2,…)=atanacak_bilgi
Örnek:
Dim ad(2) As String
Dim no(2) As Integer
ad(0) = "ali"
ad(1) = "ahmet"
ad(2) = "ebru"
no(0) = 133
no(1) = 56
no(2) = 67
Bu örnek'te ad ve no olmak üzere iki adet
dizi tanımlanmaktadır. ad dizisi string
türünde bilgileri tutacak ve no dizisi ise
integer türündeki bilgileri saklayacaktır.
Dizilere, normal değişkenlerde olduğu gibi başlangıç değeri atanamaz.
Dim a as integer=3
Dim a(4) as integer=42
Doğru bir satırdır
Yanlış bir satırdır
İndisli değişkenlere başlangıç değeri atanması
İndisli değişkenlere başlangıç değeri normal değişkenlerden farklı bir şekilde
yapılır. Dim satırındaki indisli değişkenin indis değerini gösteren parantez içine bir
değer yazılmaz ve başlangıç değerleri küme işareti içinde gösterilirler.
Örnek:
Dim a() as byte={2,4,3}
Örnekte a indisli değişkenine 0, 1 ve 2. İndis değeri olarak sırasıyla 2,4 ve 3
değerleri atanmıştır.
Örnek:
Dim isim() as string={”ali”,”veli”}
Dim n(,) as integer={{10, 5, 7}, {12, 8, 9}} bu örnekte 2 satırlık (0 ve 1. Satır)
ve 3 sütunluk (0,1 ve 2. Sütun) bir indisli değişken tanımlanmıştır. Bu tanım tablo
veya matris şeklinde düşünülebilir ve gösterimi aşağıdaki şekildedir.
0. satır
1. satır
0. sütun
10
12
1. sütun
5
8
2. sütun
7
9
Dim n(,) As Integer = {{10, 5, 7}, {12, 8, 9}}
MsgBox(n(1, 2))
Yukarıdaki programın çalışması sonucunda ekranda 9 değeri görülür.
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 8/Sayfa3
İndisli değişkenlere başlangıç değerleri atanmamışsa;

İndisli değişken SAYI tipinde (byte, integer, double) tanımlanmışsa, o
değişkenin alacağı bütün değerlerin başlangıç değeri sıfır (0) olarak belirlenir.
Örnek: Dim A(3) as byte
A(0)=0

A(1)=0
A(2)=0
A(3)=0
İndisli değişken İSİM tipinde (string, char) tanımlanmışsa, o değişkenin alacağı
bütün değerlerin başlangıç değeri ‘çift tırnak çift tırnak’ (“”) olarak belirlenir.
Örnek: Dim B(2) as string
B(0)=””

ise, bu durumda hafızada
B(1)=””
ise, bu durumda hafızada
B(2)=””
İndisli değişken MANTIKSAL tipte (boolean) tanımlanmışsa, o değişkenin
alacağı bütün değerlerin başlangıç değeri false olarak belirlenir.
Örnek: Dim cevap(2) as string
cevap(0)=false
ise, bu durumda hafızada
cevap(1)=false
cevap(2)=false
Dim komutu ile hafızada ayrılmış yerlere mutlaka değer atama zorunluluğu yoktur.
Böyle bir durumda, indisli değişkenler ile normal değişkenler arasında bir fark
yoktur, değişken tipine göre atanmayan indis değerleri için varsayılan değerler
kabul edilir.
Örnekler:
Dim t(5) as double
t(3)=27
Dim y(13) as string
y(12)= "Sakarya"
t indisli değişkeni double olarak ve 6 indis değeri alacak şekilde
tanımlanmıştır
t değişkeni için ayrılan yerlerden sadece 3 numaralı indis değeri
için 27 değeri atanmıştır, diğer yerler (değişken sayısal
tanımlandığı için) sıfır değerini alacaktır.
y indisli değişkeni string olarak ve 14 indis değeri alacak şekilde
tanımlanmıştır
y değişkeni için ayrılan yerlerden sadece 12 numaralı indis değeri
için "Sakarya" değeri atanmıştır, diğer yerler (değişken string
tanımlandığı için) "" değerini alacaktır.
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 8/Sayfa4
Dim u(4) as boolean
u(1)=True
u indisli değişkeni boolean olarak ve 5 indis değeri alacak şekilde
tanımlanmıştır
u değişkeni için ayrılan yerlerden sadece 1 numaralı indis değeri
için True değeri atanmıştır, diğer yerler (değişken boolean
tanımlandığı için) False değerini alacaktır.
Dizilerde karşılaşılan hatalar
Dizilere değer atanırken, belirtilen sınırların dışına çıkılırsa (Dim komutu ile
belirtilen sınırların dışına çıkılırsa) hata yapılmış olur (bilgisayar hata mesajı verir).
Dizilere değer atarken dizi sınırlarını kontrol etmek, olası bir hatayı önlemek için
önemlidir.
Örnekler: Aşağıdaki satırların çalıştırılması sırasında, hata mesajı ile karşılaşılır.
Dim t(5) as double
t(7)=27
t değişkeni için hafızada 5 sayısına kadar indis için yer istenmiş,
buna karşılık ayrılmayan bir yer için (7. indis değeri) işlem
yapılmak istenmektedir.
Dim t(-4) as double
- (eksi) indis değeri olamaz
Dim a(5) as double
Dim a as double
Aynı program içinde bir değişken (bu örnekte a değişkeni), hem
indisli hem de normal değişken olarak tanımlanamaz.
İndis değeri olarak değişken kullanma
VBEE 2005 versiyonu ile indisli değişkenlerde indis değeri olarak değişken kullanmak
mümkün olabilmektedir.
Örnek:
Dim u as integer
u=inputbox("İndis değerini verin")
Dim isim(u) as string
Bu örnekte öncelikle u değişkeni tamsayı olarak
tanımlanmakta,
daha
sonra
u
değişkeni
kullanıcıya
sorulup
bilgisayar
tarafından
öğrenilmekte ve son olarak da isim indisli
değişkeni için, kullanıcının girdiği indis değişkeni
kadar, hafızada yer ayrılmaktadır.
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 8/Sayfa5
Dizi değişkenlerin genel olarak tanımlanması
Daha önce de belirtildiği gibi, normal değişkenlerle indisli değişkenler arasında gerek
tanımlama gerekse kullanımı açısından hiçbir fark yoktur. Dolayısıyla birden fazla yordam
içinde kullanılacak indisli değişkenler, projenin General Declerations kısmında
tanımlanmalıdır.
Örnek
Public Class Form1
Dim a(5) As Integer
Private Sub Form1_Load()
a(1) = 10
a(2) = 20
End Sub
Private Sub Button1_Click()
TextBox1.Text = a(1) + a(2)
End Sub
End Class
Yukarıdaki örnekte, projenin general declarations kısmında a indisli değişkeni
tanımlanıyor, dolayısıyla bu değişkenin alacağı değerler, örnekteki her iki yordamda da
geçerli olmaktadır. Form1 yüklendiğinde bu dizinin ilk elemanına 10 sayısı ikinci
elemanına 20 sayısı atanıyor. Eğer kullanıcı Button1 isimli butona tıklarsa dizinin ilk ve
ikinci elemanları toplanarak Form1 üzerinde Textbox1 adlı nesnenin Text özelliğine
atanıyor. Yani TextBox'ın bu sayıların toplamını göstermesi sağlanıyor.
Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 8/Sayfa6
Download

Diziler – İndisli Değişkenler