به هشتمین جلسه از آموزش برنامه نویسی ++C خوش آمدید. در این جلسه با مبحث آرایه ها در ++C آشنا خواهیم شد.
آرایه ها در ++C
آرایه (array) در واقع جایگزینی بهتر و منطقی تر برای متغیرهای متعدد در یک برنامه ++C است. در برنامه های بزرگ که عموما با مقادیر متعددی سروکار دارند، بهتر است که به جای تعریف متغیرهای زیاد از یک آرایه استفاده شود. بدین ترتیب مشکل تعدد و مدیریت متغیرهای زیاد حل می شود.
طبق تعریف، آرایه تعدادی از خانه های متوالی و پشت سر هم در حافظه است که همگی یک نام و یک جنس دارند و با یک شماره به نام اندیس از یکدیگر تفکیک می شوند. در هر یک از این خانه ها می توان مقدار مستقلی را ذخیره کرده و هر زمان که نیاز بود به آنها دسترسی داشت.
آرایه ها در ++C
انواع آرایه ها در ++C
آرایه ها در ++C به دو دسته تقسیم می شوند:
- آرایه های یک بعدی (One-Dimensional Arrays)
- آرایه های چندبعدی (Multi-Dimensional Arrays)
انواع آرایه ها در ++C
آرایه های یک بعدی (One-Dimensional Arrays)
در این نوع از آرایه ها ، هر یک از عناصر آرایه با یک اندیس عددی از یکدیگر تفکیک می شوند. دسترسی به عناصر آرایه از طریق این اندیس ها صورت می گیرد.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 |
int main() { int numbers[5]; numbers[0] = 4; numbers[1] = 8; numbers[2] = 4; numbers[3] = 5; numbers[4] = 3; cout << numbers[3] << endl; } |
در قطعه کد بالا در خط ۳ یک آرایه ۵ عنصری از اعداد صحیح به نام numbers تعریف شده است. در خطوط ۵ تا ۹ خانه های این آرایه به ترتیب با مقادیر ۴ ، ۸ ، ۴ ، ۵ و ۳ مقداردهی شده اند. در نهایت در خط ۱۱ مقدار یکی از خانه های این آرایه (خانه چهارم با اندیس ۳) در خروجی چاپ شده است. دقت داشته باشید که شماره گذاری عناصر آرایه ها در ++C از صفر شروع می شود (اندیس اولین خانه ۰ ، اندیس دومین خانه ۱ و …). خروجی این برنامه عدد ۵ است.
مقداردهی دستی عناصر آرایه را به شکل دیگری نیز می توان انجام داد و آن استفاده از فهرست مقداردهی است:
1 2 3 4 5 6 7 |
int main() { int numbers[5] = { 4 , 8 , 4 , 5 , 3 }; for(int i = 0 ; i < 5 ; i++) cout << numbers[i] << endl; } |
در خط ۳ مقداردهی عناصر آرایه با استفاده از فهرست مقداردهی انجام شده است. برای اینکار مقادیر خانه های آرایه را در بین یک جفت آکولاد { } می نویسیم. این کار باعث خلاصه تر شدن کدنویسی می شود. در خطوط ۵ و ۶ نیز با استفاده از یک حلقه for تمامی عناصر آرایه در خروجی چاپ شده اند.
خروجی این برنامه به این صورت است:
1 2 3 4 5 |
4 8 4 5 3 |
استفاده از فهرست مقداردهی نکات ریزی در خود دارد که پیشنهاد می کنیم، ویدئوی ضمیمه آموزش را مشاهده کنید.
آرایه های چندبعدی (Multi-Dimensional Arrays)
در این نوع از آرایه ها ، هر یک از عناصر آرایه، خود یک آرایه هستند. دسترسی به عناصر آرایه بر اساس مکان قرارگیری آنها در ابعاد آرایه است.
به قطعه کد زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
int main() { int a[2][3]; // 1 2 3 -> 1 [0] // 4 5 6 -> 2 [1] a[0][0] = 1; a[0][1] = 2; a[0][2] = 3; a[1][0] = 4; a[1][1] = 5; a[1][2] = 6; for(int i = 0; i < 2 ; i++) { for(int j = 0; j < 3 ; j++) cout << a[i][j] << " "; cout << endl; } } |
در قطعه کد فوق در خط ۳ یک آرایه دوبعدی به نام a تعریف شده است. این آرایه دو سطر و سه ستون دارد (مانند یک ماتریس و یا یک جدول فرض کنید). در آرایه a هر یک از عناصر این آرایه خود یک آرایه بوده و هر کدام سه مقدار را در خود ذخیره کرده اند (آرایش مقادیر مانند خطوط ۵ و ۶ هستند). در خطوط ۸ تا ۱۴ مقادیر خانه های این آرایه دو بعدی به صورت دستی مقداردهی شده اند. در نهایت نیز در خطوط ۱۶ تا ۲۰ توسط دو حلقه for تودرتو مقادیر این آرایه در خروجی چاپ شده است. این یک آرایه دوبعدی است که می تواند تا هر ابعادی گسترش یابد (چندبعدی).
خروجی این برنامه به این صورت است:
1 2 |
1 2 3 4 5 6 |
چنانچه بخواهیم مقادیر عناصر این آرایه دوبعدی را با استفاده از فهرست مقداردهی مشخص کنیم، باید از قطعه کد زیر استفاده نماییم:
1 2 3 4 5 6 7 8 9 10 11 12 |
int main() { int a[2][3] = { { 1 , 2 , 3 } , { 4 , 5 , 6 } }; for(int i = 0; i < 2 ; i++) { for(int j = 0; j < 3 ; j++) cout << a[i][j] << " "; cout << endl; } |
خروجی قطعه کد بالا مانند قبل است (چاپ تمامی عناصر آرایه در خروجی).
به پایان این جلسه آموزشی رسیدیم. در آینده با بخشهای دیگری از زبان ++C آشنا خواهیم شد. با ما همراه باشید…
20 دیدگاه. ارسال دیدگاه جدید
ممنون بابت تدریس
واااقعااا عالی بود
خیلی عالی درس میدید. خیلی از یادگیری لذت بردم
خیلی ممنون از شما
واقعا عالی و شفاف توضیح دادید
سلام بسیار عالی توضیح دادید خیلی ممنون
ممنون از تدریس بسیار عالی شما. موفق و پایدار باشید آقای زعفری.
vaghen mmnonm az amozsh awliiton. khoda ghovat
سلام
ببخشید آقای زعفری
هنگام پرینت کردن نام آرایه و همچنین، نام هر یک سطرهای ماتریس و … آیا نمیتونیم المان های یک سطر خاص رو با پرینت کردن اون مشاهده کنیم؟
وقتی اجرا می کنم، آدرس حافظه نشون میده. این درسته؟
بله همینطوره دوست عزیز
اسم آرایه معادل آدرس شروع آرایه در حافظه هست.
برای دسترسی به عناصر آرایه باید از حلقه استفاده بشه.
سپاااس
سلام خیلی خوب درس میدین منم کامل درک می کنم هر چی که می گین و هی تمرین می کنم و برای هر جلسه از جلسات قبل هم کد می نویسم و الان هم تو درس آرایه ها هستم و تا الان ۱۶۷ تا خط کد شده (البته تمرینی هم روزی ۱۰۰ خط جدا کار می کنم) و می زنم به درستی اجرا می شه.
احساس می کنم دیگه داره راحت تر می شه
;cout << "mamnon aghaye zafari" << endl
ممنونم دوست عزیز لطف دارین.
پیشرفت دوستانی مثل شما رو که میبینم تمام خستگی آماده سازی و انتشار این آموزشها از تنم خارج میشه.
به امید خبرهای بهتر و موفقیتهای بزرگتر برای شما دوست عزیز
واقعا عالی تدریس میکنید. بینظیرید. سپاس فراوان. خدا قوت.
ممنونم لطف دارید.
سلام مرسی از آموزشهای خوبتون، دمتون گرم که زبان ++C به این سختی رو مثل فارسی آسون به ما آموزش میدین، امیدوارم همیشه موفق و سلامت باشید.
ممنونم دوست عزیز، من هم برای شما آرزوی سعادت و سربلندی دارم.
بسیار عالی تشکر
سلام و تشکر بابت این خدمت مقدستان آقای زعفری
ان شاءالله همیشه در پناه خداوند متعال باشید
ممنونم دوست عزیز، لطف دارید
سلام آقای زعفری
ممنونم به خاطر آموزشهای خوبتون
انشاالله روز به روز به موفقیتتون افزوده بشه 🙏🙏
ممنونم از شما دوست عزیز