7-bo‘lim

Sikllar

For va Step, For Each, While, Do Loop ning to'rt shakli, Exit va Continue, ichma-ich sikllar va cheksiz sikldan qochish.

🕑 13 daqiqa o‘qish 📄 501 so‘z 👁 0 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. For - necha marta ekani ma'lum bo'lganda
  2. Step - qadam
  3. For Each - to'plam bo'ylab
  4. While - shart to'g'ri ekan
  5. Do Loop - to'rt shakl
  6. Exit - sikldan chiqish
  7. Continue - qolganini o'tkazib yuborish
  8. Ichma-ich sikllar
  9. Cheksiz sikl
  10. Yig'indi hisoblash
  11. Xulosa

Sikl - bir xil ishni qayta-qayta bajaradigan tuzilma. Visual Basic da uch oila mavjud: For, While va Do.

For - necha marta ekani ma'lum bo'lganda #

VB
Module Dastur
    Sub Main()
        For i As Integer = 1 To 5
            Console.WriteLine($"{i} x 7 = {i * 7}")
        Next
    End Sub
End Module
Natija
1 x 7 = 7
2 x 7 = 14
3 x 7 = 21
4 x 7 = 28
5 x 7 = 35

Diqqat: 1 To 5 da 5 ham kiradi. Ko'p tillarda chegara kirmaydi, VB da esa kiradi.

Step - qadam #

VB
Module Dastur
    Sub Main()
        Dim chiqish As String = ""
        For i As Integer = 0 To 10 Step 2
            chiqish &= i & " "
        Next
        Console.WriteLine(chiqish.Trim())

        chiqish = ""
        For i As Integer = 10 To 1 Step -3
            chiqish &= i & " "
        Next
        Console.WriteLine(chiqish.Trim())
    End Sub
End Module
Natija
0 2 4 6 8 10
10 7 4 1

Teskari sanash uchun Step manfiy bo'lishi shart. For i = 10 To 1 deb yozsangiz (Step'siz), sikl umuman bajarilmaydi - chunki 10 allaqachon 1 dan katta.

For Each - to'plam bo'ylab #

VB
Module Dastur
    Sub Main()
        Dim shaharlar() As String = {"Namangan", "Andijon", "Farg'ona"}

        For Each shahar As String In shaharlar
            Console.WriteLine(shahar)
        Next
    End Sub
End Module
Natija
Namangan
Andijon
Farg'ona

For Each indeks bilan ovora bo'lmaydi. Agar indeks kerak bo'lmasa, har doim shuni ishlating - xato qilish imkoni kamroq.

While - shart to'g'ri ekan #

VB
Module Dastur
    Sub Main()
        Dim qoldiq As Integer = 100

        While qoldiq > 0
            Console.WriteLine($"Qoldiq: {qoldiq}")
            qoldiq -= 30
        End While

        Console.WriteLine($"Tugadi. Oxirgi qiymat: {qoldiq}")
    End Sub
End Module
Natija
Qoldiq: 100
Qoldiq: 70
Qoldiq: 40
Qoldiq: 10
Tugadi. Oxirgi qiymat: -20

While shartni oldin tekshiradi. Shart boshidanoq noto'g'ri bo'lsa, tana bir marta ham bajarilmaydi.

Do Loop - to'rt shakl #

VB
Module Dastur
    Sub Main()
        Dim a As Integer = 5
        Do While a < 3
            Console.WriteLine("bu chiqmaydi")
            a += 1
        Loop
        Console.WriteLine("1-shakl tugadi")

        Dim b As Integer = 5
        Do
            Console.WriteLine($"b = {b}")
            b += 1
        Loop While b < 3
        Console.WriteLine("2-shakl tugadi")
    End Sub
End Module
Natija
1-shakl tugadi
b = 5
2-shakl tugadi

Farq muhim: birinchi shakl hech qachon bajarilmadi, ikkinchisi esa bir marta bajarildi - chunki shart tanadan keyin tekshiriladi.

ShaklShart qayerdaKamida necha marta
Do While shart ... LoopBoshida0
Do ... Loop While shartOxirida1
Do Until shart ... LoopBoshida0
Do ... Loop Until shartOxirida1

Until - While ning teskarisi: shart noto'g'ri ekan davom etadi.

VB
Module Dastur
    Sub Main()
        Dim son As Integer = 1

        Do Until son > 16
            Console.Write(son & " ")
            son *= 2
        Loop
        Console.WriteLine()
    End Sub
End Module
Natija
1 2 4 8 16

Exit - sikldan chiqish #

VB
Module Dastur
    Sub Main()
        Dim sonlar() As Integer = {4, 8, 15, 16, 23, 42}

        For Each son As Integer In sonlar
            If son > 15 Then
                Console.WriteLine($"Birinchi katta son: {son}")
                Exit For
            End If
            Console.WriteLine($"Tekshirildi: {son}")
        Next
    End Sub
