جلسه دوم الگوریتم و فلوچارت

تازه ها

جلسه دوم الگوریتم و فلوچارت

نظرات ()


ادامه بخش اول ( قسمت پایانی )

خب در جلسه ی پیش یاد گرفتیم که هر مساله ای را چگونه حل کنیم و چگونه راه حل مساله را به روش فلوچارت بیان کنیم؟

حال در این جلسه مطالب تکمیلی آنرا با هم ادامه می دهیم.

 

استفاده از Trace

نکته ای که باید حین الگوریتم نویسی بدان توجه داشته باشیم این است که :

بهتر است همزمان با نوشتن الگوريتم آنرا Trace  كنيم تا در جريان الگوريتم باشيم و اگر الگوريتم ما مشكلي داشت 

قبل از اجرا با كامپيوتر آنرا رفع كنيم و همچنين با Trace  مي توان مراحل بعدي الگوريتم را حدس زد و در صورت درستي به  حل مساله اضافه کرد

اما Trace  چیست ؟   Traceيعني آزمودن دستي همراه با داده ی نمونه 

برای Trace برنامه جدولی میکشیم ، متغیرها و خروجی یا خروجی های برنامه را در سطر اول می چینیم ، و در سطر های بعدی مقادیر آنها را می گذاریم.

مرحله به مرحله جلو میرویم و همینطور مقادیر آنها را با توجه به روند برنامه میگذاریم. تا اینکه به خروجی برسیم .

خروجی بدست آمده را با خروجی مورد انتظار خود مقایسه می کنیم. اگر درست بود که یعنی ، الگوریتم درست است و اگر نبود الگوریتم را اصلاح میکنیم تا به جواب برسیم.

مثال قبل را با هم Trace  می کنیم ببینیم که آیا خروجی مدنظر ما را می دهد یا نه. 

دقیقا طبق هر باکس فلوچارت مرحله مرحله جلو می رویم تا مقادیر را داشته باشیم و نتیجه میشود شکل زیر :

سوالهایی که در اینجا مطرح است ، این است که :

چرا در فلوچارت متغیرهای A,B را نداشتیم و در اینجا داریم ؟

و چرا مقدار c در مرحله ی اول صفر است ؟ 

اینها به نکات متغیرها باز می گردد که در جلسه ای جداگانه به آنها می پردازیم. در اینجا فقط روش Trace  را یاد بگیرید.

چگونگي نوشتن يك پروژه به زبان خاص 

مراحل 5 گانه حل پروژه

1.حل مساله (همان مراحل 5 گانه حل مساله) (روی کاغذ) – بدست آمدن الگوریتم یا راه حل مساله

2.تبدیل الگوریتم به کد زبان مورد نظر (روی کاغذ) – بدست آمدن کد برنامه

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

3.انتقال کد به کامپیوتر

 -نامي متناسب با برنامه در نظر گرفته و ذخيره اوليه را انجام مي دهيم . 

-در موقع افزودن كد بعد از هر چند خط عمليات ذخيره سازي را بروز مي كنيم كه به آن مي گوييم : ذخيره سازي مكرر 

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

4. آزمايش برنامه و رفع اشكال 

بعد از اينكه برنامه ي كد شده وارد كامپيوتر شد ، زمان آن مي رسد كه برنامه را مورد آزمايش قرار دهيم ( از طريق كامپيوتر (وقتی برنامه را اجرا می کنیم ، قبل اجرا برنامه کامپایل می شود تا خطاهای آن را نشان دهد جهت اشکال زدایی.

هدف از آزمايش برنامه اشكال زدايي است .

5. تعميم و نگه داری 

درصد زيادي از هزينه هاي خرج شده براي يك برنامه كاربردي مربوط به نگه داري و ارتقاي آن است . 

هدف از نگه داريتصحيح و توسعه ، ارتقاء و بهبود برنامه بعد از نصب آن است .

                    

نکات مهم :

نکات مرحله 1 و 2 :

دلیل اینکه گفته میشود مراحل 1 و 2 را روی کاغذ بنویسیم این است که : حتما حین الگوریتم نویسی و کد نویسی Trace کنیم تا منطق برنامه درست باشد بعد از اینکه اطمینان پیدا کردیم منطق برنامه درست است ، کد را منتقل به کامپیوتر کنیم.

چرا که در مراحل آخر که برنامه یا کامپایلر برنامه را اشکال  یابی می کند خیلی سخت است که اشکال زدایی کنیم و بهتر است اشکالاتی که در آن مرحله پیش می آید در حد اشکالات تایپی باشد. برای بروز مشکلات منطقی برنامه بهتر است این توصیه را بکار بریم.

حالا سوال اینجاست که چرا هم در مرحله ی الگوریتم نویسی و هم در مرحله ی کد نویسی Trace  کنیم ؟

چون ممکن است در الگوریتم نویسی برنامه جواب دهد ولی در کد نویسی نه! ممکن است تبدیل الگوریتم به کد را به درستی انجام نداده باشیم و جواب نهایی دچار اشکال شود. پس بهتر است در این مرحله هم Trace  کنیم.

نکات مرحله 4 :

لازم به ذکر است که

 معمولا اشتباهاتی که حین برنامه نویسی در  مرحله 4 رخ می دهد 2 دسته اند :

1. دستوري (Syntax Errors )  : يعني عدم رعايت قواعد زبان برنامه نويسي يا همان اشكال در کدنویسی.

مثلا به جاي نوشتن if  مي نويسيم iff  كه مطمئنا برنامه اين اشتباه را به ما گوشزد مي كند .که مشکلی نداره راحت برطرف می کنیم.

2. منطقي (Semantic Errors ) : يعني قواعد زبان رعايت شده اما منطق درست نيست . كه يافتن اين مشكلات بسيار سخت و اصولي است که برای بروز چنین مشکلاتی گفته شد Trace  کنیم.

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

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

نکات مرحله 5 :

مرحله ی نگهداری مرحله ی بسیار مهمی است چرا که :

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

نکته ی مهم دیگری که باید به آن اشاره کنم این است که :

هیچ وقت نمیتوان گفت برنامه 100% بی خطاست . چرا که بعضی اشکالات در زمان کاربری نمود پیدا می کنند و آن وقت باید اقدام به اشکال زدایی کنیم.

مثل ورژن های مختلف ویندوز . آنقدر برنامه بزرگ هست که هر چقدرم اشکال زدایی کنیم حتی اشکال زدایی گروهی ، الگوریتم های مختلف خطایابی ، باز برنامه ممکن است اشکال داشته باشد که در سطح کاربری اشکالات پیدا می شود و آن اشکالات را برطرف می کنیم و ورژن بعدی را معرفی می کنیم. این هم دلیل دیگری برای اهمیت مرحله ی نگهداری.

پس بهتر است حتما در حین برنامه نویسی مستندسازی داشته باشیم یعنی برنامه چطور نوشته شده ، متغیرها کدام ها هستند ، بر روی چه سیستمی کار می کند و ... در کنار کدها هم توضیحات لازم را بنویسیم تا بتوانیم به خوبی این مرحله را هم بگذرانیم.

خب بخش اول به پایان رسید. ان شاءالله در جلسه ی  آینده الفبای برنامه نویسی را با هم یاد می گیریم.

موفق باشید.


 <جلسه قبل ــ جلسه بعد>