პროგრამირების საფუძვლები › დამწყები › ციკლები
break და continue
ეს თავი CodeQuest Pro-ს ნაწილია
Pro ხსნის სკოლის ყველა კურსს და თამაშის ყველა ლეველს, ვიდეოს და პროექტს. ერთჯერადი გადახდა, გამოწერის გარეშე.
რას ისწავლი
- როგორ შეწყვიტო ციკლი ვადაზე ადრე
break-ით - როგორ გამოტოვო ერთი იტერაცია
continue-თი - რატომ შეიძლება
continuewhile-ში უსასრულო ციკლი გახდეს
break: ვიპოვე, ვჩერდები
ზოგჯერ ციკლის ბოლომდე მისვლა საჭირო არ არის. თუ რაღაცას ეძებ და იპოვე, დანარჩენის შემოწმება დროის კარგვაა. break ციკლს მაშინვე წყვეტს და პროგრამა }-ის შემდეგ მდგომ კოდზე გადადის.
იპოვე პირველი რიცხვი 50-ის შემდეგ, რომელიც 7-ზე იყოფა:
for (let n = 51; n <= 100; n++) {
if (n % 7 === 0) {
console.log("ვიპოვე:", n);
break;
}
}- ციკლი იწყება 51-დან და ყოველ რიცხვზე ამოწმებს, ნაშთი ნულია თუ არა.
- 51-დან 55-მდე ნაშთი ნული არ არის, ამიტომ არაფერი ხდება.
- 56-ზე ნაშთი ნულია: იბეჭდება
ვიპოვე: 56დაbreakციკლს წყვეტს.
break-ის გარეშე ციკლი გააგრძელებდა და დაბეჭდავდა 63-ს, 70-ს და ასე შემდეგ 98-მდე. ეს სიტყვა უკვე იცი switch-იდან: იქაც ის „გამოდი აქედან“-ს ნიშნავს.
continue: ეს გამოტოვე, შემდეგზე გადადი
continue ციკლს არ წყვეტს. ის მხოლოდ მიმდინარე იტერაციის დარჩენილ ნაწილს გამოტოვებს და პირდაპირ შემდეგზე გადადის. მოსახერხებელია, როცა ზოგიერთი შემთხვევა არ გაინტერესებს:
for (let i = 1; i <= 10; i++) {
if (i % 2 === 0) {
continue;
}
console.log(i);
}ლუწ რიცხვებზე continue გამოტოვებს console.log-ს, ამიტომ იბეჭდება მხოლოდ კენტი: 1, 3, 5, 7, 9.
ეს ამოცანა continue-ს გარეშეც შეიძლება ამოიხსნას: if (i % 2 !== 0) { console.log(i); }. continue განსაკუთრებით სასარგებლოა, როცა ბლოკი გრძელია და თავშივე გინდა „ზედმეტი“ შემთხვევების მოცილება, რომ დანარჩენი კოდი ღრმად ჩადგმული არ გახდეს.
ხაფანგი while-ში
for-ში ბიჯი (i++) ფრჩხილებშია და continue-ს შემდეგაც სრულდება. while-ში კი ბიჯს თვითონ წერ ბლოკში, და თუ ის continue-ს შემდეგაა, გამოტოვდება:
let i = 0;
while (i < 10) {
if (i === 3) {
continue; // i++ აღარ შესრულდება!
}
i++;
}როცა i 3-ს უდრის, continue ციკლის თავში ბრუნდება, i კი 3-ად რჩება. ეს უსასრულო ციკლია. while-ში ბიჯი continue-მდე უნდა გაზარდო, ან ასეთ შემთხვევაში for აირჩიო.
სცადე თავად
გაუშვი, მერე შეცვალე: იპოვე პირველი რიცხვი 100-ის შემდეგ, რომელიც 13-ზე იყოფა.
ხშირი შეცდომები
continueბიჯამდეwhile-ში. უსასრულო ციკლის კლასიკური მიზეზი. ბიჯიcontinue-მდე გადაიტანე.breakციკლის გარეთ.breakმხოლოდ ციკლში ანswitch-ში მუშაობს. სხვაგან შეცდომას იძლევა.- ზედმეტი
break. თუ ციკლის პირობა თავისით ჩერდება სწორ დროს,breakსაჭირო არ არის. ის გამოიყენე მაშინ, როცა გაჩერება შიგნით აღმოჩენილ რამეზეა დამოკიდებული.
სავარჯიშო
დაბეჭდე რიცხვები 1-დან 20-მდე, გარდა 3-ის ჯერადებისა (3, 6, 9…). გამოიყენე continue. პირველი დაბეჭდილი რიცხვები უნდა იყოს 1, 2, 4, 5, 7.
💡 მინიშნება
3-ის ჯერადია რიცხვი, რომლისთვისაც i % 3 === 0.
✅ ამოხსნის ნახვა
for (let i = 1; i <= 20; i++) {
if (i % 3 === 0) {
continue;
}
console.log(i);
}მინი-ქვიზი
1რას აკეთებს break ციკლში?
break-ის შემდეგ პროგრამა ციკლის შემდეგ მდგომ კოდზე გადადის.
2რას დაბეჭდავს? for (let i = 1; i <= 5; i++) { if (i === 3) continue; console.log(i); }
3-ზე continue console.log-ს გამოტოვებს, მაგრამ ციკლი გრძელდება.
3რატომ იქცევა while-ში continue ზოგჯერ უსასრულო ციკლად?
for-ში ბიჯი ფრჩხილებშია და ყოველთვის სრულდება. while-ში ბიჯი შენი დაწერილია ბლოკში.
შეჯამება
breakციკლს მაშინვე წყვეტს: მოსახერხებელია ძებნისას.continueმიმდინარე იტერაციის დარჩენილ ნაწილს გამოტოვებს და შემდეგზე გადადის.while-ში ბიჯიcontinue-მდე გაზარდე, თორემ ციკლი შეიძლება უსასრულო გახდეს.- ორივე მხოლოდ ციკლის შიგნით მუშაობს (
breakswitch-შიც).