اخبار و اطلاعات مربوط به دروس

در این وبلاگ مباحث مرتبط با دروس تدریسی توسط اینجانب پیگیری می شود.

اخبار و اطلاعات مربوط به دروس

در این وبلاگ مباحث مرتبط با دروس تدریسی توسط اینجانب پیگیری می شود.

هدیه ای از طرف دانشجویان
Mbt925.ir

۳۴ مطلب با موضوع «دانشگاه صنعتی شاهرود :: برنامه نویسی پیشرفته» ثبت شده است

۲۸
ارديبهشت

تمرین سیزدهم: طراحی واسط کاربری

واسط کاربری زیر را طراحی کنید.
  • همه کدهای مربوط به این پنجره باید در یک کلاس پیاده سازی شده باشد
  • از کلاس JFrame به ارث برده و آن را به صورت نشان داده شده در تصویر طراحی کنید.

       

نکته: تصویر زیر تنها یک طرح کلی است. تفاوت در جزئیات اهمیتی ندارد. برای مثال یک نمونه طراحی واقعی در تصویر دوم نمایش داده شده است.

مهلت ارسال تمرین: شنبه، 3 خرداد 93، ساعت 8

  • بیگلری
۲۱
ارديبهشت

تمرین دوازدهم: ضرب ماتریس ها

برنامه ای بنویسید که ضرب ماتریس ها را به صورت معمولی و موازی پیاده سازی کند.
  • هر خانه از ماتریس هدف توسط یک نخ مجزا محاسبه گردد (ضرب هر سطر در هر ستون توسط یک نخ صورت می گیرد).
  • ابعاد ماتریس و خود ماتریس ها از فایل خوانده شود (برای آزمایش برنامه، ابعاد 3 در 3 و 30 در 30 را تست کنید).
  • نتیجه را در فایل خروجی بنویسید.
  • زمان انجام ضرب ماتریس ها به صورت موازی و غیرموازی را بدست آورده و مقایسه نمایید. نتیجه را تحلیل کنید.

تذکر: برای محاسبه زمان اجرای موازی، باید از اتمام همه نخ ها اطمینان حاصل کنید. از join استفاده نکنید.

مهلت ارسال تمرینشنبه، 27 اردیبهشت 93، ساعت 24

۱۶
ارديبهشت

تمرین یازدهم: بازی با نخ ها

برنامه ای بنویسید که یک آرایه تصادفی به طول صدهزار ایجاد کرده و به صورت زیر عمل کند.
  • یک کلاس نخ ایجاد کنید که در سازنده اش آرایه را تحویل بگیرد و در تابع run مجموع عناصر آرایه را محاسبه کند. در پایان تابع، نام نخ و مجموع محاسبه شده را چاپ نماید
  • در تابع main، آرایه تصادفی ایجاد و پر می شود
  • سپس در یک حلقه (ده تایی)، ده نخ ایجاد شده و آرایه تصادفی از طریق سازنده، برای آنها ارسال می شود.
  • تابع main زمان اجرای هر نخ را محاسبه کرده و پس از پایان اجرای آن نخ، در خروجی چاپ می نماید.
  • در پایان اجرای همه نخ ها، مجموع زمان محاسبه شده برای همه آنها چاپ می گردد

مهلت ارسال تمرینسه شنبه، 23 اردیبهشت 93، ساعت 24

نمونه خروجی (برای سه نخ):

Thread-0: 496605

Time of Thread-0: 2ms

Thread-1: 496605

Time of Thread-1: 1ms

Thread-2: 496605

Time of Thread-2: 1ms

Total time: 5ms

  • بیگلری
۱۲
ارديبهشت

تمرین دهم: مهمانی آسمانی

در یک مهمانی آسمانی، انواع میوه ها از آسمان به زمین می بارد. علی و دوستانش به محض دیدن این صحنه، خود را به محدوده موردنظر رسانده و شروع به جمع آوری میوه ها می کنند. شما باید برنامه ای بنویسید که تعداد میوه های جمع آوری شده توسط هر شخص را شمرده و در نهایت، اشخاص را به ترتیب صعودی اسم هایشان چاپ کند.

ورودی:
  • در خط اول از ورودی، تعداد خطوط (n) آورده می شود
  • سپس در n خط بعدی، در هر خط دو رشته آورده می شود
  1. رشته اول: اسم شخص
  2. رشته دوم: نام میوه
