شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش مبانی برنامه نویسی - آرایه ها

فرض کنید که ما به ۵ عدد صحیح نیاز داریم. اگر از متغیر ساده و مفهوم نوع داده‌ای برنامه‌نویسی استفاده کنیم، آنگاه باید پنج متغیر از نوع داده‌ای int داشته باشیم و برنامه به صورت زیر خواهد بود:

#include <stdio.h>

int main() {
   int number1;
   int number2;
   int number3;
   int number4;
   int number5;
   
   number1 = 10;      
   number2 = 20;   
   number3 = 30;   
   number4 = 40; 
   number5 = 50;     

   printf( "number1: %d\n", number1);
   printf( "number2: %d\n", number2);
   printf( "number3: %d\n", number3);
   printf( "number4: %d\n", number4);
   printf( "number5: %d\n", number5);
}

این بسیار ساده بود، زیرا فقط باید پنج عدد صحیح را ذخیره کنیم. حالا فرض کنید ما باید ۵۰۰۰ عدد صحیح را ذخیره کنیم. آیا ما باید ۵۰۰۰ متغیر استفاده کنیم؟

برای کنترل چنین موقعیت‌هایی، تقریباً همه زبان‌های برنامه‌نویسی یک مفهوم به نام آرایه ارائه می‌دهند. یک آرایه، یک ساختار داده است که می‌تواند مجموعه‌ای با اندازه ثابت از عناصر با یک نوع داده‌ای ذخیره کند. یک آرایه برای ذخیره مجموعه‌ای از داده‌ها استفاده می‌شود، اما اغلب بهتر است یک آرایه را به عنوان یک مجموعه از متغیرهای هم‌نوع در نظر بگیریم.

به جای اعلام متغیرهای جداگانه، مانند number1، number2، ...، number99، فقط یک متغیر آرایه به نام number با نوع داده‌ای صحیح اعلام کنید و از number1[0]، number1[1] و ...، number1[99] برای نمایش متغیرهای جداگانه استفاده کنید. در اینجا، 0، 1، 2، ... ۹۹ اندیس مرتبط با متغیر var هستند و برای نشان دادن عناصر موجود در آرایه، استفاده می‌شوند.

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

آرایه‌ها در سی

ساخت آرایه‌ها

برای ساخت یک متغیر آرایه در زبان برنامه‌نویسی سی، برنامه‌نویس نوع عناصر و تعداد عناصری که در آن آرایه ذخیره می‌شود را مشخص می‌کند. دستورالعمل ساده‌ای برای ساخت یک آرایه در زبان سی به شرح زیر است:

type arrayName [ arraySize ];

این به عنوان یک آرایه یک بعدی شناخته می‌شود. اندازه_آرایه باید یک ثابت صحیح بزرگتر از صفر باشد و نوع می‌تواند هر نوع داده صحیح C معتبر باشد. به عنوان مثال، برای تعریف یک آرایه 10 عضوی به نام number از نوع int از این دستور استفاده می‌شود −

int number[10];

در اینجا، number یک آرایه متغیر است که برای نگه‌داری حداکثر ۱۰ عدد صحیح کافی است.

مقداردهی آرایه‌ها

می‌توانید یک آرایه را در زبان C یا به صورت یکی یکی یا با استفاده از یک عبارت تک به تک مقداردهی کنید، همانند مثال زیر −

int number[5] = {10, 20, 30, 40, 50};

تعداد مقادیر بین پرانتزهای { } نمی‌تواند بیشتر از تعداد عناصری باشد که برای آرایه بین براکت‌های مربعی [ ] اعلام می‌کنیم.

اگر اندازهٔ آرایه را حذف کنید، یک آرایه به اندازهٔ کافی برای نگه‌داری مقدارهای اولیه ایجاد خواهد شد. بنابراین، اگر بنویسید:

int number[] = {10, 20, 30, 40, 50};

شما دقیقاً همان آرایه را که در مثال قبل ساخته بودید، ایجاد می کنید. یک مثال برای اختصاص دادن یک عنصر از آرایه به شرح زیر است:

number[4] = 50;

این عبارت مقدار عنصر پنجم آرایه را با مقدار 50 اختصاص می‌دهد. همه‌ی آرایه‌ها 0 را به عنوان شاخص اولین عنصر خود دارند که همچنین به عنوان شاخص پایه نیز شناخته می‌شود و شاخص آخرین عنصر یک آرایه، اندازه‌ی کل آرایه منهای 1 خواهد بود. تصویر زیر نمایش تصویری از آرایه‌ای است که مورد بحث ما بود −

Array Presentation

دسترسی به عناصر آرایه

یک عنصر با شاخصی که در قوس‌های مربعی بعد از نام آرایه قرار می‌گیرد، قابل دسترسی است. به عنوان مثال −

int var = number[9];

در این دستور، 10 امین عنصر آرایه گرفته شده و مقدار آن به متغیر var اختصاص داده می‌شود. مثال زیر از تمامی مفاهیم بالا یعنی ایجاد، اختصاص و دسترسی به آرایه استفاده می‌کند −

#include <stdio.h>
 
int main () {
   int number[10]; /* number is an array of 10 integers */
   int i = 0;
 
   /* Initialize elements of array n to 0 */         
   while( i < 10 ) {
	
      /* Set element at location i to i + 100 */
      number[ i ] = i + 100;
      i = i + 1;
   }
   
   /* Output each array element's value */
   i = 0;
   while( i < 10 ) {
	
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
   
   return 0;
}

زمانیکه کد بالا کامپایل و اجرا می‌شود، نتیجه‌ی زیر را تولید می‌کند −

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

آرایه‌ها در جاوا

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

شما می‌توانید برنامه زیر را اجرا کنید تا خروجی آن را ببینید، که باید با نتیجه تولید شده توسط مثال C بالا یکی باشد.

public class DemoJava {
   public static void main(String []args) {
      int[] number = new int[10];
      int i = 0;
      
      while( i < 10 ) {
		
         number[ i ] = i + 100;
         i = i + 1;
      }

      i = 0;
      while( i < 10 ) {
         System.out.format( "number[%d] = %d\n", i, number[i] );
         i = i + 1;
      }
   }
}

وقتی برنامه بالا اجرا می‌شود، نتیجه زیر را به دنبال خواهد داشت −

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

آرایه‌ها (لیست‌ها) در پایتون

پایتون مفهوم آرایه را ندارد، به جای آرایه، پایتون ساختار داده‌ای دیگری به نام لیست را ارائه می‌دهد که عملکرد مشابه آرایه‌ها در زبان‌های دیگر را داراست.

برنامه معادل زیر در پایتون نوشته شده است −

# Following defines an empty list.
number = []
i = 0

while i < 10:
   # Appending elements in the list
   number.append(i + 100)
   i = i + 1

i = 0
while i < 10:
   # Accessing elements from the list
   print "number[", i,  "] = ", number[ i ]
   i = i + 1

هنگامی که برنامه فوق الذکر اجرا می‌شود، نتیجه زیر تولید می‌شود −

number[ 0 ] =  100
number[ 1 ] =  101
number[ 2 ] =  102
number[ 3 ] =  103
number[ 4 ] =  104
number[ 5 ] =  105
number[ 6 ] =  106
number[ 7 ] =  107
number[ 8 ] =  108
number[ 9 ] =  109