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

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

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

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

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

۷۶ مطلب با موضوع «دانشگاه صنعتی شاهرود» ثبت شده است

۰۴
خرداد

تمرین پانزدهم: آلبوم عکس

برنامه ای بنویسید که یک آلبوم عکس ساده با ویژگی های زیر را پیاده سازی کند.
  • آلبوم عکس یک JFrame سفارشی است که آدرس تصاویر را در سازنده اش دریافت کرده (آرایه ای از رشته ها) و پنجره نشان داده شده در شکل را نمایش می دهد.
  • در بخش بالایی پنجره، پیش نمایش کوچکی (در ابعاد 50 در 50) از تصاویر (JLabel) نمایش داده می شود
  • با کلیک بر روی هر تصویر، اندازه واقعی تصویر (JLabel) در بخش زیرین نمایش داده می شود
  • بخش زیرین خود در یک JScrollPane قرار می گیرد تا در صورت بزرگ بودن بیش از حد تصویر، قابلیت اسکرول فراهم باشد.

       

مهلت ارسال تمرین: جمعه، 9 خرداد 93، ساعت 24

  

روش خواندن تصویر، تغییر اندازه آن به مقدار دلخواه و تبدیل آن به Icon در ادامه نشان داده شده است.

// read an image

BufferedImage largeImage= ImageIO.read(new File("d:\\1.png"));

// convert image to a small image with 50X50 size

Image smallImage= largeImage.getScaledInstance(50, 50, Image.SCALE_SMOOTH);

// convert small image to icon

ImageIcon icon= new ImageIcon(smallImage);

  • بیگلری
۰۱
خرداد

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

واسط کاربری زیر را طراحی کنید.
  • همه کدهای مربوط به این پنجره باید در یک کلاس پیاده سازی شده باشد
  • از کلاس JFrame به ارث برده و آن را به صورت نشان داده شده در تصویر طراحی کنید.
  • با علامت زدن هر CheckBox، همه کنترل های مربوط به آن، فعال/غیرفعال خواهند شد.

       

نکته: تصویر زیر، طرح دقیق موردنظر است. پنجره شما باید دقیقا شبیه به همین تصویر شود.

مهلت ارسال تمرین: یکشنبه، 4 خرداد 93، ساعت 12

اضافه کردن حاشیه (Border) به یک JPanel. کد زیر یک حاشیه خالی که از هر طرف دارای عرض 10 می باشد، به پنل اضافه خواهد کرد.

panel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

اضافه کردن حاشیه رنگی به یک JPanel:

panel.setBorder(BorderFactory.createLineBorder(Color.RED));

نکته ای که می تونه باعث ساده سازی این پروژه بشه:

هر کنترل دارای یک تابع به نام getParent هست که دربرگیرنده پدرش رو برمی گردونه. بنابراین در این تمرین می تونید به این روش، پدر checkbox رو بدست بیارید که در واقع همون JPanel ای هست که chekbox درش قرار داره. برای مثال، در رویداد مربوط به checkbox می نویسید:

JCheckBox check= (JCheckBox) e.getSource();

JPanel panel1= (JPanel) check.getParent();

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

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

واسط کاربری زیر را طراحی کنید.
  • همه کدهای مربوط به این پنجره باید در یک کلاس پیاده سازی شده باشد
  • از کلاس 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

  • بیگلری