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

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

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

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

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

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

۰۵
فروردين

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

اگر اشکالی در برنامه دیدید، حتما بهم اطلاع بدید.

و اگر سوالی داشتید، در بخش نظرات بپرسید و یا ایمیل بزنید.

 راه حل تمرین پنجم

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

برنامه ای بنویسید که یک خانواده را پیاده سازی کند.

کلاس خانواده (Family) دارای ساختار زیر است:

  • حالت ها:
  • پدر از نوع انسان
  • مادر از نوع انسان
  • آرایه ای از فرزندها ([]Human) با طول ثابت 100
  • درجه ی خوشبختی/رضایت: عددی صحیح بین 1 تا 10
  • سطح درآمد: عددی صحیح بین 0 تا 100 میلیون
  • رفتارها:
  • setter و getter برای تنظیم و دریافت پدر، مادر، درجه ی رضایت و سطح درآمد
  • تابع print برای چاپ اطلاعات خانواده
  • تابع addChild: مشخصات فرزند را دریافت کرده و آن را به آرایه اضافه می کند
  • تابع removeChild: اندیس فرزند را دریافت کرده و آن را از آرایه حذف می کند
  • تابع printHappinessLevel: یکی از سه مقدار "Happy" (مقادیر 4 تا 7)،(مقادیر 1 تا 3) "Not Happy" و "HappyFull" (مقادیر 8 تا 10) را چاپ می کند.
  • تابع printIncomeLevel: یکی از چهار مقدار "Poor"،(مقادیر بین 1 میلیون تا 3 میلیون) "Average" (مقادیر کمتر از 1 میلیون)،(مقادیر بین 3 میلیون تا 10 میلیون) "Good" و "Very Good" (مقادیر بیشتر از 10 میلیون) را چاپ می کند.

کلاس انسان (Human) دارای ساختار زیر است:

  • حالت ها:
  • شماره ملی: رشته ای با طول دقیقا 10 (نه کمتر و نه بیشتر)
  • نام و نام خانوادگی
  • جنسیت: عددی صحیح بین 1 و 2 (1: زن، 2: مرد)
  • سن: عددی صحیح بین 0 تا 100
  • رفتارها:
  • تنها یک سازنده دارد که کد ملی را به عنوان ورودی دریافت می کند
  • setter و getter برای همه حالت ها
  • تابع print برای چاپ مشخصات انسان

منوی برنامه:

  • برنامه دارای یک منو با گزینه های زیر است:
  • 1: ایجاد یک خانواده جدید (در هر زمان تنها یک خانواده وجود دارد: در نتیجه ایجاد خانواده جدید، خانواده ی قبلی را از بین خواهد برد)
    • برای ایجاد خانواده اطلاعات زیر دریافت می شود
    • 1-1: درجه ی رضایت
    • 1-2: میزان درآمد
  • 2: تعیین پدر خانواده (پدر قبلی از بین خواهد رفت)
    • برای تعریف پدر اطلاعات زیر دریافت می شود:
    • 2-1: شماره ملی
    • 2-2: نام و نام خانوادگی پدر
    • 2-3: سن پدر
    • جنسیت پدر به صورت خودکار مقداردهی می شود (از ورودی دریافت نمی شود)
  • 3: تعیین مادر خانواده (مادر قبلی از بین خواهد رفت)
    • برای تعریف مادر اطلاعات زیر دریافت می شود:
    • 2-1: شماره ملی
    • 2-2: نام و نام خانوادگی مادر
    • 2-3: سن مادر
    • جنسیت مادر به صورت خودکار مقداردهی می شود (از ورودی دریافت نمی شود)
  • 4: اضافه کردن فرزند به خانواده
    • برای ایجاد یک فرزند اطلاعات زیر دریافت می شود:
    • 4-1: شماره ملی فرزند
    • 4-2: نام و نام خانوادگی فرزند
    • 4-3: سن فرزند
    • 4-4: جنسیت فرزند
  • 5: حذف فرزند ار خانواده
    • شماره ملی فرزند دریافت شده و در صورت وجود حذف می شود
  • 6: چاپ اطلاعات خانواده (شامل اعضای خانواده، درجه ی رضایت و سطح درآمد)
  • 7: خروج از برنامه

