حل مسئله و اصول برنامه نويسي

منابع و مآخذ :
كتابهاي مباني علم رايانه و مباني كامپيوتر

ما در زندگي روزمره همواره با مسايل گوناگوني روبرو مي شويم ، بسياري از مسايل با دنبال نمودن يك روند عادي حل مي شوند . روند عادي عبارت است از مجموعه اي از دستورالعمل ها كه براي حل مسئله بايد قدم به قدم دنبال شوند . گاهي ما با روند حل مساله آشنا نيستيم در اين مواقع اگر دستورالعمل هاي مورد نياز براي حل آن مسئله را داشته باشيم مي توانيم به ترتيب آنها را اجرا كنيم .

برنامه نويسي در واقع روشي براي حل مسئله است قبل از آنكه با روش صحيح برنامه نويسي آشنا شويم بايد بدانيم برنامه چيست . يك برنامه فهرستي از دستورالعملهاست كه رايانه براي حل يك مسئله ي خاص بايد قدم به قدم دنبال كند . برنامه نويسي عبارت است از يك فرآيند شش مرحله اي براي حل مسئله شش مرحله ي موجود در برنامه نويسي عبارتند از :
۱)تعريف مسئله ۲)طرح روش حل مسئله ۳)كد نويسي روش حل ۴)آزمايش برنامه ۵)مستندسازي برنامه ۶)تعميم و نگهداري برنامه
مرحله اول : تعريف مسئله :

اولين وظيفه ي برنامه نويس شناخت صحيح مسئله است در برخورد با هر مسئله توجه به نكته هاي زير مارا به تعريف صحيح مسئله هدايت مي كند .
نكته اول : تعيين هدف و منظور از حل مساله نكته دوم : تعيين خروجي مطلوب نكته سوم : تعيين ورودي مورد نياز نكته چهارم : تعيين پردازش مناسب نكته پنجم : مستندسازي يا مكتوب كردن تعريف مسئله .

مرحله دوم : طرح و روش حل مسئله :
پس از تعريف مسئله مرحله بعدي بيان دقيق چگونگي حل مسئله يا طراحي يك روش براي حل مسئله است . مجموعه ي مراحل و قدم هاي لازم در فرايند رسيدن به معلومات موجود به پاسخ مطلوب روش حل مساله يا الگوريتم ناميده مي شود .
طراحي الگوريتم كه مشخص كننده‌ي يك روش ويژه براي حل مسئله يا انجام يك كار است اولين قدم در طرح روش حل مسئله است . برنامه نويس بايد الگوريتم را با استفاده از جملات ، دياگرام ها ، نمودارها و جدول ها به وضوح بيان نمايد . براي انجام اين كار ، روش ها و فن هايي وجود دارد . برخي از اين روشها و فن ها عباراتند از : ۱-طراحي بالا به پائين ۲-شبه كد ۳-نمودار گردشي .

طراحي بالا به پائين : طراحي بالا به پايين يعني شكستن مسئله‌ي بزرگ و پيچيده به مسايل كوچك و ساده . در طراحي بالا به پائين برنامه از سطوح مختلفي تشكيل شده است كه سطوح بالاتر سطوح پايين تر را كنترل مي كنند . تمام سطوح از قسمت هاي مجزا و حتي الامكان مستقل از هم به نام پيمانه ساخته شده اند به اين روش برنامه نويسي كه در آن برنامه از پيمانه هاي مجزا ساخته شده برنامه نويسي پيمانه اي گفته مي شود .

شبه كد :
شبه كد عبارت است از بيان الگوريتم با استفاده از كلمات ، عبارات و علايم رياضي .
شبه كد يكي از روشهاي بيان الگوريتم است كه به سادگي به يك برنامه‌ي واقعي تبديل مي شود . شبه كد اين امكان را براي طرح روش حل فراهم مي‌سازد كه بدون در نظر گرفتن مقتضيات و ويژگي هاي زبان هاي مختلف به ساختار كلي روش حل مسئله توجه كند .

