برنامه نویسی پیشرفته - تمرین دوم

:: برنامه نویسی پیشرفته - تمرین دوم

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

ورودی

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

  • در ابتدا یک عدد صحیح 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

منبع : اخبار و اطلاعات مربوط به دروسبرنامه نویسی پیشرفته - تمرین دوم
برچسب ها : تمرین ,برنامه ,خروجی ,ورودی ,riazi ,استفاده ,برنامه نویسی ,ارسال تمرین ,نویسی پیشرفته، ,فرصت ارسال ,استفاده کنید ,برنامه نویسی پیشرفته،

برنامه نویسی پیشرفته - تمرین چهارم

:: برنامه نویسی پیشرفته - تمرین چهارم

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

نکته ها:

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

ارسال تمرین:

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

منبع : اخبار و اطلاعات مربوط به دروسبرنامه نویسی پیشرفته - تمرین چهارم
برچسب ها : تمرین ,ارسال تمرین

مادریار

:: مادریار

بعد از تولد دخترم، روی یک نرم افزار برای کمک به مادرها کار می کردم که خداروشکر به اتمام رسید.

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

  • اگر چیزی برای یادگیری وجود داره استفاده کنید.
  • اگر مشکلی وجود داره، لطفا بهم گزارش بدید.
  • اگر نظر یا پیشنهادی دارید هم خوشحال میشم بشنوم.

 دانلود مادریار از کافه بازار

 

منبع : اخبار و اطلاعات مربوط به دروسمادریار
برچسب ها :

برنامه نویسی پیشرفته - تمرین ششم

:: برنامه نویسی پیشرفته - تمرین ششم

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

در این بازی چهار نوع صفحه بازی وجود دارد که همگی دارای مشخصات زیر هستند:

  • یک آرایه یک بعدی از خانه ها که به ترتیب از 1 تا طول صفحه بازی شماره گذاری شده اند. بعضی از صفحات دارای طول 15 و بعضی دارای طول 16 می باشند.
  • هر صفحه بازی دارای یک موقعیت جاری است که بصورت پیشفرض برابر با خانه 1 می باشد.
  • هر صفحه بازی دارای سه تابع moveLeft، moveRight و printCurrentPosition است.
  • هر صفحه بازی دارای یک طول گام است. طول گام مشخص می کند که اندازه حرکت به راست/چپ چقدر باشد (در شکل زیر طول گام ها قابل مشاهده اند)
  • توابع moveRight و moveLeft بر اساس شکل صفحه بازی حرکت می کنند که در تصویر مشخص شده است
  • تابع printCurrentPosition برای هر صفحه بازی اطلاعات متفاوتی را چاپ می کند:
    • صفحه بازی مستقیم: شماره خانه جاری
    • صفحه بازی چرخشی: شماره خانه جاری و یکی از مقادیر بالا، پایین، راست و چپ (برای خانه هایی که در تقاطع قرار دارند، فرقی نمی کند که بالا/پایین چاپ شود یا چپ/راست)
    • صفحه بازی رفت و برگشتی: شماره خانه جاری و شماره سطر (1، 2 یا 3)
    • صفحه بازی زیگ زاگ: شماره خانه جاری

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

  • آرایه ای از 4 صفحه بازی از 4 نوع موجود
  • یک عدد تصادفی بین 1 تا 15 در شروع بازی تولید می شود. هر صفحه بازی که زودتر به این عدد برسد برنده است و بازی متوقف می شود.
  • عدد تصادفی تولید شده (هدف) چاپ می شود.
  • یک حلقه وظیفه انجام بازی را به عهده دارد. در هر دور از حلقه عملیات زیر انجام می شود:
    • یک عدد تصادفی بین 1 و 2 تولید می شود (1 یا 2).
    • در صورتی که عدد تصادفی 1 باشد، صفحه بازی جاری به سمت راست حرکت می کند و در صورتی که 2 باشد، به سمت چپ
    • موقعیت جاری صفحه بازی چاپ می شود (printCurrentPosition)
    • در صورتی که موقعیت جاری صفحه بازی برابر با عدد تصادفی تولید شده (قبل از حلقه) بود، صفحه جاری برنده است. پیغام برنده شدن این صفحه چاپ شده و از حلقه خارج می شویم
    • در غیر اینصورت، دور بعدی حلقه اجرا می شود

نکته ها:

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

ارسال تمرین:

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

روش تولید عدد تصادفی بین 1 و 10:

Random rnd= new Random();

int aRandomNumber= rnd.nextInt(10)+1;

System.out.println(aRandomNumber);



منبع : اخبار و اطلاعات مربوط به دروسبرنامه نویسی پیشرفته - تمرین ششم
برچسب ها : بازی ,صفحه ,جاری ,تمرین ,دارای ,خانه ,صفحه بازی ,خانه جاری ,شماره خانه ,ارسال تمرین ,برنامه نویسی ,برنامه نویسی پیشرفته،

برنامه نویسی پیشرفته - تمرین اول

:: برنامه نویسی پیشرفته - تمرین اول

سه تابع با نام های 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;
}
}
منبع : اخبار و اطلاعات مربوط به دروسبرنامه نویسی پیشرفته - تمرین اول
برچسب ها : line ,string ,تمرین ,system ,ورودی ,input ,throws ioexception ,public static ,ورودی خوانده ,برنامه نویسی ,برمی گرداند ,public static string ,line خروجی integer ,برنامه نویسی پیشرفته،

برنامه نویسی پیشرفته - تمرین سوم

:: برنامه نویسی پیشرفته - تمرین سوم

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

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

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

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

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

نکته ها:

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

ارسال تمرین:

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

 

منبع : اخبار و اطلاعات مربوط به دروسبرنامه نویسی پیشرفته - تمرین سوم
برچسب ها : تمرین ,واحد ,نمره ,نویسی ,کلاس ,برنامه ,تعداد واحد ,برنامه نویسی ,نام، تعداد ,نویسی پیشرفته، ,getter مربوط ,برنامه نویسی پیشرفته،

برنامه نویسی پیشرفته - تمرین پنجم

:: برنامه نویسی پیشرفته - تمرین پنجم

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

کلاس خانواده (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 هست.
  • فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
  • نحوه ارسال تمرین ها در این پست توضیح داده شده.
  • عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
  • مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین پنجم

منبع : اخبار و اطلاعات مربوط به دروسبرنامه نویسی پیشرفته - تمرین پنجم
برچسب ها : خانواده ,دریافت ,فرزند ,تابع ,تمرین ,مقادیر ,عددی صحیح ,ورودی دریافت ,ارسال تمرین ,برنامه نویسی ,تابع print ,برنامه نویسی پیشرفته، ,صورت خودکار مق