
سلام به همه بچههای علاقمند به کامپیوتر و برنامهنویسی و هوش مصنوعی. همانطور که میدونین روز به روز دنیای هوش مصنوعی داره وسیعتر میشه و به حوزه مختلف از علوم راه یافته است. ما تصمیم داریم هر هفته با یک مقاله در این حوزه، شمارو با رویداد های دنیای هوش مصنوعی آشنا کنیم و مهمتر اینکه ریاضیات این حوزه رو با ساده سازی به شما دانش آموزان عزیز کانونی توضیح بدیم. در نهایت بتونیم قدم به قدم به کد نویسی در محیط پایتون برای مسئله های جذاب هوش مصنوعی برسیم. پیشنهاد میکنم هر هفته مارو با یک مقاله در این حوزه دنبال کنید.
در مطالب گذشته در مورد انواع Bugها و Debugها براتون صحبت کردیم. از این هفته دوباره برمیگردیم به سیر اصلی مطالبمون و درباره مفاهیم پایهای برنامهنویسی براتون صحبت میکنیم.
کارکردها (Functions) چیا هستن؟
شاید متوجه نشده باشید اما تو سلسله مطالب گذشتهمون به یه سری کارکردها اشاره کردیم. مثلا Print statements، For loops و Basic math operations. اینا همشون نمونههایی از کارکردها هستند. خب حالا میخواییم ببنیم خود کارکرد چیه و به طور کلی به چه دردی میخورن.
کارکرد قطعهای کده که صرفاً با استفاده از نامشون اجرا میشن. بسته به نوع کارکرد هر نامی یه کار خاصی میکنه. کارکردها رو میتونید در هر زمان و مکانی در کدتون استفاده کنید. داستان اینجوریه که بر فرض یه سری کد رو کادو پیچی کردید و یه اسمی روش گذاشتید. هر وقت خواستید میتونید این کادو رو باز کنید و از محتویاتش استفاده کنید. برای مثال Print statement رو در نظر بگیرید. این کارکرد به ما اجازه میده هر چیزی رو که دلخواه ماست تو console بنویسیم. همونطور که میبینید ما صرفاً اسم print رو نوشتیم و متن دلخواهمون رو در اون قرار دادیم و کامپیوتر اون رو برای ما نمایش داده.

پشت صحنه این کارکرد به ظاهر ساده یه سری کدهای پیچیده قرار داره که وظیفهشون دریافت متن شما و تبدیل اون به یه متن پرینت شده در console است. توسعهدهندگان همه زبانهای برنامهنویسی پی بردند که شما نمیخواید برای نمایش متن در console یه سری کدهای پیچیده و عجیب غریب رو به صورت دستی بنویسید. از این رو اونها این کارکرد رو به صورت آماده در اختیار شما قرار دادند تا شما رو از پیچیدگی و سختی این دسته از کدها رها کنند. این داستانِ همه کارکردهای موجود در برنامهنویسی و همچنین ستون فقرات یک برنامه موفق است.
اغلب مواقع یه دسته کد وجود داره که مدام تکرار میشه و یه هدف واحد رو دنبال میکنه یا یه سری معادلات وجود داره که به شما اجازه میده ورودیهای متفاوتی وارد کنید. بنابراین میتونیم از کارکردها برای یه کاسه کردن مجموعهای از دستورات و تبدیل اونها به یه خطِ کدِ ساده استفاده کنیم. با این کار هم زمان بیشتری میخرید و هم به هم ریختگی در کدتون پیش نمیاد. به زودی خواهید دید که کارکردها بسیار قدرتمند هستند و در سفر پرهیجانِ یادگیریِ برنامهنویسی مدام از اونها استفاده خواهید کرد.
Print statement تنها یه نمونه کوچک از کارکردها است. به کمک IDEها هزاران هزار کارکرد در اختیار شما قرار داده شده. اما از اونجایی که ما همه کارکردها رو تو یه برنامه استفاده نمیکنیم، شما باید اونها رو از پکیجهای موجود در IDEها استخراج کنید. البته به کمک ما!
چهار نوع کارکرد در اکثر زبانهای برنامهنویسی وجود داره. این چهارتا از طرق دو ویژگی از هم متمایز میشن: آیا پذیرای استدلال (Argument) هستند یا نه؟ و آیا ارزشی به دست میدن یا نه؟

