طراحی الگوریتم برای مسئله
الگوریتم ها برای حل مسئله نوشته میشوند . مشکل ترین بخش حل مسئله ، طراحی الگوریتم برای آن است . در طراحی الگوریتم ، ابتدا تمام مراحل کلی انجام کار را مشخص میکنیم و با حل هر مرحله اصلی ، کل مسئله حل می شود . تقریبا تمام الگوریتم ها مراحل زیر را دارا هستند :
1- خواندن داده ها
2- انجام محاسبات
3- خروجی ها
هر مرحله از الگوریتم با بررسی دقیق ممکن است به بخشهای کوچکتری نیز تقسیم شود . به عنوان مثال ، مرحله انجام محاسبات یک مرحله کلی است که با پرداختن به مسئله ، به روابط ریاضی تبدیل می شود که مسئله را حل می کند . اصولا برای حل یک مسئله و طراحی الگوریتم برای آن ، موارد زیر باید مشخص شوند :
1- تعریف دقیقی از مسئله جهت مشخص کردن نیازمندیهای آن
2- ورودی های مسئله
3- خروجی های مسئله
4- بررسی راه حل های مختلف مسئله
5- رابطه بین ورودی ها و خروجی های مسئله
6- انتخاب یک راه حل مناسب و تهیه الگوریتم برای آن راه حل
7- اشکال زدایی و رفع اشکال الگوریتم
برای آشنایی با حل یک مسئله و طراحی الگوریتم آن ....
خوب به مثال زیر توجه کنید.
دانشگاهی برای هر ترم شهریه ثابتی که در طول تحصیل دانشجو است دریافت می کند .
اگر میزان شهریه ثابت مشخص باشد ، دانشجو در مدت 4 ترم چه مبلغی باید پرداخت کند؟؟
ورودی های مسئله : میزان شهریه ثابت برای هر ترم
خروجی های مسئله : مبلغ شهریه ثابت پرداختی در ازای 4 ترم ( یعنی مبلغ کل )
رابطه بین ورودی ها و خروجی های مسئله :
4 × شهریه ثابت ترم = مبلغ کل
در این مثال ، تشخیص ورودی ، خروجی و رابطه بین آنها خیلی ساده است ولی ممکن است همیشه به این سادگی ها نباشد و مستلزم فرض ها و تسهیلات خاصی باشد .
بیان ریاضی الگوریتم
الگوریتم هایی که در پست های بعدی خواهیم نوشت ، به زبان فارسی بیان می شوند . نوشتن الگوریتم به زبان فارسی دارای 2 اشکال عمده است :
* 1 * الگوریتم ها طولانی می شوند .
* 2 * از دستورات الگوریتم تفسیرهای متفاوتی می شود .
در این قسمت از آموزش سعی میکنیم مقدماتی را فراهم کنیم که الگوریتم را به جملات ریاضی بیان کند . زبان ریاضی زبان دقیق تری نسبت به زبان فارسی است . البته ناگفته نماند بیان ریاضی الگوریتم تنها راه بیان دقیق مراحل الگوریتم نیست و روش های دیگری وجود دارند که در ادامه به آموزش آنها هم خواهیم پرداخت . در بیان ریاضی الگوریتم با نمادهایی سر و کار داریم . این نمادها ، محلهای ذخیره ورودی ها و خروجی های الگوریتم هستند . این نماد ها را متغییر می نامیم .
به عبارت دیگر می توان متغییر را این گونه تعریف کرد :
متغییر نامی است که به کمیتی داده می شود و مقدار آن ممکن است در طول اجرای الگوریتم تغییر کند .
به عنوان مثال ، در الگوریتم مربوط به بزرگترین عدد ، عدد بزرگتر یک عامل مهم است و باید نامی برای آن انتخاب شود . نامگذاری برای متغیر با ترکیبی از حروف a تا z و ارقام 0 تا 9 انجام می شود . نام متغیر باید با یکی از حروف شروع شود . حداکثر طول نام متغیر در این آموزش 6 فرض می شود .
نمونه هایی از اسامی متغیرها عبارتند از : find , average , money , m , y , x1 , sum در نامگذاری متغیرها ، تفاوتی بین حروف کوچک و بزرگ وجود ندارد.
sum: معمولا برا جمع استفاده می شود.
m,y, x1: یکسری متغیر های دلخواه برای جای گذاری اعدادو ... .
money: برای واحد پول استفاده می شود.
average: معمولا نیز از ان برای میانگین استفاده میشود. وبشتر اوقات مخفف آن(avrg, avg) را به کار می برند.
find: برای پیدا کردن چیزی استفاده می شود.
مجری الگوریتم
منظور از مجری الگوریتم چیست؟
الگوریتم های نوشته شده می توانند توسط افراد یا ماشین اجرا شوند و منظور از اجرای الگوریتم.دنبال کردن کلیه دستورات الگوریتم و اخذ نتیجه دلخواه است .
اگر مجری الگوریتم ماشین باشد آن را کامپیوتر می گویند .
مجری الگوریتم بعضی از اعمال را از قبل می داند و بعضی دیگر را نمی داند . به عنوان مثال ، ممکن است مجری الگوریتم مفهوم جمع و تفریق را بداند و مفهوم باقیمانده یک تقسیم را نداند . لذا نویسنده الگوریتم باید از چیزهایی که مجری الگوریتم می داند آگاه باشد و هیچ گونه فرضی را در مورد مجری الگوریتم منظور نکند .
روش های بیان الگوریتم
الگوریتم ها را می توان به چند صورت مختلف بیان کرد که 3 مورد از آن را بیان می کنیم :
1 بیان الگوریتم با جملات فارسی
2 بیان ریاضی الگوریتم
3 بیان الگوریتم توسط شکل ها
حالا به ترتیب با مثال ذکر خواهیم کرد :
بیان الگوریتم با جملات فارسی
در این روش الگوریتم ها بدون استفاده از نمادهای خاصی ذکر می شوند . به مثال زیر توجه کنید :
مثال 1
الگوریتمی که مجموع دو عدد را محاسبه می کند:
1- اولین عدد را انتخاب کرده ، بر روی کاغذ بنویسد
2- دومین عدد را گرفته ، آن را زیر عددی که بر روی کاغذ نوشتید بنویسد
3- دو عدد روی کاغذ را با هم جمع کنید ، زیر آن دو عدد بنویسید
4- سومین عددی که بر روی کاغذ نوشته شد ، مجموع دو عدد است
5- پایان
مثال 2
الگوریتمی که از بین 3 عدد بزرگترین عدد را پیدا می کند :
1- اولین عدد را به عنوان بزرگترین عدد انتخاب کن و روی کاغذ بنویس
2- عدد دوم را با عدد روی کاغذ مقایسه کن ، اگر از عدد روی کاغذ بزرگتر بود ، آن را به عنوان بزرگترین عدد یادداشت کن
3- اگر عدد سوم ، از عددی که به عنوان بزرگترین انتخاب شد ، بزرگتر باشد ، آن را به عنوان بزرگترین عدد یادداشت کن
4- عدد روی کاغذ بزرگترین عدد است 
5- پایان