نکته ها:

  • همه توابع باید معتبر بودن ورودی را بررسی کنند. برای مثال تابع removeChild ابتدا بررسی می کند که آیا فرزندی با اندیس ورودی برای حذف کردن وجود دارد؟ و یا تابع setter مربوط به درجه ی رضایت خانواده، ابتدا بررسی می کند که مقدار ورودی در بازه 1 تا 10 قرار دارد یا خیر.
  • دو تابع printHappinessLevel و printIncomeLevel خصوصی هستند و تنها توسط تابع print مورد استفاده قرار می گیرند.
  • استفاده از ابزارهای خوانده نشده موجب کاهش نمره ی تمرین می گردد.
  • استفاده از توابع اضافی مجاز است.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز شنبه، 29 اسفند، ساعت 24 هست.
  • فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین پنجم

  • بیگلری
۱۶
اسفند

جدول مندلیف رو در خروجی چاپ کنید. 

نکته ها:

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

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز جمعه 21 اسفند، ساعت 24 می باشد. تمرین هایی که با یک دقیقه تاخیر نسبت به این زمان ارسال شوند، مورد قبول نخواهند بود.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.

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

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

کلاس دانشجو (Student) دارای ساختار زیر است:

  • حالت ها:
  • نام
  • آرایه ای از درس ها ([]Course)
  • رفتارها:
  • setter و getter مربوط به نام
  • محاسبه معدل (calculateAverage): یک مقدار float برمی گرداند که معدل دانشجو است
  • چاپ مشخصات درس ها (printCourses)
  • سایر رفتارهایی که برای ست کردن درس های یک دانشجو لازم است!

کلاس درس (Course) دارای ساختار زیر است:

  • حالت ها:
  • نام
  • تعداد واحد
  • نمره
  • رفتارها:
  • setter و getter مربوط به نام، تعداد واحد و نمره
  • یک سازنده بدون پارامتر
  • یک سازنده با سه پارامتر نام، تعداد واحد و نمره
  • چاپ مشخصات (print) شامل نام، تعداد واحد و نمره

نکته ها:

  • سایر بخش های تمرین دقیقا مشابه تمرین دوم است.
  • از آنجا که شاید هنوز کار با کلاس ها برایتان کمی دشوار باشد، استفاده از فیلدهای public هم مجاز است.
  • انجام ناقص این تمرین هم حتی در درک بهتر مفاهیمی که در ادامه یاد خواهیم گرفت، بسیار مفید خواهد بود.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز یکشنبه 16 اسفند، ساعت 1 می باشد. تمرین هایی که با یک دقیقه تاخیر نسبت به این زمان ارسال شوند، مورد قبول نخواهند بود.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین اول
  • عنوان فایل: YourName.java
  • مثال: Ali Bahrami.java

 

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

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

ورودی

ورودی برنامه دقیقا بر اساس ساختار توضیح داده شده در زیر است.

  • در ابتدا یک عدد صحیح n وارد می شود که بیانگر تعداد دانشجوهای کلاس است. سپس به ازای هر دانشجو، اطلاعات زیر وارد می گردد.
  • ابتدا نام دانشجو و سپس یک عدد صحیح m که تعداد دروس دانشجو است. آنگاه به تعداد m، اطلاعات درس های دانشجو وارد می شود.
  • هر درس شامل نام (رشته)، واحد (عدد صحیح بین 1 تا 4) و نمره (عدد اعشاری بین 0 تا 20) است.

خروجی

برنامه برای همه دانشجوها معدل را محاسبه کرده و فهرست دانشجوها و معدل هر یک را در خروجی چاپ می کند (به همان ترتیبی که در ورودی وارد شده اند).

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

