პროგრამირების საფუძვლები › დამწყები › პირობები
ჩადგმული პირობები
ეს თავი CodeQuest Pro-ს ნაწილია
Pro ხსნის სკოლის ყველა კურსს და თამაშის ყველა ლეველს, ვიდეოს და პროექტს. ერთჯერადი გადახდა, გამოწერის გარეშე.
რას ისწავლი
- როგორ ჩასვა
ifსხვაif-ის ბლოკში - როდის შეიძლება ჩადგმული პირობის ერთ პირობად გაერთიანება
&&-ით - რატომ არის ღრმა ჩადგმა ცუდი და როგორ აიცილო თავიდან
კითხვა კითხვის შიგნით
ზოგი გადაწყვეტილება ეტაპობრივად მიიღება. კინოთეატრის კარზე ჯერ გეკითხებიან, ბილეთი თუ გაქვს. თუ არ გაქვს, საუბარი აქვე მთავრდება. თუ გაქვს, მერე ამოწმებენ ასაკს, რადგან ფილმი 12 წლიდანაა. მეორე კითხვა მხოლოდ მაშინ ისმება, როცა პირველზე პასუხი „კი“ იყო.
კოდში ეს ჩადგმული პირობით (nested condition) იწერება: ერთი if მეორის ბლოკშია.
let hasTicket = true;
let age = 10;
if (hasTicket) {
if (age >= 12) {
console.log("კეთილი იყოს შენი მობრძანება!");
} else {
console.log("ამ ფილმზე 12 წლიდან შეიძლება.");
}
} else {
console.log("ჯერ ბილეთი იყიდე.");
}- გარე
ifამოწმებს ბილეთს. ბილეთი არის, ამიტომ შედის მის ბლოკში. - შიგნით მეორე
ifამოწმებს ასაკს. 10 ნაკლებია 12-ზე, ამიტომ სრულდება შიდაelse. - იბეჭდება „ამ ფილმზე 12 წლიდან შეიძლება.“
შეწევა აქ განსაკუთრებით მნიშვნელოვანია: მის გარეშე ძნელი მისახვედრია, რომელი else რომელ if-ს ეკუთვნის. თითოეული else ყოველთვის იმ if-ს ეკუთვნის, რომლის დამხურავ ფრჩხილსაც პირდაპირ მოსდევს.
როდის ჯობს &&
თუ თითოეულ ეტაპზე განსხვავებული პასუხი გჭირდება, როგორც ზემოთ, ჩადგმა სწორი არჩევანია. მაგრამ თუ მხოლოდ ერთ შემთხვევაში ხდება რამე, ორი if ერთ პირობად შეიძლება გაერთიანდეს:
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 ისე, რომ სამივე შეტყობინება ნახო. რამდენი გაშვება დაგჭირდა?
ხშირი შეცდომები
- დაკარგული ფრჩხილი. ჩადგმულ კოდში ფრჩხილები ადვილად ირევა. ყოველი
{-ისთვის იპოვე მისი}. ბევრი რედაქტორი წყვილ ფრჩხილს გიფერადებს. elseარასწორif-თან. თუ შეწევა არეულია, შეიძლება გეგონოს, რომelseგარეif-ს ეკუთვნის, სინამდვილეში კი შიდას ეკუთვნის. შეწევა ყოველთვის სწორად შეინარჩუნე.- ზედმეტი ჩადგმა. ორი
ifelse-ების გარეშე ერთ&&-ად უნდა იქცეს.
სავარჯიშო
მაღაზიაში წევრებს ფასდაკლება აქვთ: თუ ყიდვა 50 ლარზე მეტია, 20%, სხვა შემთხვევაში 10%. არაწევრებს ფასდაკლება არ აქვთ. isMember = true და total = 60-ისთვის დაბეჭდე გადასახდელი: 48.
💡 მინიშნება
20% ფასდაკლება ნიშნავს, რომ იხდი ფასის 80%-ს: total * 0.8. 10%-ის შემთხვევაში total * 0.9.
✅ ამოხსნის ნახვა
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. რა დაიბეჭდება?
გარე პირობა false-ა, ამიტომ შიდა if საერთოდ არ მოწმდება.
2რომელი ერთი პირობა ცვლის ორ ჩადგმულ if-ს else-ების გარეშე?
ბლოკი უნდა შესრულდეს, როცა ორივე პირობა სრულდება. ეს არის &&.
3რომელ if-ს ეკუთვნის else?
else უახლოეს if-ს ეკუთვნის, რომლის ბლოკიც მის წინ დაიხურა.
შეჯამება
- ჩადგმული პირობა არის
ifსხვაif-ის ბლოკში: მეორე კითხვა მხოლოდ პირველზე „კი“ პასუხის შემდეგ ისმება. - თუ შიდა
if-სelseარ აქვს, ორი პირობა&&-ით გააერთიანე. - ღრმა ჩადგმა კოდს ძნელად წასაკითხს ხდის. სამი დონე უკვე ბევრია.
- შეწევა გიჩვენებს, რომელი
elseრომელif-ს ეკუთვნის.