آموزش کار با آرایه ها در جاوا

+1
+36
1394/02/29 0 1281 م.مطلبی

در این درس تصمیم داریم تا نحوه کار با آرایه ها را به شما دوستان آموزش دهیم . همان طور که در دروس قبل نیز عنوان شد متغیر ها بخش هایی از حافظه هستند که از آنها برای ذخیره مقادیر برنامه استفاده می کنیم.هر متغیر تنها توانایی ذخیره یک مقدار را دارد. اکنون این سوال مطرح می شود در صورتی که بخواهیم بیش از یک مقدار را در برنامه ذخیره کنیم راه کار چیست؟

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

در هنگام استفاده از آرایه ها توجه به این نکته ضروری است که در یک آرایه فقط باید داده هایی از یک نوع را ذخیره کنیم. به این معنی که اگر آرایه ای از نوع داده ای int  تعریف شود بایستی تمامی عناصری که در آرایه ذخیره می کنیم از این نوع داده ای باشند و ذخیره نوع دیگری از داده درون این آرایه باعث بروز خطا خواهد شد.

در زمانی که از آرایه ها استفاده می کنیم برای دسترسی به عنصر دلخواه خود باید از اندیس استفاده کنیم . مثلا فرض کنید آرایه ای دارای 10 عنصر است . همچنین این آرایه را  با نام x به صورت x[10] تعریف کرده ایم . حال می خواهیم عنصر هفتم از این آرایه را با مقدار 12 مقدار دهی کنیم . به این منظور عبارتی را بصورت ;x[6]=12 را در دستورات خود قرار می دهیم . در واقع با این دستور عنصر هفتم ارایه با 12 مقدار دهی می شود. ممکن است این سوال برای شما پیش آمده باشد که اگر می خواهیم عنصر هفتم  آرایه را مقداردهی کنیم پس چرا اندیس این عنصر را 6 در نظر گرفته ایم؟ پاسخ این جاست که در جاوا اندیس شروع خانه های آرایه از صفر می باشد. پس اولین عنصر آرایه اندیس صفر دارد و این موضوع تا انتها ادامه می یابد . حال در آرایه ای که 10 عنصر دارد عنصر 10 ام دارای اندیس 9 می باشد . پس به دلیل مشابه عنصر 7 ام دارای اندیس 6 می باشد. توجه نمایید که برای دسترسی به عنصری خاص از آرایه باید اندیس ها را درون یک جفت براکت [] قرار دهیم. در ادامه با ساب سان همراه باشید تا نحوه تعریف آرایه را به شما دوستان آموزش می دهیم .

طریقه تعریف آرایه

حال ببینیم آرایه ها را در جاوا به چه صورت تعریف می کنند؟ تعریف آرایه ها در جاوا به راحتی تعریف متغیر ها نمی باشد. در واقع برای تعریف آرایه بر خلاف زبان های ++c و c که به راحتی آرایه ای را تعریف می کردیم در جاوا تعریف آرایه قدری نیاز به دقت دارد. در واقع آرایه ها دسته ای از اشیا جاوا به حساب می آیند.

تمامی اشیا در جاوا بایستی با استفاده از عملگر new به صورت پویا تخصیص حافظه داده شوند . آرایه هم از این موضوع مستثنا نمی باشد . برای تعریف آرایه ابتدا باید آن را تعریف کرد و سپس با استفاده از عملگر new  به آن حافظه اختصاص دهیم.

فرض کنید آرایه ای به نام x را که دارای 10 عنصر و از نوع داده ای int است تعریف کنیم . برای این منظور دستوری را همانند زیر تایپ می کنیم.

int x[]= new int[10];

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

int x[];
x = new int[10];

این دستور نیز همانند دستور قبل x را با 10 عنصر و از نوع داده ای int تعریف می نماید.در صورتی که به این دستورات دقت نمایید برای تعریف آرایه ابتدا نوع داده ای و سپس نام آرایه به همراه یک جفت براکت باز و بسته ذکر می کنیم. سپس عملگر انتساب را تعیین کرده و در ادامه نیز از عملگر new به همراه تایپ داده ای و تعداد عنصر آرایه استفاده می کنیم. ممکن است برخی موارد بخواهیم دو آرایه را در یک سطر تعریف کنیم.برای این منظور به صورتی که مشاهده می نمایید دستور را تایپ می کنیم.

int x,y ;

در این حالت x و y  دو آرایه هستند که در یک سطر تعریف شده اند. در ادامه به روشی که توضیح داده شد از عملگر new برای تخصیص حافظه به آنها استفاده می کنیم.

حالا می خواهیم متغیر length را که از آن برای تعیین طول آرایه استفاده می شود به شما دوستان معرفی کنیم.در جاوا برای آگاهی از تعداد عناصر ذخیره شده در آرایه از متغیر length استفاده می کنیم. به عنوان مثال فرض کنید می خواهیم به تعداد عناصر آرایه x که قبلا تعریف شد دسترسی داشته باشیم.برای این منظور کافی است تا عبارتی را به شیوه ای که مشاهده می نمایید تایپ کنیم.

