Aynı türden değişkenlere sahip olduğunda, bunları bir dizide toplayabilirsin. Dizi, []float
gibi bir []type
değeri olan öğelerin türünü belirttiğin bir kapsayıcı türüdür. Diziler kullanışlıdır çünkü öğelere erişmeyi sağlayan kodunu değiştirmeden dizi içinde ne kadar çok öğe depolarsan dizi buna göre ölçeklenir.
Örneğin, oyununda birden fazla oyuncu varsa bir dizi oluşturabilir ve diziyi tüm oyuncularla başlatabilirsin.
Players : []player = array{Player1, Player2}

Dizi Uzunluğu
Bir dizideki öğelerin sayısını, dizideki Length
üyesine erişerek elde edebilirsin. Örneğin, array{10, 20, 30}.Length
3 sonucunu verir.
Bir Dizideki Öğelere Erişme
Bir dizideki öğeler, diziye eklendikleri konumlara uygun şekilde sıralanır ve öğeye dizideki dizin adı verilen bu konumdan erişebilirsin. Örneğin, ilk oyuncuyu almak için Oyuncular dizisine Players[0]
ile erişirsin.
Bir dizideki ilk öğenin dizini 0 olur ve sonraki her öğenin dizini sayıca artar. Örneğin, array{10, 20, 30}[0]
değeri 10, array{10, 20, 30}[1]
değeri ise 20’dir.
Dizin | 0 | 1 | 2 |
Öğe | 10 | 20 | 30 |
Bir dizideki son dizin, dizinin uzunluğundan bir eksiktir. Örneğin, array{10, 20, 30}.Length
değeri 3, array{10, 20, 30}
içindeki dizin ise 2’dir.
Bir dizideki bir öğeye erişim başarısız olabilir bir ifadedir ve yalnızca if
ifadesi gibi bir hata bağlamında kullanılabilir. Örneğin:
ExampleArray : []int = array{10, 20, 30, 40, 50}
for (Index := 0..ExampleArray.Length - 1):
if (Element := ExampleArray[Index]):
Print("ExampleArray’deki {Element} şu dizindedir: {Index}")
Bu kod aşağıdakileri yazdıracaktır:
ExampleArray’deki 10 şu dizindedir: 0
ExampleArray’deki 20 şu dizindedir: 1
ExampleArray’deki 30 şu dizindedir: 2
ExampleArray’deki 40 şu dizindedir: 3
ExampleArray’deki 50 şu dizindedir: 4
Diziyi ve Öğelerini Değiştirme
Diziler, Verse’teki diğer tüm değerler gibi sabittir. Bir dizi değişkeni tanımlarsan bu işlem, değişkene yeni bir dizi atamana veya öğeleri tek tek değiştirmene imkan tanır.
Örneğin:
# Array1 bir tamsayı dizisidir
Array1 : []int = array{10, 11, 12}
# Array2 tamsayılardan oluşan bir dizi değişkenidir
var Array2 : []int = array{20, 21, 22}
# Array1, Array2 ve yeni bir tamsayı dizisini birleştiriyoruz
# ve bunu Array2 değişkenine atıyoruz
set Array2 = Array1 + Array2 + array{30, 31}
# 77 tamsayısını Array2'nin 1. dizinine atıyoruz
if (set Array2[1] = 77) {}
for (Index := 0..Array2.Length - 1):
if (Element := Array2[Index]):
Print("{Element} şu dizindedir: {Index}")
Bu kod aşağıdakileri yazdıracaktır:
10 şu dizindedir: 0
77 şu dizindedir: 1
12 şu dizindedir: 2
20 şu dizindedir: 3
21 şu dizindedir: 4
22 şu dizindedir: 5
30 şu dizindedir: 6
31 şu dizindedir: 7
Çok Boyutlu Diziler
Önceki örneklerde gösterilen dizilerin tümü tek boyutluydu ancak çok boyutlu diziler de oluşturabilirsin. Çok boyutlu diziler, bir tablodaki sütun ve satırlara benzer şekilde her dizinde depolanan başka bir diziye veya dizilere sahiptir.
Örneğin, aşağıdaki kod, aşağıdaki tabloda görselleştirilen iki boyutlu (2D) bir dizi oluşturur:
var Counter : int = 0
Example : [][]int =
for (Row := 0..3):
for(Column := 0..2):
set Counter += 1
Sütun 0 | Sütun 1 | Sütun 2 | |
---|---|---|---|
Satır 0 | 1 | 2 | 3 |
Satır 1 | 4 | 5 | 6 |
Satır 2 | 7 | 8 | 9 |
Satır 3 | 10 | 11 | 12 |
2D bir dizideki öğelere erişmek için iki dizin kullanman gerekir. Örneğin, Example[0][0]
değeri 1, Example[0][1]
değeri 2, Example[1][0]
değeri ise 4’tür.
Aşağıdaki kod, Example
2D dizisinde yinelemek için for
ifadesinin nasıl kullanılacağını gösterir.
if (NumberOfColumns : int = Example[0].Length):
for(Row := 0..Example.Length-1, Column := 0..NumberOfColumns):
if (Element := Example[Row][Column]):
Print("{Element} şu dizindedir: [{Row}][{Column}]")
Bu kod aşağıdakileri yazdıracaktır:
1 şu dizindedir: [0][0]
2 şu dizindedir: [0][1]
3 şu dizindedir: [0][2]
4 şu dizindedir: [1][0]
5 şu dizindedir: [1][1]
6 şu dizindedir: [1][2]
7 şu dizindedir: [2][0]
8 şu dizindedir: [2][1]
9 şu dizindedir: [2][2]
10 şu dizindedir: [3][0]
11 şu dizindedir: [3][1]
12 şu dizindedir: [3][2]
Her satırdaki sütun sayısının sabit olması gerekli değildir.
Örneğin, aşağıdaki kod, aşağıdaki tabloda görselleştirilen iki boyutlu (2D) bir dizi oluşturur. Bu tabloda her satırdaki sütun sayısı, bir önceki satırdakinden fazladır:
Example : [][]int =
for (Row := 0..3):
for(Column := 0..Row):
Row * Column
Sütun 0 | Sütun 1 | Sütun 2 | Sütun 3 | |
---|---|---|---|---|
Satır 0 | 0 | |||
Satır 1 | 0 | 1 | ||
Satır 2 | 0 | 2 | 4 | |
Satır 3 | 0 | 3 | 6 | 9 |