
سلام به همه بچههای علاقمند به کامپیوتر و برنامهنویسی و هوش مصنوعی. همانطور که میدونین روز به روز دنیای هوش مصنوعی داره وسیعتر میشه و به حوزه مختلف از علوم راه یافته است. ما تصمیم داریم هر هفته با یک مقاله در این حوزه، شمارو با رویداد های دنیای هوش مصنوعی آشنا کنیم و مهمتر اینکه ریاضیات این حوزه رو با ساده سازی به شما دانش آموزان عزیز کانونی توضیح بدیم. در نهایت بتونیم قدم به قدم به کد نویسی در محیط پایتون برای مسئله های جذاب هوش مصنوعی برسیم. پیشنهاد میکنم هر هفته مارو با یک مقاله در این حوزه دنبال کنید.
همونطور که خاطرتون هست هفته پیش درباره خطاها براتون صحبت کردیم. سه دستهبندی کلی برای خطاها نام بردیم و مختصات هر کدوم را به طور کلی براتون ترسیم کردیم. برای اینکه بحثمون ناقص نمونه این هفته قصد داریم براتون درباره روشهای خطازدایی از برنامه و کدمون حرف بزنیم. پس ما رو همراهی کنید.
فرض کنید یه برنامه رو کدنویسی کردید و کار تموم شده. حالا نوبت اینه که کدتون رو اجرا کنید تا برنامه بالا بیاد اما با اخطار error مواجه میشید. شما به یکی از سه خطایی که در مطلب قبلی ذکر کردیم روبرو هستید. الان وقتشه که برید سراغ Debug یا اشکالزدایی. هنگام مواجهه با اخطار error اولین کاری که باید بکنید اینه که توضیح زیرِ error رو بخونید. اغلب اوقات وقتی خطای سینتکسی یا حین اجرا رخ داده باشه، IDE پیامی حاوی توضیح خطا تو console براتون نمایش میده. تو این موقعیت ببینید سطور قرمز میخوان چی بگن و آیا میتونید اونارو بفهمید و خطا رو رفع کنید. اگه خطای نوشته شده قابل فهم نبود یا دربارهش هیچی نمیدونستید سعی کنید تو اینترنت جستجوش بکنید. سایتهایی مثل Stack Overflow دقیقاً به همین منظور ساخته شدهاند.
معمولاً وقتی خطای سنتکسی یا حین اجرا رخ داده باشه میتونید به راحتی پیدا و رفع بکنید.

خطا میتونه از جایی رخ بده که قبلاً بهش فکر نکرده بودید. شاید به جای اینکه دو عدد رو جمع ببندید ضرب کردید، یعنی یه خطای منطقی. این خطاها معمولاً به صورت اخطارهای قرمز ظاهر نمیشن و باید خودتون دنبالشون بگردید. اما یه سری تکنیکها هستن که به کمک اونها میتونید خطاهای منطقی رو ردیابی کرده و رفعش کنید.
Print statement
میتونید از جمله پرینت شده در console استفاده کنید تا بفهمید کجا خطا رخ داده. فرض کنید یه جمله شرطی دارید که یه کد رو اجرا خواهد کرد به شرط آنکه int x بزرگتر از 5 باشه، همچنین کد دیگری رو اجرا خواهد کرد اگر int x بزرگتر از 5 نباشه.

اگر قرار بود وقتی برنامهتون به این خط از کدتون رسید x بزرگتر از 5 باشه ولی به دلایلی تو console x کوچک است رو نمایش میده، میتونید برای رفع این مشکل از جمله پرینتشده استفاده بکنید. تو مورد بالا یه Print (x) قبل از شرطیتون قرار بدید. حالا اگه برنامه رو اجرا بکنید دقیقاً میدونید که کامپیوتر چه فکری میکنه. با این کار شما میتونید بفهمید که متغیر xتون همون ارزشی رو داره که منظور نظر شماست. در غیر این صورت متوجه میشید که یه جای شرطیتون خطایی رخ داده و متغیرتون ارزشی به خودش گرفته که مطلوب شما نیست.

تو این مورد x مساوی 2 است و برای همین جمله x کوچک است نمایش داده شده. حالا که فهمیدیم مشکل کار کجاست سریع میریم سراغ حل مشکل، یعنی ارزش x رو اصلاح میکنیم. بعد از استفاده از این استراتژی مطمئن بشید که print(x) رو حذف کرده باشید تا به هم ریختگیای در console تون پیش نیاد. همین مشکل میتونه به یه نحو دیگه هم حل بشه یعنی روش نقطه انفصال (Break point).
Break point
نقطه انفصال برنامهتون رو دقیقاً همون جایی که مشخص کردید متوقف میکنه. اگر بخوایید برنامهتون از طریق یه شرطی اجرا بشه و یه متغیر رو بر مبنای اون شرطی ایجاد بکنید اما از ایجاد شدن این حالت در کدتون مطمئن نیستید میتونید یه نقطه انفصال درون شرطیای که انتظار اجراش رو دارید قرار بدید.

