اینجا یه وبلاگ مفید برنامه نویسی برای برنامه نویسان ++C و همه علاقه مندان به برنامه نویسیه

الگوريتم ها

   برای حل مسائل مختلف توسط کامپيوتر بايد اين مسائل را به صورت مراحل عملياتی و تصميم گيری ساده ای که کامپيوتر قادر به اجرای آن باشد تبديل کرد. بدين ترتيب ليست مرتبی از مراحل عملياتی بدست می آيد که اجرای مرتب آنها منجر به حل مسئله توسط کامپيوتر می شود. اين ليست مرتب از مراحل عملياتی و تصميم گيری ، الگوريتم ناميده می شود.

   در حالت کلی الگوريتم ها بايد ويژگی های زير را داشته باشند:

الف) الگوريتم بايد ما را به نتيجه مورد نظر برساند.
ب) در زمان محدود پايان يابد.
ج) دستورالعملها بايد به ترتيب منطقی پشت سرهم قرار گيرند.
د) جملات الگوريتم ها بايد به صورت امری ، سؤالی باشند.
ه) هر الگوريتم بايد نقطه آغاز و پايان داشته باشد.

   يکی از توانايی هايی که در کامپيوتر وجود دارد استفاده از خانه های حافظه است که می توان در آن اطلاعات را قرار داد و در هر لحظه از اجرای الگوريتم می توان محتويات آن را تغيير داده و مقدار جديدی را در آن قرار دهيم اين ويژگی کارايی ما را برای حل مسائل پيچيده تر افزايش می دهد.

مثال : الگوريتم تعويض چرخ پنچر شده يک اتومبيل.

0- شروع.

1- جک را زير اتومبيل بگذاريد.

2- پيچهای چرخ پنچر شده را باز کنيد.

3- چرخ را خارج کنيد.

4- چرخ يدک را به جای چرخ پنچر شده بگذاريد.

5- پيچها را ببنديد.

6- اگر پيچها سفت نشده اند به مرحله 5 برو.

7- جک را پايين بياوريد.

8- چرخ پنچر شده را در صندوق عقب اتومبيل بگذاريد.

9- پايان.

مثال : الگوريتمی بنويسيد که دو عدد از ورودی دريافت شود و سپس تعيين شود که مجموع دو عدد بزرگتر از 20 است يا نه.

0- شروع .

1- دو عدد a و b را از ورودی در يافت کن.

2- a+b را محاسبه کن.

3- آيا a+b>20 است؟ اگر بلی به مرحله 6 برو.

4- بنويس خير.

5- به مرحله 7 برو.

6- بنويس بلی.

7- پايان.

   با برنامه ريزی و ساماندهی دقيق می توان به راه حلی مناسب جهت حل يک مسئله به کمک کامپيوتر رسيد. هرگونه کم توجهی و بی دقتی در نوشتن الگوريتم ضمن بروز مشکلات بسيار، برنامه نويس را نيز از هدف خود دور خواهد کرد؛ لذا برای به هدف رسيدن بايد درک صحيح و کاملی از صورت مسئله داشت و سپس راه حل مورد نظر را به صورت الگوريتم بنويسيم. و در نهايت الگوريتم مورد نظر را به زبان برنامه نويسی مورد نظر تبديل کنيم. برای درک بهتر شيوه حل مسائل و نوشتن الگوريتم به مثالهای زير توجه کنيد:

مثال : الگوريتمی بنويسيد که مجموع اعداد طبيعی مضرب 7 و کوچکتر از 50 را حساب کند.

برای نوشتن اين الگوريتم به دو خانه حافظه نياز داريم.

0- شروع.

1- در خانه حافظه sum عدد صفر را قرار بده.

2- در خانه حافظه index عدد 7 را قرار بده.

3- مقدار index را با مقدارsum جمع کن

          و حاصل را در sum قرار بده.

4- مقدار 7 را با مقدار index جمع کن

          و حاصل را در index قرار بده.

5- آياindex بزگتراز 50 است،اگر خير به مرحله 3 برو.

6- محتوای sum را چاپ کن.

7- پايان.

 

 

در الگوريتم فوق مقادير حافظه sum و index تغيير می کند، تا اينکه سرانجام شرط " آيا index بزرگتر از 50 است " بلی می شود لذا محتوای sum در خروجی چاپ خواهد شد و الگوريتم به پايان می رسد. اما در مراحل قبلی شرط فوق خير می باشد، لذا الگوريتم ادامه پيدا می کند.

مثال : الگوريتمی بنويسيد که 1000 عدد را از ورودی دريافت کرده و کوچکترين را چاپ کند.

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

0- شروع.

1- min را دريافت کن.

2- i =1 .

3- a را دريافت کن.

4- اگر a<min آنگاه min = a .

5- i = i + 1 .

6- اگر i>=1000 به مرحله 8 برو.

7- به مرحله 3 برو.

8- min را چاپ کن.

9- پايان.

الگوريتم های قبلی به صورت جملات فارسی بودند که سبب طولانی و حجيم شدن الگوريتم می شدند. ولی الگوريتم اخير بيشتر به صورت جملات رياضی بود. اين شيوه سبب راحتی درک الگوريتم و ساده شدن نگارش آن می شود. از اين به بعد نيز الگوريتم ها را به شيوه جديد نگارش خواهيم کرد. شما نيز سعی کنيد از اين شيوه استفاده کنيد.

مثال : الگوريتمی بنويسيد که سه عدد از ورودی دريافت شود و تعيين شود که اين اعداد می توانند اضلاع مثلث باشند يا خير.

0- شروع.

1- a وb وc را از ورودی بگير.

2- اگر a>b+c به 7 برو.

3- اگر b>a+c به 7 برو.

4- اگرc>a+b به 7 برو.

5- بنويس " بلی ".

6- به 8 برو.

7- بنويس " خير ".

8- پايان.

 

فلوچارت

در عمل برای نمايش الگوريتم از يک فلوچارت ( شمای جريان عمليات ) استفاده می شود. در حقيقت فلوچارت روش تصويری و استاندارد نمايش الگوريتم است.

در رسم فلوچارت علائم و نمادهای استانداردی به کار می رود که هر کدام دارای معانی ويژه ای هستند.

از شکل بيضی افقی برای شروع و پايان عمليات استفاده می شود.

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

از نماد لوزی برای نشان دادن مراحل تصميم گيری استفاده می گردد و شرط يا سؤال مورد نظر در داخل لوزی نوشته می شود.

از متوازی الاضلاع برای نشان دادن ورودی يا خروجی استفاده می شود.

 

+ نوشته شده در  ساعت   توسط wilyprotozoon  |