Darsliklar Ruby Takrorlash operatori (While, Until)

Ruby Ruby Takrorlash operatori (While, Until)

Takrorlash operatori (sikl) shart rost bo’lgan ekan, kod blokini qayta-qayta bajaradi. Ruby’da bunday ikkita asosiy vosita bor: while (shart rost ekan davom etadi) va unga teskari — until (shart yolg’on ekan davom etadi).

while / untilwhile shart ... end — shart rost bo’lgan ekan bloqni takrorlaydi. until shart ... end — shart yolg’on bo’lgan ekan takrorlaydi, ya’ni while !shart bilan bir xil ma’noni bildiradi.

while sikli

while shart tekshirilib, rost bo’lsa blok bajariladi, so’ng shart yana tekshiriladi:

hisoblagich = 1

while hisoblagich <= 5
  puts hisoblagich
  hisoblagich += 1
end
1
2
3
4
5

Har bir aylanishda hisoblagich 1ga oshadi, 6 bo’lgach shart (<= 5) yolg’on bo’lib qoladi va sikl to’xtaydi. Sikl ichida hisoblagichni o’zgartirishni unutish — cheksiz siklga olib keladigan eng keng tarqalgan xato.

until sikli — Ruby’ga xos qulaylik

untilwhilening teskarisi, ba’zi hollarda shartni salbiy shaklda yozishdan ko’ra tabiiyroq o’qiladi:

qolgan = 3

until qolgan == 0
  puts "Qoldi: #{qolgan}"
  qolgan -= 1
end

puts "Tugadi"
Qoldi: 3
Qoldi: 2
Qoldi: 1
Tugadi

until qolgan == 0qolgan nolga tenglashguncha davom etadi. Aynan shu siklni while qolgan != 0 deb ham yozish mumkin edi — ikkalasi funksional jihatdan bir xil, tanlov faqat o’qilish qulayligiga bog’liq.

Modifikator shakli

if kabi, while va until ham qator oxiriga qo’yilgan modifikator shaklida yozilishi mumkin:

son = 1
son *= 2 while son < 100
puts son
128

son *= 2 while son < 100son 100 dan kichik ekan, uni ikkilantiraveradi. Bu shakl ayniqsa bitta amaldan iborat qisqa sikllar uchun qulay.

loop va begin…end while

Ruby’da shartni hech bo’lmaganda bir marta bajarilishini kafolatlaydigan post-shartli sikl ham bor:

son = 10

begin
  puts son
  son += 1
end while son < 5
10

Oddiy whiledan farqli o’laroq, begin...end while blokini avval bajaradi, keyin shartni tekshiradi — shuning uchun shart boshidanoq yolg’on bo’lsa ham, blok kamida bir marta ishlaydi. Bu — cheksiz loop do ... end blokidan break bilan chiqishga muqobil, kamdan-kam holatlarda kerak bo’ladigan vosita.