C – ۵

نحوه برنامه‌سازی

اینکه آدم هر مهملی رو بخواد به زبان C یا هر زبان دیگری بنویسه چیز جالبی نیست و نتیجه جالبی نیز نخواهد داشت. در واقع برنامه نویسی مانند هر چیز دیگری یه سری پیش تفکر و برنامه‌ریزی میخواد. ما این گامها رو به این شکل بیان میکنیم:

تعریف اهداف برنامه

بررسی و کنکاش ایده ای که در ذهنتونه. برای چی دارم برنامه مینویسم؟ قراره چه کاری برام انجام بده؟ چه ورودی هایی باید بگیره برنامه م؟ چه خروجی بهم میده؟ در این مرحله نباید در جزئیات وارد شد. فقط باید به شمای کلی و اهداف بصورت دید از بالا نگاه کرد، مفهومی.

طراحی برنامه

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

نوشتن شبه کد

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

۱- یک پیغام از کاربر میخواهد دو عدد را با یک فاصله وارد کند
۲- یک تابع دو عدد ورودی را از کاربر میگیرد و در دو متغیر قرار میدهد
۳- حاصل جمع این دو عدد در متغیر سومی قرار میگیرد
۴- مقدار موجود در متغیر سوم را چاپ میکنیم

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

نوشتن کد

ترجمه چیزی که در مرحله قبل نوشتید، به زبان C. اینجا باید واقعا از آموزه هاتون بخوبی استفاده کنید. در اول که تازه مفاهیم جدید رو یاد میگیرم ساده ست اما هرچه بیشتر پیش میریم پیچیده تر و جالب تر میشن. در حقیقت مثل مصالح ساختمانیه. آجر و سیمان و گچ. اما چجوریه که یکی با این مصالح لونه مرغ میسازه یکی کاخ نیاوران؟ هنرِ مهندسیه. هنرِ برنامه نویسی. هنرِ ساخت معماری های پیچیده و قشنگ با مصالح ساده.

خب حالا میخوایم شبه کد مرحله قبل رو بیاریم در C با ادیتور محبوب خودمون و با قواعد و دستور زبان C پیاده کنیم. اگر چیزی متوجه نشدید اصلا نگران نباشید. چون قرار نیست الان متوجه بشید. حوصله کنید بزودی همه چی مثل موم در کف دستاتون خواهد بود. از روی چیزی هم که براتون سخت و نامفهومه ابدا رد نشید. سعی کنید بخونیدش و یه چیزایی رو هرچند که درست هم نباشه برای خودتون متوجه بشید. سعی کنید الگوهایی رو تشخیص بدید تو برنامه. خب برنامه مون رو بنویسیم.

calculator.c

یه موضوع بسیار مهم که در برنامه نویسی باید بهش عادت کنید مستندسازی و نوشتن توضیحاته که من عمدا ننوشتم. به این دلیل که اولا هنوز راجع بهش صحبتی نکردیم. دوما بعدا بدونید برنامه بدون مستندات تا چه حد میتونه بد باشه.
حالا که ما هدف برنامه‌مونو تعیین کردیم. طرحشو تو ذهنمیون کشیدیم. شبه کدش رو نوشتیم و تبدیلش کردیم به یک برنامه درست در زبان C باید برنامه رو کامپایل کنیم.

کامپایل کردن برنامه

همچنان که قبلا توضیح دادیم کامپایل کردن برنامه در ترمینال سیستمهای nix* (گنو/لینوکس-BSDها و حتما macOS) به این صورته:

با این دستور به کامپایلر gcc میگیم که فایل calculator.c رو که حاوی کدهای ماست بگیره و یک فایل خروجیِ ماشینیِ قابل اجرا به نام calculator بهمون بده. اگر در نوشتن برنامه مرتکب خطایی شده باشیم(مخصوصا خطای دستوری) کامپایلر gcc با استفاده از عیب یاب یا دیباگر gdb بهمون اعلام میکنه که خطایی در برنامه مون هست و باید درستش کنیم. همینجا باید یه عذرخواهی بکنم از کاربران ویندوزی. متاسفانه من هیچگونه اطلاعاتی در مورد ویندوز و نحوه کامپایل برنامه در خط فرمان ویندوز ندارم. امیدوارم دوستانی که میدونن تشریف بیارن و توضیح بدن.

اجرای برنامه

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

سپس کلید Enter یا Execute رو میزنم. خروجی به این شکل خواهد بود:

در این قسمت برنامه منتظر میماند تا کاربر دو عدد صحیح را با فاصله وارد کند. مانند ۱۲  ۱۳

بعد از فشردن Enter خروجی بدین شکل خواهد بود.

تست و عیب یابی برنامه

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

نگهداری و تغییر برنامه

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

درباره نویسنده: Hoshyar Karimi

مطالب زیر را حتما بخوانید

1 Comment

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *