اجازه دهید تا به بررسی مراحل ایجاد و اجرای یک برنامه کاربردی C++ با استفاده از محیط توسعه C++ بپردازیم (شکل ۱-۱). اصولاً سیستم C++ متشکل از سه بخش است: محیط توسعه برنامه, زبان و کتابخانه استاندارد C++. عموماً برنامههای C++ از شش فاز یا مرحله عبور میکنند: ویرایش, پیش پردازش، کامپایل, لینک, بار شدن و اجرا. در ادامه به توضیح هر فاز میپردازیم.
فاز ۱: ایجاد برنامه
فاز ۱ مرکب از ویرایش یک فایل با استفاده از یک برنامه ویرایشگر است. با استفاده از یک ویرایشگر مبادرت به تایپ برنامه C++ کرده و هرگونه اصلاحات مورد نیاز را در آن اعمال و بر روی یک دستگاه ذخیرهسازی ثانویه, همانند دیسک سخت ذخیره میکنیم. فایلهای برنامه C++ دارای پسوندهای .cpp , .cxx , .cc یا .C میباشند (دقت کنید که C با حرف بزرگ است), که نشان میدهند, که فایل حاوی کد منبع C++ است. برای مشاهده پسوند فایل در محیط توسعه C++ به مستندات محیط توسعه C++ بکار رفته بر روی سیستم خود مراجعه کنید.
دو ویرایشگر که در سیستم UNIX کاربرد بیشتری دارند عبارتند از vi و emacs. بستههای نرمافزاری C++ برای ویندوز میکروسافت همانند
Metroworks CodeWarrior , Borland C++ , Microsoft Visual C++ www.msdn.microsoft.com/visualc
دارای ویرایشگر مجتمع در محیط برنامهنویسی خود هستند. البته میتوانید از یک ویرایشگر متنی ساده همانند Notepad در ویندوز, برای نوشتن کد C++ استفاده کنید. فرض ما بر این است که شما حداقل با نحوه ویرایش یک برنامه آشنا هستید.
فاز ۲ و ۳: پیش پردازنده و کامپایل یک برنامه C++
در فاز ۲, برنامهنویس, دستوری برای کامپایل برنامه صادر میکند. در یک سیستم C++, برنامه پیشپردازنده, قبل از اینکه فاز ترجمه کامپایلر شروع بکار کند, آغاز یا اجرا میشود (از اینرو به پیشپردازنده فاز ۲ و به کامپایل فاز ۳ نام گذاشتهایم). پیشپردازنده فرمانبر دستوراتی بنام رهنمود پیشپردازنده است که عملیات مشخص بر روی برنامه قبل از کامپایل آن انجام میدهند. معمولاً این عملیات شامل کامپایل سایر فایلهای متنی و انجام انواع جایگزینیها است. در فصلهای آتی با تعدادی از رهنمودهای پیشپردازنده آشنا خواهید شد. در فاز ۳, کامپایلر شروع به ترجمه برنامه C++ به کد زبان ماشین میکند که گاهاً بعنوان کد شی (object code) شناخته میشود.
فاز ۴: لینک
فاز ۴ معروف به فاز لینک است. معمولاً برنامههای C++ حاوی مراجعههایی به توابع و دادههای تعریف شده در بخشهای گوناگون هستند, همانند کتابخانههای استاندارد یا کتابخانههای خصوصی گروهی از برنامهنویسان که بر روی یک پروژه کار میکنند. کد شی تولید شده توسط کامپایلر C++ حاوی شکافهایی است که از فقدان این بخشها بوجود میآیند. برنامه لینکر مبادرت به لینک کد شی با کد توابع مفقوده میکند تا یک تصویر کامل و بدون شکاف بوجود آید. اگر برنامه بدرستی کامپایل و لینک گردد, یک نماد اجرایی تولید خواهد شد.
فاز ۵: بار شدن
فاز ۵, فاز بار شدن نام دارد. قبل از اینکه برنامه بتواند اجرا شود, ابتدا بایستی در حافظه جای گیرد. این کار توسط بارکننده (loader) صورت میگیرد که نماد اجرایی را از دیسک دریافت و به حافظه منتقل میکند. همچنین برخی از کامپونتها که از برنامه پشتیبانی میکنند, به حافظه بار میشوند.
فاز ۶: اجرا
سرانجام, کامپیوتر, تحت کنترل CPU خود, مبادرت به اجرای یک به یک دستورالعملهای برنامه میکند.
مسائلی که ممکن است در زمان اجرا رخ دهند
همیشه برنامهها در همان بار اول اجرا نمیشوند. در هر کدامیک از فازهای فوق امکان شکست وجود دارد، چرا که ممکن است انواع مختلفی از خطاها که در مورد آنها صحبت خواهیم کرد, در این بین رخ دهند. برای مثال, امکان دارد برنامه اقدام به انجام عملیات تقسیم بر صفر نماید (یک عملیات غیرمعتبر). در چنین حالتی برنامه C++ یک پیغام خطا بنمایش در خواهد آورد. اگر چنین شود, مجبور هستید تا به فاز ویرایش بازگردید و اصلاحات لازم را انجام داده و مجدداً مابقی فازها را برای تعیین اینکه آیا اصلاحات صورت گرفته قادر به رفع مشکل بودهاند یا خیر, طی کنید.
بیشتر برنامههای نوشته شده در C++ عملیات ورود و یا خروج داده انجام میدهند. توابع مشخصی از C++, از طریق cin (استریم ورودی استاندارد, با تلفظ “see-in”) که معمولاً از طریق صفحهکلید است, اقدام به دریافت ورودی میکنند, اما تابع cin میتواند به دستگاه دیگری هدایت شود. غالباً دادهها از طریق دستور cout (استریم استاندارد خروجی, با تلفظ “see-out”) خارج میگردند که معمولاً صفحهنمایش کامپیوتر است, اما میتوان cout را به دستگاه دیگری هدایت کرد. زمانیکه میگوییم برنامه نتیجهای را چاپ میکند, معمولاً منظورمان نمایش نتیجه بر روی صفحه نمایش (مانیتور) است. میتوان دادهها را به دستگاههای دیگری همانند دیسکها ارسال کرد و توسط چاپگر از آنها چاپ گرفت. همچنین دستوری بنام cerr (استریم استاندارد خطا) وجود دارد, که از آن برای نمایش پیغامهای خطا استفاده میشود, این دستور اکثراً برای نمایش پیغام در صفحه نمایش بکار گرفته میشود.