End Module
Natija
Tekshirildi: 4
Tekshirildi: 8
Tekshirildi: 15
Birinchi katta son: 16

Exit For, Exit While, Exit Do - har bir sikl turi uchun o'z shakli bor.

Continue - qolganini o'tkazib yuborish #

VB
Module Dastur
    Sub Main()
        For i As Integer = 1 To 10
            If i Mod 2 = 0 Then
                Continue For
            End If
            Console.Write(i & " ")
        Next
        Console.WriteLine()
    End Sub
End Module
Natija
1 3 5 7 9

Continue For - joriy aylanishning qolgan qismini tashlab, keyingisiga o'tadi.

Ichma-ich sikllar #

VB
Module Dastur
    Sub Main()
        For i As Integer = 1 To 3
            For j As Integer = 1 To 3
                Console.Write($"{i * j}".PadLeft(4))
            Next
            Console.WriteLine()
        Next
    End Sub
End Module
Natija
   1   2   3
   2   4   6
   3   6   9
Next dan keyin o'zgaruvchini yozish mumkin

Ichma-ich sikllarda qaysi Next qaysi siklga tegishli ekanini ko'rsatish uchun uning nomini yozish mumkin:

VB
For i As Integer = 1 To 3
    For j As Integer = 1 To 3
        ' ...
    Next j
Next i

Kompilyator uchun farqi yo'q, lekin uzun sikllarda o'qish osonlashadi.

Cheksiz sikl #

VB
Module Dastur
    Sub Main()
        Dim hisoblagich As Integer = 0

        Do
            hisoblagich += 1
            If hisoblagich >= 3 Then
                Exit Do
            End If
        Loop

        Console.WriteLine($"Sikl {hisoblagich} marta aylandi")
    End Sub
End Module
Natija
Sikl 3 marta aylandi
Sikl o'zgaruvchisini o'zgartirishni unutmang

Eng ko'p uchraydigan xato - While yoki Do ichida shartga ta'sir qiladigan o'zgaruvchini o'zgartirishni unutish:

VB
Dim i As Integer = 0
While i < 10
    Console.WriteLine(i)
Loop   ' i hech qachon o'zgarmaydi - dastur qotib qoladi

Agar dastur javob bermay qolsa, terminalda Ctrl+C bosing.

For siklida bunday muammo yo'q, chunki hisoblagichni kompilyatorning o'zi oshiradi.

Yig'indi hisoblash #

VB
Module Dastur
    Sub Main()
        Dim ballar() As Integer = {85, 92, 78, 95, 88}
        Dim jami As Integer = 0
        Dim engYuqori As Integer = ballar(0)

        For Each ball As Integer In ballar
            jami += ball
            If ball > engYuqori Then
                engYuqori = ball
            End If
        Next

        Console.WriteLine($"Jami: {jami}")
        Console.WriteLine($"O'rtacha: {jami / ballar.Length}")
        Console.WriteLine($"Eng yuqori: {engYuqori}")
    End Sub
End Module
Natija
Jami: 438
O'rtacha: 87.6
Eng yuqori: 95
Amaliy topshiriq
  1. 1 dan 10 gacha sonlarning kvadratini chiqaring.
  2. 100 dan 0 gacha 10 qadam bilan teskari sanang.
  3. For i = 5 To 1 (Step'siz) nima bo'lishini tekshiring.
  4. While bilan 2 ning darajalarini 1000 dan oshguncha chiqaring.
  5. Do ... Loop While va Do While ... Loop farqini ko'rsating.
  6. Do Until bilan bir misol yozing.
  7. Massivdan birinchi manfiy sonni Exit For bilan toping.
  8. 1 dan 20 gacha faqat 3 ga bo'linadiganlarni Continue For bilan chiqaring.
  9. 5x5 ko'paytirish jadvalini ichma-ich sikl bilan chizing.
  10. Sonning faktorialini sikl bilan hisoblang.

Xulosa #

  • For i = 1 To 5 da oxirgi chegara ham kiradi.
  • Teskari sanash uchun Step manfiy bo'lishi shart.
  • For Each - indeks kerak bo'lmaganda eng xavfsiz tanlov.
  • While shartni oldin, Do ... Loop While esa keyin tekshiradi - ikkinchisi kamida bir marta bajariladi.
  • Until - While ning teskarisi.
  • Exit For/While/Do sikldan chiqadi, Continue esa faqat joriy aylanishni tugatadi.
  • Sikl shartiga ta'sir qiladigan o'zgaruvchini o'zgartirishni unutsangiz, dastur qotib qoladi - Ctrl+C.

Keyingi bo'limda massivlarni o'rganamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.