آموزش تخصصی برنامه نویسی

آنچه برای برنامه نویسی باید بدانیم

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


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

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

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

 

استفاده از 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% بی خطاست . چرا که بعضی اشکالات در زمان کاربری نمود پیدا می کنند و آن وقت باید اقدام به اشکال زدایی کنیم.

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

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

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

موفق باشید.


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


+ نوشته شده در  چهارشنبه 3 مهر1387ساعت 6:55  توسط مریم جوادی آرا  | 

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


بخش اول

 هدف كلي 
                                 توانايي برخورد با مسائل برنامه نويسي

 

 هدفهاي رفتاري

           پس از پايان مطالعه اين بخش از فراگير انتظار مي رود كه :

1. مراحل برخورد با مسائل برنامه نويسي را بداند . 
2. هر يك از مراحل را تحليل كند . 
3. مفهوم الگوريتم را بيان كند . 
4. روش هاي بيان الگوريتم را بشناسد . 
5. قادر باشد عملیات مربوط به Trace را انجام دهد و اهمیت آن را بداند.
6. توانایی تصمیم گیری در مورد استفاده از نوع بیان الگوریتم را داشته باشد.
7. مراحل برخورد با پروژه ها را بداند و بتواند آن ها را تحلیل کند.


در این بخش به این موضوع می پردازیم که : مساله اي در اختيار ما قرار مي گيرد كه باید به زبان خاصي حل كنيم، چطور باید آن را حل کرد؟

شروع  بخش اول :

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

چگونگي نوشتن يك برنامه به زبان خاص 
مراحل 5 گانه حل یک مساله

1. ورودي ها يعني : بررسي داده ها يا معلومات مساله (از مساله بپرسید،چی-چیا رو باید حساب کتاب کنم؟)
2. خروجي ها يعني: بررسي مجهولات (از مساله بپرسید،چی-چیا باید نمایش داده شود؟)
3. ارتباط منطقي يعني : يافتن ارتباط بين داده ها و مجهولات (از مساله بپرسید،چجوری از ورودی به خروجی برسم؟)
4. ارائه راه حل  يعني : راه حل يا نقشه كلي مسير را پيدا كنيم تا طبق آن جلو برويم .  
5. بیان الگوریتم یعنی : راه حل خود را قدم به قدم بیان کنیم با روشی دلخواه که ترجیحا بهتر است فلوچارت باشد.


مثال 1  : 
ميانگين دو عدد 10 و 20 را حساب كنيد . 

1. ورودي : دو عدد 10 و 20 
2. خروجي : چاپ ميانگين 10 و 20 
3. رابطه منطقي : روش محاسبه ميانگين (مجموع اعداد  تقسيم بر تعداد)
4. ارائه راه حل :

بايد برنامه ام 2 عدد 10 و 20 رو خودش داشته باشه (در جاهاي مخصوصي كه من بدونم ) بعد اون دو رو از جاشون بردارم و بعد از جمع و تقسيم بر 2 در جاي ديگري قرار دهم و با گفتن جاي آن ، ميانگين اين دو عدد را چاپ كنم .

 5. بيان الگوريتم : 

روش اول بیان الگوریتم شبکه کد

شبه كد : 
1. شروع 
2. دو عدد 10 و 20 را بگير .
 3. 10+20/2 را محاسبه کن و درمكاني (متغيري)به نام  C   قرار بده .
4. C را چاپ کن.
5. پایان

شبه كد : بيان الگوريتم با استفاده از كلمات ، عبارات و علائم رياضي .

 

روش دوم بیان الگوریتم فلوچارت

فلوچارت :

فلوچارت : نمايش گرافيكي الگوريتم .


 اما چطور فلوچارت بکشیم ؟

 متداول ترين شكلها در فلوچارت :

• بيضي : مفهوم شروع و پايان را مي رساند . 
• مستطيل : مفهوم عمليات پردازش مثل محاسبات رياضي 
را مي رساند. 
• متوازي الاضلاع : مفهوم اين را مي رساند كه داده يا داده هايي در حال ورودند و يا اطلاعاتي در حال خروجند . 
• لوزي : مفهوم چندراهی را می رساند مثلا اگر شرطی برقرار بود از مسیر اول مساله حل شود و اگر شرط برقرار نبود از مسیر بعدی حل شود و ...  
دايره كوچك   O :  اتصالات ، مثلا در حال نوشتن هستيم اما فضاي كافي وجود ندارد با گذاشتن اين علامت در هر دو طرف ديگران را متوجه مي كنيم
 كه اين دو با هم ارتباط دارند و ادامه يكديگرند . 
· ----] توضيحات ، براي اينكه برنامه خوانا و قابل فهم باشد. 
تكرار :  بيشتر مواقع برنامه هاي ما مرحله يا مراحلي را دارد كه بايد طبق شرايط خاصي دوباره تكرار شود خيلي ساده با برگرداندن فلش به آن مرحله ، تكرار را معلوم مي كنيم كه به اصطلاح به اين عمل Loop   يا حلقه مي گويند.

 نکته : هميشه سعي كنيد( چه در الگوريتم و چه در كد برنامه ) براي هر مرحله خود توضيح يا كامنت بگذاريد تا هم برنامه خوانا و قابل فهم، براي ديگران و خودتان باشد و هم در بازديد هاي بعديتان ، باز متوجه شويد كه چرا مرحله اي را نوشته ايد ؟!

خب فعلا این جلسه را به پایان می رسانیم و در جلسه ی بعد ادامه می دهیم. 

موفق باشید.


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

+ نوشته شده در  یکشنبه 23 تیر1387ساعت 3:0  توسط مریم جوادی آرا  | 

 
 RSS  تحلیل آمار سایت و وبلاگ