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.
Ushbu bo‘lim mundarijasi
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 #
Module Dastur
Sub Main()
For i As Integer = 1 To 5
Console.WriteLine($"{i} x 7 = {i * 7}")
Next
End Sub
End Module
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 #
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
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 #
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
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 #
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
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 #
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
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.
| Shakl | Shart qayerda | Kamida necha marta |
|---|---|---|
Do While shart ... Loop | Boshida | 0 |
Do ... Loop While shart | Oxirida | 1 |
Do Until shart ... Loop | Boshida | 0 |
Do ... Loop Until shart | Oxirida | 1 |
Until - While ning teskarisi: shart noto'g'ri ekan davom etadi.
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
1 2 4 8 16
Exit - sikldan chiqish #
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
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 #
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
1 3 5 7 9
Continue For - joriy aylanishning qolgan qismini tashlab, keyingisiga
o'tadi.
Ichma-ich sikllar #
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
1 2 3
2 4 6
3 6 9
Ichma-ich sikllarda qaysi Next qaysi siklga tegishli ekanini
ko'rsatish uchun uning nomini yozish mumkin:
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 #
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
Sikl 3 marta aylandi
Eng ko'p uchraydigan xato - While yoki Do ichida shartga
ta'sir qiladigan o'zgaruvchini o'zgartirishni unutish:
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 #
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
Jami: 438
O'rtacha: 87.6
Eng yuqori: 95
- 1 dan 10 gacha sonlarning kvadratini chiqaring.
- 100 dan 0 gacha 10 qadam bilan teskari sanang.
For i = 5 To 1(Step'siz) nima bo'lishini tekshiring.Whilebilan 2 ning darajalarini 1000 dan oshguncha chiqaring.Do ... Loop WhilevaDo While ... Loopfarqini ko'rsating.Do Untilbilan bir misol yozing.- Massivdan birinchi manfiy sonni
Exit Forbilan toping. - 1 dan 20 gacha faqat 3 ga bo'linadiganlarni
Continue Forbilan chiqaring. - 5x5 ko'paytirish jadvalini ichma-ich sikl bilan chizing.
- Sonning faktorialini sikl bilan hisoblang.
Xulosa #
For i = 1 To 5da oxirgi chegara ham kiradi.- Teskari sanash uchun
Stepmanfiy bo'lishi shart. For Each- indeks kerak bo'lmaganda eng xavfsiz tanlov.Whileshartni oldin,Do ... Loop Whileesa keyin tekshiradi - ikkinchisi kamida bir marta bajariladi.Until-Whilening teskarisi.Exit For/While/Dosikldan chiqadi,Continueesa 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.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
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.