0

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

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

آموزش برنامه نویسی جاوا - قسمت ۲۹: مرتب کردن عناصر یک Array در پروژه
سه شنبه 1 بهمن 1392  8:21 AM

در این جلسه قصد داریم تا نحوه Sort کردن یا مرتب کردن Element ها یا عناصر تشکیل دهنده یک Array مورد بررسی قرار دهیم. برای این منظور نیاز است تا حتماً جلسات مربوط به Array ها و همچنین Loop ها مرور شده باشند.

به منظور درک بهتر فایده Sort کردن در برنامه نویسی موقعیتی را در نظر خواهیم گرفت که ممکن است در دنیای واقع اتفاق افتد. فرض کنیم که در تیم تهیه فیلم سینمایی  به عنوان مدیر آی تی مشغول به کار بودیم. کار فیلم برداری و مونتاژ به پایان رسیده و همکاران ما مشغول تهیه تیتراژ پایانی هستند. در واقع همکاران ما بر اساس روالی که در تیتراژ پایانی معمول است، می خواهند تا اسامی بازیگران فیلم را به ترتیب حروف الفبا بنویسند. برای این منظور از ما که یک برنامه نویس هستیم کمک می خواهند.

ادامه مطلب را از دست ندهید.

برای این کار یک پروژه جدید تعریف می کنیم تحت عنوان  29th Session به معنی " جلسه بیست و نهم" و همچنین کلاسی به اسم AlphabeticOrder به معنی "ترتیب الفبا" در آن ایجاد می کنیم. حال از آن جا که اسامی بازیگران به داده هایی از جنس string در زبان برنامه نویسی جاوا تبدیل خواهند شد، پس نیاز داریم تا یک Array از جنس کلاس String ایجاد کنیم. از آنجا که این فیلم شش بازیگر اصلی داشت، در Array یی که ایجاد می کنیم عدد شش را نیز وارد می کنیم: کد ما به شکل زیر خواهد بود:


  1. public class AlphabeticOrder {
  2. public static void main(String[] args) {
  3. String[] castNames = new String[6];
  4. }
  5. }

همانطور که در کد فوق ملاحظه می شود نام این Array را castNames به معنی "نام بازیگران" گذاشته ایم. حال تک تک بازیگران به را هر ترتیبی که بخواهیم در داخل Array خود تعریف می کنیم و کد ما به شکل زیر تکمیل خواهد شد:

  1. public class AlphabeticOrder {
  2. public static void main(String[] args) {
  3. String[] castNames = new String[6];
  4. castNames[0] = "Zareyee Merila";
  5. castNames[1] = "Hosseini Shahab";
  6. castNames[2] = "Bayat Sareh";
  7. castNames[3] = "Peyman Moadi";
  8. castNames[4] = "Hatami Leila";
  9. castNames[5] = "Farhadi Sarina";
  10. }
  11. }

همانطور که در کد فوق ملاحظه می شود اول نام خانوادگی بازیگران سپس نام آن ها وارد شده است چرا که می خواهیم در این مثال بر اساس نام خانوادگی اسامی بازیگران را Sort نماییم. در این مرحله از برنامه نویسی نیاز به یک Loop از جنس for داریم تا در هر بار Loop شدن یک عدد به لیست اضافه شده و سپس اسامی بازیگران البته بر اساس حروف الفبا یکی پس از دیگر نمایش داده شوند. از این رو، یک Loop از جنس for تعریف می کنیم و مقادیر آن را به شکل زیر تعریف می کنیم:

  1. public class AlphabeticOrder {
  2. public static void main(String[] args) {
  3. String[] castNames = new String[6];
  4. castNames[0] = "Zareyee Merila";
  5. castNames[1] = "Hosseini Shahab";
  6. castNames[2] = "Bayat Sareh";
  7. castNames[3] = "Peyman Moadi";
  8. castNames[4] = "Hatami Leila";
  9. castNames[5] = "Farhadi Sarina";
  10. for (int number = 0; number < 6; number++) {
  11. }
  12.  
  13. }
  14. }

در واقع در این Loop نقطه شروع را عدد صفر در نظر می گیریم و نقطه پایان را عدد شش و در هر بار Loop شدن یک واحد به عدد پیشین اضافه خواهد شد. حال می خواهیم تا خروجی برنامه را در پنچره Console به نمایش در آوریم، از این رو کد فوق را به شکل زیر تکمیل می کنیم:

  1. public class AlphabeticOrder {
  2. public static void main(String[] args) {
  3. String[] castNames = new String[6];
  4. castNames[0] = "Zareyee Merila";
  5. castNames[1] = "Hosseini Shahab";
  6. castNames[2] = "Bayat Sareh";
  7. castNames[3] = "Peyman Moadi";
  8. castNames[4] = "Hatami Leila";
  9. castNames[5] = "Farhadi Sarina";
  10. for (int number = 0; number < 6; number++) {
  11. System.out.print(number + ": " + castNames[number] + "\n");
  12. }
  13.  
  14. }
  15. }

