gokayburuc.dev

Zig Programlama Dilinde Diziler (Arrays)

Zig, sistem programlama dili olarak güçlü bir bellek kontrolü ve yüksek performans sunar. Bu yazıda, Zig dilinde dizilerin nasıl tanımlandığını, nasıl işlendiğini ve çeşitli dizi işlemlerini örnek kodlarla birlikte öğreneceğiz.


1. Dizi Tanımlama (Declared Arrays)

Zig'de diziler belirli bir uzunluğa ve sabit türlere sahiptir.

// Dört elemanlı u32 tipi bir dizi
var myarray: [4]u32 = [4]u32{32, 106, 700, 1205};

// Üç elemanlı u32 tipi bir dizi
var foo: [3]u32 = [3]u32{42, 108, 542};

2. Uzunluğu Belirtilmeyen Diziler (Undeclared Length Arrays)

Zig’de dizi uzunluğu derleyici tarafından otomatik olarak da hesaplanabilir.

var undecarray: [_]u32 = [_]u32{123, 35, 45, 77};

3. Dizi Uzunluğu Öğrenme (Array Length)

Dizinin uzunluğu .len özelliğiyle öğrenilir:

var primes: [_]u32 = [_]u32{25, 2500, 3000, 1212, 19881723};
const length = primes.len;

4. Dizileri Birleştirme (Concatenate Arrays)

Zig'de iki dizi ++ operatörü ile birleştirilebilir:

var le = [_]u16{0, 1, 2};
var et = [_]u16{3, 4, 5};

var leet = le ++ et;

5. Diziyi Tekrarlama (Repeat Array)

Bir dizi sabit sayıda tekrarlanarak yeni bir dizi oluşturulabilir:

var arr = [_]u8{1, 2, 3};

// Dizi iki kez tekrarlanır
var rep_arr = arr ** 2;

6. Döngüyle Dizi Üzerinde Gezinme (Loops and Arrays)

Zig’de for döngüsü diziler üzerinde kolaylıkla kullanılabilir:

var leet = [_]u8{12, 13, 14};
for (leet) |n| {
    // Ekrana yazdırma
    std.debug.print("{}", .{n});
}

7. Tanımsız Dizi Oluşturma (Undefined Arrays)

Diziyi önceden belirleyip içeriğini sonra doldurmak istiyorsanız undefined kullanılabilir:

var narr: [3]u8 = undefined;

Sonuç

Zig dilinde dizilerle çalışmak hem basit hem de güçlüdür. Bu makalede sabit uzunluklu diziler, dinamik uzunluk çıkarımı, birleştirme, tekrarlama, döngülerle işlem ve undefined kullanımı gibi temel yapıları ele aldık. Zig’in tür güvenliği ve açık bellek modeli sayesinde düşük seviyeli işlemleri daha güvenli biçimde yazmak mümkündür.

#zig