
سلام به همه بچههای علاقمند به کامپیوتر و برنامهنویسی و هوش مصنوعی. همانطور که میدونین روز به روز دنیای هوش مصنوعی داره وسیعتر میشه و به حوزه مختلف از علوم راه یافته است. ما تصمیم داریم هر هفته با یک مقاله در این حوزه، شمارو با رویداد های دنیای هوش مصنوعی آشنا کنیم و مهمتر اینکه ریاضیات این حوزه رو با ساده سازی به شما دانش آموزان عزیز کانونی توضیح بدیم. در نهایت بتونیم قدم به قدم به کد نویسی در محیط پایتون برای مسئله های جذاب هوش مصنوعی برسیم. پیشنهاد میکنم هر هفته مارو با یک مقاله در این حوزه دنبال کنید.
هفته پیش مبحث کارکردها رو بحث کردیم اما نه همشو. گفتیم کارکرد، همونطور که از اسمش پیداست، کار مشخصی رو برای ما انجام بده. مثلا اعداد زوج یه مجموعه عددی رو برامون پیدا کنه. عملاً در هر کارکردی مجموعهای از کدهای پیچیده به کار رفته تا یه کار ظاهراً راحت رو برای ما انجام بده. همچنین انواع اونارو بهتون گفتیم. حالا چجوری میتونیم مجموعهای از کارکردهای مرتبط رو به IDEمون انتقال بدیم؟ عموماً مجموعهای از کارکردهای همسان در یک پکیج جمع میشه که بهش کتابخونه میگیم. هر برنامهنویس کتابخونه خاص خودش رو داره که بسته به حوزه کاریش عموماً از اون استفاده میکنه. حالا که اجمالاً با مفهوم کتابخونه در برنامهنویسی آشنا شدیم بهتره بریم سراغ import کردن یا انتقال دادن کتابخونه، پکیج و کلاسها به برنامهمون.
چجوری کتابخونههارو import کنیم؟
در هر زبان برنامهنویسی قابلیتی داریم به اسم import statement. این قابلیت به سیستم میگه که ما میخواهیم از کدوم کارکرد و کلاس (Class) استفاده کنیم. کلاً میخواد راهی رو که میخواییم بریم نشون بده. یه import statement از سه بخش تشکیل میشه. کتابخونهای که میخوایید از statement به دست بیارید، پکیجی (package) که میخوایید از کتابخونه به دست بیارید، و کلاسی (class) که بین کلاسای دیگه در پکیج ازش استفاده خواهید کرد. مثال: میتونیم یه کتابخونه Java ایجاد بکنیم. بعد یه پکیج به نام util ایجاد کنیم. Util مخفف utilities است که برای اشاره به یه سری خدمات استفاده میشه. از این package یعنی utilities، یه کلاسی به نام scanner به دست میاریم. کلاسی که به ما اجازه میده اطلاعات یوزر رو بخونیم.

به زبون ساده کلاس و پکیج صرفاً همون کارکرد هستن ولی نوع مشخصتر اون. یعنی دقیقاً نوع کارکردمون رو بین هزاران متد (Method) در یک کتابخونه مشخص میکنیم. حالا اگه نمیدونید دقیقاً چه کلاسی رو از این همه متد انتقال بدید، میتونید از یه ستاره استفاده کنید تا همه کلاسهای موجود در یک پکیج رو انتقال بده.

اما بهتر اینه که هدفتون مشخص باشه و سریع آدرس کلاس مورد نیازتون رو وارد کنید تا نمایش داده بشه. چون که برنامهتون رو در اجراهای طولانی پرکاربردتر میکنه. برای مثال در پایتون با نوشتن import + library میتونید یک کتابخونه رو انتقال بدید.

انتقال یه کتابخونه به طور کامل به مراتب نیاز به پردازش زیادی میخواد تا استخراج یه کارکرد مشخص. فرض کنید شما فقط از کارکرد فاکتوریل در کتابخونه ریاضی پایتون استفاده میکنید. اگه کل کتابخونه ریاضی رو فقط به خاطر این یه کارکرد استخراج کنید قدرت پردازندگی کامپوتر رو بیخودی هدر دادید. این مسئله در برنامههای کوچیک خودشو نشون نمیده ولی تو پروژههای عظیم خودشو نشون میده. بنابراین شما از from math import factorial استفاده میکنید یا تو جاوا از سینتکس خاصش برای مشخص کردن کلاس مورد نظرتون.

الان دیگه با یه دستور ریاضیاتی مشخص طرفیم. هر وقت هم خواستید از کارکردی استفاده بکنید که از قبل تصمیمی برای استفاده کردنش نداشتید میتونید برگردید و اون رو هم import کنید. اگه نمیدونید که کدوم کتابخونه رو تو IDEتون دارید و کدوم رو ندارید میتونید با یه سرچ ساده در گوگل بفهمید. اگه کتابخونهی خاصی رو نداشتید به راحتی میتونید برید به سایتهای تخصصی و اون رو دانلود کنید.

حالا چجوری خودمون کارکرد بسازیم؟
اینجوری نیست که همیشه دقیقاً منطبق بر نیازمون کارکرد پیدا کنیم. بعضی اوقات کارکردی که مناسب کار ماست وجود نداره و باید خودمون ایجادش بکنیم.
خوشبختانه ساختن یک کارکرد خیلی کار آسونیه. فقط چندتا قانون پایهای وجود داره که باید یاد بگیرید. ما پیشتر در مقالات پیشین در قالب مثال player به ساختن کارکرد print stats اشاره کردیم. اما در این بخش کلیگویی نمیکنیم و سعی میکنیم مکانیزم دقیقش رو نشونتون بدیم.
چهار نوع کارکرد رو که در مقالات پیشین توضیح دادیم رو به یاد بیارید.

کارکردهایی که ارزش به دست میدن یا نمیدن. کارکردهایی که argument دارند و اونایی که ندارند. برای ایجاد یه کارکرد باید یکی یکی بریم سراغ هر کدوم از کارکردهای بالایی و توضیح بدیم که چجوری باید اونارو ایجاد بکنیم. از پایهای ترین نوع کارکرد شروع میکنیم.
ایجاد کارکرد بدون argument و value
اول اجازه بدید یه ذره درباره قراردادهای نامیدن کارکردها صحبت کنیم بعد بریم سراغ ساختن این نوع کارکرد.
نامیدن کارکردها عین نامیدن متغیرهاست که در اولین مقالاتمون دربارهش صحبت کردیم. بنابراین شما نمیتونید کارکردهای دو بخشی داشته باشید یا از نقطه و ویرگول استفاده بکنید. همچنین به طور عمومی از استایل camel استفاده خواهید کرد یعنی به غیر از کلمه اول اولین حرف کلمات بعدی رو بزرگ مینویسید.
به طور کلی در هر زبانی برای ساختن کارکرد از نحو خاص اون زبان استفاده میکنیم. تو جاوا باید scope کارکردتون رو معین بکنید. این کار برای اینه که کامپیوتر رو متوجه کنید که کدوم دسته از کدها کارکرد رو استفاده خواهند کرد و کدوم بخش نه. تو این سری مطلب همه کارکردهای ما public خواهند بود یعنی برای همه کدها میتونه استفاده بشه. از این طریق شما خواهید فهمید که با چه نوع کارکردی روبرو هستید. از اونجا که میخواییم اول به سراغ ساختن کارکردی بریم که هیچ متغیری به دست نمیده از اسم public void استفاده میکنیم.

سرانجام اسم کارکردتون رو بعد از دو identifierی که استفاده کردیم مینویسید مثلاً:

و بعد یه پرانتز میندازید جلوی اسم کارکردتون که جای argumentیه که قراره ازش استفاده بکنید. البته در صورتی که کارکردتون دارای argument باشه. اما از اونجایی که اولین نوع کارکردی که میخواییم بحث کنیم هیچ argumentی نداره، پرانتز رو خالی میذاریم. همه اینا بر مبنای جاوا بود. تو پایتون صرفاً به جای public void، def رو قرار میدید که همون define هستش. بعد اسم کارکردتون رو قرار میدید. بعد از این هر کاری رو میخواییم انجام بدیم تو java تو آکولادی که بعد از پرانتز باز میکنیم، مینویسیم و تو پایتون فقط یه دو نقطه میذاریم و مینویسیم.


بچههای عزیز تا اینجا برای این هفتهمون کافیه. هفته بعد میریم سراغ ساخت بقیه انواع کارکردها. پس این مطلب و مطالب قبلیمون رو حتما تا هفته بعد مرور کنید.

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

