سلام به همه بچههای علاقمند به کامپیوتر و برنامهنویسی و هوش مصنوعی. همانطور که میدونین روز به روز دنیای هوش مصنوعی داره وسیعتر میشه و به حوزه مختلف از علوم راه یافته است. ما تصمیم داریم هر هفته با یک مقاله در این حوزه، شمارو با رویداد های دنیای هوش مصنوعی آشنا کنیم و مهمتر اینکه ریاضیات این حوزه رو با ساده سازی به شما دانش آموزان عزیز کانونی توضیح بدیم. در نهایت بتونیم قدم به قدم به کد نویسی در محیط پایتون برای مسئله های جذاب هوش مصنوعی برسیم. پیشنهاد میکنم هر هفته مارو با یک مقاله در این حوزه دنبال کنید.
در مطلب این هفتهمون به یکی از مفاهیم بنیادین برنامهنویسی میپردازیم. قراره درباره آرایهها (Arrays) و ارتباطشون با متغیرها و کارکردشون حرف بزنیم. پس با ما باشید که کلی مطالب جذاب براتون داریم.
همونطور که خاطرتون هست ما در مورد مزایای متغیرها بحث کردیم. اینکه اونا میتونن اطلاعاتمون رو ذخیره کنن. با این حال یکی از اشکالات مهمی که متغیرها دارن اینه که نمیتونن بیش از یک داده رو ذخیره کنن. فرض کنید یک برنامه درست کردید که به یوزر اجازه میده برای خودش یک لیست خواربار ایجاد کنه. استفاده از متغیرها برای تهیه یک لیست کار راحتی نیست. چون شما نمیتونید ذیل یک متغیر 6 یا 7 نوع متفاوت از غذاها رو ذخیره کنید. پس یادتون باشه که ما فقط میتونیم یه کاغذ داخل جعبه مقوایی خودمون داشته باشیم نه بیشتر!
حتی اگه یه مشت اسم رو در داخل یک متغیر ریختید باز به مشکل خواهید خورد. چون قادر نیستید اسم خاصی رو جستجو کنید یا جدا کنید یا حذف کنید. اینجاست که آرایهها به کمکمون میان.
آرایه چیست؟
احتمالا تا حالا حدس زده باشید که یک آرایه در اصل یه لیسته. شما میتونید آرایهای از اعداد صحیح داشته باشید یا آرایهای از رشتهها یا حتی آرایهای از آرایههای دیگر. برنامهنویسها آرایهها رو زمانی استفاده میکنن که بخوان تعداد زیادی از متغیرها رو که حاوی اطلاعات مرتبطی هستن ذخیره کنن. مثل لیست خواربار یا امتیازات بالا تو یه بازی. آرایهها مانند ستونهایی تو اکسل یا گوگل شیت هستند. شما یه عنوان در بالا دارین و در پایین مجموعهای از اطلاعات رو قرار میدین که یه جورایی به عنوانتون مرتبط میشن.
خب با این نوع ذخیرهسازی برنامهنویس به راحتی میتونه هر دادهای رو که میخواد جستجو کنه. این مثال رو ببینید. شما یه شرکت راه میندازید. این شرکت برنامهای داره که 100,000 یوزر از اون استفاده میکنن. هر دفعه که یه یوزر بخواد حساب کاربری جدیدی ایجاد کنه یه نام کاربری انتخاب میکنه و برنامه بین همه نامهای کاربری موجود جستجو میکنه تا مطمئن بشه اون نام کاربری قبلاً استفاده نشده باشه. این کار مستلزم جستجوی یک اسم خاص بین 100,000 اسم دیگهای است که فقط و فقط به واسطه یک آرایه امکان پذیره.
نکته مهم درباره آرایهها اینه که ما چجوری به یک چیز خاص درون یک آرایه ارجاع بدیم. اجازه بدید یک آرایه بسازیم به نام Numbers و درون اون اعداد 1 تا 10 رو قرار بدیم.
اگه بخوایم به هر یک از این اعداد ارجاع بدیم میریم سراغ شاخص (Index) عدد مورد نظرمون. به زبان خودمون به محلی که عدد در اون قرار میگیره شاخص اون عدد میگن. اما فک نکنید که مثلاً به اولین شماره در لیست آرایهمون شاخص 1 میگیم و ... . تو برنامهنویسی قضیه از یه قرار دیگه است. در علم کامپیوتر، زبانهای برنامه نویسی برای اشاره به ستون اول هر آرایه از صفر استفاده میکنه. بنابراین به جای اینکه شاخصهامون رو از عدد یک بشماریم از صفر میشماریم. اگه به این دستور عمل خاص در برنامهنویسی توجه نکنید و به آخرین عدد آرایه بالامون با شاخص 10 اشاره کنید با خطای out of bounds مواجه خواهید شد. چون شما تلاش میکنید به دهمین عنصر ارجاع بدید در حالی که در این آرایه عنصر دهم وجود نداره.
نکته مهم دیگه درباره آرایهها مربوط میشه به حجمشون (Size). وقتی یه آرایه رو شروع میکنید میتونید به دو روش اون رو بنویسید. یه راهش اینه که آرایه رو با اجزائی که در نظر دارید بسازید یعنی همزمان آرایه رو هم ایجاد کنید و هم پر کنید. راه دیگه اینه که دقیقاً تعریف کنید که میخوایید چه مقدار اجزاء، یعنی حجم اجزاء، درون آرایه قرار بدید . این مسئله به خاطر اینه که وقتی ما یه آرایه رو آغاز میکنیم، یه حجم مشخصی در کامپیوتر ایجاد میشه، حجمی که قبلاً شما تعریف کردید. فایده راه دوم در اینه که امکان دسترسی راحت رو به آرایهها میسر میکنه چون کامپیوتر دقیقاً میدونه آرایه مورد نظر در چه حجمی و در کجا ذخیره شده. اما این روش دوم یه مشکل داره و اون اینکه بعداً نمیتونیم حجم آرایه رو بالا ببریم و چیزی بهش اضافه کنیم.
فرض کنید یه کتابخونه درست کردیم. اگه ما به ترتیب شروع کنیم قفسههای کتابخونهمون رو پر از کتاب کنیم دیگه نمیتونیم برگردیم و یه کتاب اضافه کنیم مگر اینکه همه رو از نو بچینیم. به محض اینکه درباره میزان حجم یه آرایه تصمیم گرفتیم دیگه نمیتونیم فضای اضافی در اون ایجاد کنیم. پس حواستون به این نکته باشه چون اگه حجم آرایهتون رو تعریف کردید دیگه راه برگشتی ندارید و برای اضافه کردن حتی یک عنصر باید کدتون رو از اول بنویسید.
انواع آرایهها
وقتی میخواهید یک آرایه ایجاد کنید باید مشخص کنید که مثلاً این آرایه آرایهی رشتهای هست یا آرایه عددی. همچنین باید بدونید تو آرایهها چیزی به نام ترکیب وجود نداره. آرایه یا باید رشتهای باشه یا عددی یا... .
نکته دیگهای که درباره آرایهها باید یاد بگیرید، قرار دادن آرایهها درون آرایههای دیگه است. به آرایهای که آرایههای دیگه رو دربرمیگیره 2D یا آرایهی دو بعدی (Two dimensional array)میگن. این روند بسیار شبیه به ماتریکس در جبر است. مثلاً در یک جدول به جای اینکه ستون جدید اضافه کنیم یه سری ردیف به اون اضافه میکنیم.
بنابراین هر عنصر در یک آرایه صرفاً یک متغیر رشتهای یا یک متغیر int خواهد بود. اما هر ردیف یک آرایه کامل میشه که ارزشها و عناصر خاص خودش رو داره. روشی که به وسیله اون این آرایهها رو شاخصبندی میکنیم تقریباً یه چیزه مگر اینکه به جای یک عدد دو عدد برای شاخصبندی داشته باشیم.
ما کارمون رو اول با ردیف آغاز میکنیم و بعد میریم سراغ ستون. بنابراین یک عدد در موقعیت (Position) 0,2 در ردیف اول از ستون سوم خواهد بود. در تصویر زیر میشه Clint.
این نمونهای از آرایه دو بعدی بود. شما میتونید آرایه سه بعدی هم داشته باشید یعنی یک آرایه درون یک آرایه درون یک آرایه.
منابع
- 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 تماس بگیرید.