შესვლა

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

კოდის „ხელით“ შესრულება

საშუალო⏱ 7 წთ+20 XP👑 Pro#debugging#მიკვლევა#ალგორითმი

რას ისწავლი

  • როგორ შეასრულო კოდი ქაღალდზე მიკვლევის ცხრილით (trace table)
  • რატომ ღირს შედეგის გამოცნობა გაშვებამდე
  • რა არის „რეზინის იხვის“ მეთოდი

კომპიუტერივით ფიქრი

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

მიკვლევის ცხრილი

ავიღოთ კოდი, რომლის შედეგიც ერთი შეხედვით არ ჩანს:

JavaScript
let a = 1;
let b = 1;

for (let i = 0; i < 4; i++) {
  let c = a + b;
  a = b;
  b = c;
}

console.log(b);

დახატე ცხრილი, სადაც ყოველი ცვლადი სვეტია, ყოველი იტერაცია კი სტრიქონი. მიკვლევის ცხრილში (trace table) ჩაწერე მნიშვნელობები ყოველი ნაბიჯის შემდეგ:

ნაბიჯიicab
დასაწყისი——11
იტერაცია 10212
იტერაცია 21323
იტერაცია 32535
იტერაცია 43858

როცა i 4 ხდება, პირობა 4 < 4 false-ა და ციკლი მთავრდება. იბეჭდება 8. ცხრილმა ისიც გაჩვენა, რას აკეთებს კოდი: ყოველი ახალი რიცხვი წინა ორის ჯამია. ეს ცნობილი ფიბონაჩის მიმდევრობაა: 1, 1, 2, 3, 5, 8…

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

ჯერ გამოიცანი, მერე გაუშვი

კარგი ჩვევაა: გაშვებამდე წარმოთქვი, რას ელი. „ეს უნდა დაბეჭდოს 8“. თუ შედეგი დაემთხვა, შენი გაგება სწორია. თუ არ დაემთხვა, ორიდან ერთი: ან კოდშია შეცდომა, ან შენს გაგებაში. ორივე შემთხვევაში რაღაცას სწავლობ.

ვინც შედეგს არ გამოიცნობს, ის მოულოდნელ პასუხს ადვილად ვერ ამჩნევს. „დაბეჭდა 13, ალბათ ასეც უნდა იყოს“.

რეზინის იხვი

პროგრამისტებს შორის ცნობილი ხერხია „რეზინის იხვის“ დებაგინგი (rubber duck debugging). მაგიდაზე დაიდე სათამაშო, მაგალითად რეზინის იხვი, და ხმამაღლა აუხსენი კოდი ხაზ-ხაზ: „აქ ვქმნი ცვლადს, აქ ციკლი იწყება ნულიდან…“. საოცარია, მაგრამ ხშირად ახსნის შუაში თვითონ ამჩნევ შეცდომას: „…და პირობაა ნაკლები ან ტოლი სიგრძის… მოიცა!“.

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

სცადე თავად

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

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

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

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

სავარჯიშო

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

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

i = 1: +1, i = 2: -1, i = 3: +3, i = 4: -1, i = 5: +5. დაიწყე 0-დან.

✅ ამოხსნის ნახვა
JavaScript
let total = 0;
for (let i = 1; i <= 5; i++) {
  if (i % 2 === 1) {
    total += i;
  } else {
    total -= 1;
  }
}
console.log(total);   // 7

მინი-ქვიზი

1რა არის მიკვლევის ცხრილი?

2რატომ ღირს შედეგის გამოცნობა გაშვებამდე?

3რას დაბეჭდავს? let s = 0; for (let i = 1; i <= 3; i++) { s = s * 2 + i; } console.log(s);

შეჯამება

  • კომპიუტერი ყოველ ხაზს ზუსტად ასრულებს. შენც ასე გაიარე კოდი ქაღალდზე.
  • მიკვლევის ცხრილი: სვეტები ცვლადებისთვის, სტრიქონები ნაბიჯებისთვის.
  • გაშვებამდე გამოიცანი შედეგი.
  • ხმამაღლა ახსნა, თუნდაც სათამაშოსთვის, შეცდომას ხშირად თავისით აჩენს.
📝 ჩემი შენიშვნა