შესვლა

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

switch: ბევრი ვარიანტი

მარტივი⏱ 7 წთ+20 XP👑 Pro#პირობები#switch#case#break

რას ისწავლი

  • როგორ ააწყო არჩევანი switch, case და default სიტყვებით
  • რას აკეთებს break და რა ხდება მის გარეშე
  • როდის ჯობს switch და როდის if / else if

ერთი ცვლადი, ბევრი ვარიანტი

წარმოიდგინე, რომ ცვლადში კვირის დღის ნომერი ინახება და მისი სახელი უნდა დაბეჭდო. else if ჯაჭვით ასე გამოვა:

JavaScript
let day = 3;

if (day === 1) {
  console.log("ორშაბათი");
} else if (day === 2) {
  console.log("სამშაბათი");
} else if (day === 3) {
  console.log("ოთხშაბათი");
}

ყოველ ხაზში მეორდება day ===. როცა ერთსა და იმავე მნიშვნელობას ბევრ ვარიანტს ადარებ, უფრო მოწესრიგებული ჩანაწერი არსებობს, switch:

JavaScript
let day = 3;

switch (day) {
  case 1:
    console.log("ორშაბათი");
    break;
  case 2:
    console.log("სამშაბათი");
    break;
  case 3:
    console.log("ოთხშაბათი");
    break;
  default:
    console.log("ასეთი დღე არ ვიცი");
}
  1. switch (day) იღებს შესამოწმებელ მნიშვნელობას.
  2. ყოველი case ერთი ვარიანტია. კომპიუტერი ეძებს პირველ case-ს, რომელიც day-ს მკაცრად (===-ით) უდრის.
  3. ნაპოვნი case-დან იწყებს კოდის შესრულებას.
  4. break ამბობს: „მორჩა, გამოდი switch-იდან“.
  5. default სრულდება, როცა არცერთი case არ დაემთხვა, ისევე როგორც ბოლო else.

რატომ გვჭირდება break

switch-ს ერთი თავისებურება აქვს: ნაპოვნი case-ის შემდეგ კომპიუტერი შემდეგ case-ებზეც „ჩავარდება“ და მათ კოდსაც შეასრულებს, სანამ break-ს არ შეხვდება. ამას ჩავარდნა (fall-through) ჰქვია:

JavaScript
let level = 1;

switch (level) {
  case 1:
    console.log("ადვილი");
  case 2:
    console.log("საშუალო");
    break;
  case 3:
    console.log("რთული");
}

ეს დაბეჭდავს „ადვილი“-ს და „საშუალო“-ს: case 1-ს break არ აქვს, ამიტომ კომპიუტერმა case 2-ის კოდიც შეასრულა. თითქმის ყოველთვის ეს შეცდომაა, ამიტომ ყოველი case break-ით დაასრულე.

ჩავარდნა ზოგჯერ განზრახაც გამოიყენება: როცა რამდენიმე ვარიანტს ერთი და იგივე პასუხი აქვს, case-ები ერთმანეთის ქვეშ ჩამოწერე:

JavaScript
let day = 6;

switch (day) {
  case 6:
  case 7:
    console.log("დასვენების დღეა");
    break;
  default:
    console.log("სამუშაო დღეა");
}

switch თუ if

switch კარგია, როცა ერთ მნიშვნელობას კონკრეტულ ვარიანტებს ადარებ: დღის ნომერს, მენიუს პუნქტს, ფერის სახელს. როცა საზღვრებს ამოწმებ, მაგალითად „90-ზე მეტი“ ან „18-დან 65-მდე“, if / else if გამოიყენე: case-ში შედარება ზუსტ ტოლობაზე მუშაობს.

სცადე თავად

გაუშვი, მერე light-ში სხვა ფერები ჩაწერე, მათ შორის ისეთიც, რომელიც სიაში არ არის.

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

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

  • დავიწყებული break. კოდი შემდეგ case-ებშიც გაგრძელდება. ყოველი case break-ით დაასრულე, თუ ჩავარდნა განზრახ არ გინდა.
  • დიაპაზონი case-ში. case score > 90: ისე არ მუშაობს, როგორც ელი, რადგან case switch-ის მნიშვნელობას ზუსტად ადარებს. საზღვრებისთვის if გამოიყენე.
  • ტიპების არევა. switch ("1") არ დაემთხვევა case 1-ს, რადგან ტექსტი და რიცხვი მკაცრად არ არის ტოლი.

სავარჯიშო

ცვლადში grade ინახება შეფასება ასოთი: "A", "B", "C" ან სხვა. switch-ით დაბეჭდე: A → ფრიადი, B → კარგი, C → საშუალო, სხვა ნებისმიერი → უცნობი შეფასება. სცადე grade = "B".

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

case "A": ასოს ბრჭყალებში ჩაწერე და არ დაგავიწყდეს break. უცნობი შეფასება default-ია.

✅ ამოხსნის ნახვა
JavaScript
let grade = "B";

switch (grade) {
  case "A":
    console.log("ფრიადი");
    break;
  case "B":
    console.log("კარგი");
    break;
  case "C":
    console.log("საშუალო");
    break;
  default:
    console.log("უცნობი შეფასება");
}

მინი-ქვიზი

1რას დაბეჭდავს? let x = 1; switch (x) { case 1: console.log("ერთი"); case 2: console.log("ორი"); break; }

2როდის სრულდება default?

3რომელი ამოცანისთვის ჯობს if / else if?

შეჯამება

  • switch ერთ მნიშვნელობას ბევრ case-ს ადარებს მკაცრი ტოლობით.
  • break switch-იდან გამოდის. მის გარეშე კოდი შემდეგ case-ში ჩავარდება.
  • default სრულდება, როცა არცერთი case არ დაემთხვა.
  • ზუსტი ვარიანტებისთვის switch, საზღვრებისთვის if.
📝 ჩემი შენიშვნა