Module 6

  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Module 6 as PDF for free.

More details

  • Words: 1,174
  • Pages: 38
Module 6 Arrays

‫تعریف یک متغییر آرایه ای ‪:‬‬

: ‫مثال‬  type[

]name; // Allowed  type name[ ]; // Disallowed in C#  type[4] name; // Also disallowed in C#

‫مشخص نمودن ابعاد آرایه ‪:‬‬

‫مقدار دهی اولیه آرایه به‬ ‫صورت صریح‪:‬‬

‫دسترسی به المانهای آرایه ‪:‬‬

‫‪‬تذکر ‪ :‬اندیس گذاری آرایه ها‬ ‫از عدد ص فر شروع می‬ ‫شوند‪.‬‬

‫‪Property‬‬ ‫‪:GetLength‬‬ ‫‪‬‬

‫‪‬‬ ‫‪‬‬

‫‪ Length‬و‬

‫متد‬

‫در ‪ #C‬عبارت های دسترسی به عناصر یک آرایه به‬ ‫صورت خودکار آزمایش می شوند‪ .‬در صورتی که یک‬ ‫انجام دهد‬ ‫عبارت بخواه د دس ترسی خارج ‪Range‬‬ ‫نوع‬ ‫از‬ ‫استثنائی‬ ‫ت‬ ‫حال‬ ‫یک‬ ‫‪ IndexOutOfRangeException‬خواهیم‬ ‫داشت‪.‬‬ ‫‪ Length Property‬طول ی ک آرایه را بدون در‬ ‫نظر گرفتن تعداد بعد های آرایه مشخص می نماید‪.‬‬ ‫مت د ‪ GetLength‬شماره بع د را ب ه عنوان پارامتر‬ ‫پذیرفته‪ ،‬و طول آن بعد را مشخص می نماید‪.‬‬

: ‫مثال‬ for (int r = 0; r < grid.GetLength(0); r++) { for (int c = 0; c < grid.GetLength(1); c++) { Console.WriteLine(grid[r,c]); } }

‫ایجاد یک نمونه (‪ )Instance‬از آرایه ‪:‬‬

‫‪ ‬آرایه ها از نوع ‪ Refrence Type‬می باشند‪.‬‬ ‫‪ ‬از آنجای ی ک ه آرای ه ها از نوع ‪Refrence‬‬ ‫‪ Type‬هس تند ب ه هنگام معرف ی ایجاد نمی‬ ‫شون د و بای د توس ط کلمه کلیدی ‪ New‬ایجاد‬ ‫شوند‪.‬‬ ‫‪ ‬به هنگام ایجاد یک آرایه باید طول تمام بعدهای‬ ‫آنرا مشخص نمود‪.‬‬

‫مثال‬  long[

] row = new long[ ]; // Not allowed  int[,] grid = new int[,]; // Not allowed  long[ ] row = new long[4];

‫مقدار دهی اولیه آرایه ها به‬ ‫صورت ضمنی‪:‬‬ ‫‪ ‬به هنگام ایجاد یک آرایه مقادیر المانهای آرایه‬ ‫به صورت ضمنی به یک مقدار مشخص مقدار‬ ‫دهی اولیه می شوند‪ .‬در صورتی که آرایه از‬ ‫نوع عددی باشد المانهای آن به مقدار صفر و‬ ‫در ص ورتی ک ه آرای ه از نوع ‪ Boolean‬باشد‬ ‫مقدار المانها ‪ false‬خواهد بود‪.‬‬

‫مقدار دهی اولیه به صورت‬ :‫صریح‬ :‫چند مثال‬



int[ ] data = new int[4]{a, b( ), c*d, e( ) +f( )};



int[ ] data1 = new int[4]{0, 1, 2, 3}; // Allowed int[ ] data2 = {0, 1, 2, 3}; // Allowed data2 = new int[4]{0, 1, 2, 3}; // Allowed data2 = {0, 1, 2, 4}; // Not allowed

  

  

int[ ] data3 = allowed int[ ] data4 = not allowed int[ ] data5 = Allowed

new int[2]{}; // Not new int[2]{42}; // Still new int[2]{42,42}; //

‫‪ ‬به هنگامی که به صورت صریح آرایه ها را‬ ‫مقدار دهی اولیه می کنیم باید تمامی عناصر‬ ‫را مقدار دهی نمود‪:‬‬ ‫‪ int[ ] data3 = new int[2]{}; //‬‬ ‫‪Not allowed‬‬ ‫‪ int[ ] data4 = new int[2]{42}; //‬‬ ‫‪Still not allowed‬‬ ‫;}‪ int[ ] data5 = new int[2]{42,42‬‬ ‫‪// Allowed‬‬

‫مقدار دهی اولیه آرایه های چند‬ ‫‪:‬بعدی به صورت صریح‬

