Published on

Swiftda Ichma-ich Looplar (Nested Loops)

Authors

Agar bitta loopning ichida yana boshqa loop bo'lsa, bu nested loop (ichma-ich loop) deyiladi.

Misol:

// tashqi loop
for i in 1...5 {

    // ichki loop
    for j in 1...2 {
        // code
    }
}

Bu yerda j bo'yicha for-loop β€” i bo'yicha for-loopning ichida joylashgan.

1. Swift Nested for Loop

Quyidagi misolda biz 2 hafta ichidagi 7 kunni chiqaramiz:

Swift
Nested for loop
// Swift program to display 7 days of 2 weeks // outer loop for week in 1...2 { print("Week: \(week)") // inner loop for day in 1...7 { print(" Day: \(day)") } // bo'sh qator print("") }

Tushuntirish:

  • Tashqi loop β†’ 2 marta ishlaydi (week = 1 va week = 2).
  • Ichki loop β†’ har bir haftada 7 marta ishlaydi (day = 1 dan 7 gacha).

2. Nested while va repeat…while Looplar

Looplar faqat for-loop bilan emas, while yoki repeat…while bilan ham ichma-ich ishlatilishi mumkin.

Misol:

// outer while loop
while condition {
    
    // inner while loop
    while condition2 {
        // code
    }
}

3. for Loop ichida while Loop

Quyidagi misolda biz while loop tashqarida, for loop ichkarida ishlatamiz:

Swift
while + for nested loop
// program to display 7 days of 2 weeks var weeks = 2 var i = 1 // outer while loop while (i <= weeks) { print("Week: \(i)") // inner for loop for day in 1...7 { print(" Day: \(day)") } i = i + 1 }

4. break va continue ichma-ich looplarda

1. break β€” faqat ichki loopni to'xtatadi

Misol:

Swift
Nested loop + break
for week in 1...3 { print("Week: \(week)") for day in 1...7 { if week == 2 { break } print(" Day: \(day)") } print("") }

Izoh:

  • week == 2 bo'lganda ichki loop darhol to'xtaydi.
  • Tashqi loop esa davom etadi.

2. continue β€” ichki loopning faqat o'sha iteratsiyasini o'tkazadi

Misol:

Swift
Nested loop + continue
for week in 1...2 { print("Week: \(week)") for day in 1...7 { if day % 2 != 0 { // agar kun toq bo'lsa continue // chiqarib o'tkaz } print(" Day: \(day)") } print("") }

Izoh:

  • Toq kunlar (1,3,5,7) continue tufayli chiqarilmaydi.
  • Faqat juft kunlar chop qilinadi.

πŸ“š Masalalarni qanday yechish kerak?

βœ… Namuna: 1-masala yechimi

Masala: n sonining ko'paytirish jadvalini yig'indisi sifatida qaytaring. Ya'ni n1 + n2 + ... + n*10.

Bosqichma-bosqich yechim:

1-qadam: Masalani tushunish

  • n = 5 β†’ 5*1 + 5*2 + 5*3 + ... + 5*10 = 5 + 10 + 15 + ... + 50 = 275
  • Bu aslida n * (1+2+3+...+10) = n * 55

2-qadam: Nested loop yoki oddiy loop

Aslida bu masala bitta loop bilan ham yechiladi:

var sum = 0
for i in 1...10 {
    sum += n * i
}

3-qadam: To'liq yechim

Swift
1-masala yechimi
func solve(_ n: Int) -> Int { var sum = 0 for i in 1...10 { sum += n * i } return sum } // Tekshirish print(solve(5)) // 275 (5*55) print(solve(3)) // 165 (3*55) print(solve(1)) // 55 (1*55) print(solve(10)) // 550 (10*55)

Natija: Barcha testlar o'tadi βœ…

Izoh:

  • n * 1 + n * 2 + ... + n * 10 = n * (1 + 2 + ... + 10) = n * 55
  • Loop bilan har bir ko'paytmani qo'shib boramiz
  • Bu masala nested loop talab qilmaydi, lekin nested loop mavzusini tushunish uchun foydali

Alternativ: return n * 55 β€” to'g'ridan-to'g'ri formula


Xulosa

  • Nested loop β€” loop ichida loop
  • Tashqi loop β€” birinchi bajariladi
  • Ichki loop β€” har bir tashqi iteratsiyada to'liq ishlaydi
  • break β€” faqat o'sha loopni to'xtatadi
  • continue β€” faqat o'sha iteratsiyani o'tkazadi
  • Label β€” tashqi loopni to'xtatish uchun
Buy mea coffee