خروجی:
  • اشخاص به ترتیب صعودی اسم ها در خروجی چاپ می شوند
  • در هر خط از خروجی:   نام شخص، تعداد کل میوه ها جمع آورده شده، نام هر میوه (به ترتیب صعودی)، تعداد آن میوه
  
نکات:
  • هیچ دو شخصی دارای اسم یکسان نیستند
  • تعداد و نام دوستان علی مشخص نیست!
  • تعداد میوه ها هم مشخص نیست!
  • برنامه نباید به بزرگی و کوچکی حروف حساس باشد
  • تنها مجاز به استفاده از Collection ها هستید

   

مهلت ارسال تمرین: شنبه، 20 اردیبهشت 93، ساعت 16

نمونه ورودی:

10

ali orange

Ali Orange

Mohammad banana

Sina Watermelon

Tina Apple

Sina Apple

Ali Watermelon

Mohammad BaNana

Sina Orange

ALI Lemon

نمونه خروجی:

ali 4 [lemon 1] [orange 2] [watermelon 1] 

mohammad 2 [banana 2]

sina 3 [apple 1] [orange 1] [watermelon 1]

tina 1 [apple 1]

  • بیگلری
۲۷
فروردين

صورت مسئله پروژه پایانی رو می تونید در ادامه دریافت بفرمائید.

 پروژه پایانی

  • بیگلری
۲۶
فروردين

تمرین نهم: بازی جدید

یک بازی جدید اختراع شده است. این بازی از تعدادی خانه بر روی یک مستطیل n در m تشکیل شده است.
قوانین بازی:
  • بازی 4 نفره است
  • خانه مربوط به هر بازیکن با یک رنگ مشخص شده است
  • در ابتدای بازی بازیکن سبز، روی خانه قرمز قرار دارد، بازیکن قرمز، روی خانه زرد، بازیکن زرد، روی خانه آبی و بازیکن آبی روی سبز.
  • هر بازیکنی که روی خانه همرنگ خود بایستد، برنده شده و از بازی کنار می رود.
  • رتبه بازیکن ها به ترتیب برنده شدنشان بستگی دارد
  • هر بازیکن یک تاس می اندازد
  • بازیکن سبز، به اندازه مقداری که روی تاس بیاید، به جلو حرکت می کند
  • بازیکن قرمز، اگر مقدار تاس بین 1 تا 3 باشد، به همان اندازه و اگر بین 4 تا 6 باشد، به اندازه نصف آن حرکت می کند
  • بازیکن زرد: می تواند هم به جلو و هم به عقب حرکت کند (هر کدام که به خانه زرد نزدیک تر است)
  • بازیکن آبی: مقدار تاس را از عدد 6 کم کرده و به مقدار باقیمانده حرکت می کند.
برنامه ای بنویسید که این بازی را به صورت زیر پیاده سازی کند کلاس player دارای فیلدها/توابع زیر است
  • فیلد خانه: اندیس خانه ای که روی آن قرار دارد
  • فیلد هدف: اندیس خانه ی هدف
  • فیلد w و h: ابعاد صفحه بازی
  • تابع move(int dice): مقدار تاس را گرفته و حرکت می کند
  • تابع isWinner: اگر اندیس خانه ای که روی آن قرار دارد و اندیس خانه هدف برابر باشند، true برمی گرداند
نکات:
  • کلاس player تابع move را خالی رها می کند
  • هر کلاس این تابع را برای خود دوباره نویسی می کند
کلاس Board وظیفه اجرای بازی را بر عهده دارد و دارای فیلدها و توابع زیر است:
  • سازنده این کلاس (m  و n ) را دریافت می کند.
  • یک آرایه چهارتایی از نوع Player که در خانه اول آن، یک بازیکن سبز، در خانه دوم، بازیکن قرمز، خانه سوم، بازیکن زرد و در خانه چهارم بازیکن آبی قرار می دهد
  • وظیفه انداختن تاس (تولید یک عدد تصادفی بین 1 تا 6) به عهده این کلاس است
  • تابع play: بازی می کند. با شروع از بازیکن سبز، تاس انداخته و از او می خواهد که حرکت کند (تابع move او را صدا می زند)
  • این تابع بعد از هر حرکت، تابع isWinner را فراخوانی می کند. در صورتی که بازیکن مربوطه برنده شده باشد، او را از بازی کنار می گذارد.
  • تابع printWinners: چهار بازیکن را به ترتیب برنده شدن در خروجی چاپ می کند

