შესვლა

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

ჩადგმული პირობები

მარტივი⏱ 7 წთ+20 XP👑 Pro#პირობები#ჩადგმა#წაკითხვადობა

რას ისწავლი

  • როგორ ჩასვა if სხვა if-ის ბლოკში
  • როდის შეიძლება ჩადგმული პირობის ერთ პირობად გაერთიანება &&-ით
  • რატომ არის ღრმა ჩადგმა ცუდი და როგორ აიცილო თავიდან

კითხვა კითხვის შიგნით

ზოგი გადაწყვეტილება ეტაპობრივად მიიღება. კინოთეატრის კარზე ჯერ გეკითხებიან, ბილეთი თუ გაქვს. თუ არ გაქვს, საუბარი აქვე მთავრდება. თუ გაქვს, მერე ამოწმებენ ასაკს, რადგან ფილმი 12 წლიდანაა. მეორე კითხვა მხოლოდ მაშინ ისმება, როცა პირველზე პასუხი „კი“ იყო.

კოდში ეს ჩადგმული პირობით (nested condition) იწერება: ერთი if მეორის ბლოკშია.

JavaScript
let hasTicket = true;
let age = 10;

if (hasTicket) {
  if (age >= 12) {
    console.log("კეთილი იყოს შენი მობრძანება!");
  } else {
    console.log("ამ ფილმზე 12 წლიდან შეიძლება.");
  }
} else {
  console.log("ჯერ ბილეთი იყიდე.");
}
  1. გარე if ამოწმებს ბილეთს. ბილეთი არის, ამიტომ შედის მის ბლოკში.
  2. შიგნით მეორე if ამოწმებს ასაკს. 10 ნაკლებია 12-ზე, ამიტომ სრულდება შიდა else.
  3. იბეჭდება „ამ ფილმზე 12 წლიდან შეიძლება.“

შეწევა აქ განსაკუთრებით მნიშვნელოვანია: მის გარეშე ძნელი მისახვედრია, რომელი else რომელ if-ს ეკუთვნის. თითოეული else ყოველთვის იმ if-ს ეკუთვნის, რომლის დამხურავ ფრჩხილსაც პირდაპირ მოსდევს.

როდის ჯობს &&

თუ თითოეულ ეტაპზე განსხვავებული პასუხი გჭირდება, როგორც ზემოთ, ჩადგმა სწორი არჩევანია. მაგრამ თუ მხოლოდ ერთ შემთხვევაში ხდება რამე, ორი if ერთ პირობად შეიძლება გაერთიანდეს:

JavaScript
let hasTicket = true;
let age = 14;

// ჩადგმული
if (hasTicket) {
  if (age >= 12) {
    console.log("შედი!");
  }
}

// იგივე, ერთი პირობით
if (hasTicket && age >= 12) {
  console.log("შედი!");
}

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

ღრმა ჩადგმის საფრთხე

ჩადგმა შეიძლება ბევრ დონეზე გაგრძელდეს: if if-ში, ის კიდევ if-ში. ასეთი კოდი მარჯვნივ „მიცოცავს“ და მასში ადვილად იკარგები. პროგრამისტები ამას ხუმრობით „ისრის კოდს“ ეძახიან, რადგან შეწევა ისრის წვერს ჰგავს.

თუ სამ დონეზე მეტი ჩადგმა გაქვს, შეჩერდი და იფიქრე: ხომ არ შეიძლება პირობების &&-ით გაერთიანება ან else if ჯაჭვად გადაწყობა? შემდეგ მოდულებში ისწავლი კიდევ ერთ ხერხს: ფუნქციაში ჩაწერილ პირობას შეუძლია პასუხი ადრევე დააბრუნოს და ჩადგმა საერთოდ აღარ დასჭირდეს.

სცადე თავად

შეცვალე hasTicket და age ისე, რომ სამივე შეტყობინება ნახო. რამდენი გაშვება დაგჭირდა?

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

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

  • დაკარგული ფრჩხილი. ჩადგმულ კოდში ფრჩხილები ადვილად ირევა. ყოველი {-ისთვის იპოვე მისი }. ბევრი რედაქტორი წყვილ ფრჩხილს გიფერადებს.
  • else არასწორ if-თან. თუ შეწევა არეულია, შეიძლება გეგონოს, რომ else გარე if-ს ეკუთვნის, სინამდვილეში კი შიდას ეკუთვნის. შეწევა ყოველთვის სწორად შეინარჩუნე.
  • ზედმეტი ჩადგმა. ორი if else-ების გარეშე ერთ &&-ად უნდა იქცეს.

სავარჯიშო

მაღაზიაში წევრებს ფასდაკლება აქვთ: თუ ყიდვა 50 ლარზე მეტია, 20%, სხვა შემთხვევაში 10%. არაწევრებს ფასდაკლება არ აქვთ. isMember = true და total = 60-ისთვის დაბეჭდე გადასახდელი: 48.

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

20% ფასდაკლება ნიშნავს, რომ იხდი ფასის 80%-ს: total * 0.8. 10%-ის შემთხვევაში total * 0.9.

✅ ამოხსნის ნახვა
JavaScript
let isMember = true;
let total = 60;
let toPay = total;

if (isMember) {
  if (total > 50) {
    toPay = total * 0.8;
  } else {
    toPay = total * 0.9;
  }
}

console.log("გადასახდელი:", toPay);

მინი-ქვიზი

1კინოს მაგალითში hasTicket = false, age = 15. რა დაიბეჭდება?

2რომელი ერთი პირობა ცვლის ორ ჩადგმულ if-ს else-ების გარეშე?

3რომელ if-ს ეკუთვნის else?

შეჯამება

  • ჩადგმული პირობა არის if სხვა if-ის ბლოკში: მეორე კითხვა მხოლოდ პირველზე „კი“ პასუხის შემდეგ ისმება.
  • თუ შიდა if-ს else არ აქვს, ორი პირობა &&-ით გააერთიანე.
  • ღრმა ჩადგმა კოდს ძნელად წასაკითხს ხდის. სამი დონე უკვე ბევრია.
  • შეწევა გიჩვენებს, რომელი else რომელ if-ს ეკუთვნის.
📝 ჩემი შენიშვნა