int[,] data = new int[2,3] { // Allowed {42, 42, 42}, {42, 42, 42}, }; int[,] data = new int[2,3] { // Not allowed {42, 42}, {42, 42, 42}, }; int[,] data = new int[2,3] { // Not allowed {42}, {42, 42, 42}, };

‫نکته ‪:‬‬ ‫طول آرایه ها را می توان به دو صورت‬ ‫در حین اجراء برنامه و در زمان کامپایل‬ ‫تعیین نمود‪:‬‬ ‫تعیین طول آرایه به هنگام کامپایل ‪:‬‬ ‫;]‪long[ ] row = new long[4‬‬ ‫تعیین طول آرایه به هنگام اجراء برنامه‪:‬‬ ‫;)(‪string s = Console.ReadLine‬‬ ‫;)‪int size = int.Parse(s‬‬ ‫;]‪long[ ] row = new long[size‬‬

: ‫مثال‬ System.Console.WriteLine("Enter number of rows : "); string s1 = System.Console.ReadLine( ); int rows = int.Parse(s1); System.Console.WriteLine("Enter number of columns: "); string s2 = System.Console.ReadLine( ); int cols = int.Parse(s2); ... int[,] matrix = new int[rows,cols];

: ‫مثال‬ System.Console.WriteLine("Enter number of rows: "); string s1 = System.Console.ReadLine( ); int rows = int.Parse(s1); ... int[,] matrix = new int[rows,4];

‫یک محدودیت ‪:‬‬ ‫ب ه هنگام مقدار ده ی اولی ه ب ه آرای ه ه ا نمی‬ ‫توان از عبارات زمان اجراء استفاده نمود‪.‬‬ ‫مثال ‪:‬‬ ‫;) (‪string s = System.Console.ReadLine‬‬ ‫;)‪int size = int.Parse(s‬‬ ‫‪int[ ] data = new int[size]{0,1,2,3}; // Not‬‬ ‫‪allowed‬‬

‫کپی متغییر های آرایه ای‪:‬‬

‫‪ ‬نکت ه ‪ :‬آرای ه ه ا ب ه ص ورت ضمنی از کلس‬ ‫‪ System.class‬مشت ق شده اند‪ .‬بنابراین‬ ‫دارای تعدادی ‪ Properties‬و متد هستند‪.‬‬

Array Properties : Rank  ‫ فقط خواندنی است که ابعاد آرایه‬Integer ‫یک متغییر‬ .‫را مشخص می نماید‬  int[ ] one = new int[a];  int[,] two = new int[a,b];  int[,,] three = new int[a,b,c]; :‫ بنابراین‬  one.Rank == 1  two.Rank == 2  three.Rank == 3

Array Properties Length Property ‫ای ن متغیی ر فق ط خواندن ی طول کلی‬ .‫آرایه را مشخص می نماید‬ : ‫مثال‬  one.Length == a  two.Length == a * b  three.Length == a * b * c

Sort: ‫ متد‬  int[ ] data = {4,6,3,8,9,3}; // Unsorted  System.Array.Sort(data); // Now sorted Clone: ‫ متد‬ ‫یک نمونه جدید از آرایه ایجاد می نماید که‬ ‫مقادیر المانهای آن همان المانهای آرایه کپی‬ .‫شده می باشد‬  int[ ] data = {4,6,3,8,9,3};  int[ ] clone = (int [ ])data.Clone( );

IndexOf ‫ متد‬ ،‫ اندیس اولین رخداد پارامتر را در آرایه‬ :‫مشخص می نماید‬  

int[ ] data = {4,6,3,8,9,3}; int where = System.Array.IndexOf(data, 9); // == 4

‫باز گرداندن آرایه از متدها ‪:‬‬

:‫مثال‬ static int[,] CreateArray( ) { string s1 = System.Console.ReadLine( ); int rows = int.Parse(s1); string s2 = System.Console.ReadLine( ); int cols = int.Parse(s2); return new int[rows,cols]; }

using System; namespace ConsoleApplication1 { class Program { static int[,] CreateArray() { string s1 = System.Console.ReadLine(); int rows = int.Parse(s1); string s2 = System.Console.ReadLine(); int cols = int.Parse(s2); int[,] temp = new int[rows, cols]; temp[1, 1]++; return temp; } static void Main(string[] args) { int[,] temp = CreateArray(); temp[1, 1]++;//print 2 Console.WriteLine(temp[1,1]); Console.ReadKey(); } } }

‫ارسال آرایه ها به متد ها ‪:‬‬

‫‪ ‬زمانی که یک متغییر آرایه ای را به یک‬ ‫پاس‬ ‫د‬ ‫مت‬ ‫م ی کنی م مقدار متغیی ر آرایه ای در‬ ‫متغیی ر آرای ه ای مت د کپ ی می‬ ‫شود(نمونه جدیدی ساخته نمی شود)‪ .‬و‬ ‫پارامتر آرایه ای و آرگومان آرایه ای هر‬ ‫دو به یک نمونه اشاره می کنند‪.‬‬

‫ به همراه‬Command line ‫برنام ه ای ک ه از‬ :‫آرگومانهای مشخص شده اجراء میشود‬



C:\> pkzip –add –rec –path=relative c:\code *.cs

‫ به فرم زیر خواهد‬Pkzip ‫کلس اصلی برنامه‬ :‫بود‬ class PKZip { static void Main(string[ ] args) { ... } }



‫ به شرح زیر‬args ‫آرای ه‬ :‫بود‬ string[ ] args = { "-add", "-rec", "-path=relative", "c:\\code", "*.cs" };

‫مقدار‬ ‫خواهد‬

‫ به همراه‬Foreach ‫اس تفاده از‬ :‫آرایه ها‬ Foreach ‫ عبارت‬،‫برای سادگی برنامه نویسی‬ .‫ دو کد زیر هم ارز هستند‬.‫استفاده بکار می رود‬ for (int i = 0; i < args.Length; i++) { System.Console.WriteLine(args[i]); } foreach (string arg in args) { System.Console.WriteLine(arg); }

‫ را می توان با آرایه های‬foreach ‫عبارت‬ :‫با ابعاد بالتر نیز بکار برد‬ int[,] numbers = { {0,1,2}, {3,4,5} }; foreach (int number in numbers) { System.Console.WriteLine(number ); }

Related Documents

Module 6
November 2019 26
Module 6
October 2019 29
Module 6
December 2019 15
Module 6
June 2020 11
Module 6
December 2019 28
Module 6
November 2019 31