نکته ها:

  • برای نگهداری اطلاعات می توانید از هر تعداد آرایه که نیاز است استفاده کنید.
  • طول آرایه ها به صورت ثابت تعریف نگردد! و بسته به n و m وارد شده، تعیین شود.
  • استفاده از Scanner و Formatter برای خواندن از ورودی و نوشتن در خروجی اجباری است.
  • برای چاپ کردن نام در خروجی از طول میدان 20 (چپ چین) استفاده کنید.
  • استفاده از ابزارهای خوانده نشده موجب کاهش نمره ی تمرین می گردد.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز یکشنبه، 9 اسفند، قبل از شروع کلاس (ساعت 10) هست.
  • فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین دوم

مثال:

  • ورودی:

3 --> (n)

Bahrami 2 --> (m)

Riazi 3 10.5

Fizik 3 9.25

Emadi 3

Riazi 3 12.5

Fizik 3 8.75

Programming 4 20

Mohammadi 1

Riazi 3 14

  • خروجی:

Bahrami             9.875

Emadi                14.375

Mohammadi        14

Top Student: Emadi

Riazi 3 12.5

Fizik 3 8.75

Programming 4 20

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

سه تابع با نام های readInt، readFloat و readString بنویسید.

  • readInt : یک عدد صحیح از ورودی خوانده و برمی گرداند. در صورت عدم وجود عدد، 0 برگردانده می شود.
  • readFloat : یک عدد اعشاری از ورودی خوانده و برمی گرداند. در صورت عدم وجود عدد اعشاری، 0 برگردانده می شود.
  • readString : یک رشته از ورودی خوانده و برمی گرداند. در صورت عدم وجود رشته، رشته تهی ("") برگردانده می شود.

نکته ها:

  • تابع readLine توسط بنده به عنوان نمونه پیاده سازی شده است.
  • کاراکترهای جداکننده: فاصله، تب و کاراکتر خط جدید
  • کد زیر را کپی کرده و توابع مربوطه را پیاده سازی کنید.

ارسال تمرین:

  • فرصت ارسال این تمرین تا روز سه شنبه، 4 اسفند، قبل از شروع کلاس (ساعت 10) هست.
  • فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین اول

مثال:

  • ورودی: 
  • 10 123.12 mohammad other characters in this line
  • خروجی:

Integer: 10

Float: 123.12

String: mohammad

Line:  other characters in this line

  • ورودی: 
  • 110 1223.132mohsen test
  • خروجی: 
  • Integer: 10
  • Float: 123.12
  • String: mohsen
  • Line:  test
  • ورودی:
  • 27
  • 98.0maryam100
  • last line
  • خروجی:

Integer: 27

Float: 98.0

String: maryam100

Line: last line

public class HomeWork1 {

public static void main(String args[]) throws IOException {
int num1= readInt();
float num2= readFloat();
String num3= readString();
String line= readLine();

System.out.println("Integer: " + num1);
System.out.println("Float: " + num2);
System.out.println("String: " + num3);
System.out.println("Line: " + line);
}

public static int readInt() throws IOException {
...
}

public static float readFloat() throws IOException {
...
}

public static String readString() throws IOException {
...
}

public static String readLine() throws IOException {
String line= "";
int input= System.in.read();
while(input!=-1 && input!='\n') { // -1: end of input \n: end of line
line += (char) input;
input= System.in.read();
}
return line;
}
}
  • بیگلری
۱۸
بهمن

 دریافت JDK8 (نسخه 32بیتی) با حجم 183 مگابایت

 دریافت JDK8 (نسخه 64بیتی) با حجم 188 مگابایت

 دریافت Netbeans 8.1 با حجم 200 مگابایت

 دریافت IntelliJ IDEA با حجم 371 مگابایت

 دریافت مرجع درس: Really Big Index با حجم 51 مگابایت

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

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

  • یک سری مشکلات و غلط های تایپی اسلایدهای اولیه اصلاح شده است
  • یک سری موارد جزئی هم اضافه/کم شده است
  • برای دریافت پسورد، ایمیل بزنید.

 مجموعه کامل اسلایدهای زبان برنامه نویسی جاوا (حجم: 3 مگابایت)

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

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

برنامه ای بنویسید که یک آلبوم عکس ساده با ویژگی های زیر را پیاده سازی کند.
  • آلبوم عکس یک 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();

  • بیگلری