موجات محول الصياغة ( المترجم ) في السى بلس بلس
موجات محول الصياغة ( المترجم ) في C++
قد يعتقد أن السطر الأول في البرنامج , ألا وهو
# Include <iostream.h>
عبارة من عبارات البرنامج , ولكنه ليس كذلك في واقع الأمر ؛ فهو ليس سطرا من محتوي الدالة , ولا ينتهي بفاصلة منقوطة . بل أنه كما تري يبدأ برمز غريب "#", وهو ما يسمي " موجه محول الصياغة , أو موجه ما قبل المعالج Preprocessor derective " . فبينما تعتبر أسطر الدوال توجيهات لمعالج الحاسوب لتنفيذ مهام البرنامج, فإن موجه ما قبل المعالج يوجه المترجم ذاته , إذ توجد في برنامج تحويل صياغة البرنامج (الترجمة) وحدة تسمي " ما قبل المعالج Preprocessor " تتعامل مع هذه الموجهات قبل أن يبدأ الترجمة الفعلية .
الموجه include #
الموجه include # يخبر المترجم أن يضم إلي ملف الهدف ملف أخر , وهو الذي يلي الموجه ويكون اسمه محاطا بالعلامتين < > ويسمي مثل هذا الملف " الملف التصديري header file " لكونه يتصدر البرنامج , أو " ملف التضمين include file " لكونه يضمن في البرنامج .
الملفات التصديرية ( ملفات التضمين )
في مثالنا first.cpp صدر أمر للمترجم من الموجه include # بأن يضيف لملف المصدر ملف أخر هو iostream.h وذلك بالتوجيه :
Include <iostream.h>#
فما هو هذا الملف ؟ إنه مثال لما يسمي " الملفات التصديرية header files " أو الملفات المضمنه include file " , وتحتوي هذه الملفات علي معلومات ضرورية للمترجم لكي يتمكن من القيام بواجبه , فمثلا يحتوي الملف iostream.h علي الإعلان عن الكائن cout والمؤثر << , وبالتالي سوف يصدر رسالة خطأ . ( استخدام ملفات التقدمة اختياري في كثير من الحالات في لغة السي التقليدية , أما في السى بلس بلس فهي إجبارية في كافة الأحوال ) .
ولسوف نعود إلي موضوع الملفات التصديرية في نهاية الفصل , حين نعرض لموضوع الدوال المكتبية .
والموجه include # هو واحد من موجهات عديدة , كلها مميزة بالمحرف # , سنعرض للمزيد منها مع تقدمنا في الدراسة .
التعليقات
التعليقات جزء هام في أي برنامج , فهي توضح لكاتب البرنامج ولغيره كيف تسير خطواته . ويتجاهل هذه التعليقات , ولذا فلا تأثير لها علي حجم البرنامج التنفيذي أو وقت تنفيذه .
صياغة التعليقات
فلنكتب البرنامج مرة ثانية , مضيفين إليه التعليقات :
Comment.cpp
comments.cpp
// comments.cpp
// demonstrates comments
#include <iostream.h> // preprocessor directive
void main() // function name
{ // start function body
cout << "Every age has a language of its own"; // statement
} // end function body
تبدأ التعليقات بالعلامة // وتنتهي بنهاية السطر ( تعتبر هذه إحدي الحالات الاستثنائية التي لا يتجاهل فيها المترجم الفراغات ولا الانتقال للسطر الجديد ) . ويمكن أن يكون التعليق في بداية سطر جديد , أو في نهاية سطر من أسطر البرنامج , وكلتا الحالتين مبينتان في المثال المعطي .
متي نستخدم التعليقات ؟
كتابة التعليقات عادة حميدة علي وجه العموم , وللأسف ألا يلجأ لها بعض المترجمين بالقدر الكافي . وإذا إنتابتك رغبة في تجاهل هذه العادة , فلتتذكر أنه ليس كل الناس بقدر ذكائك ؛ فهم محتاجون لشرح أكثر يعرفون به منطلق البرنامج . ومن وجهة أخري , فقد لا تكون أنت بنفس ذكائك الحالي بعد فترة فتحتاج أنت أيضا إلي تذكر ما فعلته بيديك .
وبالنظر للتعليق في نهاية السطر يمكن معرفة المقصود منه . ويجب أن يركز التعليق علي الخطوط العامة , موضحا الهدف من العبارة المختارة .
صياغة أخري للتعليقات
من الممكن أن تصاغ التعليقات باستخدام الصورة التقليدية في السي , وهي الصورة التالية :
/* this is an old-style comment */
وفيها تستخدم العلامتان */ في بداية التعليق ونهايته , وهي وسيلة ليست مريحة تماما , ولكنها مفيدة في بعض المواضع :
مثلا , في حالة وضع التعليق علي أكثر من سطر ,علي الصورة التالية :
/* this is
A very
Long
Comment
/*
حيث يتجاهل المترجم في هذه الحالة –طبقا للقاعدة العامة – الإنتقال لسطر الجديد . ويغنينا ذلك عن وضع العلامتين // في بداية كل سطر .
وأيضا ؛ في حالة وضع تعليق وسط العبارة , علي الصورة التالية :
{ /* impty function body*/ }
ولو أننا استخدمنا هنا العلامتين // لاعتبر القوس الحلزوني الأخير جزءا من التعليق , حيث إن المترجم يأخذ التعليق علي أنه مستمر لنهاية السطر .
تعليقات
إرسال تعليق