c90fall-project1.pdf

‫به‌نام‌خدا‌‬
‫برنامهنويسی‌به‌زبان‌‪C/C++‬‬
‫‌‬
‫پروژهی‌درس‌مبانی‌‬
‫‌‬
‫شمارهي‌‌‪1‬‬
‫‌‬
‫شبي‌هسازي‌ديناميک‌ذرات‬
‫مدرس‪‌:‬‬
‫دانشپژوه‌‬
‫‌‬
‫مهندس‌‬
‫تنظيم‌توسط‪‌:‬مسعود‌خاري‬
‫مسال‌پاييز‌‪9911-19‬‬
‫ني ‌‬
‫مسال‌پاييز‌‪‌1911-11‬‬
‫ني ‌‬
‫شمارهي‌‪‌1‬‬
‫‌‬
‫ي‌نهايي‌درس‌مباني‌برنامهنويسي‌‪‌-‌C/C++‬‬
‫‌‬
‫‌‬
‫پروژه‬
‫‌‬
‫‪ .1‬مقدمه‌‬
‫شبيه‌سازي‌ديناميک‌ذرات‪‌،‬نوعي‌شبيه‌سازي‌رايانه‌اي‌است‌که‌در‌آن‌حرکت‌تعداد‌زيادي‌موجوديت‌کوچک‪‌،‬کهه‌‬
‫يشود‪‌.‬اين‌نهو ‌‬
‫ما‌آنها‌را‌ذره‪‌9‬مي‌ناميم‪‌،‬بر‌مبناي‌نيروي‌موجود‌بين‌آنها‌و‌با‌استفاده‌از‌روش‌هاي‌عددي‌بررسي‌م ‌‬
‫نحوهي‌حرکت‌اتم‌ها‌و‌مولکول‌ها‌اشاره‌کرد‪‌.‬به‌علهت‌‬
‫توان‌به‌مطالعهي‌ ‌‬
‫‌‬
‫شبيه‌سازي‌کاربردهاي‌زيادي‌داشته‌که‌مي‌‬
‫کاغذ‌امکانپهذ‌ير‌نيسهت‪‌.‬در‌‬
‫‌‬
‫حرکت‌آنها‌با‌استفاده‌از‌فرمولهاي‌رياضي‌بر‌روي‌‬
‫‌‬
‫شبيني‌‬
‫وجود‌تعداد‌باالي‌ذره‪‌،‬پي ‌‬
‫روها‌شامل‌جاذبهي‌زمين‌و‌اصهطکا ‌باشهندا‌ا‌يه‌ن‌‬
‫‌‬
‫حالت‌هاي‌ساده‌تر‌(زماني‌که‌يک‌شيئ‌وجود‌داشته‌باشد‌و‌ني‬
‫مسئله‌در‌بررسي‌حرکت‌پرتابه‌ها‌و‌يا‌کنترل‌مسير‌حرکت‌موشک‌کاربرد‌دارد‌که‌در‌حضور‌اصطکا ‌تنهها‌روش‌‬
‫يباشد‪‌.‬‬
‫حل‌آنها‌استفاده‌از‌روشهاي‌عددي‌با‌استفاده‌از‌رايانه‌م ‌‬
‫‌‬
‫در‌اين‌مسئله‌ذرات‌مي‌توانند‌در‌فضا‌حرکت‌کنند‌و‌با‌يکديگر‌تعامل‌داشته‌باشند‪‌.‬به‌اين‌صورت‌که‌در‌اثر‌نيروي‌‬
‫دافعه‌(يا‌جاذبها‌متقابل‌بر‌همديگر‌اثر‌گذاشته‌و‌مسير‌حرکت‌همديگر‌را‌تغيير‌مي‌دهند‪‌.‬تعيهي‌ن‌مسه‌ير‌حرکهت‌‬
‫يشود‪‌.‬‬
‫ناشي‌از‌ُبردارهاي‌نيرو‌توسط‌«قوانين‌حرکتي‌نيوتن»‌انجام‌م ‌‬
‫يشويد‪‌.‬‬
‫حل‌معادالت‌سادهي‌ديفرانسيل‌آشنا‌م ‌‬
‫‌‬
‫ن‌پروژهي‌شبي‌هسازي‌شما‌با‌يک‌روش‌عددي‌براي‌‬
‫‌‬
‫در‌طي‌اي‬
‫پروژهي‌درس‌‬
‫‌‬
‫‪ .2‬تعريف‌‬
‫صفحهي‌دوبعدي‌‪‌x-y‬وجود‌دارند‪‌.‬هر‌يک‌از‌اين‌ذرات‌مطهاب ‌رابطهه‌ي‌‬
‫‌‬
‫فرض‌کنيد‌که‌مجموعه‌اي‌از‌ذرات‌در‌يک‌‬
‫يکنند‪‌:‬‬
‫زير‌به‌همديگر‌نيروي‌دافعه‌وارد‌م ‌‬
‫⃗⃗⃗ ‌‬
‫(‪1‬ا‌‬
‫همهي‌ذرات‌يکسان‌است‪‌.‬مقدار‌صورت‌کسر‌را‌ثابت‌و‌به‌صورت‌فرضي‌برابر‌بها‌‌‬
‫مقدار‌ ‌ها‌براي‌ ‌‬
‫‌‬
‫فاصلهي‌دو‌ذره‌از‌هم‌است‪‌.‬راستاي‌اين‌نيرو‌در‌امتداد‌خهط‌واصهل‌دو‌ذره‌و‌جههت‌آن‌بهه‌‬
‫‌‬
‫در‌نظر‌بگيريد‪‌ ‌.‬نيز‌‬
‫سمت‌مخالف‌يکديگر‌است‪‌.‬‬
‫شکل‌‪‌1‬‬
‫ن‌ذرات‌در‌صفحهي‌دوبعدي‌به‌صورت‌ماتريسي‪‌،‬در‌‪‌n‬سطر‌و‌‪‌n‬ستون‌در‌کنار‌يکديگر‌قرار‌گرفته‌اند‌(شکل‌‪2‬ا‪‌.‬‬
‫‌‬
‫اي‬
‫ه‌همهي‌آنها‌صفر‌اسهت‪‌‌.‬فهرض‌کن‌يه‌د‌کهه‌‬
‫‌‬
‫در‌زمان‌صفر‪‌،‬مکان‌اوليه‌اين‌ذرات‌ثابت‌و‌مشخص‌بوده‌و‌سرعت‌اولي‬
‫ذرهي‌سطر‌‪‌i‬و‌ستون‌‪‌j‬را‌با‌‬
‫‌‬
‫‪9‬‬
‫‪‌.‬‬
‫يدهيم‌که‌‬
‫‌نمايش‌م ‌‬
‫‌‪Particle‬‬
‫صفحه‌‪1‬‬
‫مسال‌پاييز‌‪‌1911-11‬‬
‫ني ‌‬
‫شمارهي‌‪‌1‬‬
‫‌‬
‫ي‌نهايي‌درس‌مباني‌برنامهنويسي‌‪‌-‌C/C++‬‬
‫‌‬
‫‌‬
‫پروژه‬
‫‌‬
‫‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‬
‫شکل‌‪‌2‬‬
‫ک‌ذرهي‌جديد‌که‌آنرا‌با‌ ‌نشان‌مي‌دهيم‪‌،‬با‌سرعت‌اوليه‌مشخص‌به‌طهر ‌ا‌يه‌ن‌مجموعهه‌ذرات‌ارسهال‌‬
‫‌‬
‫حال‌ي‬
‫يشود‪‌‌.‬‬
‫م ‌‬
‫شکل‌‪‌9‬‬
‫رابطهي‌(‪1‬ا‌نيروي‌دافعه‌وارد‌مي‌کنند‪‌.‬در‌اثر‌براينهد‌‌‬
‫‌‬
‫ن‌همهي‌ذرات‌قبلي‌به‌همديگر‌مطاب ‌‬
‫‌‬
‫ذرهي‌جديد‌و‌همچني‬
‫‌‬
‫اين‌نيروها‪‌،‬هر‌کدام‌از‌ذرات‌طب ‌رابطه‌ي‌‬
‫‌‬
‫( ‪2‬ا ‌‬
‫داراي‌شتاب‌شده‌و‌در‌اثر‌آن‌به‌حرکت‌در‌مي‌آيند‪‌ ‌.‬جرم‌ذرات‌بوده‌که‌براي‌همهه‌ي‌ذرات‌يکسهان‌اسهت‌و‌ ‌‬
‫مقدار‌شتاب‪‌2‬ذرات‌است‪‌.‬‬
‫توجه‌کنيد‌که‌‪‌F‬و‌‪‌a‬بردارهاي‌دوبعدي‌در‌صفحه‌‪‌x-y‬هستند‪‌.‬‬
‫‌‬
‫‪2‬‬
‫‌‪‌acceleration‬‬
‫صفحه‌‪2‬‬
‫مسال‌پاييز‌‪‌1911-11‬‬
‫ني ‌‬
‫شمارهي‌‪‌1‬‬
‫‌‬
‫ي‌نهايي‌درس‌مباني‌برنامهنويسي‌‪‌-‌C/C++‬‬
‫‌‬
‫‌‬
‫پروژه‬
‫‌‬
‫‪9‬‬
‫ن‌ذرهي‌جديد‌را‌در‌طي‌يک‌دوره‌زماني‌خها ‌‬
‫‌‬
‫در‌اين‌پروژه‌شما‌بايد‌با‌شبيه‌سازي‌اين‌ذرات‌«مسير‌حرکت» ‌اي‬
‫يشود‪‌.‬‬
‫در‌بازههاي‌زماني‌کوچک‌ ‌انجام‌م ‌‬
‫‌‬
‫لهي‌تکرار‪‌4‬‬
‫به‌دست‌آوريد‪‌.‬شبي‌هسازي‌به‌وسي ‌‬
‫يکنيد‪‌.‬مقهدار‌‬
‫همهي‌نيروها‌بر‌هر‌ذره‌را‌مطاب ‌رابطه‌ي‌(‪1‬ا‌حساب‌م ‌‬
‫به‌اينصورت‌که‌ابتدا‌براي‌لحظه‌‪‌،t = 0‬برايند‌ ‌‬
‫از‌رابطهي‌زير‌به‌دسهت‌‬
‫‌‬
‫دو‌ذرهي‌‪‌P‬و‌'‪‌P‬‬
‫‌‬
‫مثال‌فاصلهي‌‬
‫‌‬
‫ا‌برابر‌با‌فاصلهي‌هندسي‌دو‌ذره‌است‪‌.‬براي‌‬
‫‌‬
‫در‌رابطهي‌(‪1‬‬
‫‌‬
‫‪‌r‬‬
‫يآيد‪‌:‬‬
‫م ‌‬
‫√‬
‫(‪9‬ا‌‬
‫‌‬
‫‪‌‬توجه‌نماييد‌که‌بايد‌مقدار‌هر‌نيرو‌و‌برايند‌نيروها‌را‌به‌طريقي‌به‌صورت‌بُهردار‌‌بهه‌دسهت‌آور‌يه‌د‪‌.‬بهرا‌ي‌بهه‌‬
‫هر‌دو‌ذرهي‌‪‌P‬و‌'‪‌P‬استفاده‌کنيد‪‌.‬‬
‫‌‬
‫دستآوردن‌اين‌بردار‌بايد‌از‌مکان‌هندسي‌‬
‫‌‬
‫يآيد‪‌:‬‬
‫ا‌شتاب‌هر‌ذره‌در‌لحظهي‌صفر‌( ا‌به‌دست‌م ‌‬
‫‌‬
‫سپس‌طب ‌رابطه‌ي‌(‪2‬‬
‫بعد‌با‌تقريب‌زدن‌معادله‌ديفرانسيل‌سرعت‪‌5‬بر‌حسب‌شتاب‌(‬
‫⃗⃗⃗⃗‬
‫ا‪‌،‬تغييه‌ر‌سهرعت‌‌تقريبه‌ي‌ههر‌‌ذره‌را‌‬
‫يکنيد‪‌:‬‬
‫محاسبه‌م ‌‬
‫⃗⃗⃗⃗⃗‬
‫(‪4‬ا‌‬
‫⃗⃗⃗⃗⃗‬
‫⃗⃗⃗‬
‫⃗⃗⃗⃗⃗‌‬
‫⃗⃗⃗‌‬
‫که‌در‌نتيجه‌سرعت‌جديد‌به‌دست‌مي‌آيد‪‌،‬و‌با‌اسهتفاده‌از‌معادلهه‌ي‌ديفرانسه‌يل‌مکهان‌‪‌6‬بهر‌حسهب‌سهرعت‌‬
‫يآيد‪‌:‬‬
‫ا‪‌،‬تغيير‌مکان‌و‌در‌نتيجه‌مکان‌تقريبي‌جديد‌ذره‌به‌دست‌م ‌‬
‫(‬
‫⃗⃗⃗‬
‫(‪ 5‬ا ‌‬
‫‌‬
‫⃗⃗⃗⃗‬
‫⃗⃗⃗⃗‬
‫⃗⃗⃗⃗‌‬
‫⃗⃗⃗⃗‌‬
‫لحظهي‌جديد‌‬
‫‌‬
‫به‌اين‌ترتيب‌سرعت‌و‌مکان‌جديد‌هر‌ذره‌( ‌و‌ ا‌براي‌‬
‫‌به‌دسهت‌مه‌ي‌آيه‌د‪‌.‬‬
‫ها‌و‌سرعتهاي‌جديد‪‌،‬بهه‌‬
‫‌‬
‫‌‬
‫با‌تکرار‌مراحل‌فوق‌و‌با‌استفاده‌از‌مکان‬
‫را‌به‌اندازهي‌ ‌افزايش‌داده‌و‌‬
‫‌‬
‫سپس‌مقدار‌ ‌‬
‫ترتيب‌نيرو‪‌،‬شتاب‪‌،‬سرعت‌و‌مکان‌هر‌ذره‌مجدداً‌براي‌زمان‌بعهد‌ي‌‬
‫همينطور‌الي‌آخر‪‌.‬‬
‫‪9‬‬
‫‪4‬‬
‫‌‪‌iteration‬‬
‫‪5‬‬
‫‪6‬‬
‫‌‪‌Trajectory‬‬
‫‌‪Velocity‬‬
‫‌‪Location‬‬
‫صفحه‌‪9‬‬
‫‌محاسهبه‌مه‌ي‌شهود‌‪‌.‬و‌‬
‫مسال‌پاييز‌‪‌1911-11‬‬
‫ني ‌‬
‫شمارهي‌‪‌1‬‬
‫‌‬
‫ي‌نهايي‌درس‌مباني‌برنامهنويسي‌‪‌-‌C/C++‬‬
‫‌‬
‫‌‬
‫پروژه‬
‫‌‬
‫‪ .9‬مراحل‌پروژه‌‬
‫پروژهي‌شبيه‌سازي‌را‌پياده‌کنيد‪‌.‬المان‌هاي‌مورد‌نظر‌برنامه‌در‌برنامه‌مهدل‌سهاز‌ي‌شهده‌و‌پارامترهها‌‬
‫‌‬
‫‪‌.1‬در‌ابتدا‌‬
‫يشوند‪‌.‬‬
‫يشود‪‌.‬و‌مقادير‌مورد‌نظر‌پروژه‌در‌حين‌اجراي‌برنامه‌چاپ‌م ‌‬
‫يشوند‪‌.‬شبي‌هسازي‌اجرا‌م ‌‬
‫تعريف‌م ‌‬
‫رهي‌خروجي‌هاي‌مورد‌نظر‌در‌يک‌فايل‌متني‌و‌با‌فرمت‌مشخص‌را‌بهه‌‬
‫‪‌.2‬خروجي‌به‌فايل‪‌:‬سپس‌بايد‌قابليت‌ذخي ‌‬
‫برنامه‌اضافه‌کنيد‪‌.‬‬
‫‪ .4‬تعريف‌پارامترهاي‌مسئله‌‬
‫مکان‌ذرهي‌‬
‫‌‬
‫فرض‌کنيد‌‬
‫‪‌،‬سهرعت‌آن‌را‌بها‌‬
‫در‌لحظهي‌‪‌t‬را‌با‌‬
‫‌‬
‫‌‬
‫‪‌،‬و‌شهتاب‌آن‌را‌بها‌نشهان‌‬
‫‌‬
‫در‌صفحهي‌دوبعدي‌هستند‪‌.‬‬
‫‌‬
‫يدهيم‪‌،‬که‌همگي‌بردارهايي‌‬
‫م ‌‬
‫يشود‪‌.‬‬
‫از‌رابطهي‌زير‌تعيين‌م ‌‬
‫‌‬
‫در‌حالت‌اوليه‪‌،‬مکان‌اولي‌هي‌ذرات‌موجود‌در‌صفحه‌‬
‫‌(‪6‬ا‌‬
‫] [‬
‫‌‬
‫[‬
‫]‬
‫‌‬
‫ه‌همهي‌ذرات‌موجود‌صفر‌است‪‌.‬‬
‫‌‬
‫يشود‌که‌سرعت‌اولي‬
‫‌‌همچنين‌يادآوري‌م ‌‬
‫(‪7‬ا‌‬
‫]‬
‫‌‬
‫[‬
‫[‬
‫]‬
‫‌‬
‫يشود‌که‌مکان‌و‌سرعت‌اولي‌هي‌اين‌ذره‌مطاب ‌زير‌است‪‌:‬‬
‫سپس‌ذرهي‌جديد‌ ‌به‌سمت‌مجموعه‌پرتاب‌م ‌‬
‫‌‬
‫(‪ 8‬ا ‌‬
‫شبيه‌سازي‌در‌بازه‌هاي‌زماني‌‬
‫]‬
‫[‬
‫[‬
‫]‬
‫‌‬
‫‪‌،‬حرکت‌ذرات‌را‌شهب‌يه‌سهاز‌ي‌‬
‫‌انجام‌مي‌شود‌و‌بايد‌تا‌زمان‌‬
‫کنيد‪‌.‬‬
‫مقدار‌جرم‌را‌برابر‌با‌‪1.0‬‬
‫‌در‌نظر‌بگيريد‪‌.‬همچنين‌‬
‫‌و‌‬
‫‪‌.‬‬
‫ادهسازي‌‬
‫‪ .5‬مراحل‌پي ‌‬
‫براي‌انجام‌اين‌پروژه‌پيشنهاد‌مي‌شود‌از‌يک‌‪‌struct‬يا‌‪‌class‬براي‌تعريه‌ف‌بردارهها‌ي‌شهتاب‪‌،‬سهرعت‪‌،‬و‌مکهان‌‬
‫يتواند‌به‌صورت‌دلخواه‌زير‌باشد‪‌:‬‬
‫استفاده‌کنيد‪‌.‬يک‌‪‌struct‬نوعي‌م ‌‬
‫‪struct Vector‬‬
‫{‬
‫;‪double x‬‬
‫;‪double y‬‬
‫}‬
‫صفحه‌‪4‬‬
‫شمارهي‌‪‌1‬‬
‫‌‬
‫ي‌نهايي‌درس‌مباني‌برنامهنويسي‌‪‌-‌C/C++‬‬
‫‌‬
‫‌‬
‫پروژه‬
‫مسال‌پاييز‌‪‌1911-11‬‬
‫ني ‌‬
‫‌‬
‫ذرات‌موجود‌و‌ذرهي‌جديد‌را‌(با‌روش‌دلخواه‌خودا‌تعريف‌کنيد‪‌.‬هر‌ذره‌داراي‌سه‌مقدار‌مکان‪‌،‬‬
‫‌‬
‫سپس‌مجموعهي‌‬
‫‌‬
‫سرعت‪‌،‬و‌شتاب‌است‌که‌همگي‌از‌نو ‌‪‌Vector‬هستند‪‌.‬‬
‫همه‌ذرات‌را‌مطاب ‌روابط‌(‪6‬ا‌الي‌(‪8‬ا‌مشخص‌کنيد‪‌‌.‬‬
‫در‌ابتدا‌بايد‌مقادير‌اولي‌هي‌ ‌‬
‫رابطهي‌(‪1‬ا‌نيروي‌بين‌آنها‌را‌‬
‫‌‬
‫با‌درنظرگرفتن‌فاصلهي‌ذرات‌ديگر‌نسبت‌به‌آن‌با‌استفاده‌از‌‬
‫‌‬
‫سپس‌به‌ازاي‌هر‌ذره‪‌،‬‬
‫ذرهي‌مشخص‪‌،‬برايند‌نيروها‌بر‌آن‌ذره‌را‌در‌زمهان‌‪‌t = 0‬‬
‫همهي‌نيروهاي‌وارد‌بر‌آن‌ ‌‬
‫حساب‌کنيد‌و‌با‌جمع‌ُبرداري‌ ‌‬
‫محاسبه‌کنيد‪‌.‬‬
‫شکل‌‪‌4‬‬
‫يآيد‪‌:‬‬
‫سپس‌با‌استفاده‌از‌رابطهي‌(‪2‬ا‌شتاب‌جديد‌هر‌ذره‌به‌دست‌م ‌‬
‫‌‬
‫و‌پس‌از‌آن‌سرعت‌و‌مکان‌جديد‌ذره‪‌.‬‬
‫يشود‪‌.‬‬
‫اين‌کار‌براي‌هر‌يک‌از‌ذرات‌تکرار‌م ‌‬
‫د‌در‌لحظهي‌‪‌،t‬مقادير‌جديد‌(شتاب‪‌،‬سرعت‪‌،‬و‌مکانا‌مربوط‌به‌مهثًً‌ذره‌ي‌‪‌P‬بهه‌دسهت‌آمهد‌و‌‬
‫‌‬
‫نکته‪‌‌:‬فرض‌کني‬
‫ر‌مربوط‌به‌ذرهي‌'‪‌P‬را‌محاسبه‌کنيد‪‌.‬حال‌چنانچه‌اين‌مقادير‌مربوط‌به‌‪‌P‬را‌همان‌لحظهه‌در‌‬
‫‌‬
‫آماده‌هستيد‌تا‌مقادي‬
‫ادامهي‌محاسهبات‌(مهثًً‌بهه‌دسهت‌آوردن‌پارامترهها‌ي‌'‪P‬ا‌مقهاد‌ير‌‬
‫برنامه‌تغيير‌دهيد‌و‌به‌روزرساني‌کنيد‪‌،‬براي‌ ‌‬
‫يشود‪‌.‬چراکه‌مقدار‌مکان‌‪‌‌P‬تغيير‌کرده‌است‪‌.‬‬
‫يباشد‌و‌برنامه‌دچار‌اشتباه‌م ‌‬
‫معتبري‌موجود‌نم ‌‬
‫براي‌رفع‌اين‌مسئله‌بايد‌ابتدا‌مقادير‌مکان‌هاي‌جديد‌تمام‌ذرات‌محاسبه‌شوند‪‌،‬سهپس‌‌در‌پايه‌ان‌‪‌،iteration‬آن‌‬
‫مقادير‌به‌روزرساني‌شوند‪‌.‬يک‌راه‌براي‌انجام‌اينکار‌اينست‌که‌دو‌کپي‌از‌پارامترهها‌ي‌مکهان‌تمهام‌ذرات‌داشهته‌‬
‫ن‌محاسبهي‌مکان‌هاي‌جديد‪‌،‬مقادير‌را‌در‌کپي‌دوم‌ذخيره‌کنيد‌و‌در‌پايان‌هر‌تکرار‌شبيه‌سازي‌در‌‬
‫‌‬
‫باشيد‪‌.‬در‌حي‬
‫زمان‌خا‬
‫‌‪‌،t‬مقادير‌را‌به‌کپي‌اول‌منتقل‌کنيد‪‌.‬‬
‫‌‬
‫صفحه‌‪5‬‬
‫مسال‌پاييز‌‪‌1911-11‬‬
‫ني ‌‬
‫شمارهي‌‪‌1‬‬
‫‌‬
‫ي‌نهايي‌درس‌مباني‌برنامهنويسي‌‪‌-‌C/C++‬‬
‫‌‬
‫‌‬
‫پروژه‬
‫‌‬
‫ييابد‌و‌عمليات‌فوق‌تکرار‌مي‌شود‪‌،‬تا‌زمهان‌ي‌کهه‌مکهان‌ذره‌ي‌ ‌در‌‬
‫به‌اندازهي‌ ‌افزايش‌م ‌‬
‫‌‬
‫پس‌از‌آن‌مقدار‌‪‌t‬‬
‫زمان‌‪‌10.0‬به‌دست‌آيد‪(‌.‬طبيعتاً‌مکان‌ذرات‌در‌زمان‌‪‌10.0‬موقعي‌به‌دست‌مي‌آيد‌که‌مقدار‌‪‌t‬برابر‌با‌‬
‫‌شده‌باشد‪.‬ا‬
‫‪ .6‬خروجي‌برنامه‌‬
‫ا‪‌،‬مقادير‌زير‌را‌با‌دقت‌‪‌5‬رقم‌اعشار‌(مميز‌ثابتا‌و‌با‌يک‌فاصله‌‬
‫برنامه‌بايد‌به‌ازاي‌زمان‌هاي‌صحيح‌(‬
‫بين‌آنها‌در‌خروجي‌چاپ‌کند‪‌.‬‬
‫مقادير‌خروجي‪‌:‬‬
‫] [‬
‫] [‬
‫] [‬
‫] [‬
‫] [‬
‫] [‬
‫که‌‌‬
‫دقت‌نماييد‌که‌منظور‌از‌] [‬
‫ذرهي‌‬
‫‌مقدار‌بُعد‌ ‌از‌بُردار‌مکان‌ ‌‬
‫ستون‌‪8‬ا‪‌،‬در‌زمان‌ ‌است‌و‌منظور‌از‌] [‬
‫ذرهي‌واقع‌در‌مختصات‌سطر‌‪‌6‬و‌‬
‫‌(يعني‌ ‌‬
‫ذرهي‌ ‌است‪‌.‬‬
‫‪‌،‬همان‌مقدار‌براي‌ ‌‬
‫به‌عنوان‌مثال‌اولين‌سطر‌خروجي‌برنامه‌به‌صورت‌زير‌است‪‌:‬‬
‫‪0.00000 15.00000 3.36660 8.00000 6.00000 7.00000 6.00000‬‬
‫و‌دومين‌خروجي‌به‌صورت‌زير‪‌:‬‬
‫‪1.00000 6.44218 5.74259 9.14483 7.37202 7.38368 7.00595‬‬
‫پس‌از‌پياده‌سازي‌موارد‌فوق‪‌،‬قابليت‌نوشتن‌خروجي‌در‌فايل‌را‌به‌برنامه‌اضافه‌نماييد‪‌.‬برنامه‌بايه‌د‌همزمهان‌کهه‌‬
‫ينمايد‪‌،‬آنها‌را‌در‌فايلي‌متني‌با‌نام‌‪‌output.txt‬هر‌کدام‌را‌در‌يک‌سطر‌بنويسد‪‌.‬‬
‫يهاي‌فوق‌را‌چاپ‌م ‌‬
‫خروج ‌‬
‫يک‌خروجي‌نمونه‌از‌شرو ‌اجراي‌برنامه‌به‌صورت‌زير‌است‪‌:‬‬
‫‪6.00000 7.00000 6.00000‬‬
‫‪7.37202 7.38368 7.00595‬‬
‫‪8.85286 7.48553 11.40256‬‬
‫‪10.01744 8.30381 15.54128‬‬
‫‪11.29076 9.45098 19.28413‬‬
‫‪8.00000‬‬
‫‪9.14483‬‬
‫‪11.88086‬‬
‫‪15.23368‬‬
‫‪18.85997‬‬
‫‪15.00000 3.36660‬‬
‫‪6.44218 5.74259‬‬
‫‪4.44543 2.45123‬‬
‫‪3.61449 -0.69237‬‬
‫‪3.44548 -3.88554‬‬
‫‪0.00000‬‬
‫‪1.00000‬‬
‫‪2.00000‬‬
‫‪3.00000‬‬
‫‪4.00000‬‬
‫…‬
‫‌‬
‫تذکر‌مهم‪‌:‬تمام‌اعداد‌خروجي‌را‌با‌دقت‌‪‌5‬رقم‌اعشار‌مميز‌ثابت‌چاپ‌نماييد‌(چه‌ه‌در‌صهفحه‌ي‌‬
‫نمايش‌و‌چه‌در‌فايلا‌و‌بين‌اعداد‌يک‌فاصله‌(‪Space‬ا‌قرار‌دهيد‪‌.‬‬
‫‌‬
‫قسمتهاي‌برنامه‌براي‌متغيرهاي‌حقيقي‪‌،‬از‌نو ‌‪‌double‬استفاده‌کنيد‪‌.‬‬
‫‌‬
‫توجه‪‌:‬در‌تمام‌‬
‫‌‬
‫صفحه‌‪6‬‬
‫مسال‌پاييز‌‪‌1911-11‬‬
‫ني ‌‬
‫شمارهي‌‪‌1‬‬
‫‌‬
‫ي‌نهايي‌درس‌مباني‌برنامهنويسي‌‪‌-‌C/C++‬‬
‫‌‬
‫‌‬
‫پروژه‬
‫‌‬
‫‪ .7‬تست‌پروژه‌توسط‌خودتان‌‬
‫شدهي‌زير‪‌،‬مقادير‌متناظر‌زيه‌ر‌را‌‬
‫مشخص ‌‬
‫‌‬
‫د‌در‌زمانهاي‌‬
‫‌‬
‫ادهسازي‌کرده‌باشيد‪‌،‬باي‬
‫در‌صورتي‌که‌پروژه‌را‌درست‌پي ‌‬
‫دريافت‌کنيد‪‌:7‬‬
‫] [‬
‫] [‬
‫] [‬
‫] [‬
‫] [‬
‫] [‬
‫‪6.18834‬‬
‫‪7.35265‬‬
‫‪6.17785‬‬
‫‪8.56929‬‬
‫‪6.08316‬‬
‫‪8.66387‬‬
‫‪0.68000‬‬
‫‪16.55993‬‬
‫‪8.59694‬‬
‫‪10.35019‬‬
‫‪16.19300‬‬
‫‪-1.54594‬‬
‫‪3.54779‬‬
‫‪3.27000‬‬
‫‪22.23772‬‬
‫‪10.43484‬‬
‫‪12.37016‬‬
‫‪21.83344‬‬
‫‪-6.39949‬‬
‫‪3.38177‬‬
‫‪4.79000‬‬
‫‪27.78800‬‬
‫‪12.35248‬‬
‫‪14.51730‬‬
‫‪27.51889‬‬
‫‪-10.96488‬‬
‫‪3.33659‬‬
‫‪6.26000‬‬
‫‪34.81958‬‬
‫‪14.83645‬‬
‫‪17.39093‬‬
‫‪34.80250‬‬
‫‪-16.54587‬‬
‫‪3.35933‬‬
‫‪8.10000‬‬
‫‪41.80038‬‬
‫‪17.32799‬‬
‫‪20.35405‬‬
‫‪42.07380‬‬
‫‪-21.97189‬‬
‫‪3.41334‬‬
‫‪9.91000‬‬
‫نمرهدهي‌‬
‫‪ .8‬سياست‌ ‌‬
‫برنامهي‌شما‌بايد‌قابل‌‪‌compile‬و‌اجرا‌باشد‪‌.‬کامپايلر‌مورد‌استناد‌‪‌Dev-C++‬خواهد‌بود‪‌.‬رعايت‌فرمهت‌‌خروجه‌ي‌‬
‫‌‬
‫در‌پروژهي‌شما‌پياده‌سازي‌شده‌باشهد‌کهه‌‬
‫‌‬
‫برنامه‌الزامي‌است‪‌.‬هر‌يک‌از‌بخش‌هاي‌ذکرشده‌اجباري‌است‌و‌بايد‌‬
‫يدهد‪‌.‬‬
‫نمرهي‌خام‌شما‌را‌تشکيل‌م ‌‬
‫‌‬
‫در‌برنامهي‌خود‌تا‌حد‌امکان‌رعايت‌کنيد‪‌.‬برنامهه‌را‌بهه‌تهابع‌هها‌ي‌کهوچکتر‌‬
‫‌‬
‫ساختيافته‌را‌‬
‫‌‬
‫اصول‌برنامه‌نويسي‌‬
‫بشکنيد‪‌.‬از‌نوشتن‌کل‌برنامه‌در‌تابع‌‪‌main‬يا‌در‌يک‌تابع‌خا ‌خودداري‌کنيد‌تا‌متحمل‌کسر‌نمره‌نشويد‪‌.‬بهرا‌ي‌‬
‫توابع‌مهم‌برنامه‌کامنتهاي‌مختصر‌و‌مفيد‌بنويسيد‪‌.‬‬
‫‌‬
‫همهي‌‬
‫‌‬
‫يشده‌را‌در‌آن‌مستندسازي‪‌8‬‬
‫ادهساز ‌‬
‫ک‌از‌قسمتهاي‌پي ‌‬
‫‌‬
‫يک‌فايل‌‪‌MS Word‬يا‌‪‌PDF‬جداگانه‌در‌نظر‌بگيريد‌و‌هر‌ي‬
‫مصفحه‌يا‌يک‌پاراگرا ا‪‌.‬‬
‫کنيد‌(هر‌کدام‌حداقل‌در‌حد‌ني ‌‬
‫نمرهي‌اضافه‌‬
‫‌‬
‫ر‌نمرهي‌اضافي‌به‌همراه‌خواهند‌داشت‪‌:‬‬
‫‌‬
‫قسمتهاي‌زي‬
‫‌‬
‫ادهسازي‌هر‌يک‌از‌‬
‫پي ‌‬
‫‪‬‬
‫انتقال‌خروجي‌برنامه‌از‌فايل‌متني‌به‌محيط‌‪(‌MS Excel‬به‌صورت‌دستيا‌و‌رسم‌نمهودار‌حرکهت‌ذرات‌‬
‫بر‌اساس‌دادههاي‌منتقل‌شده‌‬
‫‌‬
‫اشارهشده‌‬
‫‌‬
‫‪‬‬
‫نحوهي‌حرکت‌ذرات‌مورد‌نظر‪‌.‬براي‌اينکهار‌مه‌ي‌توانيه‌د‌از‌کامپها‌يلر‌‬
‫برنامه‌نويسي‌براي‌نمايش‌گرافيکي‌ ‌‬
‫دلخواه‌خود‌استفاده‌کنيد‪‌.‬‬
‫‪7‬‬
‫توانيد‌برنامهي‌موجود‌در‌لينک‌زير‌را‌دانلود‌و‌اجهرا‌کنيهد‪‌.‬‬
‫‌‬
‫‌‬
‫ي‌تعامل‌ذرات‌مورد‌نظر‌مي‬
‫‌براي‌به‌دست‌آوردن‌در ‌شهودي‌بهتر‌از‌نحوه‌‬
‫اين‌برنامه‌براي‌اجرا‌به‌‪‌.NET.Framework 2‬يا‌باالتر‌نياز‌دارد‪‌‌ http://www.mediafire.com/?dnqnzmoycdusror‌:‬‬
‫‪8‬‬
‫‌‪‌Document‬‬
‫صفحه‌‪7‬‬
‫مسال‌پاييز‌‪‌1911-11‬‬
‫ني ‌‬
‫شمارهي‌‪‌1‬‬
‫‌‬
‫ي‌نهايي‌درس‌مباني‌برنامهنويسي‌‪‌-‌C/C++‬‬
‫‌‬
‫‌‬
‫پروژه‬
‫‌‬
‫مشمول‌نمرهي‌اضافي‌خواهند‌شد‌که‌خروجي‌را‌درست‌نمايش‌دهند‪‌.‬‬
‫‌‬
‫موارد‌باال‌به‌شرطي‌‬
‫نمرهي‌منفي!‌‬
‫‌‬
‫از‌کپي‌برداري‌از‌ديگران‌خودداري‌نماييد‌و‌مخصوصاً‌از‌محول‌نمودن‌پياده‌سازي‌پروژه‌به‌کسي‌غير‌از‌خود‌اکيه‌داً‌‬
‫پرهيز‌کنيد‪‌.‬تشخيص‌اينکه‌برنامه‌توسط‌خود‌دانشجو‌نوشته‌شده‌است‌يا‌خير‌بسيار‌ساده‌است‪‌.‬در‌صورتي‌کهه‌‬
‫برنامه‌را‌خودتان‌نوشته‌باشيد‪‌،‬ممتحنين‌حداکثر‌تخفيف‌را‌در‌هنگام‌بررسي‌مهدنظر‌قهرار‌خواهنهد‌داد‪‌.‬امها‌در‌‬
‫تخلف‌عذر‌و‌بهانهاي‌پذيرفتني‌نيست‪‌.‬‬
‫‌‬
‫صورت‌مشاهدهي‌‬
‫‌‬
‫حلتمرين‌درس‌راهنمايي‌بخواهيه‌د‪‌،‬امها‌از‌‬
‫چنانچه‌هنوز‌در‌برنامه‌نويسي‌مشکل‌داريد‪‌،‬از‌کساني‌که‌مي‌شناسيد‌و‌از‌افراد‌ ‌‬
‫يبرداري‌ناآگاهانه‌جداً‌خودداري‌کنيد‪‌.‬‬
‫کپ ‌‬
‫نحوهي‌تحويل‌پروژه‌‬
‫‌‬
‫‪.1‬‬
‫پروژهي‌به‌همراه‌مستندات‌حداکثر‌تا‌‪‌48‬ساعت‌قبل‌از‌تحويل‌حضوري‌بايد‌به‌آدرس‌ايميه‌ل‌تمرينهات‌‬
‫‌‬
‫فايل‌هاي‌‬
‫يشوند‪‌.‬‬
‫ارسال‌شوند‪‌.‬برنامههايي‌که‌در‌روز‌تحويل‌آورده‌شوند‌پذيرفته‌نم ‌‬
‫‌‬
‫(‪[email protected]‬ا‌‬
‫فرمت‌ارسال‌‌‬
‫فايل‌هاي‌پروژه‌را‌پس‌از‌‪‌zip‬کردن‪‌،‬بهه‌صهورت‌‌‪‌project1_STDID.zip‬نهام‌گهذار‌ي‌کنيه‌د‌کهه‌‪‌STDID‬شهماره‌ي‌‬
‫دانشجويي‌شما‌است‪‌.‬به‌عنوان‌مثال‪‌:‬‬
‫‪project1_86202228.zip‬‬
‫توجه‪‌:‬از‌قرار‌دادن‌فايل‌‪‌.exe‬در‌فايل‌پروژه‌جداً‌پرهيز‌کنيد‪‌.‬‬
‫تحويل‌حضوري‌‬
‫در‌زمان‌تحويل‌بايد‌بر‌روي‌قسمت‌هاي‌مختلف‌پروژه‌تسلط‌کامل‌داشته‌باشيد‪‌.‬از‌بخش‌هها‌ي‌مختلهف‌برنامهه‌از‌‬
‫شما‌سؤال‌خواهد‌شد‪‌.‬‬
‫‪ .11‬مراجع‌‬
‫‪[1] http://en.wikipedia.org/wiki/Molecular_dynamics‬‬
‫‪[2] http://en.wikipedia.org/wiki/Newton's_laws_of_motion‬‬
‫‪[3] http://www.ph.biu.ac.il/~rapaport/visint/04_examp_moldyn.html‬‬
‫‌‬
‫‌‬
‫«موف ‌باشيد»‌‬
‫صفحه‌‪8‬‬