آموزش ++C | بخش نهم – آرایه ها

در همه‌ی زبان‌های برنامه نویسی یکی از مفاهیم مهم و پرکاربرد ، آرایه (array) هست. ما هم در قسمت 9 آموزش c++ قصد داریم به بررسی مفهوم آرایه در c++ و مطالب مرتبط با اون بپردازیم. با ما همراه باشید.

اگر قسمت‌های قبلی آموزش c++ رو مشاهده نکردید، پیشنهاد می‌کنم حتما به اینجا سر بزنید و از مطالبی که در اختیار شما عزیزان قرار دادیم استفاده کنید.

آرایه چیست؟

فرض کنید 100 متغیر از نوع int احتیاج داشته باشیم. ساده ترین راه این است که 100 متغیر تعریف کنیم که هرکدام باید یک اسم منحصر به فرد داشته باشند. اولین و بزرگترین مشکل، تعریف کردن 100 متغیر است. دومین مشکل، نحوه استفاده از آن درون برنامه است. و در نهایت سومین مشکل، ناپیوسته بودن آن است یعنی از آن ها نمی توان در ساختاری مثل for استفاده کرد. آرایه بصورت زیر پیکربندی می شود:

نوع آرایه، همانند نوع متغیر است. در مثال ها ما از نوع int استفاده می کنیم. اسم آرایه که نام آن است و در  برنامه با این نام شناخته می شود. تعداد،که مثلا اگر 50 باشد، یعنی ما 50 متغیر از نوع int داریم. دقت شود که تمام عناصر یک آرایه در فضای رم بصورت پشت سر هم قرار می گیرند.

مقدار دهی آرایه در c++

در کل دو روش برای مقداردهی آرایه در c++ وجود دارد ؛ مقداردهی اولیه هنگام تعریف آرایه و مقداردهی درایه به درایه در درون برنامه.

اولین نوع مقدار دادن، بصورت اولیه است که همزمان با تعریف آرایه انجام می شود. در این روش می توان تعداد را درون [ ] ننوشت. چون کامپایلر هنگام شمارش اعداد اولیه در درون { } بصورت خودکار تعداد درآیه ها را بدست می آورد.

مثال اول آرایه

نوع دوم مقدار دهی که هرکجای برنامه بارها می توان این کار را انجام داد به شکل زیر است.

برای دسترسی به عناصر آرایه در c++ باید شماره درآیه را داخل [ ] وارد کرد. دقت شود که اولین عدد همیشه 0 و آخرین عدد همیشه یکی کمتر از تعداد عناصر است. نکته ای که قابل ذکر است، اگر به هر کدام از عناصر آرایه مقداری داده نشود، مقدار آن درآیه ها یک عدد نامشخص و تصادفی است.

آرایه a دارای 5 عضو int است. داخل حلقه for برای هرکدام از عضوها عبارت Deraye ‘adad’ ra vared konid چاپ می شود که ‘adad’ همان شماره درآیه است که باید عددی بین 1 تا 5 باشد. به همین خاطر i که بین 0 تا 4 است را با 1 جمع کردیم. در خط بعد عددی از ورودی خوانده شده و در عضو i از آرایه a ریخته می شود. با این روش هم می توان عناصر آرایه را مقدار دهی کرد.

اشاره گری به آرایه ها

بیاید به ساختار آرایه در c++ بپردازیم. یک آرایه که تعداد مشخصی درآیه دارد، در واقع یک اشاره گر است. اشاره گری که به اولین عضو از آن آرایه اشاره می کند یعنی به عضو شماره 0. برای درک بهتر به شکل زیر توجه کنید:

ساختار آرایه یک بعدی

در شکل بالا a یک اشاره گر است. پس مقدار آن یک آدرس است که به اولین نقطه از حافظه اشاره می کند. حال به برنامه زیر دقت کنید:

اول یک آرایه به نام a تعریف کردیم که 5 عضو دارد و هرکدام را مقدار دهی اولیه کردیم. دقت کنید که با چاپ کردن a مقدار آن که یک آدرس است چاپ می شود. این آدرس با هربار اجرای برنامه تغییر می کند چون آرایه هربار در قسمتی دیگر از حافظه رم ذخیره می شود. در مرحله بعد یک pointer از نوع int با نام b تعریف کردیم و از آنجایی که جنس a آدرس است و b هم آدرس می گیرد، آدرس موجود در a را به b انتساب دادیم. پس b هم اکنون به همان جایی اشاره می کند که a اشاره می کند. یعنی b دقیقا همان a است. درنتیجه با مقدار دادن عنصر شماره 2 از آرایه b، آرایه a هم تغییر می کند. همانطور که دیده شد با برابر کردن b[2] = 67 مقدار [a[2 هم به 67 تغییر پیدا کرد.

راه بنیادی دسترسی به عناصر یک آرایه در c++ استفاده از علامت * است. در مورد این علامت جلسه هشتم بحث شد. برای یک مثال مفصل تر و مفهومی تر برنامه زیر را تحلیل می کنیم:

چون b را برابر a قرار دادیم پس b همان a می شود. اما b* همانطور که قبلا گفتیم مقداری را برمی گرداند که اشاره گر b به آن اشاره می کند و چون b به اولین خانه از آرایه اشاره میکند، مقدار b* برابر 12 است. یعنی [b[0 و b* هر دو دقیقا یک معنا دارند.
اما (b + 1)* به چه معناست؟ به بیانی دیگر b + 1 به اندازه یک خانه به جلو اشاره می کند. پس وقتی علامت * قبل از آن بیاید یعنی مقدار آدرس b + 1 حاصل می شود. پس [b[1 و (b + 1)* هیچ فرقی با هم ندارند. این تفسیر برای بقیه عناصر هم صادق است.

آرایه های دو بعدی

آرایه های دوبعدی مجموعه ای از آرایه های یک بعدی هستند. اگر آرایه ای یک سطر و n ستون داشته باشد، درواقع آن آرایه یک بعدی است. اگر m سطر و n ستون داشته باشد، یک آرایه m در n می شود. مثال:

مقداردهی آرایه دوبعدی هم مانند تک بعدی است. عدد براکت اول تعداد سطر و عدد براکت دوم تعداد ستون را معلوم می کند.

ساختار آرایه دو بعدی

اما نگاه انداختن به ساختار این نوع آرایه خالی از لطف نیست.

ساختار آرایه دو بعدی

فرض کنیم که یک آرایه به نام a با 3 سطر و 4 ستون داریم. در این صورت a که خود یک اشاره گر است به اولین خانه ی مجموعه ای از اشاره گر ها اشاره می کند(خودمم گیج شدم😌). یعنی جنس a که آدرس است، جنس [a[0 تا [a[2 هم آدرس است. به عبارتی دیگر a به اولین عضو اشاره گر سطرها یعنی [a[0 اشاره می کند و [a[0 هم به اولین عضو ستون ها اشاره می کند.
با این تفسیر [a[0][2 یعنی مقدار سطر صفرم و ستون دوم که در شکل بالا 8 می شود.

امیدوارم این مطلب هرچقدر هم که پیچیده بود جذاب بوده باشد. در جلسات آینده مباحث شی گرایی یا OOP را شروع خواهیم کرد.

محمد نصر

محمد نصر

محمد نصر هستم. 9 سال سابقه کار در حوزه الکترونیک و همینطور برنامه‌نویسی میکروکنترلر به صورت پیشرفته دارم. سعی میکنم هر روز چیزهای جدید یاد بگیرم و خوشحال میشم با شما به اشتراک بگذارم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *