შესვლა

პროგრამირების საფუძვლები › დამწყები › ციკლები

while ციკლი

მარტივი⏱ 7 წთ+20 XP👑 Pro#ციკლები#while#do while

რას ისწავლი

  • როგორ იწერება და ნაბიჯ-ნაბიჯ როგორ სრულდება while
  • როდის ჯობს while, როცა გამეორებების რაოდენობა წინასწარ არ იცი
  • რით განსხვავდება do...while

სანამ პირობა სრულდება

while ინგლისურად ნიშნავს „სანამ“. ციკლი ასე იკითხება: „სანამ პირობა ჭეშმარიტია, შეასრულე ბლოკი“.

JavaScript
while (პირობა) {
  // ბლოკი, რომელიც მეორდება
}

ყოველი იტერაციის წინ კომპიუტერი პირობას ამოწმებს. თუ true-ა, ბლოკს ასრულებს და ისევ თავში ბრუნდება. თუ false-ა, ციკლს ტოვებს და }-ის შემდეგ მდგომ კოდზე გადადის. თუ პირობა თავიდანვე false-ა, ბლოკი ერთხელაც არ შესრულდება.

როცა რაოდენობა არ იცი

while-ის ძალა ისაა, რომ წინასწარ არ გჭირდება იმის ცოდნა, რამდენჯერ გაიმეორებ. მაგალითად, ყოველ კვირას 15 ლარს ზოგავ. რამდენ კვირაში დააგროვებ 100 ლარს?

JavaScript
let money = 0;
let weeks = 0;

while (money < 100) {
  money += 15;
  weeks++;
}

console.log("კვირა:", weeks, "ფული:", money);

მივყვეთ ნაბიჯ-ნაბიჯ:

იტერაციაპირობა money < 100money შემდეგweeks შემდეგ
10 < 100 ✔151
215 < 100 ✔302
…………
790 < 100 ✔1057
—105 < 100 ✘ციკლი მთავრდება

იბეჭდება კვირა: 7 ფული: 105. პასუხი ციკლმა თვითონ იპოვა: ჩვენ მხოლოდ წესი დავწერეთ.

ასეთი ცხრილით კოდის „ხელით“ შესრულება კარგი ჩვევაა. როცა ციკლი არ აკეთებს იმას, რასაც ელი, ცხრილი ზუსტად გიჩვენებს, რომელ იტერაციაზე აირია საქმე.

უსასრულო ციკლის თავიდან აცილება

while-ში ბიჯი შენ თვითონ უნდა დაწერო ბლოკის შიგნით. თუ დაგავიწყდა, ან ცვლადი ისე იცვლება, რომ პირობა ვერასოდეს გახდება false, ციკლი არ დამთავრდება. სანამ გაუშვებ, ჰკითხე საკუთარ თავს: „რა იცვლება ყოველ იტერაციაზე და რატომ გახდება ოდესმე პირობა false?“ თუ პასუხი არ გაქვს, ციკლი სავარაუდოდ უსასრულოა.

do...while: ჯერ გააკეთე, მერე იკითხე

while-ს ერთი ნათესავი ჰყავს, do...while. ის პირობას ბლოკის შემდეგ ამოწმებს, ამიტომ ბლოკი სულ მცირე ერთხელ ყოველთვის სრულდება:

JavaScript
let n = 10;

do {
  console.log("შესრულდა, n =", n);
  n++;
} while (n < 5);

პირობა 10 < 5 თავიდანვე false-ა, მაგრამ ხაზი მაინც ერთხელ დაიბეჭდება. ასეთი ციკლი იშვიათად გჭირდება, მაგრამ კარგია იცოდე, რომ არსებობს.

სცადე თავად

გაუშვი, მერე შეცვალე დანაზოგი კვირაში და მიზანი. რამდენ კვირაში დააგროვებ 250 ლარს, თუ კვირაში 20-ს ზოგავ?

JavaScript · სცადე თავად

ხშირი შეცდომები

  • ბიჯი ბლოკის გარეთ. თუ i++ }-ის შემდეგ დაწერე, ის ციკლს არ ეკუთვნის და ციკლი უსასრულოა.
  • პირობა, რომელიც ვერასოდეს შეიცვლება. while (money !== 100) 15-ის ბიჯით არასოდეს დამთავრდება, რადგან 15-ის ჯერადები 100-ს ზუსტად არ ემთხვევა: 90-ის შემდეგ 105 მოდის. ზუსტი ტოლობის ნაცვლად < ან > გამოიყენე.
  • წერტილ-მძიმე while (...)-ის შემდეგ. while (i < 5); ცარიელ ციკლს ქმნის, რომელიც სამუდამოდ ტრიალებს.

სავარჯიშო

რიცხვი 64 გაყავი ორზე იმდენჯერ, სანამ 1 არ გახდება. დათვალე, რამდენი გაყოფა დაგჭირდა, და დაბეჭდე გაყოფა: 6.

JavaScript · სცადე თავად
💡 მინიშნება

პირობაა n > 1. ბლოკში n = n / 2 (ან n /= 2) და steps++.

✅ ამოხსნის ნახვა
JavaScript
let n = 64;
let steps = 0;

while (n > 1) {
  n /= 2;
  steps++;
}

console.log("გაყოფა:", steps);

მინი-ქვიზი

1როდის ამოწმებს while პირობას?

2რამდენჯერ შესრულდება ბლოკი? let x = 10; while (x < 5) { x++; }

3რატომ არის while (money !== 100) { money += 15; } სახიფათო, თუ money 0-დან იწყება?

შეჯამება

  • while (პირობა) { ... } ბლოკს იმეორებს, სანამ პირობა true-ა, და პირობას ყოველი იტერაციის წინ ამოწმებს.
  • ის კარგია, როცა გამეორებების რაოდენობა წინასწარ არ იცი.
  • ბიჯი ბლოკის შიგნით თვითონ უნდა დაწერო. ზუსტი ტოლობის პირობები სახიფათოა.
  • do...while ბლოკს ერთხელ ყოველთვის ასრულებს.
📝 ჩემი შენიშვნა