Zig'de `for` Döngüsü (For Loop)
Zig dilinde for
döngüsü, diziler veya slice'lar üzerinde yineleme (iteration) yapmak için güçlü ve sade bir yapıdır. Bu makalede Zig'de for
döngüsünün sözdizimi, temel kullanımı, indeksli versiyonu ve örnekleri yer alır.
for
Döngüsü Sözdizimi (Syntax)
Zig'de for
döngüsü aşağıdaki genel yapıyla kullanılır:
for (koleksiyon) |öğe| {
// işlem yapılacak kod
}
Veya indeksli kullanım:
for (koleksiyon, 0..) |öğe, indeks| {
// işlem yapılacak kod
}
koleksiyon
: Bir dizi ([N]T
), slice ([]T
), veya iterable bir yapı olabilir.|öğe|
: Her döngü turunda alınan eleman.|öğe, indeks|
: Hem eleman hem de indeks birlikte alınır.0..
: İndekslerin başlangıç aralığını belirtir (genelde sıfırdan başlanır).
Basit for
Döngüsü Kullanımı
Aşağıdaki örnekte, bir karakter dizisi üzerinden geçerek her karaktere karşılık gelen yüz ifadesi basılır:
const std = @import("std");
pub fn main() void {
const story = [_]u8{ 'h', 'h', 's', 'n', 'h' };
std.debug.print("A Dramatic Story: ", .{});
for (story) |scene| {
if (scene == 'h') std.debug.print(":-) ", .{});
if (scene == 's') std.debug.print(":-( ", .{});
if (scene == 'n') std.debug.print(":-| ", .{});
}
std.debug.print("The End.\n", .{});
}
Açıklama:
story
: Bir karakter dizisi.- Her karakter
scene
olarak alınır. - Farklı karakterler için farklı yüz ifadeleri yazdırılır.
Çıktı:
A Dramatic Story: :-) :-) :-( :-| :-) The End.
İndeksli for
Döngüsü Kullanımı
İndeksli for
döngüsü, elemanla birlikte dizideki konumunu da elde etmenizi sağlar. Özellikle hesaplamalı işlemler veya dönüştürmelerde kullanışlıdır.
const std = @import("std");
pub fn main() void {
const bits = [_]u8{ 1, 0, 1, 1 };
var value: u32 = 0;
for (bits, 0..) |bit, i| {
const i_u32: u32 = @intCast(i);
const place_value = std.math.pow(u32, 2, i_u32);
value += place_value * bit;
}
std.debug.print("The value of bits '1101': {}.\n", .{value});
}
Açıklama:
bits
: 1101 sayısının ters sıralı (little-endian) hali.@intCast
:usize
türündekii
değeriu32
'ye dönüştürülür.std.math.pow
: 2'nini
kuvveti alınır.- Sonuç olarak binary dizisi onluk sayıya çevrilir.
Çıktı:
The value of bits '1101': 13.
for
ile Döngü Kontrolü
Zig'de for
döngüsünde aşağıdaki kontroller de yapılabilir:
break
: Döngüyü erkenden sonlandırır.continue
: Bir sonraki döngü adımına geçer.return
: Döngü içerisinden fonksiyonu sonlandırabilir.
Sonuç
Zig'deki for
döngüsü yapısı; sade, güçlü ve güvenli bir şekilde dizi ve slice üzerinde işlem yapmaya olanak tanır. Hem eleman hem de indeks alınabilmesi sayesinde işlem çeşitliliği artar. Zig’in güçlü tür sistemi ve standart kütüphanesiyle birlikte, for
döngüleriyle sistem seviyesinde güvenli ve okunabilir kodlar yazmak mümkündür.