مقدمة في لغة C: أم اللغات
نظام ويندوز، ولينكس، وأجزاء من أندرويد، ومحركات قواعد البيانات، وحتى برامج الغسالات والسيارات الحديثة: كثير منها مكتوب بلغة C أو بلغات بُنيت عليها. في هذا الدرس ستتعرف على هذه اللغة العريقة، ولماذا يسميها المبرمجون «أم اللغات»، وستكتب أول برنامج بها.
ما هي لغة C؟
Section titled “ما هي لغة C؟”C لغة برمجة ابتكرها المبرمج دينيس ريتشي (Dennis Ritchie) في مختبرات Bell Labs الأمريكية في بداية السبعينيات، واستُخدمت لكتابة نظام التشغيل الشهير UNIX. ورغم أنها من أقدم اللغات المستخدمة اليوم، فإنها ما زالت من أهمها.
لماذا «أم اللغات»؟ لأن لغات كثيرة جاءت بعدها واستعارت منها طريقة الكتابة: C++ و C# و Java و JavaScript وغيرها. فإذا تعلمت C، ستجد شكل الكود مألوفاً في كل هذه اللغات.
لماذا تتعلم C اليوم؟
Section titled “لماذا تتعلم C اليوم؟”- تفهم كيف يعمل الكمبيوتر من الداخل: C قريبة من «عتاد» الجهاز، فتتعلم كيف تُخزَّن البيانات في الذاكرة وكيف يتعامل البرنامج معها.
- السرعة الفائقة: البرامج المكتوبة بـ C من أسرع البرامج على الإطلاق.
- الأنظمة المدمجة: المتحكمات الصغيرة في الأجهزة الإلكترونية، مثل أردوينو، تُبرمج غالباً بـ C أو لغات قريبة منها.
- أساس متين: من يتقن C يفهم أي لغة أخرى بسهولة.
تخيّل أنك تتعلم القيادة على سيارة ناقل يدوي: أصعب قليلاً في البداية، لكنك تفهم كيف تعمل السيارة فعلاً، وبعدها تقود أي سيارة أوتوماتيك بسهولة.
كيف يعمل برنامج C؟ المترجم (Compiler)
Section titled “كيف يعمل برنامج C؟ المترجم (Compiler)”على عكس Python التي تُنفَّذ سطراً سطراً، لغة C تحتاج مترجماً (Compiler): برنامج يحوّل الكود الذي كتبته كاملاً إلى ملف تنفيذي يفهمه المعالج مباشرة.
- تكتب الكود في ملف بامتداد
.c. - المترجم يحوّله إلى ملف تنفيذي (مثل
hello.exeعلى ويندوز). - تشغّل الملف التنفيذي.
تخيّل المترجم مثل دار ترجمة تترجم كتاباً كاملاً مرة واحدة قبل طباعته. يأخذ وقتاً في البداية، لكن القارئ بعدها يقرأ بسرعة دون انتظار.
أول برنامج في C
Section titled “أول برنامج في C”#include <stdio.h>
int main(void) { printf("Hello, C!\n"); return 0;}Hello, C!لنفهم كل سطر:
#include <stdio.h>: نضيف مكتبة الإدخال والإخراج القياسية (Standard Input Output). بدونها لا نستطيع استخدامprintf. تخيّلها مثل إحضار صندوق الأدوات قبل بدء العمل.int main(void): الدالة الرئيسية التي يبدأ منها البرنامج. كلمةintتعني أنها تُرجع عدداً صحيحاً.{ }: الأقواس المعقوفة تحدد جسم الدالة.printf("..."): تطبع النص. و\nتعني «انتقل إلى سطر جديد».return 0;: تُنهي البرنامج وتخبر نظام التشغيل أن كل شيء تم بنجاح. الصفر هنا يعني «لا توجد أخطاء».;: كل أمر في C ينتهي بفاصلة منقوطة.
لمحة عن المتغيرات
Section titled “لمحة عن المتغيرات”في C يجب أن تحدد نوع كل متغير عند إنشائه:
#include <stdio.h>
int main(void) { int age = 14; float price = 9.5; printf("Age: %d\n", age); printf("Price: %.1f\n", price); return 0;}Age: 14Price: 9.5intلعدد صحيح، وfloatلعدد عشري.%dداخل النص مكان سيُوضع فيه عدد صحيح، و%.1fمكان لعدد عشري برقم واحد بعد العلامة.
سنتعلم الأنواع بالتفصيل في الدرس القادم.
كيف تشغّل كود C؟
Section titled “كيف تشغّل كود C؟”- بدون تثبيت: استخدم موقعاً لتشغيل الكود أونلاين، مثل المواقع التي تسمى «C Online Compiler».
- على جهازك: ثبّت مترجم GCC: على لينكس غالباً موجود، وعلى ماك يأتي مع أدوات Xcode، وعلى ويندوز يمكن تثبيته عبر حزمة مثل MSYS2. ثم ترجم وشغّل:
gcc hello.c -o hello./helloالسطر الأول يترجم الملف hello.c وينتج ملفاً تنفيذياً اسمه hello، والثاني يشغّله.
جرّب بنفسك
Section titled “جرّب بنفسك”اكتب برنامجاً بلغة C يطبع ثلاثة أسطر:
- اسمك بالإنجليزية.
- عمرك باستخدام متغير
intو%d. - عمرك بعد 5 سنوات بكتابة
age + 5داخلprintf.
Name: OmarAge: 15Age in 5 years: 20أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان الفاصلة المنقوطة: من أكثر الأخطاء شيوعاً، ويظهر خطأ مثل
expected ';'. - نسيان
#include <stdio.h>: يظهر تحذير أو خطأ لأن المترجم لا يعرفprintf. - نسيان
\n: تلتصق المخرجات ببعضها، أو بسطر الطرفية التالي. - تشغيل ملف
.cمباشرة: يجب ترجمته أولاً، ثم تشغيل الملف التنفيذي الناتج.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما وظيفة المترجم (Compiler) في لغة C؟
المترجم يحوّل الكود كاملاً إلى ملف تنفيذي، ثم نشغّل هذا الملف.
سؤال
ماذا يعني return 0; في نهاية الدالة main؟
القيمة 0 المرجعة من main تخبر نظام التشغيل أن البرنامج انتهى بدون أخطاء.
الخلاصة
Section titled “الخلاصة”- C لغة عريقة من السبعينيات، وأساس أنظمة التشغيل ولغات كثيرة جاءت بعدها.
- تعلّمها يجعلك تفهم كيف يعمل الكمبيوتر من الداخل.
- تحتاج مترجماً مثل GCC يحوّل الكود إلى ملف تنفيذي.
- البرنامج يبدأ من
int main(void)، وprintfللطباعة، و\nلسطر جديد. - كل أمر ينتهي بـ
;، والمتغيرات تحتاج نوعاً مثلintوfloat.