Diziler

Bu makalemizde dizileri anlatacağım.
Dizilerin ne olduğunu anlatmak için basit bir program yazarak anlatmaya başlayalım.

TextWindow.Write("İsminizi Girin: ")
adı = TextWindow.Read()
TextWindow.WriteLine("Merhaba " + adı) 

Bu programda, kullanıcının ismini adi isimli bir değişkene aldık ve orada sakladık. Daha sonra kullanıcıya “Merhaba” dedik. Şimdi, diyelim ki; birden fazla kullanıcı var – mesela 5 kullanıcı. Hepsinin ismini nasıl saklayabiliriz? Bunu yapmanın bir yolu şudur:

TextWindow.Write("Kullanıcı1, isminizi girin: ")
adı1 = TextWindow.Read()
TextWindow.Write("Kullanıcı2, isminizi girin: ")
adı2 = TextWindow.Read()
TextWindow.Write("Kullanıcı3, isminizi girin: ")
adı3 = TextWindow.Read()
TextWindow.Write("Kullanıcı4, isminizi girin: ")
adı4 = TextWindow.Read()
TextWindow.Write("Kullanıcı5, isminizi girin: ")
adı5 = TextWindow.Read()
TextWindow.Write("Merhaba ")
TextWindow.Write(adı1 + ", ")
TextWindow.Write(adı2 + ", ")
TextWindow.Write(adı3 + ", ")
TextWindow.Write(adı4 + ", ")
TextWindow.WriteLine(adı5)

Fazla yorulmada yazdık. Şimdi 1000 kullanıcı program yazalım. Yazabilirmiyiz.

Tabiî ki yazabilirsiniz….

Bunun kısa yolu yok mu diyenlere….

aynı değişkeni kullanarak, birden fazla kullanıcının ismini saklamak ve geri çağırmaktır. Eğer bunu yapabilirsek, bu durumda daha önceki bölümlerde öğrendiğimiz bir For döngüsü kullanabiliriz. Burada diziler imdadımıza yetişir.

Bir dizi nedir?

Dizi, bir defada birden fazla değeri tutabilen özel bir değişkendir. Temel olarak anlamı şudur; beş kullanıcı adını saklamak için adı1, adı2, adı3, adı4 ve adı5 yaratmak yerine, beş kullanıcı isminin tümünü saklaması için adı’i kullanabiliriz. Birden fazla değeri saklamanın yolu, “indeks” denilen şeyi kullanmaktır. Örneğin; adı[1], adı[2], adı[3], adı[4] ve adı[5]’in her biri bir değer saklayabilir. 1, 2, 3, 4 ve 5 sayıları, dizi için indeks olarak adlandırılır.  adı[1], adı[2], adı[3], adı[4] ve adı[5] farklı değişkenler gibi görünse de, gerçekte bunların hepsi yalnızca tek bir değişkendir. Bunun avantajı ne diye sorabilirsiniz. Değerleri bir dizide saklamanın en iyi yanı, bir başka değişkeni kullanarak indeksi belirtebilmenizdir – bu da, döngülerin içerisindeki dizilere kolayca erişebilmemizi sağlar. Şimdi, bir önceki programımızı dizilerle yazarak, yeni öğrendiğimiz bilgiyi nasıl kullanabileceğimize bir bakalım.
For i = 1 To 5
TextWindow.Write("Kullanıcı" + i + ", isminizi girin: ")
adı[i] = TextWindow.Read()
EndFor
TextWindow.Write("Merhaba ")
For i = 1 To 5
TextWindow.Write(adı[i] + ", ")
EndFor
TextWindow.WriteLine("")
Bu kadar basit
 şimdi siz 1000 kullanıcı program yazınız…

Bir dizinin indekslenmesi

Bir önceki programımızda, diziye değerleri saklayıp, sonra da geri çağırmak için indeks olarak sayıları kullandık. İndeksler yalnızca sayılarla sınırlı değildir ve uygulamada, metinsel indeksler kullanmak da oldukça avantajlıdır. Örneğin; aşağıdaki programda, bir kullanıcı hakkındaki çeşitli bilgi parçalarını soruyor ve saklıyoruz ve sonra da kullanıcının istediği bilgileri yazdırıyoruz.

TextWindow.Write("İsminizi girin: ")
Kullanıcı["isim"] = TextWindow.Read()
TextWindow.Write("Yaşınızı girin: ")
Kullanıcı["yaş"] = TextWindow.Read()
TextWindow.Write("Şehrinizi girin: ")
Kullanıcı["şehir"] = TextWindow.Read()
TextWindow.Write("Posta kodunuzu girin: ")
Kullanıcı["posta kodu"] = TextWindow.Read()
TextWindow.Write("Hangi bilgiyi istiyorsunuz? ")
index = TextWindow.Read()
TextWindow.WriteLine(index + " = " + Kullanıcı[index])

Birden fazla boyut

Yukarıdaki örnek tek kişi için biz bunu birden fazla kişi için yapmak istersek kullanacağımız yöntem çok boyutlu dizi kullanmak olacaktır.
Aşağıdaki örneği inceleyelim

For i=1 To 5
TextWindow.WriteLine(i+". kullanıcı")
TextWindow.Write("İsminizi girin: ")
Kullanıcı[i]["isim"] = TextWindow.Read()
TextWindow.Write("Yaşınızı girin: ")
Kullanıcı[i]["yaş"] = TextWindow.Read()
TextWindow.Write("Şehrinizi girin: ")
Kullanıcı[i]["Şehir"] = TextWindow.Read()
TextWindow.Write("Posta kodunuzu girin: ")
Kullanıcı[i]["posta kodu"] = TextWindow.Read()
EndFor
TextWindow.Write("kaçıncı kullanıcı")
index1 = TextWindow.Read()
TextWindow.Write("Hangi bilgiyi istiyorsunuz? ")
index2 = TextWindow.Read()
TextWindow.WriteLine(Kullanıcı[index1][index2])

Dizilerle ilgili güzel bir örnek


satır = 8 
sutun = 8 
boyut = 40 
For i = 1 To satır 
  For j = 1 To sutun
    GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
    boxes[i][j] = Shapes.AddRectangle(boyut, boyut) 
    Shapes.Move(boxes[i][j], j * boyut, i * boyut)
  EndFor
EndFor
For i = 1 To satır
  For j = 1 To sutun 
    Shapes.Animate(boxes[i][j], 0, 0, 1000) 
    Program.Delay(500)
  EndFor 
EndFor

yukarıdaki programın ekrandaki görüntüsü...