نمودار گردشي :
نمودار گردشي نمايش گرافيكي يا تصويري الگوريتم مي باشد .
متداول ترين نمادها در رسم نمودار گردشي عبارتند از :
: بيضي براي نشان دادن مرحله‌ي شروع و پايان .

: مستطيل براي نشان دادن عمليات پردازش از قبيل محاسبات رياضي.
: متوازي الاضلاع براي نشان دادن ورود داده و خروج اطلاعات .
: لوزي براي بيان «انتخاب»يا«انشعاب» درشكل مزبور يك علامت سوال وجود دارد و پاسخ «بلي» يا «خير» ، تعيين كننده ي مسير انتخابي خواهد بود .

ساختارهاي كنترلي :

يك ساختار شبكه كنترلي يك چارچوب منطقي است كه تعيين كننده ي ترتيب انجام عمليات است .
همه ي ساختارهاي كنترلي در طراحي ساخت يافته‌داراي يك ويژگي مشترك و بسيار مهم هستند . همه داراي يك ورودي و يك خروجي هستند . اين مطلب باعث ساده شدن فهم ، عيب يابي و نگهداري برنامه هاي ساخت يافته مي شود .
انواع ساختارهاي كنترلي عبارتند از :

۱)ساختار توالي و ترتيب :
در ساختار توالي و ترتيب يك دستورالعمل به دنبال دستورالعمل بعدي مي‌آيد .
۲-ساختار انتخاب :
ساختار انتخاب زماني به كار مي رود كه نياز به تصميم گيري باشد . نتيجه تصميم تعيين خواهد نمود كه از دو مسير موجود كداميك انتخاب گردد . ساختار انتخاب امكان انتخاب يكي از دو مسير موجود را فراهم مي آورد .

۳-ساختار تكرار و حلقه :
در ساختار تكرار و حلقه ، اجراي يك رشته دستورالعمل تا زماني كه شرايط خاصي برقرار است تكرار مي شود . در نمودار گردشي ، ساختار تكرار و حلقه ي مسير حركت به طرف بالا است .
بهترين راه براي برقراري ارتباط بين اجزا و بيان منطق حاكم بر الگوريتم ، تركيبي از سه ساختار كنترلي توالي و ترتيب ، انتخاب و حلقه است . اصل اساسي در طراحي و برنامه نويسي ساخت يافته تهيه همه ي برنامه ها با استفاده از اين سه ساختار است .
مرحله ي سوم : كدنويسي روش حل مسئله
پس از آنكه الگوريتم حل مسئله تعيين و طراحي آن تكميل شد مرحله بعدي نوشتن كد روش حل (برنامه) است . كدنويسي فرايندي است براي بيان الگوريتم با جزئيات كامل ، با استفاده از يك زبان برنامه نويسي است .
اين مرحله در واقع ساده ترين و سريع ترين مرحله از مراحل شش گانه ي برنامه نويسي مي باشد .
تصميم مهمي كه بايد در اين مرحله گرفت انتخاب يك زبان برنامه نويسي مناسب مي باشد . امروزه زبان هاي برنامه نويسي بسياري وجود دارند . متداول ترين زبان هاي برنامه نويسي براي ريز رايانه ها عبارتند از بيسيك ، پاسكال وزبان C .
مرحله چهارم : آزمايش برنامه
معمولاً سخت ترين و طولاني ترين مرحله در فرايند برنامه نويسي آزمايش برنامه است . هدف از آزمايش برنامه اشكال زدايي آن است .
آزمايش برنامه يعني وارد كردن برنامه به رايانه جهت يافتن اشكالات احتمالي در برنامه و سپس تصحيح اشكالات موجود . در اين مرحله بايد جدولي از داده هاي ورودي مختلف (اعم از معتبر و غيرمعتبر) تهيه نمود و پس از آزمايش برنامه با آنها اشتباهات احتمالي آن را يافت .
اشتباهات برنامه نويسي به دو دسته تقسيم مي شوند : اشتباهات دستوري و اشتباهات منطقي .
اشتباهات دستوري :

