سلام به همه بچههای علاقمند به کامپیوتر و برنامهنویسی و هوش مصنوعی. همانطور که میدونین روز به روز دنیای هوش مصنوعی داره وسیعتر میشه و به حوزه مختلف از علوم راه یافته است. ما تصمیم داریم هر هفته با یک مقاله در این حوزه، شمارو با رویداد های دنیای هوش مصنوعی آشنا کنیم و مهمتر اینکه ریاضیات این حوزه رو با ساده سازی به شما دانش آموزان عزیز کانونی توضیح بدیم. در نهایت بتونیم قدم به قدم به کد نویسی در محیط پایتون برای مسئله های جذاب هوش مصنوعی برسیم. پیشنهاد میکنم هر هفته مارو با یک مقاله در این حوزه دنبال کنید.
در هفتهای که گذشت براتون درباره انواع متغیرهای اولیه و نقششون در برنامهنویسی حرف زدیم. این هفته بنا داریم مبحث متغیرهامون رو تکمیل کنیم و کلی مطالب جدید و بدردبخور براتون بنویسیم.
چرا متغیرها اینقدر مفید هستند؟
برای هر برنامهنویسی توانایی ذخیره اطلاعاتی که بعداً قراره ازشون استفاده کنه یه چیز حیاتیه. بیشتر مواقع در کدنویسی شما نیاز خواهید داشت تا چیزهایی مانند اسم یوزر (User) یا امتیازش رو پیدا کنید. با ایجاد کردن یک متغیر به نام اسم یا امتیاز، شما اطلاعاتتون رو در این متغیر ذخیره میکنید و هر وقت دلتون خواست به اون ارجاع میدید یا حتی اصلاحش میکنید. همچنین برخی مواقع برنامه از یوزر میخواد که یه سری اطلاعات وارد برنامه کنه، اطلاعاتی که قبلاً در برنامه کدنویسی نشدهاند. در این جا نیز متغیرها به کمکمون میان و اون اطلاعات رو ذخیره میکنن. همچنین یک برنامه امکان داره بر مبنای یه سری فاکتورها نوشته شده باشه که به محض اینکه برنامه ارتقاء داده میشه عوض میشن. اینجا هم متغیرها در ذخیره این فاکتورها و اصلاحشون کمکمون میکنند. استفاده از این متغیرها و همچنین دستکاری کردنشون برای اجرای وظایفی که از برنامه انتظار داریم ضروریه. مانند عملیات ضرب در متغیرها یا الحاق (Concatenating) متغیرهای رشتهای. به طور کلی متغیرها ستون فقرات هر برنامهای هستند و دائم در روند برنامهنویسیتون از اونها استفاده خواهید کرد.
حالا که با مزایای متغیرها آشنا شدیم بهتره ببینیم وقتی یک متغیر رو ایجاد میکنیم چه اتفاقی میافته و چجوری ازش استفاده میکنیم و چطور میتونیم اونارو دستکاری بکنیم.
ایجاد یک متغیر
فرض کنید یه خط کد مینویسیم که با یک متغیر آغاز میشه و کامپیوتر شروع به اجرای اون میکنه.
کامپیوتر یه فضای کوچیکی تو حافظهش ایجاد میکنه و اسم و محتوای متغیرتون رو در اون ذخیره میکنه تا بتونید بعداً به اون ارجاع بدین.
برگردیم به مثال جعبه مقوایی که قبلاً دربارهش حرف زدیم. فرض کنید شما یک قفسه دارید و یک جعبه مقوایی جدیدی ایجاد میکنید که لیبل (Label) نام روش میزنید. توی این جعبه یه کاغذ قرار میدید که روش نوشته شده NullPointerException.
هر وقت شما بخوایید محتوای جعبهی «نام»تون رو بدونید فقط کافیه توشو نگاه کنید و مطمئن بشید که محتواش همونیه که قبلاً معین کردید. این دقیقاً کاریه که کامپیوتر انجام میده. فقط به جای قفسه حافظه داره و به جای جعبه متغیر میسازه. نکته دیگهای که باید بهش توجه کرد اینه که شما میتونید یک متغیر ایجاد کنید بدون اینکه محتوایی درونش قرار بدید. یک برنامهنویس این کار رو میکنه تا بعداً بتونه اطلاعات مورد نظرش رو در اون قرار بده. یا اینکه منتظره تا یه یوزر اطلاعات مورد نظرش رو به کامپیوتر بده و اون اطلاعات در متغیری که قبلاً ایجاد شده ذخیره بشه. اینم بدونید که اگه در روند برنامهنویسیتون بخوایید به این نوع متغیرهای خالی ارجاع بدید، در کنسولتون با اخطار NullPointerException مواجه میشید.
زبانهای برنامهنویسی به ما این اجازه رو میده که کارهای جالبی با این جعبهها انجام بدیم. برای مثال فرض کنید یه متغیر دیگهای به اسم «نام کانال» ایجاد میکنیم. به جای اینکه این متغیر رو برابر با NullPointerException بکنیم ما اون رو برابر با متغیر «نام» که پیش از این ایجاد کردیم میکنیم. با این کار یک فضای جدید در حافظه کامپیوتر برای این متغیر جدیدمون ایجاد نمیشه. بلکه صرفاً این متغیر به متغیر «نام» که قبلاً ایجاد کردیم ارجاع داده میشه.
اجازه بدید با مثال قفسهمون مطلب رو بهتر جا بندازیم. این عمل کامپیوتر مثل اینه که به جای ایجاد یه جعبه جدید با لیبل «نام کانال» و ذخیره محتوایی مانند NullPointerException درون اون، صرفاً پایین جعبهی «نام» لیبلِ «نام کانال» میخوره.
با این کار ما دو متغیر داریم که به یک محتوا ارجاع میدن یعنی NullPointerException. ما این کار رو به خاطر متغیرهایی انجام میدیم که میدونیم ارزشهای یکسانی خواهند داشت.
همچنین متغیرها در روند کدنویسی میتونن به روز رسانی بشن. برای مثال شما یک متغیر سن دارید و محتوای این متغیر عدد صحیح 17 وجود داره. پس از اینکه تولد گرفتید میخوایید سنتون رو به روزرسانی کنید. آنچه که نیازه انجام بدید اینه که به متغیر مورد نظرتون ارجاع بدید و محتوای اون رو مساوی با هر عددی که میخوایید تنظیم کنید. مثلا بکنیدش 18.
نکته مهمی که دونستنش لازمه اینه که بعد از اینکه کد شما راه اندازی میشه، متغیرها از حافظه کامپیوتر پاک میشن. مگر اینکه شما کد رو دوباره راهاندازی کنید و برنامه دوباره برای متغیر فضا اختصاص بده. هر بار که کد رو راهاندازی میکنین، یه سری جعبههای جدید در قفسهتون ایجاد میکنید. و در پایانِ کد همه اونا پاک میشن تا فضای خالی برای جعبههای بعدی باز بشه.
یه کار جالب دیگهای که میتونید با متغیرهای int و شناور (Float) و دابل (Double) بکنید، جمع اونا، تفریقشون، ضربشون، تقسیمشون و حتی مادولا کردنوش است.
به عنوان مثال اگر شما در حال ساختن یه برنامه ماشین حساب هستید و اولین عددی رو که یوزر به عنوان عدد یک و دومین عدد رو به عنوان عدد دو وارد میکنه ذخیره بکنید، میتونید عدد یک و دو رو به هم ضرب کنید و نتیجه رو پرینت کنید یا به عنوان یک متغیر جدید با نام «نتیجه» ذخیره کنید. سپس هر وقت که برنامه رو اجرا میکنید، یوزر میتونه یه عدد جدید رو به متغیرهای عدد یک و عدد دو وارد کنه و این اعداد با این عدد جدید تنظیم میشن و نتیجهای رو که از پیوستن این اعداد به دست میاد نشون میدن. این کارکرد به شما اجازه میده تا به سادگی اعداد رو تشخیص بدید و بفهمید که چه اتفاقی در برنامه شما میفته. همچنین در مواقعی که نمیتونید رشتهها رو ضرب یا تقسیم یا تفریق یا مادولا کنید، میتونید به راحتی این اعداد رو اضافه کنید.
فرض کنید ما رشتهای به نام Str1 داریم که محتواش Hello است. رشتهی دیگهای به نام Str2 داریم که محتواش There است. شما میتونید Str1 رو به Str2 اضافه بکنید تا نتیجهای با محتوای Hello There به دست بیارید. همچنین میتونید اون رو به عنوان یک متغیر سوم ذخیره کنید یا در کنسول پرینت کنید.
آخرین مطلبی که در نظر داریم درباره متغیرها براتون بگیم قراردادهای نامگذاری متغیرها است.
قواعد نامگذاری متغیرها
متغیرها باید یک رشته پیوسته باشند. اگه بخوایید متغیری ایجاد کنید که امتیاز (Score) یک پلیر (Player) رو ذخیره کنه، مجبورید یه راهی پیدا کنید تا کلمات Player و Score رو ترکیب کنه. چرا که نمیتونید جمله Player Score رو به عنوان اسم یک متغیر داشته باشید.
پیش از هر چیزی لازمه بدونید که هر برنامهنویسی سلیقهی خاص خودشو در نامگذاری متغیرها داره. روش که ما در این مطلب از اون استفاده خواهیم کرد Camelcase نام داره. در این روش کلمه اول رو بزرگ نمینویسیم بلکه کلمهای که بعد از کلمه اول میاد بزرگنویسی یا Capital میشه.
اگه به مثال Player Score مون برگردیم با استفاده از روش Camelcase نام متغیرمون به این شکل در میاد.
این روش تشخیص نام متغیرها رو تهسیل میکنه و در نامهای طولانیتر بسیار مفید واقع میشه. در آینده وقتی خواستید کدتون رو اشکالزدایی (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 تماس بگیرید.