🔄 Pętle (for/while/repeat)

Pętle pozwalają powtarzać kod wielokrotnie.

while

let i = 0; while (i < 5) { print(i); i++; } // Output: 0, 1, 2, 3, 4

do-while

let j = 0; do { print(j); j++; } while (j < 3); // Output: 0, 1, 2 // Wykonuje się przynajmniej raz!

for (C-style)

for (let i = 0; i < 5; i++) { print(i); } // Output: 0, 1, 2, 3, 4

for-in (iteracja)

// Po liście let items = ["a", "b", "c"]; for (item in items) { print(item); } // Po range for (i in 1..5) { print(i); // 1, 2, 3, 4, 5 } // Exclusive range (bez końca) for (i in 0..<5) { print(i); // 0, 1, 2, 3, 4 } // Z krokiem for (i in 0..10 step 2) { print(i); // 0, 2, 4, 6, 8, 10 } // Po mapie (zwraca entries) let obj = {x: 1, y: 2}; for (entry in obj) { print(entry[0] + " = " + entry[1]); }

repeat

// Prosta pętla n-razy repeat 5 { print("Hello!"); } // Repeat z iteratorem repeat 10 as i { print("Iteration: " + i); // 0, 1, 2, ..., 9 } // Repeat z wyrażeniem let count = 3; repeat (count * 2) as n { print("n = " + n); }

break i continue

for (i in 1..10) { if (i == 3) continue; // pomiń 3 if (i == 7) break; // zakończ na 7 print(i); } // Output: 1, 2, 4, 5, 6

Labeled loops (etykiety)

// Etykiety pozwalają kontrolować zagnieżdżone pętle outer: for (i in 1..5) { for (j in 1..5) { if (i * j > 10) { break outer; // Wyjście z zewnętrznej pętli } print(i, "*", j, "=", i * j); } } // Continue z etykietą outer: for (row in 1..3) { for (col in 1..3) { if (col == 2) { continue outer; // Przeskocz do następnego wiersza } print(row, col); } }

Loop else

Blok else wykonuje się gdy pętla zakończyła się **bez** break:

let list = [1, 2, 3, 4, 5]; let target = 10; for (item in list) { if (item == target) { print("Znaleziono!"); break; } } else { print("Nie znaleziono!"); // Tylko gdy nie było break } // Działa też z while while (condition) { // ... } else { print("Pętla zakończona normalnie"); }

Praktyczne przykłady

// Suma liczb 1-100 let sum = 0; for (i in 1..100) { sum = sum + i; } print(sum); // 5050 // FizzBuzz for (i in 1..15) { if (i % 15 == 0) print("FizzBuzz"); else if (i % 3 == 0) print("Fizz"); else if (i % 5 == 0) print("Buzz"); else print(i); } // Szukanie liczby pierwszej fn isPrime(n) { if (n < 2) return false; for (i in 2..n) { if (n % i == 0) return false; } return true; }
💡 Wskazówka

Używaj repeat gdy potrzebujesz prostej pętli N razy. Używaj for-in do iteracji po kolekcjach. Używaj while gdy warunek końca jest złożony.