وقتی برنامه به نقطه انفصال میرسه متوقف میشه و منتظر تایید شما میمونه. در تصویر بالا برنامه به درستی به نقطه انفصال رسیده و در صورت نبودن هیچ گونه خطا در کدتون میتونید به راهتون ادامه بدید. روش نقطه انفصال میتونه همراه با روش print statement به کار بره. برای اجرای هر دو روش برنامه رو متوقف میکنید و ببنید ارزش متغیرتون همونیه که انتظار دارید یا نه. همچنین میتونید چندین نقطه انفصال داشته باشید تا شما رو حین نوشتن کد همراهی بکنه و مشخص بکنه خطا کجا رخ داده. ترکیب این دو روش راه شما رو در یافتن خطاهای منطقی هموار میکنه.
حالا بریم سراغ یه مشکل دیگه. یعنی وقتی که شما متوجه میشید یه بخشی از کدتون باعث خطا شده. ممکنه فکر کنید که باید اون بخش رو حذف کنید اما باید بدونید که بالاخره برای یه دسته کد زحمت کشیدید و به دلایل خاصی اون رو در جای خاصش قرار دادید. پیش از هر چیز سعی کنید اون رو commenting out کنید. کامنتها برای علامت زدن کد و توضیح مشکل به کار میرند. همچنین اونارو میتونیم برای Debug کردن هم استفاده کنیم. کامپیوتر هر چیزی رو که به عنوان کامنت توصیف شده باشه مثل کد اجرا نمیکنه و از اونها میگذره.

اونا فقط برای شما که برنامهنویس هستید کاشته شدن و برای یوزر هیچ مصرفی ندارن. نحو کامنتگذاری زبان به زبان متفاوته اما تو همشون یه سری علامتها استفاده بشه تا نشون بده یه جمله کامنته نه کد.

ما به اندازه کافی درباره روشهای خطایابی و حل آنها صحبت کردیم. الان میخواییم یه سری راهکار بدیم تا به وسیله اونها از همون اول کدنویسیِ بدون خطا داشته باشید.
اولاً از کدتون سریع یه backup بگیرید. اگر برنامهتون کاملاً به خطا رفته باشه و از درست کردنش عاجز بشید، ضرورت بازگشت به ورژن قبلی کدتون، جایی که هنوز کدتون کار میکنه، براتون پیش میاد. اگه مدام از کدتون backup بگیرید احتمال زیاد به زحمت نخواهید افتاد. ورژن منیجرهایی مانند GitHub یا SubVersion میتونن تو این زمینه کمکتون کنند. به طوری که backup کدتون رو تو یه cloud service آنلاین ذخیره میکنن. این کار به شما این امکان رو میده تا بتونید کدتون رو تو هر مرحلهای که بخوایید بازیابی کنید.

همچنین فراتر از ذخیره یا backup، پیوسته کدتون رو اجرا کنید تا مطمئن بشید که نسخه حاضرتون بدون ایراد باشه. با این کار شما دو چیز به دست آوردید. اولاً اینکه این کار شما رو از گرفتن backup از کدهایی که کار نمیکنن بینیاز میکنه. دوماً اگر به مشکلی برخورد کردید، با این کار خیلی راحت یه سری تغیرات کوچیک تو کدتون به وجود میارید چون از آخرین باری که کد رو با موفقیت اجرا کردید خیلی زمان نگذشته. بنابراین باید تو چند سطر اخیر کدتون دنبال مشکل بگردید. اگه مثلاً 5 ساعت کدنویسی کنید بدون اینکه حتی یک بار اون رو اجرا بکنید قطعاً حین این مدت زمان یه جایی گند زدید ولی پیدا کردن این گند میون یه کد 5 ساعته بسیار سخت خواهد بود.
با این حال در نظر داشته باشید که خطاها هرچقدر هم کلافهکننده باشند، سهم زیادی تو برنامهنویس کردن شما دارند.
واژگان اختصاصی

منابع
- Introduction to Programming and Computer Science - Full Course - YouTube
- https://introprogramming.info/wpcontent/uploads/2013/07/Books/CSharpEn/Fundamentals-of-Computer-Programming-with-CSharp-Nakov-eBook-v2013.pdf
- http://roochet.ir/articles/php-integers-floats-and-number-strings
دوستان عزیزم؛ برای ارتباط با برترها و رزرو پشتیبان ویژه پیج کانون برترها را دنبال کنید.
همچنین میتوانید با شماره 0218451 داخلی 3123 تماس بگیرید.

