دوره‌ها / آموزش برنامه‌نویسی C / توضیحات/کامنت (C Comments)

توضیحات/کامنت (C Comments)

20 دقیقه Article

توضیحات (Comments): نامه‌هایی به آینده 📝✉️

کامنت‌ها بخش‌هایی از کد هستند که کامپایلر کاملاً از آن‌ها چشم‌پوشی می‌کند. آن‌ها برایِ توضیح دادنِ "چرا" و "چگونه" در کد نوشته می‌شوند.

۱. کامنت‌هایِ تک‌خطی (Single-line)

با دو اسلش // شروع می‌شوند. هر چیزی بعد از آن تا انتهایِ همان خط نادیده گرفته می‌شود.

{code_block('// این یک کامنت است\nint x = 10; // مقداردهی اولیه')}

۲. کامنت‌هایِ چندخطی (Multi-line)

با /* شروع و با */ تمام می‌شوند. برایِ توضیحاتِ مفصل یا غیرفعال کردنِ تیکه‌هایِ بزرگی از کد عالی هستند.

{code_block('/*\nاین کد وظیفه محاسبه\nمیانگین را دارد\n*/')}

هنرِ نوشتنِ کامنتِ خوب:

در زبانِ C که مدیریتِ حافظه پیچیده است، نوشتنِ کامنت ضروری است. اما مراقب باشید:

  • چیزهایِ واضح را نگویید: نوشتنِ // x را برابر 5 قرار بده کنارِ x = 5 بیهوده است.
  • منطقِ پیچیده را توضیح دهید: اگر یک الگوریتمِ ریاضیِ سنگین دارید، بگویید هدف از هر مرحله چیست.
تله‌یِ کامنتِ چندخطی: یادتان باشد که نمی‌توانید یک کامنتِ چندخطی را داخلِ یکی دیگر بگذارید (Nested Comments). این کار خطایِ نحوی ایجاد می‌کند.
کدهایِ موقت: اگر می‌خواهید بخشی از کد موقتاً اجرا نشود، آن را کامنت کنید. به این کار در اصطلاح فنی Commenting out می‌گویند.
استانداردِ مستندسازی: برنامه‌نویسانِ حرفه‌ایِ C معمولاً در ابتدایِ هر فایل یک کامنتِ چندخطی بزرگ می‌گذارند که شاملِ نام نویسنده، تاریخ و هدفِ کلیِ فایل است.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: کالبدشکافیِ اجرایِ یک برنامه C 🛠️⚙️⚡

زبانِ C زبانِ نزدیک به سخت‌افزار است. درکِ اینکه چطور کدهایِ متنیِ شما به سیگنال‌هایِ الکتریکی در CPU تبدیل می‌شوند، اولین قدم برایِ تبدیل شدن به یک مهندسِ حرفه‌ای است.

۱. خطِ لوله (Pipeline) کامپایل

فرایندِ تبدیل کدِ C به فایلِ اجرایی (Executable) چهار مرحله‌یِ حیاتی دارد:

  • پیش‌پردازش (Preprocessing): دستوراتی که با # شروع می‌شوند (مثل #include) پردازش می‌شوند. کدهایِ هدر به فایلِ اصلی چسبانده می‌شوند.
  • کامپایل (Compilation): کدهایِ سطحِ بالایِ C به زبانِ اسمبلی (Assembly) تبدیل می‌شوند که برایِ معماریِ آن CPU خاص (مثل x86 یا ARM) قابل فهم باشد.
  • اسمبلی (Assembly): کدهایِ اسمبلی به کدهایِ ماشین (Binary) تبدیل می‌شوند. نتیجه یک فایلِ .obj یا .o است.
  • لینک کردن (Linking): تمامِ فایل‌هایِ آبجکت و کتابخانه‌هایِ استاندارد (مثل stdio.h) به هم متصل می‌شوند تا یک فایلِ نهایی (مثل .exe) ساخته شود.

۲. ساختارِ حافظه در زمانِ اجرا (Runtime Memory)

وقتی برنامه‌یِ شما اجرا می‌شود، از چهار بخشِ اصلی در حافظه استفاده می‌کند:

  1. Text Segment: محلِ نگهداریِ دستوراتِ اجراییِ برنامه (کدهای ماشین).
  2. Data Segment: برایِ نگهداریِ متغیرهایِ سراسری (Global) و استاتیک.
  3. Stack: برایِ نگهداریِ متغیرهایِ محلی و پارامترهایِ توابع مدیریت می‌شود. این بخش سریع است اما فضایِ محدودی دارد.
  4. Heap: برایِ مدیریتِ حافظه‌یِ داینامیک (که با malloc رزرو می‌کنید). این بزرگترین بخشِ حافظه‌یِ در دسترس است.
نکته مهندسی: در C هیچ "Garbage Collector"ای وجود ندارد! برخلافِ پایتون یا جاوا، مدیریتِ هر بیت از حافظه بر عهده‌یِ شماست. این قدرتِ مطلق، مسئولیتِ بزرگی هم به همراه دارد (جلوگیری از Memory Leak).

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

کامنت چندخطی Easy
سوال تمرین

ساختار شروع و پایان یک کامنتِ چندخطی را در خروجی چاپ کنید. خروجی باید دقیقاً /**/ باشد.

پاسخ تمرین
C
#include <stdio.h>

int main() {
  printf("/**/");
  return 0;
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.