C++ Syntax
نحو و ساختار: کالبدشکافی کدِ C++ 🧬🔬
درکِ سینتکس (Syntax) یعنی فهمیدنِ قوانینِ نگارشیِ زبان. اگر سینتکس را رعایت نکنید، کامپایلر با شما قهر خواهد کرد!
۱. خط به خط با یک برنامه استاندارد
{code_block('#include <iostream>\nusing namespace std;\n\nint main() {\n cout << "Hello!";\n return 0;\n}')}۲. بخشهای اصلی:
#include <iostream>: کتابخانهای که به ما اجازه میدهد ورودی و خروجی داشته باشیم.using namespace std: یعنی به جایِstd::coutمیتوانیم مستقیماً بنویسیمcout.int main(): نقطهی شروعِ تمامِ برنامههای C++. هیچ کدی خارج ازmain(مگر برایِ تعریف) اجرا نمیشود.{ }: شروع و پایانِ یک بلوکِ کد.;(Semicolon): پایاندهندهی دستورات. فراموش کردنِ آن رایجترین اشتباه است!
myVar با myvar کاملاً متفاوت است. مراقب باشید!
چرا return 0؟
برگرداندنِ عددِ صفر به سیستمعامل میگوید که برنامه "با موفقیت" و بدونِ خطا به پایان رسیده است.
بخش تخصصی: مهندسی و معماری C++ 🚀⚙️⚡
زبان C++ فقط یک نسخه ارتقا یافته از C نیست؛ بلکه یک هیولای چندوجهی است که قدرت سختافزاری C را با انتزاعهای سطح بالای مدرن ترکیب میکند.
۱. فضای نام (Namespace): خروج از بحران تداخل نامها
در زبان C، اگر دو کتابخانه تابعی با نام print() داشتند، شما دچار مشکل بزرگی میشدید. در C++ مفتی به نام Namespace معرفی شد. تمام توابع استاندارد در فضای نام std قرار دارند. این به این معناست که std::cout یعنی از شیء cout که در "قلمرو" استاندارد است استفاده کن.
۲. معماری I/O و امنیت نوع (Type Safety)
در C ما از printf استفاده میکردیم که یک تابع Variadic است و خطرات امنیتی زیادی دارد. اما در C++ ما از Streams استفاده میکنیم. عملگر << (Insertion Operator) هوشمند است؛ یعنی خودش میفهمد شما دارید یک عدد میفرستید یا یک متن، بدون اینکه نیاز به %d یا %s باشد.
۳. خط لوله کامپایل (The C++ Compilation Pipeline)
وقتی دکمه Run را میزنید، C++ مراحل پیچیدهای را طی میکند:
- Preprocessor: هدرها (مثل iostream) را کپی میکند.
- Compiler: کد را به اسمبلی تبدیل میکند. در اینجا C++ از تکنیکی به نام Name Mangling استفاده میکند تا سربارگذاری توابع (Overloading) ممکن شود.
- Linker: کدهای شما را به کتابخانههای سیستم متصل میکند تا فایل اجرایی نهایی ساخته شود.
std::endl علاوه بر شکستن خط، بافر را هم خالی (Flush) میکند. اگر سرعت بسیار بالا نیاز دارید، از \n استفاده کنید تا سیستمعامل هر بار مجبور به تخلیه بافر نشود.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
کد زیر را طوری اصلاح کنید که بدون خطا کامپایل شود. هدف چاپ OK است.
#include <iostream>
using namespace std;
int main() {
cout << "OK";
return 0;
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.