آرایه در #c
شناسه پست: 1987
بازدید: 1166

ما بعضی وقتها در شرایطی قرار میگیریم که نیاز داریم تا چند متغیر از یک نوع را استفاده کنیم و یک عملیات یکسان را روی تک تک آنها اجرا کنیم. تصور کنید اگر به صدها متغیر یا حتی بیشتر نیاز داشته باشیم، می توانیم روی این واقعیت توافق کنیم که ایجاد صد متغیر از یک نوع، یک راه حل نیست.

خوشبختانه، #c یک نوع خاص به نام آرایه را در اختیار ما قرار میدهد.

این مقاله، سرفصلی از دوره آموزشی زیر میباشد:

اگر می خواهید محتویات کامل این دوره را ببینید ، می توانید بر روی لینک مبانی #c کلیک کنید.

برای دانلود سورس، بر روی لینک سورس آرایه ها در #c کلیک کنید.

آرایه ها، نوع های داده ای reference هستند که شامل داده هایی از یک نوع میباشند و به ترتیب در یک مجموعه متوالی کنار یکدیگر قرار میگیرند. ما می توانیم با بیان نام آرایه و موقعیت داده ها در آرایه، به هر اطلاعاتی در داخل آرایه دسترسی داشته باشیم. به موقعیت داده ها در آرایه، Index گفته میشود. در آرایه ها، Index ها از صفر شروع میشوند. این به این معنی است که اولین المنت، در index صفر ذخیره میشود و آخرین المنت در index با موقعیت مکانی 1 واحد کمتر از طول آرایه (array Length – 1) ذخیره میشود. به فرض مثال، اگر آرایه ما 5 المنت داشته باشد در نتیجه، index ها از 0 تا 4 مورد خطاب قرار میگیرند.

این مقاله شامل عناوین زیر میباشد:

تعریف و مقداردهی آرایه

برای تعریف آرایه، ما نوع آرایه، سپس براکت مربعی و در آخر نام آرایه را بیان میکنیم:

نکته ای که باید بدانید این است که مهم نیست که شما داخل آرایه، داده های reference type ذخیره میکنید یا value type. چرا که آرایه همیشه از نوع reference type است.

برای مقداردهی آرایه مان، ما باید از یک کلمه کلیدی new، سپس نوع داده ای مورد نظر و در آخر داخل براکت مربعی، ظرفیت آرایه را مشخص میکنیم:

در اولین خط بالا، ما نوع int (value type) را داخل آرایه اعداد ذخیره میکنیم، بنابراین در حافظه، فضا را برای 5 integer رزرو میکنیم. اما در خط دوم، ما فضا را برای 5 آیتم از نوع pen (از نوع reference type) در حافظه مان رزرو میکنیم، بنابراین ما مقادیرشان را ذخیره نمیکنیم بلکه رفرنسهایشان را ذخیره میکنیم. تمام مقادیر Pen در حال حاضر اینجا برابر با null هستند.

تا به الان، ما حافظه را برای مقادیر موردنظرمان تخصیص دادیم اما در واقع هنوز آنها را به آرایه اضافه نکرده ایم. بنابراین برای پایان دادن به فرآیند مقداردهی، ما باید مقادیر را به آرایه هایمان اضافه کنیم. رایجترین شیوه، تعریف، تخصیص و مقداردهی آرایه در یک خط کد میباشد:

ما همچنین از index ها میتوانیم برای پرکردن یک آرایه نیز استفاده کنیم:

پیمایش آرایه

برای پیمایش یک آرایه، ما از یک حلقه for استفاده میکنیم. با یک حلقه for، ما از index ها برای دسترسی به هر المنت در آرایه استفاده میکنیم:

ما همین کار را میتوانیم با حلقه foreach انجام دهیم. تفاوت بین این دو رویکرد این است که در حلقه for، ما از index ها برای دستیابی به المنتها استفاده میکنیم (متغیر i). اما در حلقه foreach، ما از index ها استفاده نمیکنیم بلکه از مقادیر واقعی آیتمهای آرایه استفاده میکنیم:

مثالها

یک برنامه بنویسید که در آن یک آرایه متشکل از n المنت را ایجاد کند، سپس آرایه را با اعداد صحیح تصادفی پر کند و در آخر تمام آن اعداد را به همراه جمع تمام آنها چاپ نماید:

مثال آرایه ها در #c

آرایه های پارامتری

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

تاثیر کلمه params این است که اجازه میدهد بدون آنکه یک آرایه ایجاد کنیم بتوانیم هر تعداد آرگومان را که خواستیم به پارامتر متد بفرستیم:

اگرچه یک آرایه پارامتری خیلی مفید است، هنوز هم در حین کار با آنها، محدودیتهایی داریم:

  • ما نمیتوانیم از کلمه کلیدی params برای تعریف آرایه دوبعدی استفاده کنیم.
  • Method overloading منحصرا با کلمه params امکان پذیر نیست.
  • ما نمیتوانیم کلمات کلیدی ref یا out را با آرایه های params به کار ببریم.
  • یک آرایه پارامتری باید آخرین پارامتر در متدمان باشد.
  • یک متد بدون params همیشه نسبت به متدهای شامل params اولویت دارند.

مثال 2: یک برنامه بنویسید که کوچکترین عدد بین اعداد ارسال شده به متد PrintMin را در خروجی چاپ کند:

آرایه چندبعدی

ما نحوه استفاده از آرایه های تک بعدی را یاد گرفتیم. اما #c از آرایه های چندبعدی نیز پشتیبانی میکند. در این قسمت، ما در مورد آرایه های دوبعدی صحبت میکنیم. چرا به آنها دوبعدی گفته میشود؟

خب به این دلیل که آنها دارای دوبعد هستند، سطرها و ستونها. برای تعریف آرایه 2d، ما از سینتکس زیر استفاده میکنیم:

با این سینتکس، ما یک آرایه دوبعدی با 3 سطر و 2 ستون ایجاد میکنیم. بنابراین در یک شکل گرافیکی، آن به صورت زیر میباشد:

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

برای دسترسی به هرعدد از این آرایه، ما میتوانیم از سینتکس نام آرایه به همراه موقعیت عددی بین جفت براکت استفاده کنیم. ما موقعیت را با استفاده از index ها مشخص میکنیم. بنابراین index اولین سطر، صفر است و index آخرین سطر، (تعداد سطر – 1) میباشد. همین قضیه در مورد ستونها هم صدق میکند:

برای پیمایش کردن تمام داده ها، ما میتوانیم از حلقه for استفاده کنیم:

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

ما از آرایه های چندبعدی، زمانیکه باید داده هایمان را در شکل چندبعدی ارائه دهیم استفاده میکنیم. به خصوص، ما از آرایه های دوبعدی برای کار با جداول که شامل سطر و ستون میباشند استفاده میکنیم.

نتیجه گیری

بسیار عالی. حالا ما تمام دانش لازم برای کار با آرایه ها و استفاده از آنها در فرآیند توسعه را داریم.

در قسمت بعدی از این سری آموزش، ما در مورد کلاسهای StreamWriter و StreamReader در #c صحبت میکنیم.

نویسنده

امید عباسی
من امید عباسی هستم. سالهاست که در زمینه برنامه نویسی با تکنولوژی دات نت فعالیت میکنم و عاشق این هستم که تجربیات و دانش خودم را در این زمینه با دیگران به اشتراک بزارم. خیلی دوست دارم که نظر و انتقاد خودتون رو در مورد این نوشته برای من بنویسید تا بتونم در آینده، مطالب بهتر و ارزشمندتری را برای شما فراهم کنم. در صورت داشتن هرگونه سوال هم در قسمت دیدگاه ها میتونید با بنده در ارتباط باشید