Argument
خب قبل از این به تماز اول بپردازیم باید ببنیم استدلال در زبان برنامهنویسی به چی میگن. Argumentها متغیرهایی هستند که ما داخل یک کاردکرد میکنیم تا کدمون رو دستکاری کرده سپس یا در consoleمون نمایش بدیم یا در یه عملیات دیگهای ازشون استفاده کنیم. به کارکردهای دارای Argument اینجوری فکر کنید: اگر شما به مغازهای در محلتون برید و بهشون بگید که میخوایید غذا سفارش بدید بدون اینکه غذای خاصی براتون فراهم بشه، اونها گیج و منگ به شما نگاه میکنن. برای اینکه غذای مورد نظرتون رو به دست بیارید باید بهشون بگید که دقیقاً چه غذایی رو میخواید. تو این مثال گرفتن غذا همون کارکرد هست و نوع غذای شما Argumentها هستند. برمبنای اینکه چه سفارشی به مغازهدار میدید یا Argumentی تو کارکرد غذا وارد میکنید، نتایج متفاوتی به دست میارید. این رو هم باید بدونید که این Argument میتونه چیزهای متفاوتی باشه. میتونه برگر باشه یا آبگوشت یا فسنجون یا نوشابه! تو برنامهنویسی هم Argumentهاتون میتونن رشتهها (strings) یا intها یا آرایهها (arrays) یا هر چیز دیگری باشن. اجازه بدید از کارکردی که توش Argument به کار رفته یه مثال بزنیم.
- کارکردهای دارای Argument
یکی از کارکردهای موجود در برنامهنویسی MaxFunction است. این کارکرد از دو عدد صحیح به عنوان Argumentهاش استفاده میکنه و بزرگترین عدد رو به عنوان خروجی تحویل میده.

تو این کارکرد، اگه دو عدد یا متغیر داخل پرانتز قرار ندید با خروجی error مواجه خواهید شد. دقیقاً مثل مغازهداری که گیج شد. از اونجایی که هیچ Argumentی بهش ندادید متوجه نشد که دقیقاً چی میخوایید سفارش بدید. کامپیوتر هم نمیدونه دقیقاً کدوم دو عدد رو میخوایید مقایسه بکنید و ماکسیمم به دست بیارید.
Argumentها به برنامهنویس این امکان رو میدن که با یه تیر چندین هدف رو بزنن. یعنی بسته به متغیرهای گوناگون، با استفاده از یه کارکرد واحد نتایج مختلفی به دست بیارن. Argumentها تنوع رو به برنامهنویسی به ارمغان میارن و کدتون رو از یکنواختی و یکدستی بیرون میارن. فرض کنید تو منوی یه رستوران فقط یه غذا موجود باشه خب طبیعیه که به درد نمیخوره. اما اگه یه رستوران منوی پرباری داشته باشه به شما حق انتخاب و تجربه بیشتری میده. این اتفاقیه که در یه کارکرد واحد میفته وقتی Argumentهای مختلفی توش به کار میبرید.

حالا که درباره کارکردهای دارای Argument صحبت کردیم بریم سراغ کارکردهایی که فاقد Argument هستند. چرا که کارکردهایی هم وجود دارند که پذیرای هیچ Argumentی نیستند ولی با این حال برای برنامهنویسها بسیار پرکاربرد هستند.
- کارکردهای فاقد Argument
فرض کنید متنی مینویسید برای بازی RPG. یکی از آپشنهای که به پلیر میدید اینه که بتونه آمار کارهاش رو در هر نقطهای از بازی ببینه. هر بار که شما این آپشن رو فراهم میکنید و پلیر دکمه نمایش آمار رو میزنه لازم نیست مثلاً هر بار که یه آمار جدیدی به دست آورد چندین آمار مختلف رو به صورت print statement بنویسید. اگه بخوایید این کار رو بکنید کدتون به حدی به همریخته میشه که امکان ادامه دادن رو ازتون میگیره.

به جای این کار میتونید مثلاً 6 print statement مختلف رو تو یه کارکرد واحد خلاصه کنید و اون رو PrintStats بنامید. لازم نیست هیچ Argumentی وارد این کارکردتون بکنید. برای اینکه کارکرد مورد نظر بدون توجه به چندی و چونی آمارهاتون کارشو انجام میده.

حالا هر بار که یوزر بخواد آمارهاشو مشاهده بکنه به راحتی کارکرد printStats رو به کار میگیرید و محتوای مورد نظر رو وارد میکنید. این کار هم زمان زیادی براتون حفظ میکنه و هم جلوی طولانی شدن کدتون رو میگیره که در غیر این صورت کارتون تو Debug به مشکل میخوره.
مطلب این هفته با همین دو تمایز به پایان میبریم و هفته دیگه به تمایز بعدیمون یعنی کارکردهای دارای ارزش و بدون ارزش میپردازیم.
واژگان تخصصی

منابع
- 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 تماس بگیرید.