int n = x.length ;

در این عبارت تعداد عنصر آرایه x درون متغیر n ذخیره می شود .در ادامه این بخش می خواهیم با استفاده از یک تمرین عملی نحوه تعریف و مقداردهی به عناصر آرایه را به شما دوستان آموزش دهیم. به همین منظور پروژه ایجاد شده در دروس قبلی را باز کنید و کلاس جدیدی با نام subsun_class_15 به پکیج subsun_package اضافه کنید. و درون آن را بصورت زیر پر نمایید و سپس آن را ذخیره کنید.

package subsun_package;
import javax.swing.*;
public class subsun_class_15 {

     public static void main(String args[])
      {
          int array[]={32,27,64,18,95,14,90,70,60,37};

          String output="اندیس\tمقدار\n";
          for(int counter=0;counter<array.length;counter++){
           output += counter + "\t" + array[ counter ] + "\n";
           }
          JTextArea outputArea = new JTextArea();
          outputArea.setText( output );
          JOptionPane.showMessageDialog( null, outputArea,
                              "مقدار دهی اولیه آرایه",
                               JOptionPane.INFORMATION_MESSAGE );
          System.exit(0);
     }
}

حال نوبت بررسی دستورات مذکور می رسد . در این دستورات ابتدا با دستور import  تمامی کلاس های بسته swing را به برنامه خود اضافه کرده ایم.سپس آرایه ای به نام array را از نوع داده ای int تعریف کرده ایم . آرایه مورد نظر دارای 10 عنصر است اکنون به گونه ای که مشاهده می نمایید این آرایه را بصورت دستی مقدار دهی اولیه نموده ایم . توجه شود که برای مقدار دهی اولیه به عناصر آرایه بصورت دستی کافی است تا مقادیر مورد نظر را درون یک جفت آکولاد قرار دهیم و آنها را توسط کاما از هم جدا کنیم به این صورت اولین مقدار درون اولین عنصر آرایه قرار می گیرد و این موضوع تا انتها آرایه کاربر دارد.لازم به توضیح است در زمانی که آرایه ای را تعریف می کنیم بصورت پیش فرض تمامی عناصر آرایه با صفر مقدار دهی اولیه می شوند. نکته مهم دیگر که باید به شما دوستان گفته شود این است که در صورتی که آرایه ای را به صورت دستی مقدار دهی اولیه نماییم دیگر برای تخصیص حافظه نیاز به عملگر new نمی باشد. در ادامه کار متغیر رشته ای output  را بصورتی که مشاهده می نمایید تعریف کرده ایم از این متغیر برای چاپ عنصر آرایه به همراه مقدار ذخیره شده در آن استفاده می کنیم . استفاده از کارکتر t\ در رشته output به این معناست که پس از رشته تایپ شده به اندازه یک tab فاصله ایجاد شود . همچنین استفاده از کاراکتر n\ به این معنی است که عبارتات پس از این کاراکتر در سطر جدید نمایش داده شوند.در ادامه کار یک حلقه for ایجاد کرده ایم.در این حلقه که به تعداد عناصر آرایه تکرار می شود می خواهیم شماره اندیس هر عنصر آرایه را به همراه مقدار ذخیره شده در آن را به انتهای متغیر رشته ای output اضافه کنیم.توجه شود که هر عنصر آرایه را درون یک سطر نمایش داده می شود . در حلقه for برای دسترسی به تعداد عنصر ذخیره شده در آرایه از متغیر length بصورتی که مشاهده می شود استفاده کرده ایم . پس از اتمام حلقه for یک شی JTextArea با نام outputArea تعریف کرده ایم و سپس با استفاده از عملگر new به آن حافظه اختصاص داده ایم با استفاده از این شی می توانیم رشته ای از کاراکتر ها را درون یک کادر متنی نمایش دهیم . همانطور که مشاهده کرده اید رشته حاصل شده از اجرا حلقه for را به عنوان متنی که قرار است نمایش داده شود . به متد setText از شی outputArea داده ایم.حال یک کادر پیغام را تعریف کرده و سپس کادر متنی ایجاد شده را در مرحله قبل را در این شی قرار داده ایم. در واقع درون کادر پیغام یک کادر متنی نمایش داده می شود .حال زمان مشاهده عملکرد برنامه می رسد .فایل subsun_class_15 را در Package Explorer ایکلیپس انتخاب کنید و آن را اجرا کنید. نتیجه اجرای برنامه را در زیر مشاهده می کنید.

اجرای برنامه  ارایه در جاوا

همانطور که در خروجی این برنامه مشاهد می نمایید مقادیر مربوط به اندیس های آرایه به همراه مقدار ذخیره شده در هر عنصر در سطر های جداگانه نمایش داده می شود.

 

دیدگاه ها (0)

ارسال دیدگاه ها

Image CAPTCHA
حروف نمایش داده شده در تصویر را وارد کنید.