
سلام به همه بچههای علاقمند به کامپیوتر و برنامهنویسی و هوش مصنوعی. همانطور که میدونین روز به روز دنیای هوش مصنوعی داره وسیعتر میشه و به حوزه مختلف از علوم راه یافته است. ما تصمیم داریم هر هفته با یک مقاله در این حوزه، شمارو با رویداد های دنیای هوش مصنوعی آشنا کنیم و مهمتر اینکه ریاضیات این حوزه رو با ساده سازی به شما دانش آموزان عزیز کانونی توضیح بدیم. در نهایت بتونیم قدم به قدم به کد نویسی در محیط پایتون برای مسئله های جذاب هوش مصنوعی برسیم. پیشنهاد میکنم هر هفته مارو با یک مقاله در این حوزه دنبال کنید.
هفته گذشته در مورد کارکردها بحث کردیم و دو تمایز کلی در تقسیمبندی اونها مطرح کردیم. اولین تمایز کارکرد در این بود که بعضی از اونها دارای Argumentها هستند و بعضی دیگه نه. تمایز بعدی درباره اینه که آیا کارکرد ما ارزشی (value) به دست میده یا نه.
- کارکردهای دارای ارزش
نکتهای که هنگام ساختن یک کارکرد باید بهش توجه کرد اینه که باید چیزی رو که کارکردتون قراره تولید کنه مشخص کنید، البته اگه اصلاً قراره چیز خاصی تولید کنه. کارکردها میتونن ارزشها رو به یوزر تحویل بدن. حالا میخواد این ارزش شکلی از متغیرهای رشتهای یا int ها یا حتی آرایهها (Arrays) باشه. چیزی که باید بهش توجه بکنیم اینه که در بازیابی متغیرها صرفاً انتخاب کارکرد کاری رو از پیش نمیبره. شما باید ارزش به دست اومده رو به چیزی تبدیل کنید یا اون رو print بکنید. به عنوان مثال Maxfunction که پیشتر در موردش صحبت کردیم یه int رو به یوزر تحویل میده. اما برای اینکه اون رو به درد بخور بکنیم یا باید یه متغیر عددی جدید خلق کنیم که برابر باشه با نتیجه Maxfunction مون، یا میتونیم حاصل کارکردمون رو نمایش بدیم که در این مورد حاصلِ ما بزرگترین ارزش بین دو عدد است.

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

این کارکرد رشتهی ترکیبی (Combined string function) میتونه برای خلق متغیرهای رشتهای جدید استفاده بشه. چرا که نتیجهای که این کارکرد به دست میده یه رشته است. این متغیر میتونه برابر با هرچیزی باشه که کارکرد رشتهی ترکیبی ما به دست میده.

- کارکرد بدون ارزش
آخرین نوع کارکرد اونیه که هیچ چیز رو نتیجه نمیده. این نوع کارکرد به کارکرد پوچ (Void) هم مشهوره. اغلب مواقع مثل کارکرد PrintStats کار میکنه. یعنی صرفاً برای فشردهسازی تعداد زیادی از Print statementها به کار میرن. با این نوع کارکرد نمیشه متغیر ایجاد کرد برای اینکه هیچ نتیجهای به دست نمیدن و فقط کدهایی که درون اونها نوشته شده رو اجرا میکنن.

خب دوباره مرور میکنیم. چهار تا کارکرد داشتیم. اولی کارکردی که Argument داره و ارزشی رو به دست میده. دومی کارکردی که Argument داره اما ارزشی رو به دست میده. سومی Argumentی نداره ولی ارزش به دست میده و در نهایت کارکردی که نه Argumentی داره و نه ارزشی رو به دست میده.

هر کدوم از این چهار کارکرد پرکاربرد و بیهمتا هستن.
در پایان بحث از کارکردها اجازه بدید به یکی از مهمترین کاربردهای اونا اشاره کنیم. این کاربرد به ما کمک میکنه تا تغییرات بزرگی رو در کدمون ایجاد کنیم بدون اینکه همه اونها رو بررسی کرده باشیم. اجازه بدید به مثال printStatsمون برگردیم و فرض کنیم که میخوایید به این کارکرد برگردید و آمار جدیدی به اون اضافه کنید تا پلیر بتونه سطحش رو ارتقاء بده. بدون استفاده از کارکرد شما باید به کدتون برگردید و هر نمونهای رو که برای آمار یوزر نمایش دادید رو پیدا کنید و یه print statement جدیدی ایجاد کنید تا آمار جدید رو نمایش بده.

اما اگه یه کارکرد PrintStats ایجاد کنید، همه اون کاری که لازمه بکنید اینه که جایی رو که اون کارکرد رو تعریف میکنید پیدا کنید و یک Print statement اضافه کنید که آمار جدید رو نمایش میده و کار شما دیگه تمومه. حالا در هر جایی که PrintStats رو به کار بردید آمارهای جدیدی رو که وارد کردید نمایش میده.

چجوری از کارکردهای آماده استفاده کنیم؟
در این بخش میخواییم بدونیم که چجوری بدون اینکه کارکرد تازهای ایجاد کنیم از کارکردهایی که دیگران ایجاد کردن استفاده کنیم. اجازه بدید اول با یه مثال مطلب رو جا بندازیم. فرض کنید میخوایید یه خونه بسازید. البته که میتونید خودتون درخت بکارید و بعد درختارو ببرید و ابزارهای لازم رو بسازید و ... . اما چرا اینکارو بکنید وقتی که به راحتی میتونید به یه فروشگاه محلی برید و همه این چیزها رو که بقیه ساختن تهیه کنید. این تصویر ایده اصلیای است که پشت استفاده از کارکردهای دیگران خوابیده. استفاده از کارکردهای دیگران به شما این امکان رو میده که به کتابخونهای پر از کارکردها دسترسی پیدا کنید. تعداد زیادی کارکرد وجود داره که بسیار برای شما کاربردی خواهد بود که اگه بخوایید خودتون همهشونو بنویسید عمرتون تموم شده! خوشبختانه دیگران از قبل همه این کارکردها رو ساختن.
در هر زبانِ برنامهنویسی به شما این امکان داده شده تا با ایستفاده از جملههای وارده (Import) کتابخانههایی از کارکردها رو وارد برنامهتون بکنید. یک کتابخونه (Library) مجموعهای از کارکردهاست که همشون تم (Theme) یکسانی دارند. مانند کتابخانه ریاضی (Math library) یا کتابخانه تحلیل داده (Data analysis library).

در واقع یکی از بخشهای اصلی هر برنامهنویسی موفق گشتن به دنبال پکیجهایی است که کارتون رو راحتتر بکنه و شما رو از ایجاد دستی کارکردها بینیاز میکنه.
دوستان عزیز مطلب این هفتهمون هم اینجا به پایان میرسه. تا اینجا با مفهوم کلیدی کتابخانه و البته کتابخانهای از هر کارکرد آشنا شدید. هفته بعد بیشتر درباره کتابخانهها توضیح خواهیم داد.
واژگان تخصصی

منابع
- 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
دوستان عزیزم؛ برای ارتباط با برترها و رزرو پشتیبان ویژه پیج کانون برترها را دنبال کنید.

