الخميس، 16 مارس 2017

ty

Posted By: ahmed nasr - 4:04 م
تحليل البرنامج:
السطر 1
#include <iostream>
  • في البداية الرمز # هاش هو أحد توجيهات المعالج التمهيدي، هناك جزء صغير من المترجم يسمى “المعالج التمهيدي “Preprocessor” هذا الجزء يعمل دائما عندما نبدأ في ترجمه البرنامج ، أي يعمل أولا ثم يبدأ المترجم في عمله ، وظيفته هي ترجمه التوجيهات (أي جمله تبدأ ب#) إلى احد الأوامر الخاصة ، بعد أن يقوم بتحويلها يقوم المترجم بأداء عمله.
  • الكلمة include ، معناها تضمين ، “أي قم أيها المعالج التمهيدي بتضمين ملف الرأس هذا إلى الـ Code Source” ، ماذا يعني هذا ؟؟ بكل بساطه يقوم المعالج بنسخ ملف الرأس ولصقه في بداية ال Source Code.
  • كلمة include عبارة عن توجيه للمترجم بأن يضم محتويات ملف الرأس iostream إلى الملف الحالي (الملف المحتوي على عبارة include#) بحث يصبح جزءاً منه.
  • يوجد ملف الرأس iostream -وهو اختصار input/output stream – في مكتبة ++C القياسية، ويحتوي على التعاريف و الإعلانات الضرورية والمفيدة لعمليات الإدخال و الإخراج القياسية.
  • تتعامل هذه المكتبة مع عمليات الإدخال و الإخراج على أنها تيارات (streams) من الحروف. ونحن بحاجة إلى ضم ملف الرأس iostream إلى البرنامج اعلاه بسبب استخدامنا لعبارة الإخراج cout في السطر 9. فالبرنامج يطبع العبارة ” Mudawna Oolom ” على الشاشة باستخدام الكائن  cout الموجود في الملف iostream.
  • الكائن عبارة عن منطقة في الذاكرة لها السمات التالية: عنوان، حجم، نوع، وقيمة. فالمتغير عبارة عن كائن
  • بصفة عامة، يجب إضافة ملف الرأس iostream في أي برنامج يستخدم أدوات الإدخال أو الإخراج القياسية مثل cin و cout.
  • الحرف # الذي يسبق include يستخدم للدلالة على أن السطر الحالي هو توجيها للمترجم. أما قوسا الزاوية < > اللذان يحيطان بالملف iostream فيدلان على وجود ملف الرأس هذا في مكتبة++C القياسية. وكما ذكرنا سابقاً، يقوم المعالج المبدئي بتنفيذ مثل هذه التوجيهات والتي تبدأ بـ #.
السطر 3
// This program print ” Mudawna Oolom ” on the screen
  • يعتبر هذا تعليقاً (comment) خاص بالمبرمج، وهو عبارة عن نص يضاف في الملف المصدر من أجل وصف أو شرح عمل البرنامج وتوثيقه. والتعليقات مفيدة جداً للمبرمجين عند متابعة أو تطوير البرامج.
  • عندما يصادف المترجم هذه التعليقات يتجاهلها تماماً وكأنها غير موجودة وبالتالي لا تؤثر على الملف التنفيذي.
  • كتابة التعليقات اختيارية وليست إجبارية ولكن ينصح بإضافتها إلى نصوص البرامج.
  • من الممكن كتابته التعليقات في لغة ++C بطريقتين:
    • تعليق أحادي السطر: ويبدأ بكتابة الخطين المائلين // في السطر وينتهي بنهاية نفس السطر.  وسيعتبر المترجم أن أي شيء يبدأ من الخطين المائلين إلى نهاية السطر تعليقاً، مثل التعليق الموجود في السطر 3 في البرنامج أعلاه. و من الممكن استخدامها كذلك لكتابة تعليق متعدد الأسطر، ولكن يجب أن يبدأ كل سطر بالخطين المائلين.
    • تعليق متعدد السطور: وهو النمط القديم المستخدم في لغة C. ويبدأ بـ /* (خط مائل تليه نجمة) وينتهي بـ */ (نجمة يليها الخط المائل)، مثل:
      /* ++This is the first program in C */
      ويمكن استخدامها عند كتابة التعليقات الطويلة ولكن لا يسمح بتداخلها مع بعضها البعض، وسيتجاهلها المترجم كذلك.
using namespace std;
  • تخبر المترجم بأن يستخدم فضاء الأسماء المعرف باسم std (اختصارا لكلمة standard). وفضاء الأسماء (namespace) ميزة جديدة أُضيفت إلى ++C بغرض حل مشكلة تضارب الأسماء التعريفية خاصة عند استخدام المكتبات المختلفة. فهي تمكن المبرمجين من تغليف مكتبة ما بفضاء مميز.
  • الأسماء المعرفة في فضاء معين تكون مفصولة عن تلك المعرفة في فضاء آخر. لذا يمكن لبرنامج أن يستخدم كائنين يحملان نفس الاسم ولكن كل منهما في مجال أو فضاء مختلف.
  • الأسماء المعرفة في فضاء، من الممكن إستخدامها من داخل ذلك الفضاء مباشرة. ولكن عند استخدام إسم من خارج فضاءه، يجب أن نحدد فضاءه باستخدام مُعامِل تحديد المجال (scope resolution operator) ويرمز لهذا المُعامِل بالرمز ( :: ). فمثلا، الكائن cout معرف في الفضاء std وهو فضاء مكتبة++C القياسية، لذا يمكن تحديد الكائن cout بإستخدام معامل تحديد المجال كالتالي: std::cout.
  • الرمز std::cout يفيد بأن الاسم cout يخص الفضاء std. بشكل عام، لاستخدام كائن من خارج فضاءه، يسبق اسم الكائن بالبادئة المكونة من اسم الفضاء يليه معامل تحديد المجال.
  • إذا استخدم البرنامج كائنات متعددة من أحد الفضاءات، فإن تحديد الأسماء باستخدام البادئة المكونة من اسم الفضاء ومعامل تحديد المجال قد يكون شاقاً، وكذلك تجعل قراءة البرنامج أصعب. ويمكن حل هذا المشكلة باستخدام العبارة using التي تغني الحاجة عن كتابة مثل تلك البادئة.
  • عبارة using استخدمت في البرنامج أعلاه في السطر 5 من أجل إحضار جميع الكائنات المحددة في الفضاء std إلى فضاء البرنامج الحالي، أي فضاء البرنامج اعلاه وهذا يعفينا من استخدام البادئة::std بجوار كل كائن نستخدمه من الفضاء std وبالتالي يؤدي إلى تبسيط إدخال البرنامج وزيادة وضوحه.
  • تسمح العبارة using في السطر 5 من استخدام أي اسم من الفضاء std دون الحاجة إلى استخدام البادئة ::std. وعبارة using ليست ضرورية، ويمكن حذف السطر 5 من البرنامج، ولكن عندها يجب تحديد البادئة ::std قبل ذكر اسم cout في السطر 9.
السطر 7
int main()
  • كل برنامج من برامج الـ ++C يحتوي على إجراء واحد أو أكثر، ولكل منها أسم. واحد فقط من هذه الإجراءات يجب أن يحمل الاسم ()main يمكن أن نشبهها بجدران البناء فكل بناء لابد من ان يحوي جدران يضم ما بداخله، وهو الإجراء الرئيسي الذي يبدأ منه تنفيذ البرنامج و غالبا ما ينهي منه. بعبارة أخرى، هو الإجراء الذي يستدعيه نظام التشغيل عندما تطلب تشغيل البرنامج، أي انه نقطة انطلاق البرنامج.
  • عادة، يقسم البرنامج إلى عدة إجراءات يقوم كل إجراء منها بعمل محدد، ويتكون كل منها من مجموعة مستقلة من الأوامر (statements).
  • يمكن للإجراءات أن تستدعي (call)بعضها البعض، كذلك يمكن أن يقوم الإجراء المستدعَى بإعادة قيمة للإجراء المستدعِي، هذه القيمة المعادة يجب تحديد نوعها قبل أسم الإجراء.
  • الكلمة int (اختصار integer) التي تسبق الإجراء الرئيسي ()main تدل على أن الإجراء الرئيسي يسترجع عدداً صحيحاً لنظام التشغيل أي أن ما بداخل هذا الجدران عبارة عن عدد صحيح.
  • القوسان المجودان بعد كلمة main فهما ضروريان، على الرغم من عدم وجود شيء بينهما، للدلالة على أنه إجراء، وتستخدم هذه الأقواس التي تلي أسماء الإجراءات من أجل تمرير المتغيرات الوسيطة (formal parameters).
  • القوسان الكبيران {} في السطرين 8 و11 ضروريان لتحديد بداية ونهاية الأوامر في الإجراء. أي من أجل تحديد متن الإجراء ()main.
السطر 9
cout << ” Mudawna Oolom \n”;
  • عبارة cout تقوم بعرض الرسالة “Mudawna Oolom” على الشاشة.
  • لغة ++C تنجز عمليات الإدخال والإخراج على شكل تيارات من الحروف (streams of characters). ويتم ذلك باستخدام عامِل الإدراج <<.
  • عامل الإدراج << في العبارة الموجودة في السطر 9 له معامَلان: المعامل الأيمن وهو هنا الرسالة “Mudawna Oolom\n” ، والمعامل الأيسر وهو cout. وعند التنفيذ، يقوم العامل << بإدراج تيار الحروف “Mudawna Oolom” في كائن تيار الإخراج cout.
  • كائن تيار الإخراج cout يمثّل وحدة الإخراج الأساسية وهي عادة ما تكون الشاشة. وبالتالي تعرض “Mudawna Oolom” على الشاشة.
  • تسمى الرسالة “Mudawna Oolom \n” والمحصورة بين علامتي الاقتباس المزدوجة بسلسلة حروف. وعند التنفيذ، تطبع السلسلة بالصورة التي تبدو فيها للعِيان وهي محصورة بين علامتي الاقتباس، باستثناء الحرفين الأخيرين n\.
  • يستخدم الخط المائل (\) كرمز للخروج، وعندما يظهر في سلسلة حروف، فإن الحرف الذي يليه ينضم معه ليشكل تتابع من الحروف تستخدم لترميز حروف خاصة. فالتتابع n\ يرمز لسطر جديد. و يؤدي هذا الترميز إلى تحرك مؤشر الشاشة إلى بداية السطر التالي.
السطر 10
return 0;
  • العبارة return تودي إلى إنهاء الإجراء وإعادة القيمة 0 إلى الإجراء المستدعي (نظام التشغيل). ومن المتفق علية أن يعيد البرنامج القيمة 0 عندما يتم تنفيذه بالصورة الطبيعية دون حدوث أي مشاكل أو أخطاء. أما إذا حدث خطأ فإن البرنامج يعيد قيمة أخرى غير الصفر يستدل بها في تحديد نوع الخطأ.

لاحظ العبارات في الأسطر 5 و9 و10 تنتهي بالفاصلة المنقوطة. في الواقع، جميع العبارات في لغة++C يجب أن تنتهي بالفاصلة المنقوطة.

الملامح الرئيسية الموجودة في برامج ++C :

  • يحتوي كل برنامج ++C على إجراء رئيسي يسمى ()main والذي منه يبدأ تنفيذ البرنامج، و تعليمات أي إجراء يجب أن تحصر بين الأقواس الكبيرة {}.
  • في الوضع الافتراضي، يمثل الكائن cout الشاشة، وعند إدراج أي شيء فيه (تيار من الحروف) يتم عرضه على الشاشة. ويوجد تعريفة في مكتبة النظام iostream، ويمكن لأي إجراء آخر استخدامه.
  • وضع التعليقات مهم لقرّاء نص البرنامج، أما المترجم فيتجاهلها تماماً.
  • تنتهي كل تعليمة بفاصلة منقوطة (;)وتعبّر عن نهاية التعليمة.
بهذا تكون قد إمتلكت فكرة عامة عن كيفية كتابة البرامج بلغة ++C وفي التدوينات القادمة بإذن الله سوف تتعرف على نمط البرنامج من تنسيق وتنظيم للبرنامجة وخطوات كتابة وتنفيذ البرنامج و إستكشاف ومعالجة الأخطاء في الشيفرة البرمجية إن وجدت .

About ahmed nasr

Magazine Power Theme is officially developed by Templatezy Team. We published High quality Blogger Templates with Awesome Design for blogspot lovers.The very first Blogger Templates Company where you will find Responsive Design Templates.

0 التعليقات:

إرسال تعليق

Ads

Copyright © 2015 All Rights Reserved

Blogger Templates Designed by Templatezy