هيكل برنامج في C++
هل تساءلت يومًا كيف يتم تنظيم برنامج بلغة C++؟ في هذا الدليل، سنستعرض الأساسيات التقنية التي تشكل الهيكل الأساسي لأي برنامج مكتوب بهذه اللغة، بحيث يمكنك فهم ليس فقط “ماذا” ولكن أيضًا “لماذا” وراء كل عنصر.
أهداف التعلم:
عند الانتهاء من هذا الدرس، سيكون الطالب قادرًا على:
- فهم الغرض من استخدام توجيهات المعالجة المسبقة مثل
#includeلتنظيم الكود. - فهم الهيكل الأساسي لبرنامج C++، بما في ذلك وظيفة
main()كنقطة دخول. - استخدام مكتبة
iostreamلإدارة إدخال وإخراج البيانات. - توثيق الكود باستخدام التعليقات لشرح وظيفته.
فهرس المحتويات:
توجيهات المعالجة المسبقة #include
جسم البرنامج: وظيفة main()
لا تنسَ التعليقات في الكود
وصلنا الآن إلى كتابة برنامجنا الأول “مرحبًا، العالم”. سنستخدم هذا الكود لتحليل كل جزء من أجزائه:
/* hadha ta3riif yushir ila istikhdam
al-maktabah al-musahhah iostream */
#include <iostream>
// al-dalil al-ra'isi huwa al-jism al-ra'isi lil-barnamej
int main() {
// yatba3 al-kalimah "Marhaban, 3alam!" 3ala al-shashah
std::cout << "Marhaban, 3alam!" << std::endl;
// yarje3 al-qimah 0 ila al-nithaam al-tashghili
return 0;
}
توجيهات المعالجة المسبقة #include
توجيهات المعالجة المسبقة هي تعليمات يقوم المترجم بمعالجتها قبل ترجمة الكود. تسمح هذه التوجيهات للمبرمج بتضمين موارد خارجية أو تحديد إعدادات مسبقة. واحدة من أكثر التوجيهات استخدامًا هي #include، التي تُستخدم لتضمين المكتبات اللازمة للبرنامج.
استخدام #include
الصيغة الأساسية لتضمين مكتبة قياسية هي:
#include <ism_al-maktabah>
استخدام علامات أصغر من وأكبر من (< و>) يُشير إلى المترجم للبحث عن المكتبة في الدلائل القياسية. على سبيل المثال، لتضمين مكتبة iostream التي تسمح بإدارة إدخال وإخراج البيانات، يتم استخدام:
#include <iostream>
خصائص iostream
تحتوي مكتبة iostream على فئات وأشياء تُسهّل معالجة تدفقات البيانات. من بين العناصر الأكثر شيوعًا:
std::cin: يُستخدم لإدخال البيانات من لوحة المفاتيح.std::cout: يسمح بإخراج البيانات إلى وحدة التحكم.std::cerr: يُستخدم لعرض رسائل الخطأ.std::clog: يوفر تدفقًا لرسائل السجل.
مثال بسيط باستخدام std::cin وstd::cout:
#include <iostream>
int main() {
std::string ism;
std::cout << "Uktub ismak: ";
std::cin >> ism;
std::cout << "Marhaban, " << ism << "!" << std::endl;
return 0;
}
تضمين مكتبات مخصصة
لتضمين مكتبات صمّمها المبرمج، يتم استخدام نفس التوجيه #include ولكن مع صيغة مختلفة:
#include "ism_al-maktabah.h"
تشير علامات الاقتباس المزدوجة إلى المترجم للبحث عن المكتبة أولاً في دليل المشروع الحالي. إذا لم يتم العثور عليها، يتم البحث في الدلائل القياسية.
مثال على مكتبة مخصصة:
// al-milaf "maktabah_khasah.h"
void salam() {
std::cout << "Marhaban min maktabah khasah!" << std::endl;
}
// al-milaf al-ra'isi main.cpp
#include <iostream>
#include "maktabah_khasah.h"
int main() {
salam();
return 0;
}
جسم البرنامج: وظيفة main()
وظيفة main() هي نقطة البداية لأي برنامج مكتوب بلغة C++. هنا تبدأ عملية تنفيذ الكود، وتعريفها ضروري لأي برنامج وظيفي مكتوب بهذه اللغة.
التعريف الأساسي لـ main()
أبسط طريقة لتعريف main() هي:
int main() {
// huna yaktubu al-barnamej
return 0;
}
في هذا التعريف:
int: يحدد نوع البيانات التي تُرجعها وظيفةmain(). في هذه الحالة، يشيرintإلى أن الوظيفة يجب أن تُرجع عددًا صحيحًا.return 0;: يشير إلى نظام التشغيل بأن البرنامج انتهى بنجاح. تُعرف هذه القيمة باسم “كود الخروج” (exit code)، حيث يُمثل0عادةً النجاح، بينما قد تشير القيم الأخرى إلى أخطاء محددة.
لماذا يجب استخدام int كنوع إرجاع؟
تنص معايير C++ على أن وظيفة main() يجب أن يكون لها نوع إرجاع int (عدد صحيح). وذلك لأن نظام التشغيل يحتاج إلى قيمة إرجاع لتحديد حالة البرنامج بمجرد انتهائه. على سبيل المثال:
- قيمة
0تشير إلى أن البرنامج انتهى بنجاح. - يمكن استخدام قيمة غير
0للإشارة إلى أخطاء محددة.
يمكن تعريف main() بنوع إرجاع مختلف، مثل void، في بعض المترجمات، ولكن هذا لا يتوافق مع معايير C++ وقد يسبب مشكلات في التوافق.
لا تنسَ التعليقات في الكود
التعليقات ضرورية لتوثيق الكود وتسهيل فهمه. على الرغم من أنها لا تؤثر على تنفيذ البرنامج، إلا أنها مفيدة لشرح الغرض أو المنطق وراء أجزاء معينة من الكود. التعليقات مهمة بشكل خاص عندما يحتوي الكود على منطق معقد أو تطلب تصميمًا مكثفًا. لا تنخدع بشعور الوضوح عند كتابة أو قراءة الكود الخاص بك؛ قد يختفي هذا الشعور تمامًا في اليوم التالي. يجب أن تكون كتابة الكود واضحة ونظيفة قدر الإمكان، ويجب أن تكون التعليقات الدليل اللازم للحفاظ على هذا الوضوح.
في C++، هناك نوعان رئيسيان من التعليقات:
- تعليقات السطر الواحد:
// hadha ta3liq fi satar wahid - تعليقات متعددة الأسطر:
/* hadha ta3liq yastati3 an yakun 3ala aksar min satar */
ما يجب فعله
- إضافة تعليقات تشرح عمل الخوارزميات المعقدة أو الأجزاء المعقدة من البرنامج: هذا يساعد القراء في المستقبل، بما في ذلك أنت، على فهم المنطق المطبق بسرعة.
- كتابة التعليقات بطريقة يسهل فهمها على زملائك: هذا الجانب ضروري عند العمل في فريق أو مشاريع تعاونية.
ما يجب تجنبه
- استخدام التعليقات لشرح أو تكرار الواضح: على سبيل المثال، ليس من المفيد كتابة
// hadha satr yajma3 adadaynفوقint suma = a + b;. - تبرير الكود غير الواضح باستخدام التعليقات: على الرغم من أن التعليقات مهمة، يجب أن تكون وضوح الكود دائمًا الأولوية. الكود المقروء والمنظم بشكل جيد يحتاج إلى تعليقات أقل لفهمه.
- عدم تحديث التعليقات: عند تحرير الكود، تأكد من أن التعليقات تعكس التغييرات التي تم إجراؤها. يمكن أن تؤدي التعليقات القديمة إلى الارتباك.
