جود ثيمز

السبت، 29 يونيو 2013

1: برنامجك الأول في سي++

لغة سي++ هي من اللغات عالية المستوى وتستخدم كلمات انجليزية تقريباً بمعناها الأصلي ولهذا تتطلب برنامجاً يسمى مترجم "Compiler" ليقوم بتحويل الأوامر في سي++ إلى لغة الآلة فالكمبيوتر لايفهم اللغات عالية المستوى بشكل مباشر , وهناك أداة اخرى نحتاج إليها وهي المربط أو Linker وهو أداة تقوم بتجميع ملفات .obj الناتج من عملية الترجمة إلى ملف تنفيذي ويكون عادة بالإمتداد exe. أو مكتبات الربط الديناميكية .dll , وأداة أخرى وهي محرر النصوص والذي سنكتب فيه السطور البرمجية مثل برنامج المفكرة الموجود على نظام الويندوز, في الماضي كانت هذه البرامج متوفرة كل واحد على حدة ويتم ربط البرنامج وترجمته عن طريق أسطر أوامر console , أما اليوم فهي موجودة في برنامج واحد يحتوي على محرر النصوص والمترجم والمربط في آن واحد ولهذا يسمونه بيئة التطوير المتكاملة أو Integrated Development Environment (اختصاراً IDE) , ومن أشهرها Borland C++ وبيئة الفيجوال ستوديو Microsoft Visual Studio المقدمة من شركة ميكروسوفت , كذلك يمكنك استخدام برنامج Dev-C++ المقدم من شركة Bloodshed وهو الذي سنستخدمه في جميع دروسنا ويمكنك تحميله من هنا Dev-C++ .
والآن بعد أن قمت بتثبيت البرنامج وأصبحت جاهزاً هيا بنا لنكتب أول برنامج سي++ وهذه ستكون خطوتك الأولى لمعرفة اساسيات اللغة بإذن الله , الآن قم بفتح برنامج Dev-C++ ثم افتح مشروعاً جديداً وذلك من قائمة File ثم New ثم Source File أو بالضغط على Ctrl+N ثم اكتب في محرر النصوص الخاص بالبرنامج الاسطر التالية :
#include<iostream>
#include<conio.h>
using namespace std;
int main ()
{
cout << "Hi C++";
getch();
return 0;
}
والآن لتنفيذ البرنامج اذهب إلى قائمة Execute ثم اختر Compile & Run أو اضغط على F9 سيظهر مربع حوار لحفظ ملف الشيفرة المصدرية اختر المكان الأنسب لك بحيث يمكنك الوصول للملف لاحقاً ثم انقر على Save .
مبروووووك لقد قمت بكتابة أول برنامج بلغة سي++ وستلاحظ أنه ظهرت على الشاشة عبارة Hi C++ , والآن سنشرح أسطر البرنامج الذي كتبناه سطراً سطراً :
#include<iostream>
في هذا السطر استخدمنا الكلمة include# ومعناها "تضمين" (والرمز # يلفظ هاش أو باوند ويعني توجيه) ثم الكلمة iostream وهو ملف رأسي (أي أن مايكتب بين العلامتين <> في العبارة #include <> يسمى ملف رأسي ويسمى أيضاً مكتبة دوال) , ويحتوي الملف الرأسي على دوال جاهزة تساعد على كتابة البرامج , والملف الرأسي iostream يحتوي على دوال الإدخال والإخراج وهو اختصار لـ Input Output Stream وتضمينه اجباري في البرنامج اذا اردنا القيام بالادخال والاخراج .
#include<conio.h>
وهو نفس السطر السابق ولكن بدلاً من iostream كتبنا conio.h وذلك لكي نستخدم الدالة getch والتي كتبناها في نهاية البرنامج (ستعرف بعد قليل فائدة هذه الداله) , والدالة getch لن تعمل وستظهر رسالة خطأ إذا لم نضمن المكتبة conio.h أما .h فهو امتداد الملفات الرأسية في لغة C (عرفنا سابقاً أن لغة سي++ هي امتداد وتطوير للغة سي وتستخدم اغلب مكتباتها) , أما مكتبات سي++ فلاتحتوي على الامتداد .h وهذا ما لاحظته في المكتبة iostream فهي لاتنتهي بالامتداد .h .
اذن في السطرين السابقين قمنا بتوجيه المترجم أن يضمن المكتبتين iostream و conio.h ويمكننا تضمين مكتبات اخرى بنفس الطريقة .
using namespace std;
ومعناها "قم باستخدام فضاء التسمية المسمى std" وتسمى تقنية الحقل المصرح حيث نستخدم فضاءات الاسماء (Namespaces) في برامجنا باستخدام الكلمة المحجوزة using لتخبر المترجم أن الدوال والمتغيرات مصرحة في مكان محدد من (أغلب الدوال التي سنستخدمها موجودة في فضاء التسمية "namespace" المسمى std) واذا حذفت هذه العبارة ستضطر الى أن تضع std:: قبل كل أمر في البرنامج وهذا متعب جداً , و std اختصار لكلمة Standard .
int main()
وهي الدالة الرئيسية في البرنامج وهي التي يبدأ من عندها تنفيذ البرنامج وتكون موجودة في أي برنامج مكتوب بلغة سي++ مهما كان حجمه أو وظيفته ونلاحظ أنها تبدأ بالقوس المعقوف } وتنتهي بقوس اغلاق { , اما int فتعني ان الدالة main سترجع لنا قيمة عددية صحيحة (في بعض المترجمات مثل Dev-C++ يتوجب عليك أن تجعل الدالة ترجع قيمة عددية صحيحة أما في المترجمات الأخرى مثل الفيجوال سي++ فيمكنك أن تجعل الدالة main لاترجع أي قيمة وذلك بأن تستبدل int بـ void وتمحو الجملة return 0) .
cout << "Hi C++";
قمنا بطباعة Hi C++ على الشاشة وهذا باستخدام الكائن cout وتنطق (سي آوت) ونضع الشئ الذي نريد طباعته داخل علامتي الاقتباس " " (جرب أن تضع كلمة اخرى بدلاً من Hi C++ لترى بنفسك), والرموز المستخدمة مثل << تسمى المعاملات أو Operators وسنتعرف عليها لاحقاً , والكائن cout موجود في المكتبة iostream .
getch();
وظيفة هذه الدالة هو انها تستقبل حرف واحد فقط من لوحة المفاتيح ولكنها لا تطبعه على الشاشة وتستخدم هذه الدالة لادخال الأحرف ولكن هناك دوال اخرى أكثر كفاءة منها لهذا سيقتصر استخدامها في أن نجعلها توقف شاشة المخرجات لنرى مخرجات برنامجنا , واذا لم نكتبها في برنامجنا سنلاحظ انه تظهر شاشة سوداء وتختفي بسرعة ولن نرى مخرجات برنامجنا (ويمكنك محو getch وتجربة هذا بنفسك) .
return 0;
معنى return أي ارجاع وهذا السطر يحدد القيمة التي سترجعها الدالة main بعد انتهاء تنفيذها ويتوجب ارجاع القيمة 0 اليها لينتهي تنفيذ البرنامج وستظهر رسالة خطأ اذا لم تكتب هذه العبارة .
ويجب عليك الانتباه ان جميع اوامر لغة سي++ تنتهي بفاصلة منقوطة ولكن لاتقلق فمع استمرارك بالتعلم وكتابة المزيد من السطور البرمجية ستتعود على ذلك .
في الدرس القادم ستنعرف على أنواع البيانات في لغة سي++ .