مهلت ارسال تمرینشنبه، 6 اردیبهشت 93، ساعت 24

تولید یک عدد تصادفی بین 0 و 10:

Random rnd= new Random();

int aRandomNumber= rnd.nextInt(10);

System.out.println(aRandomNumber);

۲۰
فروردين

تمرین هشتم: ارتقا کلاس دانشگاه

به کلاس دانشگاه پیاده سازی شده در تمرین ششم موارد زیر را بیفزایید.

  • شماره ترم هر دانشجو از نوع یک متغیر شمارشی باشد که فقط مقادیر TERM1 تا TERM9 را بپذیرد
  • در کلاس دانشگاه، یک کلاس داخلی بنویسید که دارای دو تابع زیر باشد:
  1. تابع filter: این تابع یکی ورودی دارد که دارای یکی از سه مقدار GOOD، AVERAGE و BAD است. در صورتی که مقدار GOOD را دریافت کرد، پنج دانشجویی که دارای بالاترین معدل هستند، در خروجی چاپ می شوند. با دریافت مقدار BAD، پنج دانشجویی که دارای کمترین معدل هستند و برای AVERAGE، پنج دانشجویی که دقیقا در میانه کلاس قرار دارند، چاپ می شوند.
  2. تابع print: این تابع نیز یک ورودی می گیرد که ترم دانشجو است (از نوع شمارشی) و همه دانشجویانی که در آن ترم قرار دارند را چاپ می کند
  • نکات:
  • منظور از چاپ مشخصات دانشجو، نام، نام خانوادگی، شماره دانشجویی، شماره ترم جاری و معدل است.
  • این پروژه دارای دو نوع شمارشی (enum) است.
  • کلاس دانشگاه دارای یک کلاس داخلی public به نام Printer است.
  • از کلاس Printer در تابع main یک نمونه ایجاد کنید و دو تابع filter و print را برای مقادیر مختلف، فراخوانی کنید.

مهلت ارسال تمرینشنبه، 23 فروردین 93، ساعت 24

۲۱
اسفند

تمرین هفتم: جمع عناصر آرایه

این تمرین خیلی ساده هست و بیشتر از 10 دقیقه وقتتون رو نخواهد گرفت.

کلاسی بنویسید که عناصر آرایه ورودی را جمع کرده و نتیجه را بازگرداند. آرایه ورودی می تواند یکی از انواع زیر را داشته باشد:
  • int
  • float
  • double
  • String: اگر آرایه ورودی از نوع رشته باشد، خروجی تابع، حاصل اتصال همه خانه های آرایه خواهد بود
نکات:
  • برای ورودی آرایه ها از نوع varargs (آرایه با طول متغیر) استفاده کنید
  • نام همه توابع جمع کننده sum بوده و به صورت سراسری و ایستا تعریف می شود

مهلت ارسال تمرینشنبه، 16 فروردین 93، ساعت 16

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

int[] intArr= {1,2,3,4,5};

float[] floatArr= {1.2f,2.2f,3.2f,4.2f,5.2f};

double[] doubleArr= {1.4,2.4,3.4,4.4,5.4};

String[] strArr= {"A", "B", "CD", "EF", "G"};

System.out.printf("Sum of int array: %d%n", ArrayAnalyzer.sum(intArr));

System.out.printf("Sum of float array: %f%n", ArrayAnalyzer.sum(floatArr));

System.out.printf("Sum of double array: %f%n", ArrayAnalyzer.sum(doubleArr));

System.out.printf("Sum of string array: %s%n", ArrayAnalyzer.sum(strArr));

خروجی:

Sum of int array: 15

Sum of float array: 16.000000

Sum of double array: 17.000000

Sum of string array: ABCDEFG

  • بیگلری
۲۰
اسفند

تمرین ششم: کلاس دانشگاه

برنامه ای بنویسید که یک دانشگاه با مشخصات زیر را پیاده سازی کند. این دانشگاه دارای مجموعه ای از دانشجوها است.

