ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

فصل هشتم آرایه هادر #C

<!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

فصل هشتم

C# آرایه هادر

آنچه که در این فصل یاد خواهید گرفت:

طرز کار با آرایه های دوبعدی و سه بعدی

و توابع ایستای آن Array • آَشنایی با نوع دادهی

foreach • نحوهی استفاده از دستور

تفاوت مابین آرایه های مستطیلی و ناهموار

است و تنها C# در بیشتر برنامه ها میخواهیم در یک لحظه با کلکسیونی از اشیاء کار کنیم. آرایه، سادهترین کلکسیون در

بصورت درونی پشتیبانی میکند. کلکسیونهای دیگر همچون پشته، صف بخشی از زبان C# نوع داده کلکسیونی است که

هستند. FCL نیستند، آنها بخشی از

در این فصل کار با سه نوع آرایه یک بعدی، چند بعدی و آرایههای ناهموار را یاد خواهید گرفت.

-1-8 کاربرد آرایه ها

گرامر اصیل را برای اعلان آرایهها فراهم میکند. برای C# . آرایه یک کلکسیون اندیس گذاری 1 شده از اشیاء هم نوع است

1). هر صندوق پستی دقیقا میتواند - تفهیم یک آرایهی یک بعدی، یک دنباله از صندوقهای پستی را تصور کنید(شکل 8

یک شی را نگه دارد. هر صندوق پستی یک شماره دارد. پس شما میتوانید تشخیص دهید یک عنصر در کدام صندوق است.

1- شکل 8

نکتهی مهم درباره آرایهها این است که میتوان با کل آرایه بصورت موجودیت واحد برخورد کرد. همانطور که خواهید دید، با

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

1 Indexed

فصل هشتم- آرایه

131

-1 اعلان آرایه

ها -1 -8

یک آرایه را به صورت زیر اعلان کنید. C #در

type[] array-name;

به عنوان مثال :

int[] myIntArray;

در واقع شما یک ارایه اعلان نکردید. شما یک متغیر اعلان کردید که ارجاع به یک آرایه از اعداد صحیح را نگه میدارد.

علامت [] به کامپایلر میگوید، شما یک آرایه اعلان میکنید و نوع داده، نوع عناصر آرایه را مشخص میکند. در مثال قبلی

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

مثال :

myIntArray = new int[۵];

این دستور یک آرایه از 5 عدد صحیح با مقدار اولیه صفر ایجاد میکند.

آرایه است و عناصر نگه داشته شده در myIntArray. تمایز ما بین خود آرایه و عناصر نگه داشته شده در آرایه مهم است

آن 5 عدد صحیح هستند.

به آن myIntArray ایجاد میشوند. پس آرایهای که متغیر Heap انواع دادهی ارجاعی هستند که روی C# آرایه های

تخصیص داده میشود. عناصر آرایه بر اساس نوع آنها تخصیص داده میشوند. چون اعداد صحیح Heap اشاره میکند، روی

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

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

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

-2 فهم مقادیر پیش فرض -1 -8

زمانی که یک آرایه از انواع دادهی مقداری ایجاد میکنید، هر عنصر مقدار پیش فرضی دارد که در آرایه ذخیره میشود.

دستور :

myIntArray = new int[۵];

یک آرایه از 5 عدد صحیح ایجاد میکند. هر کدام مقدار پیشفرض صفر دارند.

بر خلاف آرایهای از انواع داده مقداری، دادههای نوع ارجاعی در یک آرایه مقدار پیشفرض ندارند. در عوض، ارجاعها با

مقداردهی اولیه میشوند. اگر سعی کنید یک عنصر از آرایهای از نوع دادهی ارجاعی را قبل از مقداردهی اولیه آن null

دستیابی کنید، یک استثناء تولید خواهد شد.

را با دستور زیر اعلان کنید. Button را ایجاد کردهایم. یک آرایه از اشیاء Button فرض کنید کلاس

Button[] myButtonArray;

و آرایه واقعی را به صورت زیر تعریف کنید.

myButtonArray = new Button[٣];

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

Button[] myButtonArray = new Button[٣];

را با سه myButtonArray ایجاد نمیکند، بلکه آرایه Button این دستور یک آرایهی سه عنصری از ارجاعات به اشیاء

انتساب دهید. Button ایجاد میکند. برای استفاده از این آرایه باید به ازای هر عنصر در آرایه یک شی null ارجاع

C# برنامه نویسی

132

-3 دسترسی به عناصر آرایه -1 -8

با استفاده از عملگر اندیس میتوانید به عناصر یک آرایه دستیابی کنید. مقدار صفر، اندیس اولین عنصر آرایه است.

1 اندیسگذاری Length- آرایه، تعداد اشیاء نگه داشته شده را معین میکند. بنابراین اشیاء از 0 تا Length خصوصیت

میشوند.

و آرایه اعداد صحیح را ایجاد Employees آرایهی Tester 1 مفاهیم آرایه را نشان میدهد. در این مثال، کلاس - مثال 8

میکند و سپس مقادیر هر دو را چاپ میکند.

1- مثال 8

using System;

namespace Learning_CSharp

{

// a simple class to store in the array

public class Employee

{

public Employee(int empID)

{

this.empID = empID;

}

public override string ToString( )

{

return empID.ToString( );

}

private int empID;

}

public class Tester

{

static void Main( )

{

int[] intArray;

Employee[] empArray;

intArray = new int[۵];

empArray = new Employee[٣];

// populate the arrays

for (int i = ٠;i<intArray.Length;i++)

{

intArray[i] = i*٢;

}

for (int i = ٠;i<empArray.Length;i++)

{

empArray[i] = new Employee(i+١٠٠۵);

}

// output array values

Console.WriteLine("intArray values:");

for (int i = ٠;i<intArray.Length;i++)

{

Console.WriteLine(intArray[i].ToString( ));

}

Console.WriteLine("\nemployee IDs:");

for (int i = ٠;i<empArray.Length;i++)

{

Console.WriteLine(empArray[i].ToString( ));

}

}

}

}

خروجی شبیه زیر است :

intArray values:

فصل هشتم- آرایه

133

٠

٢

۴

۶

٨

employee IDs:

١٠٠۵

١٠٠۶

١٠٠٧

آغاز میشود، که یک سازنده با پارامتری از نوع صحیح را پیادهسازی میکند. کلاس Employee این مثال با تعریف کلاس

پیادهسازی میکند. Employee شی ID را برای چاپ مقدار خصوصیت ()ToString متد Employee

یک جفت آرایه را اعلان و تعریف میکند. ابتدا آرایهی اعداد صحیح با مقادیر صفر پر میشود. سپس صریحا با ()Main متد

طی میکند 1. مقدار i مقداردهی میشود. شمارندهی حلقه همه عناصر آرایه را با افزایش مقدار اندیس for یک حلقه

را با دستور زیر تنظیم کنید. intArray

intArray[i] = i*٢;

یک است و i 2 مقداردهی میشود و در مرحلهی بعدی مقدار * 0] با 0 intArray[ در اولین مرحله صفر است و i مقدار

شود، اجرا میگردد. intArray.Lenght مساوی i 2 مقداردهی میشود و ... این حلقه تا زمانی که * عنصر دوم به مقدار 1

1 است. intArray.Length- برای آخرین عنصر آرایه i توجه کنید که مقدار

به وسیلة دست ساخته شود، چون مقادیر آن از نوع داده ارجاعی هستند، هنگام ایجاد آرایه Employee باید محتوای آرایه

جدید ایجاد Employee پر میشوند. در حال حاضر باید برای هر اندیس آرایه، شی null مقداردهی اولیه نمیشوند و با

شود. در نهایت، محتوای آرایهها نشان داده میشوند، تا مطمئن شوید همانطور که قصد داشتید پر شدهاند.

foreach -2-8 دستور

بصورت زیر foreach اجازه میدهد همهی عناصر یک آرایه یا کلکسیون دیگر را طی کنید. گرامر دستور foreach دستور

است.

foreach (type identifier in expression) statement

2 نشان داده شده - مرور کنید. همانطور که در مثال 8 foreach نهایی با دستور for 1 را برای جایگزینی دو دستور - مثال 8

است، میتوانید جایگزینیها را انجام دهید.

2- مثال 8

foreach ( int i in intArray )

{

Console.WriteLine( i.ToString( ) );

}

foreach ( Employee e in empArray )

{

Console.WriteLine( e.ToString( ) );

}

خروجی یکسان خواهد بود.

1 Iterate

#C برنامه نویسی

134

-3-8 مقداردهی اولیه عناصر آرایه

یک C#. میتوانید مقداردهی اولیه محتوای یک آرایه را در زمان معرفی آن با یک لیست از مقادیر در داخل { } انجام دهید

گرامر کوتاه و بلند فراهم میکند.

int[] myIntArray = new int[۵] { ٢, ۴, ۶, ٨, بلند//;{ ١٠

int[] myIntArray = { ٢, ۴, ۶, ٨, گرامر کوتاه//;{ ١٠

بطور اتوماتیک یک آرایهی مناسب با اندازه تعداد عناصر { } ایجاد میکند. از نظر عملیاتی هر دو دستور C# ، در گرامر کوتاه

یکسان هستند. بیشتر برنامهنویسان گرامر کوتاه را بکار میبرند.

params -4-8 کلید کلیدی

اجازه میدهد یک تعداد پویا از پارامترهای هم نوع را به یک متد ارسال کنید. آنچه که متد دریافت params کلمه کلیدی

میکند، آرایهای از آن نوع داده است.

را ایجاد میکنید که یک تعداد متغیر از آرگومانهای صحیح را میگیرد. ()DisplayVals در مثال بعدی، متد

public void DisplayVals(params int[] intVals)

شما برای طیکردن این آرایه همانند هر آرایه از اعداد صحیح آزاد هستید.

foreach (int i in intVals)

{

Console.WriteLine("DisplayVals {٠}",i);

}

فراهم DisplayVals در فراخوانی متد به ایجاد صریح آرایه نیاز ندارد. خود کامپایلر پارامترها را در یک آرایه برای متد

خواهد آورد.

t.DisplayVals(۵،۶،٧،٨);

اگر خودتان ترجیح دهید، میتوانید دادهها را از طریق یک آرایه ارسال کنید.

int [] explicitArray = new int[۵] {١،٢،٣،۴،۵};

t.DisplayVals(explicitArray);

در متد بکار برید و این آرگومان باید آخرین آرگومان متد باشد. params میتوانید فقط یک آرگومان

را ارائه میکند. params 3 کاربرد کلمهی کلیدی - مثال 8

3- مثال 8

using System;

namespace UsingParams

{

public class Tester

{

static void Main( )

{

Tester t = new Tester( );

t.DisplayVals(۵،۶،٧،٨);

int [] explicitArray = new int[] {١،٢،٣،۴،۵};

t.DisplayVals(explicitArray);

}

public void DisplayVals(params int[] intVals)

{

فصل هشتم- آرایه

135

foreach (int i in intVals)

{

Console.WriteLine("DisplayVals {٠}",i);

}

}

}

}

خروجی شبیه این است.

displayvals 5

displayvals 6

displayvals 7

displayvals 8

displayvals 1

displayvals 2

displayvals 3

displayvals 4

displayvals 5

-5-8 آرایههای چندبعدی

آرایهها میتوانند به صورت ردیفهای بلندی از شکافها باشند که میتوانند مقادیر را جا دهند. تصور کنید که 10 ردیف از

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

2 نشان میدهد. - آرایه را میپیمایند و ستونها آرایه را به بالا و پایین میپیمایند. همانطور که شکل 8

2- شکل 8

تصور بعد سوم سختتر است. بسیار خوب، حال 4بعدی را تصور کنید. آرایههای چندبعدی مفید هستند، حتی اگر شما

نتوانید دقیقا تصور کنید که آنها شبیه چه چیزی هستند؟

-1 آرایههای مستطیلی -5 -8

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

مشخص میشود. برای اعلان یک آرایه دوبعدی، گرامر زیر را به کار برید.

type [,] array-name

که شامل دو سطر و سه myRectangularArray به عنوان مثال: برای اعلان و معرفی یک آرایه مستطیلی دوبعدی به نام

ستون از اعداد صحیح است، دستور زیر را بنویسید :

int [,] myRectangularArray = new int[٢،٣];

4 آرایه دوبعدی را اعلان، تعریف و مقداردهی اولیه میکند. سپس محتوای آن را چاپ میکند. در این مثال یک - مثال 8

برای مقداردهی اولیه عناصر آرایه استفاده میشود. for حلقهی

C# برنامه نویسی

136

4- مثال 8

using System;

namespace RectangularArray

{

public class Tester

{

static void Main( )

{

const int rows = ۴;

const int columns = ٣;

// declare a ۴x٣ integer array

int[,] rectangularArray = new int[rows, columns];

// populate the array

for ( int i = ٠; i < rows; i++ )

{

for ( int j = ٠; j < columns; j++ )

{

rectangularArray[i, j] = i + j;

}

}

// report the contents of the array

for ( int i = ٠; i < rows; i++ )

{

for ( int j = ٠; j < columns; j++ )

{

Console.WriteLine( "rectangularArray[{٠},{١}] = {٢}",i, j,

rectangularArray[i, j] );

}

}

}

}

}

خروجی شبیه زیر است:

rectangularArray[٠،٠] = ٠

rectangularArray[٠،١] = ١

rectangularArray[٠،٢] = ٢

rectangularArray[١،٠] = ١

rectangularArray[١،١] = ٢

rectangularArray[١،٢] = ٣

rectangularArray[٢،٠] = ٢

rectangularArray[٢،١] = ٣

rectangularArray[٢،٢] = ۴

rectangularArray[٣،٠] = ٣

rectangularArray[٣،١] = ۴

rectangularArray[٣،٢] = ۵

مشخص میکنند که نوع دادهی مورد نظر یک آرایه از اعداد صحیح است و کاما برای [ , ] int کروشهها در اعلان

اندازه هر بعد را مقداردهی ،[new int [row,cols با rectangularArray مشخصکردن آرایه دوبعدی است. تعریف

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

این برنامه آرایهی مستطیلی را با یک جفت حلقه تودرتو پر میکند (تکرار هر ستون در هر سطر). در سطر اول

عنصر بعدی است. در سطر دوم [rectangularArray[ اولین عنصر و ٠،١ ، [rectangularArray[ عنصر ٠،٠

میباشد. [rectangularArray[ اولین عنصر بوده و عنصر بعدی ١،١ [rectangularArray[١،٠

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

5 این عمل را نشان میدهد. - بعدی را نیز با گرامری مشابه مقداردهی اولیه کرد. مثال 8

5- مثال 8

فصل هشتم- آرایه

137

using System;

namespace InitializingMultiDimensionalArray

{

public class Tester

{

static void Main( )

{

const int rows = ۴;

const int columns = ٣;

// imply a ۴x٣ array

int[,] rectangularArray =

{

{٠،١،٢}, {٣،۴،۵}, {۶،٧،٨}, {٩،١٠،١١}

};

for ( int i = ٠; i < rows; i++ )

{

for ( int j = ٠; j < columns; j++ )

{

Console.WriteLine( "rectangularArray[{٠},{١}] = {٢}", i, j,

rectangularArray[i, j] );

}

}

}

}

}

خروجی شبیه این است :

rectangularArray[٠،٠] = ٠

rectangularArray[٠،١] = ١

rectangularArray[٠،٢] = ٢

rectangularArray[١،٠] = ٣

rectangularArray[١،١] = ۴

rectangularArray[١،٢] = ۵

rectangularArray[٢،٠] = ۶

rectangularArray[٢،١] = ٧

rectangularArray[٢،٢] = ٨

rectangularArray[٣،٠] = ٩

rectangularArray[٣،١] = ١٠

rectangularArray[٣،٢] = ١١

4 است اما در این مثال ابعاد دقیق آرایه را با مقداردهی اولیه آن مشخص میکنید. - مثال قبلی خیلی شبیه مثال 8

int[,] rectangularArrayrectangularArray =

{

{٠،١،٢}, {٣،۴،۵}, {۶،٧،٨}, {٩،١٠،١١}

};

انتساب مقادیر در 4 لیست در داخل {} که هر کدام شامل سه عنصر هستند، یک آرایهی 4 سطری و سه ستونی را مشخص

مفهوم روشگروه بندی مقادیر ورودی را میفهمد. چون آن قادر است به اشیاء با #C میکند. میتوانید ببینید کامپایلر

آفستهای مناسب دستیابی کند.

3 تعریف میکنید، باید با آن همانطور * هوشمند هستند و محدوده آنها را نگه میدارند. زمانی که یک آرایة 4 #C آرایه

های

4 در نظر بگیرید. * رفتار کنید و نباید آن را به صورت یک آرایهی 3

-2 آرایههای ناهموار 1 -5 -8

آرایههای ناهموار، آرایهای از آرایه هستند. چون نیاز نیست، همهی سطرهای آن هم اندازه باشند. آن را ناهموار میگویند،

چون نمایش گرافیکی آن چهارگوش نیست.

1 Jagged Arrays

C# برنامه نویسی

138

زمانی که یک آرایه ناهموار ایجاد میکنید، تعدادی سطر در آرایهی خود اعلان کنید. هر سطر یک آرایه نگه میدارد که هر

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

های درونی

بریزید.

در یک آرایه ناهموار، هر بعد، یک آرایه یک بعدی است. برای اعلان یک آرایهی ناهموار، گرامر زیر را بکار برید، که تعداد [

]ها تعداد ابعاد آرایه را نشان میدهد.

type [] []...

به صورت زیر اعلان کنید. myJaggedArray برای مثال، یک آرایه دوبعدی ناهموار از اعداد صحیح به نام

int [] [] myJaggedArray;

2] به پنجمین عنصر آرایهی سوم دستیابی کنید. ][4myJaggedArray[ با نوشتن

ایجاد میکند و عناصر آن را مقداردهی اولیه کرده و سپس محتوای myJaggedArray 6 یک آرایهی ناهموار به نام - مثال 8

آنها را چاپ میکند. برای ذخیره فضای برنامه از مقداردهی اولیه اتوماتیک اعداد صحیح به مقدار صفر بهره میبرد و فقط

بعضی از عناصر را مقداردهی میکند.

6- مثال 8

using System;

namespace JaggedArray

{

public class Tester

{

static void Main( )

{

const int rows = ۴;

// declare the jagged array as ۴ rows high

int[][] jaggedArray = new int[rows][];

// the first row has ۵ elements

jaggedArray[٠] = new int[۵];

// a row with ٢ elements

jaggedArray[١] = new int[٢];

// a row with ٣ elements

jaggedArray[٢] = new int[٣];

// the last row has ۵ elements

jaggedArray[٣] = new int[۵];

// Fill some (but not all) elements of the rows

jaggedArray[٠][٣] = ١۵;

jaggedArray[١][١] = ١٢;

jaggedArray[٢][١] = ٩;

jaggedArray[٢][٢] = ٩٩;

jaggedArray[٣][٠] = ١٠;

jaggedArray[٣][١] = ١١;

jaggedArray[٣][٢] = ١٢;

jaggedArray[٣][٣] = ١٣;

jaggedArray[٣][۴] = ١۴;

for ( int i = ٠; i < ۵; i++ )

{

Console.WriteLine( "jaggedArray[٠][{٠}] = {١}",i, jaggedArray[٠][i] );

}

for ( int i = ٠; i < ٢; i++ )

{

Console.WriteLine( "jaggedArray[١][{٠}] = {١}",i, jaggedArray[١][i] );

}

for ( int i = ٠; i < ٣; i++ )

{

Console.WriteLine( "jaggedArray[٢][{٠}] = {١}",i, jaggedArray[٢][i] );

}

فصل هشتم- آرایه

139

for ( int i = ٠; i < ۵; i++ )

{

Console.WriteLine( "jaggedArray[٣][{٠}] = {١}",i, jaggedArray[٣][i] );

}

}

}

}

خروجی شبیه زیر است :

jaggedArray[٠][٠] = ٠

jaggedArray[٠][١] = ٠

jaggedArray[٠][٢] = ٠

jaggedArray[٠][٣] = ١۵

jaggedArray[٠][۴] = ٠

jaggedArray[١][٠] = ٠

jaggedArray[١][١] = ١٢

jaggedArray[٢][٠] = ٠

jaggedArray[٢][١] = ٩

jaggedArray[٢][٢] = ٩٩

jaggedArray[٣][٠] = ١٠

jaggedArray[٣][١] = ١١

jaggedArray[٣][٢] = ١٢

jaggedArray[٣][٣] = ١٣

jaggedArray[٣][۴] = ١۴

در این مثال یک آرایهی ناهموار با 4 ردیف ایجاد میشود.

int[][] jaggedArray = new int[rows][];

توجه کنید که بعد دوم مشخص نشده است. این بعد با ایجاد یک آرایه برای هر سطر تنظیم میشود. هر کدام از این آرایه

ها

اندازهی مختلف دارند.

// the first row has ۵ elements

jaggedArray[٠] = new int[۵];

// a row with ٢ elements

jaggedArray[١] = new int[٢];

// a row with ٣ elements

jaggedArray[٢] = new int[٣];

// the last row has ۵ elements

jaggedArray[٣] = new int[۵];

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

تودرتو است که از خصوصیت for اطمینان بیشتر چاپ کنید. روش دیگر چاپ مقادیر به خروجی، کاربرد دو حلقه ی

برای کنترل طول حلقه استفاده میکنند. Length

for (int i = ٠; i < jaggedArray.Length; i++ )

{

for (int j = ٠; j < jaggedArray[i].Length; j++)

{

Console.WriteLine("jaggedArray[{٠}][{١}] = {٢}",i, j, jaggedArray[i][j]);

}

}

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

برای کنترل طول حلقه استفاده میشود. مهم نیست که هر سطر طول مختلفی داشته باشد. Length چون از

و نمایش آرایه دوبعدی ناهموار به صورت [rectangularArray[i,j نحوهی نمایش آرایه

های دوبعدی مستطیلی بصورت

انجام میشود. [jaggedArray[i][j

C# برنامه نویسی

140

-6-8 متدهای آرایه

است. آرایهها System.Array اگرچه آرایه را به عنوان یک نوع دادهی درونی به کار بردید. در واقع آرایه یک شی از کلاس

1 بعضی از متدها و خصوصیات مهم آمده است. - چندین متد و خصوصیت را فراهم کردهاند، که در جدول 8 #C در

1- جدول 8

متد یا خصوصیت هدف

شده که یک آرایه یک بعدی مرتب شده را overload متد ایستای عمومی ()BinarySearch

جستجو میکند.

مقداردهی میکند null یک محدوده از عناصر آرایه را به صفر یا ( )Clean

بخشی از یک آرایه را به آرایه دیگر کپی میکند. ( )Copy

یک نمونه جدید از آرایه را معرفی میکند. ()CreateInstance

اندیس اولین نمونه از یک مقدار در یک آرایهی یک بعدی را بر میگرداند. ( )IndexOf

اندیس آخرین نمونه از یک مقدار در یک آرایة یک بعدی را بر میگرداند ( )LastIndexOf

ترتیب عناصر در یک آرایة یک بعدی را معکوس میکند. ( )Reverse

مقادیر یک آرایهی یک بعدی را مرتب میکند ( )Sort

این خصوصیت طول آرایه را بر میگرداند Length

بر میگرداند IEnumerater متد عمومی که یک ( )GetEnumerator

-7-8 مرتبکردن آرایهها

این متدها همان کاری که شما . ()Sort و()Reverse : 1 شایستهی بررسی هستند - دو متد ایستای مفید در جدول 8

عناصر را با نظم مرتب ()Sort ترتیب عناصر در آرایه را معکوس میکند و متد ()Reverse فکر میکنید انجام میدهند. متد

و ... پشتیبانی میشوند. ولی برای int و string همچون #C میکند. این متدها برای آرایههایی از انواع دادهی درونی

7- ضروری است. مثال 8 IComparable در همه کلاسهایی که خود تعریف کردهاید، پیادهسازی واسط ()Sort کاربرد متد

نشان میدهد. string کاربرد این دو متد را برای دستکاری اشیاء

7- مثال 8

;using System

namespace ArraySortAndReverse

{

public class Tester

{

public static void PrintMyArray( string[] theArray )

{

foreach ( string str in theArray )

{

Console.WriteLine( "Value: {٠}", str );

}

Console.WriteLine( "\n" );

}

static void Main( )

فصل هشتم- آرایه

141

{

String[] myArray =

{

"Proust", "Faulkner", "Mann", "Hugo"

};

PrintMyArray( myArray );

Array.Reverse( myArray );

PrintMyArray( myArray );

String[] myOtherArray =

{

"We", "Hold", "These", "Truths",

"To", "Be", "Self","Evident",

};

PrintMyArray( myOtherArray );

Array.Sort( myOtherArray );

PrintMyArray( myOtherArray );

}

}

}

خروجی آن شبیه زیر است :

Value: Proust Value: Faulkner

Value: Mann Value: Hugo

Value: Hugo Value: Mann

Value: Faulkner Value: Proust

Value: We Value: Hold

Value: These Value: Truths

Value: To Value: Be

Value: Self Value: Evident

Value: Be Value: Evident

Value: Hold Value: Self

Value: These Value: To

Value: Truths Value: We

(خروجی بصورت ستونی زیر هم چاپ میشود. در در هر سطر دو مقدار نشان داده شده است)

این مثال با ایجاد یک آرایه از رشتهها بوسیلهی کلمات زیر آغاز میگردد.

"Proust", "Faulkner", "Mann", "Hugo"

ارسال میشود. مجددا آرایه چاپ میشود. بطور مشابه، این ()Array.Reverse این آرایه چاپ میشود و سپس به متد

و با کلیدهای زیر ایجاد میکند. myOtherArray مثال دومین آرایه را با نام

"We", "Hold", "These", "Truths",

"To", "Be", "Self", "Evident",

ارسال میشود، که آنها را بر اساس حروف الفبا مرتب میکند. ()Array.Sort این آرایه به متد

-8-8 خلاصه

آرایه یک کلکسیون اندیسگذاری شده از اشیاء هم نوع است.

یک آرایه را با نوع داده عناصر آن که با [ ] دنبال میشود و سپس نام آرایه قرار میگیرد اعلان کنید. سپس آرایه را

و تعداد عناصر آرایه تعریف کنید. new با کلمه ی کلیدی

1 است. Length- • اندیس اولین عنصر آرایه همواره صفر و اندیس آخرین عنصر

را برای طیکردن سرتاسر آرایه (بوسیله شمارنده حلقه به عنوان اندیس آرایه) بکار برید. for • یک حلقه

C# برنامه نویسی

142

طیکردن سرتاسر عناصر آرایه را بدون نیاز به یک شمارنده مجاز میدارد. foreach • دستور

زمانی که آرایهای ایجاد میشود، میتوان مقادیر اولیه آن را در داخل آکولادها { } مشخص کرد.

امکان ارسال تعداد دلخواه پارامترهای هم نوع به یک متد را فراهم میسازد. متد با این params • کلمه کلیدی

پارامترها همانند یک آرایه برخورد خواهد کرد.

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

مشخص میکنند.

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

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

یک آرایه، تعداد عناصر آرایه را بر میگرداند. Length • خصوصیت

کلاس آرایه یک مجموعه متد برای مرتب کردن، جستجو کردن و دستکاری عناصر دارد.

Mohsen_mahyar@yahoo.com

   + MOHSEN GHASEMI - ٧:٥٤ ‎ق.ظ ; ۱۳۸٩/٤/٧