در دستور System.out.println(); با نوشتن واژه number این دستور را به کامپیوتر می دهیم که عدد Loop که از صفر آغاز شده و در هر بار Loop شدن یک عدد به آن اضافه می شود نمایش داده شود که این به منزله شماره ردیف خواهد بود. پس از آن یک علامت : به همراه یک Space قرار می دهیم سپس نام Array خود که castNames است را می نویسیم که در هر بار Loop شدن یکی از Element های Array برنامه نیز به نمایش در آید. نکته ای که در اینجا می بایست مد نظر قرار داده شود این است که مقابل نام castNames که نام Array است می بایست در داخل علامت [] شماره عنصری که از Array که می خواهیم به نمایش در آید را نیز بنویسیم. به طور مثال اگر بخواهیم که نام شهاب حسینی به نمایش در آید می توانیم castNames[1] را فرا بخواهیم. سپس یک علامت \n قرار داده تا در هر بار Loop شدن به نوشتن کلمات به خط بعد انتقال یابد. اما از آنجا که می خواهیم به همان ترتیبی که Loop اجرا می شود عناصر داخل Array نمایش داده شوند، از اینرو به جای وارد کردن یک عدد نام Loop را که number می باشد را وارد می کنیم. به عبارت دیگر در Loop اول که Loop صفر است اولین عنصر که مریلا زارعی است نمایش داده شده که جایگاه آن هم صفر است و در Loop دوم که جایگاه آن یک است شهاب حسینی نمایش داده شده که جایگاه آن یک است و الی آخر. حال برنامه خود را اجرا می کنیم:

920503-29j-IMAGE 1.jpg

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

  1. import java.util.Arrays;
  2. public class AlphabeticOrder {
  3. public static void main(String[] args) {
  4. String[] castNames = new String[6];
  5. castNames[0] = "Zareyee Merila";
  6. castNames[1] = "Hosseini Shahab";
  7. castNames[2] = "Bayat Sareh";
  8. castNames[3] = "Peyman Moadi";
  9. castNames[4] = "Hatami Leila";
  10. castNames[5] = "Farhadi Sarina";
  11. Arrays.sort(castNames);
  12. for (int number = 0; number < 6; number++) {
  13. System.out.print(number + ": " + castNames[number] + "\n");
  14. }
  15. }
  16. }

در این کد پیش از شروع for کلاسی تحت عنوان Arrays را به برنامه فرا خوانده ایم و پس از آن یک متد تحت عنوان sort() را نوشته ایم. در این مرحله از آنجا که ما قصد داریم تا یک کلاس ایجاد شده در API زبان برنامه نویسی جاوا را فرا بخوانیم، پس نیاز است تا این کلاس را به برنامه خود Import کنیم. برای اینکار همانطور که در آموزش های پیشین توضیح داده شد یا عبارت import java.util.Arrays; را به صورت دستی وارد می کنیم و یا نشانگر موس خود را روی خط چین دور واژه Arrays نگه داشته سپس گزینه Import را می زنیم و یا کلید های Ctrl و Shift و O را به صورت هم زمان می فشاریم و عملیات import کلاس Arrays صورت خواهد پذیرفت. حال برای آنکه به این متد دستور دهیم که چه چیزی را sort کند داخل پرانتز نام Array خود را می نویسیم. حال پیش از آن که برنامه وارد Loop شود، این متد اجرا شده، اسامی به ترتیب حروف الفبا در خواهند آمد سپس اطلاعات وارد Loop خواهند شد. مجدد برنامه را اجرا کرده و خروجی برنامه به شکل زیر خواهد بود:

920503-29j-IMAGE 2.jpg

همانطور که ملاحظه می شود، نام های خانوادگی بر اساس حروف الفبا مرتب شده اند(در این لیست چیزی که تا حدودی غیر طبیعی است این است که ردیف خانم ساره بیات ردیف صفر است و این در حالی است که در هیچ تیتراژ پایانی فیلمی اولین جایگاه به صفر اختصاص داده نمی شود و اسامی از جایگاه یک شروع می شوند. به هر حال امید است مفهوم sort به خوبی منتقل شده باشد). در حقیقت در زبان برنامه نویسی جاوا عملکرد متد sort به این شکل است که در مورد حروف الفبا آن ها را از A تا Z مرتب می کند و در مورد اعداد آن ها را از بزرگ به کوچک sort می کند. در قسمت آتی با نحوه جمع کردن Element های یک Array با یکدیگر آشنا خواهیم شد.

تشکرات از این پست
دسترسی سریع به انجمن ها