بسمه تعالی
=> این مثال تنها برای نمونه می باشد برای دیدن بقیه مثال ها می توانید به قسمت آموزش مراجعه کنید <=
مثال 1 :
الگوریتمی که سه مقدار عددی را از ورودی خوانده ، میانگین آنها را محاسبه می کند .
توضیح:
در این الگوریتم باید برای سه مقداری که از ورودی خوانده می شوند ، نامی انتخاب کنیم . نامگذاری برای میانگین و مجموع اعداد نیز لازم است .
1- A وB وC را از ورودی بخوان
2 ===> sum= A+B+C (مجموع=سه عدد را باهم جمع می کنیم)
3 ===> AVEG= SUM/3 ( میانگین= حاصل جمع 3 عدد تقسیم بر تعداد اعداد)
4 ===> AVEG را چاپ کن ( میانگین سه عدد را چاپ می کند)
5- ===> پایان
آنچه که از این الگوریتم می آموزیم :
1- مجری الگوریتم " مفهوم خواندن " را می داند .
2- علامت + به معنی جمع است و مجری الگوریتم مفهوم جمع را می داند .
3- علامت = معنی حکم انتساب است و مقدار سمت راست را در متغیر سمت چپ قرار می دهد .
در صورتی که در انجام الگوریتم ها ی اموزش با مشکل مواجه شدید می توانید در قسمت نظرات ما رو در جریان بگذارید.
مدیریت وبلاگ:حسین عشوری زاده
|
امتیاز مطلب : 9
|
تعداد امتیازدهندگان : 8
|
مجموع امتیاز : 8