اشتباه دستوري يعني اختلال و عدم رعايت قواعد زبان برنامه نويسي
۲-اشتباهات منطقي :
اشتباه منطقي زماني رخ مي دهد كه برنامه نويس از محاسبات ناصحيح استفاده نمايد يا اين كه يك روند با ويژگي برنامه و برنامه نويسي در نظر گرفته نشود .
روش هاي مختلفي براي يافتن و رفع هر دو نوع اشتباه وجود دارد .

۱-آزمايش دستي : در اين روش برنامه نويسي با خواندن ودنبال كردن توالي دستورات برنامه به دنبال غلط هاي دستوري و منطقي مي شود .
۲-آزمايش دستي با داده ي نمونه : داده درست و غلط به طور دستي به برنامه داده مي شود تا نتايج به دست آمده و پردازش صورت گرفته آزمايش شوند .
۳-استفاده از برنامه ي مترجم : برنامه ي مترجم برنامه ي نوشته شده را از زبان برنامه نويسي به زبان ماشين ترجمه مي كند .
۴-آزمايش داده ي نمونه روي رايانه : داده ي نمونه براي آزمايش اجراي صحيح دستورالعمل موجود در برنامه به كار مي رود .

۵-آزمايش برنامه توسط گروهي از كاربران : مزيت اين روش اين است كه يك كاربر عادي ممكن است به طور آگاهانه يا تصادفي با اشكالي برخورد كند كه به ذهن برنامه نويس نرسيده باشد .
مرحله پنجم : مستندسازي برنامه

در اين مرحله بايد مستنداتمراحل قبل مرتب شده و يك نتيجه گيري از كل فرايندحل مسئله به آن اضافه شود . در اين نتيجه گيري معمولاً‌ توفيق برنامه در رسيدن به اهداف تعيين شده در مرحله ي تعريف مسئله ارزيابي مي شود . جمع آوري اطلاعات و مستندسازي بايد يك فعاليت مستمر در تمامي مراحل برنامه نويسي از ابتدا تا به آخر باشد . مستندسازي هم براي كاربراني كه مي‌خواهند با اطمينان از برنامه استفاده كنند و هم براي برنامه نويساني كه قرار است به دلايل مختلف در آينده در برنامه تغييراتي ايجاد كنند ، ضروري و مهم مي با

شد .
مرحله ششم : تعميم و نگه داري برنامه
هدف از نگهداري برنامه حصول اطمينان از عملكرد صحيح ، كارآمد و موثر برنامه پس از نصب آن است . تعميم و نگهداري برنامه يك فرايند مستمر براي تصحيح اشكالات كشف شده در زمان استفاده از برنامه ، ارتقاي برنامه براي سازگاري با سخت افزار و نرم افزار جديد و بهينه سازي آن مي باشد به عبارت دقيق تر نگهداري برنامه ، تصحيح ، توسعه ، ارتقاء و بهبود برنامه بعد از نصب آن است .

زبانهاي برنامه نويسي :
مي دانيم كامپيوتر تحت برنامه اي كه به او داده مي شود انجام وظيفه مي‌نمايد . اما اين برنامه چگونه به كامپيوتر داده مي شود . زبان يك سيستم ارتباطي است و زبان برنامه نويسي به مجموعه اي از علايم ، قواعد و دستورالعمل ها گفته مي شود كه امكان ارتباط با كامپيوتر را فراهم مي نمايد . هر زبان برنامه نويسي بايد قادر باشد دستورالعمل هاي معيني را براي كامپيوتر تعريف كند تا امكان اجراي عمليات موردنظر توسط كامپيوتر فراهم شود .