نوشتن نرم افزار
حالا كه توانستيد ويژوال #2005 C را اجرا كرده و حتي يك برنامه كوچك ولي قابل اجرا با آن بنويسيد، بهتـر اسـت در ايـن فـصل مباني فرآيند نوشتن يك نرم افزار را ياد بگيريد و كدهاي خودتان را در كنار هم قرار دهيد و برنامه هاي جذابي طراحي كنيد .
در اين درس :
در رابطه با الگوريتم ها مطالبي را خواهيد آموخت.
چگونگي استفاده از متغيير ها را خواهيد ديد.
با انواع مختلف داده ها از قبيل اعداد صحيح، اعشاري، رشته ها و تاريخ ها آشنا خواهيد شد.
با دامنه فعاليت متغيير ها آشنا مي شويد.
با خطا يابي در برنامه ها آشنا خواهيد شد.
چگونگي ذخيره شدن داده ها در حافظه كامپيوتر را مشاهده خواهيد كرد.
داده ها و اطلاعات :
اطلاعات به توضيحاتي گفته ميشود كه راجع به واقعيتي بيان مي شود . اين اطلاعات ميتوانند در هر قالبي جمع آوري و يا ارائه شوند،به گونه اي كه براي درك توسط كامپيوترها و يا انسانها مناسب با . شد مثلا اگر شما چند نفـر را بـراي بررسـي وضـعيت ترافيـك بـهچندين چهارراه مختلف بفرستيد، در پايان كار با چند گزارش دست نويس كه وضعيت عبور ماشينها را در چهارراه هاي مختلـف بيـانمي كند روبرو مي شويد. اين گزارشات را ميتوان اطلاعاتي در نظر گرفت كه براي انسان قابل فهم هستند .به اطلاعات جمع آوري شده، مرتب شده و قالب بندي شده، به نحوي كه توسط قسمتي از برنامه هاي كامپيوتري قابل استفاده باشد،داده مي گويند . اطلاعاتي كه شما داريد (چندين دفتر پر از متنهاي دست نويس ) به وسيله نـرم افزارهـاي كـامپيوتري قابـل اسـتفادهنيستند. براي تبديل آنها به داده هاي قابل استفاده توسط كامپيوتر بايد چندين نفر روي آنها كار كنند و قالب آن را تغيير دهند .
الگوريتم ها :
صنعت كامپيوتر به اين معروف است كه با سرعتي باورنكردني در حال تغيير است . بيشتر متخصصان اين رشته در تمام دوران فعاليـتخود، دائما در حال آموزش و يادگيري هستند تا اطلاعات خود را به روز نگه دارند . اما بعضي از قسمتهاي كامپيوتر، از زمـاني كـه بـهوجود آمده اند تا كنون تغييري نكرده اند و احتمالا در طول عمر ما هم تغييري نخواهند كرد . فرآيند و ترتيب موجـود در توسـعه نـرمافزار نمونه اي از جنبه هاي تكنولوژي كامپيوتر است كه ماهيت اصلي آن از ابتدا تاكنون دچار تغيير نشده است .براي كار كردن يك نرم افزار، يك سري داده نياز است كه روي آنها پردازش انجام شود . نرم افزار اين داده ها را دريافت ميكند و بـه فرمي ديگر تبديل ميكند و ارائه مي دهد . براي مثال، يك برنامه بانك اطلاعاتي، اطلاعات مشتريان شما را كه به صورت صفر و يكنوشته شده است دريافت مي كند و آنها را براي شما در مانيتور نمايش مي دهد . يا سرويس تلفن شما، مدت زمان تماسـهاي شـما راذخيره كرده و صورت حساب ها را بر اساس اين اطلاعات توليد مي كند .
اما اساس فعاليت همه اي ن نرم افزارها، الگوريتم آنها است . قبل از اينكه شما بتوانيد برنامه اي بنويسيد تا مسئله اي را حل كند، ابتـدابايد آن را به چند مسئله كوچكتر تقسيم كنيد، و چگونگي حل اين مسايل را قدم به قدم توضـيح دهيـد . الگـوريتم برنامـه هـا كـاملامستقل از زبان برنامه نويسي است كه براي نوشتن برنامه از آن استفاده ميكنيد . بنابراين شما ميتوانيد الگوريتم يك برنامـه را بـه هـرنحوي كه به شما كمك ميكند تا مسئله را درك كنيد بازگو كنيد . مثلا ميتوانيد آن را به زباني كه با آن صحبت ميكنيد براي خودتـان توضيح بدهيد و يا آن را به وسيله شكلها و نمودارها رسم كنيد .
فرض كنيد شما براي يك شركت خدمات تلفني كار ميكنيد و ميخواهيد صورت حساب مشتركين را بر اساس تماسهايي كه گرفته اندمشخص كنيد. الگوريتمي كه براي حل مسئله بالا ميتوانيد به كار ببريد، ميتواند مشابه الگوريتم زير باشد :
)1 در ابتداي هر ماه شما بايد صورت حساب هر يك از مشتركين خود را محاسبه كنيد .
)2 براي هر مشترك، شما ليست تماسهايي كه آن مشترك در ماه قبل گرفته است را داريد.
)3 شما مدت هر تماس و ساعتي كه آن تماس گرفته شده بود را ميدانيد و بر اساس اين اطلاعات ميتوانيد هزينه هر تماس را
مشخص كنيد.
)4 براي هر مشترك، صورت حساب او برابر است با مجموع هزينه تمام تماسهايي كه داشته است.
)5 ماليات هر صورت حساب را محاسبه مي كنيد.
)6 بعد از اين كه صورت حساب نهايي محاسبه شد، بايد آن را چاپ كنيد.
اين شش مرحله، الگوريتم قسمتي از نرم افزاري است كه هزينه ماهيانه مشتركين يك مركز خدمات تلفن ي را محاسبه ميكند. تفـاوتي ندارد شما اين نرم افزار را با چه زبان برنامه نويسي مي نويسيد، ++C# ،C، ويژوال بيـسيك، #J، جـاوا و يـا هـر زبـان ديگـري،الگوريتم كلي برنامه تغييري نميكند . (البته اين هفت مرحله هم خيلي كلي هستند و بايد قبل از اين كه به وسـيله يـك زبـان برنا مـه نويسي نوشته شوند به مراحل كوچكتري شكسته شوند و جزئيات بيشتري از آن شرح داده شود )حالا براي افرادي كه تازه وارد برنامه نويسي شده اند، يك خبر خوب و يك خبر بد دارم . خبر خوب اين است كه معمـولا ايجـاد يـك الگوريتم بسيار ساده است . مثلا در الگوريتم قبلي، فكر نكنم قسمتي به نظر شما گنگ باشد و واضح به نظر نرسد . معمولا الگوريتم ها از يك سري استدلال هايي پيروي ميكنند كه از نظر مردم عادي درست است . البته ممكن است كه شما با الگـوريتم هـايي برخـورد كنيد كه داراي فرمولهاي پيچيده رياضي و يا فرمولهاي ديگر علوم باشند و تصور كنيد كه اين فرمول ها با استدلال هاي شما درست به نظر نمي رسند، اما خوب اين فرمول ها هم از نظر افراد ديگري كه آنها را ميدانند درست به نظر ميرسد . اما خبر بد ايـن اسـت كـه معمولا تبديل يك الگوريتم به كد برنامه كار مشكلي است . بنابراين به عنوان يك برنامه نويس اين كه بدانيد چگونه يك الگـوريتم راتوسط يك زبان برنامه نويسي پياده كنيد مهم است .
همه برنامه نويسان حرفه اي بر اين اصل عقيده دارند كه تقدم يك زبان برنامه نويسي بر زبان برنامه نويسي ديگر، كـاملا بـي ربـطاست. زبانهاي برنامه نويسي متفاوت ميتوانند كارهاي مختلفي را راحت تر و سريعتر انجام دهند. مثلا ++C به برنامه نويسان قـدرتزيادي در كنترل نحوه اجراي برنامه ميدهد و همچنين برنامه هاي آن نيز از سرعت اجراي بالايي برخوردار هستند، اما بـدي آن ايـناست كه برنامه نويسي به اين زبان بسيار مشكل است و يادگيري آن براي مبتديان معمولا بسيار سخت است. در مقابل برنامه نويسيو يادگيري زبان ويژوال بيسيك بسيار راحت تر است، اما برنامه نويس در اين زبان كنتـرل كـافي بـر روي برنامـه نـدارد (زبـان #Cهمانطور كه ادعا شده است، زباني است كه از سادگي زباني مانند ويژوال بيسيك و قدرت زباني مانند ++C برخوردار اسـت ).
چيـزي كه شما بايد به عنوان يك برنامه نويس ياد بگيريد اين است كه بتوانيد براي حل يك مسئله، زبانهاي برنامه نويسي مختلف را بررسيكنيد. البته زماني كه شروع مي كنيد كه اولين زبان برنامه نويسي را ياد بگيريد، در آن پيشرفت كنـدي خواهيـد داشـت، امـا معمـولازبانهاي برنام ه نويسي در نحوه اجرا و پياده كردن الگوريتم ها تفاوتي ندارند . بنابراين زماني كه يك زبان برنامه نويسي را ياد گرفتيـد،مي توانيد از تجربه خود در الگوريتم ها و يا حتي كد زبان قبلي در زبان جديد نيز استفاده كرده و چندين زبان ديگر را نيز بـه سـرعت ياد بگيري