هر دانشجو یک کلاس با مشخصات زیر است:

  • فیلدها:
  • نام، نام خانوادگی، شماره دانشجویی، شماره ترم جاری، معدل (سطح دسترسی: private)
  • همه فیلدها فقط توابع setter و getter قابل دستیابی هستند. غیر از فیلد شماره دانشجویی که توسط سازنده تنظیم می شود
  • توابع:
  • print: مشخصات کامل دانشجو را چاپ می کند
  • setTerm: تنظیم ترم جاری
  • setAverage: تنظیم معدل
  • سازنده ها:
  • سازنده پیشفرض ندارد!  (همه فیلدها توسط یک بلوک مقداردهی اولیه، به مقادیر پیشفرض (0 برای اعداد و "" برای رشته ها) مقداردهی می شوند)
  • سازنده با یک پارامتر ورودی شماره دانشجویی
  • سازنده با سه پارامتر ورودی: شماره دانشجویی، نام و نام خانوادگی (این سازنده از سازنده قبلی نیز استفاده می کند)

کلاس دانشگاه دارای مشخصات زیر است:

  • فیلدها:
  • آرایه ای از دانشجوها
  • فیلد ایستا تعداد دانشجوها: با اضافه شدن هر دانشجو، مقدار این فیلد افزایش می یابد
  • توابع:
  • اضافه کردن دانشجو: مشخصات یک دانشجو را دریافت کرده و آن را به آرایه اضافه می کند
  • حذف کردن دانشجو: نام خانوادگی دانشجویی را دریافت کرده و دانشجو را حذف می کند
  • جستجوی دانشجو: نام خانوادگی را دریافت کرده و مشخصات کامل آن را چاپ می کند
  • جستجوی دانشجو: یک معدل دریافت کرده و مشخصات کامل همه دانشجوهایی که معادلشان از معدل دریافت شده بیشتر است را چاپ می کند
  • چاپ کردن لیست دانشجوها: مشخصات همه دانشجوهای موجود در آرایه را چاپ می کند

نکات:

  • شماره دانشجویی به صورت خودکار به دانشجوها نسبت داده می شود. شماره دانشجویی اولین دانشجو 1، دانشجوی دوم 2 و ...
  • اگر دانشجویی حذف شود، شماره دانشجویی آن دیگر مورد استفاده قرار نمی گیرد (به مثال دقت کنید)

مهلت ارسال تمرینشنبه، 16 فروردین 93، ساعت 24

اسم توابع را طوری انتخاب کنید که کد زیر بدون مشکل اجرا شود. کد زیر را در تابع main نوشته و اجرا کنید تا از صحت عملکرد برنامه مطمئن شوید.

University university= new University();

university.addStudent("Akram", "Imani", 3, 17.65);

university.addStudent("Sina", "Emadi", 4, 16.34);

university.addStudent("Mina", "Salimi", 2, 18.15);

university.removeStudent("Salimi");

university.searchStudent("Salimi");

university.addStudent("Mina", "Salimi", 2, 18.15);

university.searchStudent("Emadi");

university.searchStudent(17.64);

university.printAll();

خروجی صحیح:

Akram Imani with number 1 Added Successfully

Sina Emadi with number 2 Added Successfully

Mina Salimi with number 3 Added Successfully

Mina Salimi Removed Successfully

There is no Student with LastName Salimi

Mina Salimi with number 4 Added Successfully

2 Sina Emadi, Term:4, Average:16.34

1 Akram Imani, Term:3, Average:17.65

4 Mina Salimi, Term:2, Average:18.15

-------- List of All Students --------

1 Akram Imani, Term:3, Average:17.65

2 Sina Emadi, Term:4, Average:16.34

4 Mina Salimi, Term:2, Average:18.15

۱۳
اسفند

تمرین پنجم: کلاس مستطیل

در این برنامه، قصد داریم یک کلاس مستطیل پیاده سازی کنیم.

این کلاس دارای حالت های زیر است:

  • طول
  • عرض
  • مبدا (x و y)

این کلاس دارای رفتارهای زیر است:

  • چاپ مشخصات مستطیل (مبدا، طول و عرض)
  • محاسبه محیط و برگرداندن آن
  • محاسبه مساحت و برگرداندن آن

این کلاس دارای سه سازنده زیر است:

  • سازنده بدون آرگومان: قرار دادن مقدار صفر در فیلدها
  • سازنده با دو آرگومان x و y: دو مقدار دریافت شده در دو فیلد x و y قرار داده شوند
  • سازنده با چهار آرگومان طول و عرض و x و y: چهار مقدار دریافت شده در چهار فیلد کلاس قرار داده شوند

در تابع main، چند نمونه شیء از کلاس مستطیل با مبدا و طول و عرض متفاوت ایجاد کرده و مشخصات، محیط و مساحت هر یک را چاپ کنید.

مهلت ارسال تمرینشنبه، 17 اسفند 92، ساعت 16

  • بیگلری