آرایه ها یکی از دو ساختار داده اساسی در علوم کامپیوتر هستند. آنها به برنامه های ما اجازه می دهند تا اطلاعات را در سلول های حافظه که به هم پیوسته اند، حفظ کنند. این بدان معنی است که اگر اولین مورد از یک آرایه در یک مکان حافظه با آدرس 100 ذخیره شود، آیتم بعدی در آرایه در سلول حافظه با آدرس 101 ذخیره می شود. سلول های حافظه در رایانه مانند یک شبکه مرتب شده اند. یک صفحه گسترده یا چیزی مشابه از سوی دیگر، آرایه ها ثابت هستند، به این معنی که در طول زمان اجرای یک برنامه نمی توانند اندازه آنها افزایش یابد. هنگامی که طولی برای یک آرایه مشخص می شود، هرگز نمی توان آن را تغییر داد، که ما را به سمت ابزار دیگری به نام لیست پیوندی سوق می دهد، اما ساختار داده لیست های پیوندی در مقاله بعدی پوشش داده خواهد شد.
آرایه ها می توانند یک بعدی، دو بعدی یا n بعدی باشند، که در آن n> 2 باشد. اگر پیش زمینه ای در ریاضیات دارید، ممکن است وسوسه شوید که آرایه ها را با بردارها و ماتریس ها مقایسه کنید، و این درست است. سپس پاراگراف های زیر نحوه اعلان یک آرایه در سی شارپ و نحوه بازیابی اطلاعات موجود در آرایه را توضیح خواهند داد. آنها همچنین کدی را با توضیحات مفصل در مورد کاری که کد انجام می دهد نشان می دهند.
توجه داشته باشید
من می خواهم در این نقطه توقف کنم و شما را تشویق کنم که کد همراه این مقاله را دانلود کنید. انجام این کار شما را با چیزی شروع می کند که می توانید با آن تمرین کنید و شاید برای برنامه های خود استفاده کنید. همچنین، در این مقاله و مقالات بعدی، نکات مهندسی نرم افزار و همچنین تجزیه و تحلیل نماد Big-O برای برنامه های ما ارائه خواهد شد.
لطفاً نظرات کد را بررسی کنید و موارد را با دقت بررسی کنید، زیرا این به شما کمک می کند آرایه ها و ساختارهای داده آینده را بهتر درک کنید.
در نهایت، از آنجایی که کد در فایلهایی با پسوند csx ارائه میشود، ممکن است بخواهید این اسکریپتهای C# را با استفاده از C# REPL بارگیری کنید، یا کد را مستقیماً از مقاله کپی کنید.
اگر تصمیم به استفاده از C# Interactive دارید، لطفاً حتماً از خط کد زیر استفاده کنید و مسیر فایلی را که از حالت فشرده خارج کردید جایگزین \path.csx کنید.
#load "\path.csx"
اعلان آرایه ها
یک آرایه دارای نحو زیر در سی شارپ است:
- Type[] arrayName = new Type[] {item1, item2, ...};
این ساده ترین شکل برای اعلام آرایه است. این نوع آرایه یک بعدی است و میتوان آن را مجموعهای از اشیاء که از چپ به راست ردیف شدهاند در نظر گرفت. در مثال اول ما یک برنامه ساده ایجاد می کنیم که تگ های <p> و </p> HTML را شناسایی می کند. اگر متن داده شده یک پاراگراف معتبر HTML باشد، برنامه گزارش می دهد. این به ما این امکان را میدهد تا ببینیم که آرایهها چگونه ممکن است هنگام نوشتن برنامهها و ارتباط آنها در علوم کامپیوتر و کامپیوترها به طور کلی استفاده شوند.
- // File name: SimpleParser.csx
- // Author: Jesus Kevin Morales
- // Date Created: 06/09/2017
- // Purpose: To store a simple parser for later loading while using the C# REPL.
- // Date last modified: 07/08/2017
- // Modification history:
- // 06/09/2017: Original build;
- // 06/09/2017: Added a SimpleParser class with a .Parse method (see member documentation for details).
- using System;
- /*
- *
- * Represents a simple parser that showcases the use of the array data structure.
- *
- */
- public class SimpleParser {
- /*
- Parses a given piece of text.
- Parameter: text: The text to parse.
- Returns: None.
- Preconditions: The string given to this method should not be empty or null, and should contain HTML <p> tags.
- Postconditions: The method will print to the screen.
- This is an O(1) algorithm.
- */
- public static void Parse(string text) {
- // The following line creates an array of strings (HTML tags in this case), with 2 elements.
- // It is an O(1) operation.
- string[] tags = new string[] {
- "<p>",
- "</p>"
- };
- // The following line is also an O(1) operation.
- if (text.StartsWith(tags[0]) && text.EndsWith(tags[1])) {
- Console.Write("\r\rYour paragraph is valid HTML.\r\r");
- }
- }
- }
همانطور که می بینیم، برنامه فقط ابتدا و انتهای یک رشته را جستجو می کند و یک روش بومی برای بررسی HTML معتبر به ما می دهد. با این حال، میتوان از آرایهها برای یک نوع برنامه مشابه استفاده کرد. در مرحله بعد، آرایه های دو بعدی را بررسی خواهیم کرد، اما من آنها را توصیه نمی کنم. آنها منبعی برای کدهای ناخوانا و همچنین باگ هستند. (با دیدن نحو، متقاعد خواهید شد.). علاوه بر این، این آرایهها معمولاً به الگوریتمهایی نیاز دارند که O(n^2) هستند، که ما باید به هر قیمتی از آنها اجتناب کنیم زیرا اجرای آنها زمان زیادی میبرد.
آرایه های دو بعدی به صورت زیر اعلام می شوند: اجازه دهید arrayName یک آرایه دو بعدی از نوع int باشد. سپس arrayName به صورت زیر تعریف می شود
- int[, ] arrayName = new int[, ] {
- {
- 10,
- 11
- }, {
- 12,
- 13
- }, {
- 14,
- 15
- }
- };
برای بازدید از هر یک از آیتم های آرایه، به دو حلقه نیاز داریم که یکی در داخل دیگری تودرتو است، به شرح زیر:
- for (int i = 0; i < length; i++) {
- for (int j = 0; j < length - 1; j++) {
- // To do code goes here (not recommended that you take this approach.)
- }
- }
آرایه های دندانه دار آرایه هایی از آرایه ها هستند. به عبارت دیگر، به جای اینکه شامل اشیایی مانند رشته یا int باشند، حاوی آرایه های دیگری هستند. باز هم توصیه نمی شود که از این نوع آرایه ها به طور مستقیم در کد خود استفاده کنید. اینها باید در زمان اجرا ظاهر شوند، زمانی که برنامهها این آرایهها را تولید میکنند، نه اینکه توسط برنامهنویس کدگذاری شوند.
یکی از این نمونهها از آرایههای ناهموار، آرایههای رشتهها هستند.
در مقالههای آینده، نحوه استفاده از آرایهها برای توسعه ساختارهای داده مانند صفها، پشتهها و لیستهای آرایه معمولی را بررسی خواهیم کرد.