مشخصات مقاله
-
1147
-
0.0
-
4574
-
0
-
0
ساختارsyntax زبان C++
ساختار نگارشی و syntax زبان ++C
پس از بررسی یک اپلیکیشن ساده ی ++C، متوجه می شوید که برنامه ی مورد نظر متشکل از تعدادی آبجکت است که با فراخوانی توابع یکدیگر، با هم تعامل کرده و اطلاعات رد و بدل می کنند. در زیر به شرح مفهوم هر یک از اجزا تشکیل دهنده ی کلاس می پردازیم:
- Object: آّبجکت ها دارای property (خاصیت و ویژگی) و رفتارهای (عملیاتی که قادر به انجام آن ها است) معینی می باشند. به طور مثال، یک سگ در دنیای برنامه نویسی می تواند یک آبجکت باشد چرا که علاوه بر property هایی (خواص) نظیر رنگ، اسم، نژاد دارای رفتارهای متعددی همچون دم تکان دادن، پارس کردن، خوردن می باشد. آبجکت در واقع نمونه ای از یک کلاس می باشد و کلاس الگویی است که آبجکت از روی آن ساخته می شود.
- Class: یک کلاس را می توان یک نقشه یا الگو در نظر گرفت که آبجکت از روی آن ساخته می شود و در واقع رفتارها (عملیاتی که قادر به انجام آن ها می باشد) و داده هایی (state) که آبجکت از نوع مربوطه پشتیبانی می کند را مشخص می نماید.
- Methods: متد در واقع حکم همان رفتار آبجکت و عمیاتی که قادر به انجام آن ها است را دارد. یک کلاس می تواند چندین متد داشته و کارهای مختلفی انجام دهد. داخل متد است که منطق اپلیکیشن نوشته شده، داده ها ویرایش می شود و عملیات مختلف اجرا می گردد.
- instance variable: هر آبجکت مجموعه متغیرهای عضو (instance variable) مخصوص خود را دارد. اطلاعات مربوط به وضعیت آبجکت و داده های کپسوله شده در آن توسط مقادیری که توسعه دهنده به متغیرهای عضو تخصیص می دهد، مشخص می گردد.
ساختار نحوی برنامه های ++C
در زیر یک برنامه ی ساده را مشاهده می کنید که با ++C نوشته شده و رشته ی متنی Hello World را در نمایشگر چاپ می کند.
#includeusing namespace std; // main() is where program execution begins. int main() { cout << "Hello World"; // prints Hello World return 0; }
حال به شرح بخش های مختلف برنامه ی فوق می پردازیم:
- در زبان ++C یک سریی فایل به نام header file با پسوند .h وجود دارد که تعریف کلاس ها در آن قرار می گیرد. این فایل ها در واقع اطلاعات مورد نیاز و ضروری درباره ی برنامه را در بر می گیرد. برای برنامه حاضر لازم است فایل کتابخانه ای header
را وارد پروژه نمایید. - خط using namespace std، به کامپایلر دستور می دهد که namespace ای به نام std را فراخوانی کند. namespace (فضای نامی) به تازگی وارد زبان ++C شده اند.
- خط بعدی // main() is where program execution begins می باشد. این خط یک comment تک خطی (خط توضیح کد) است که با کاراکتر // آغاز شده و با کاراکتر . خاتمه می یابد.
- متد int main() تابع اصلی است که اجرای برنامه از آنجا آغاز شده و در واقع نقطه ی آغاز اپلیکیشن می باشد.
- خط cout << "This is my first ++C program."; از برنامه ی حاضر در واقع رشته ی متنی "This is my first ++C program" را در نمایشگر برای کاربر چاپ می کند.
- آخرین خط از قطعه کد فوق، return 0; ، در واقع نقطه ی پایان اجرای تابع main() بوده و مقدار 0 را در خروجی برمی گرداند (این مقدار را به process فراخواننده پاس می دهد).
کامپایل و اجرای برنامه ی ++C
اکنون به شرح نحوه ی ذخیره ی فایل ذکر شده، کامپایل و اجرای آن می پردازیم.
مراحل زیر را به ترتیب دنبال نمایید:
- یک نرم افزار ویرایشگر متن / text editor باز کرده و کد بالا را در آن درج نمایید.
- فایل را تحت عنوان hello.cpp ذخیره نمایید.
- پنجره ی فرمان را باز کرده و به پوشه ای که فایل را در آن ذخیره کردید، پیمایش نمایید.
- دستور 'g++ hello.cpp ' را وارد کرده و با فشردن کلید enter کد را کامپایل نمایید. چنانچه در کد شما خطایی وجود نداشته باشد، پنجره ی فرمان شما را به خط بعدی هدایت کرده و فایل اجرایی a.out را تولید می کند.
- حال جهت اجرای برنامه ی خود، دستور ' a.out' را درج نمایید.
- با اجرای دستور فوق، رشته ی ' Hello World ' در پنجره برای کاربر به نمایش در می آید.
$ g++ hello.cpp $ ./a.out Hello World
لازم است g++ در path وجود داشته و شما آن را در پوشه ای که فایل hello.ccp را دربردارد، اجرا نمایید.
می توانید برنامه های C/++C را با استفاده از makefile کامپایل نمایید.
semicolon و بوک یا قطعه کد در ++C
در زبان ++C، کاراکتر نقطه ویرگول (;) نشانگر پایان یک دستور است. در واقع تمامی دستورها در این زبان می بایست با نقطه ویرگول خاتمه یابند. به بیان دیگر، این کاراکتر یک موجودیت منطقی را کامل کرده و پایان می بخشد.
در زیر سه دستور کامل و مجزا را مشاهده می کنید:
x = y; y = y+1; add(x, y);
بلوک یا قطعه کد عبارت است از یک مجموعه دستور که به صورت منطقی به یکدیگر متصل بوده و در {} محصور می باشد.
مثال:
{
cout << "Hello World"; // prints Hello World
return 0;
}
در ++C مهم نیست یک دستور را در کجای خط قرار می دهید. به عنوان مثال، دو نمونه کد زیر یکسان هستند:
x = y; y = y+1; add(x, y);
معادل نمونه ی ذیل می باشد:
x = y; y = y+1; add(x, y);
تخصیص نام یا شناسه (identifier) در ++C
Identifier در ++C در واقع یک اسم است که برای شناسایی یک متغیر، تابع، کلاس، ماژول یا هر آیتم کاربری دیگر به آن اختصاص می یابد. identifier با یک حرف از A تا Z یا یک (_) آغاز شده و به دنبال آن یک یا چند حرف، زیر خط یا عدد (0 تا 9) دیگر قرار می گیرد.
در ++C توسعه دهنده اجازه ی استفاده از کاراکترهایی نظیر @، $ و % را در اسم یک تابع، متغیر و غیره ... ندارد. همان طور که قبلا گفته شد، ++C یک زبان حساس به کوچک و بزرگی حروف است، از اینرو دو واژه ی Manpower و manpower دو ID و اسم کاملا متفاوت هستند.
در زیر نمونه هایی مجاز و استاندارد از ID های را مشاهده می کنید:
mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal
کلیدواژه ها (واژه های رزرو شده)
لیست زیر کلیدواژگان پرکاربرد در زبان ++C را برای شما به نمایش می گذارد. لازم به ذکر است که توسعه دهنده نمی تواند این کلمات رزرو شده را به عنوان اسم یک تابع یا متغیر انتخاب کند.
Trigraphs (توالی متشکل از سه کاراکتر)
تعدادی کاراکتر در ++C هستند که ظاهری متفاوت داشته و در اصطلاح یک sequence trigraph یا دنباله ی سه حرفی خوانده می شوند. trigraph در واقع یک کاراکتر واحد متشکل از سه کاراکتر مجزا است که معمولا با دو علامت سوال شروع می شود.
Trigraph ها می توانند در مقادیر رشته ای ثابت (string literal)، کاراکترهای ثابت (character literal) ، در comment و توضیحات کد و یا دستورهای پیش پردازنده/ preprocessor directives ظاهر شده و مورد استفاده قرار گیرند.
در زیر پرکاربردترین دنباله های سه کاراکتری یا trigraph ها مشاهده می کنید:
تمامی کامپایلرها قابلیت پشتیبانی از trigraph ها را ندارند. همچنین به دلیل گیج کننده بودن، استفاده از آن ها چندان توصیه نمی شود.
خط فاصله یا whitespace در ++C
کامپایلر خطوطی در کد که تنها از فضای سفید یا خط فاصله تشکیل شده و گاهی یک comment را نیز شامل می شود، کاملا نادیده گرفته و ترجمه نمی کند.
whitespace واژه ای است که در ++C جهت توصیف خطوط فاصله، تب ها، کاراکاترهای newline و comment ها استفاده می شود.
whitespace یک بخش از دستور را از بخش دیگر مجزا ساخته و به کامپایلر این امکان را می دهد تا تشخیص دهد کجا یک آیتم در دستور، همچون int، خاتمه یافته و آیتم دیگری آغاز می شود. با توجه به توضیحات فوق، در دستور زیر:
int age;
بایستی حداقل یک کاراکتر whitespace بین int (نوع داده ای) و age (id و اسم متغیر) درج شود تا بدین وسیله کامپایلر بتواند بین این دو آیتم تمایز قائل شده و آن ها را از هم تشخیص دهد. اما در دستور ذیل:
fruit = apples + oranges; // Get the total fruit
همان طور که می بینید به کاراکتر whitespace نیازی نیست و در آن هم استفاده نشده. هر چند توسعه دهنده می تواند جهت افزایش قابلیت خوانایی کد از این کاراکتر بین المان های دستور فوق استفاده کند.