تسجيل الدخول

مشاهدة النسخة كاملة : سلسلة دروس تعلم البرمجة بلغة C++



رجل المخاطر
11-07-2009, 10:45 PM
بسم الله الرحمن الرحيم

مرحبا بك في سلسلة تعلم البرمجة بلغة C++، والتي تعد اللغة الاولى في مجال تطوير وبرمجة الالعاب، فمثلما قال الاخ مودي سان، لا توجد أي شركة تطوير العاب الا ولغة C++ هي اللغة الاساسية في تطوير العابها، لذلك، لغة سي++ هي مهمة لكل من يطمح صنع العابه الخاصة بشكل احترافي :biggthump

تهدف هذه الدروس بشكل أساسي لكل من يريد تعلم هذه اللغة، بشكل مبسط وسريع، ودون الخوض في أمور تعقيدية لا فائدة منها.

أحب أشير هنا إلى بعض الأمور ، وهي إن الدروس المكتوبة هنا مقدمة خصيصا لمن لا يملك أدنى فكرة عن البرمجة بلغة C++ ، إضافة إلى إن الدروس هذه تعمل على C++ ANSI، لضمان عمل الاكواد البرمجية على جميع أنظمة التشغيل.
ملاحظة (1): باب الأسئلة والاستفسارات مفتوح للجميع، ولكن رجاءً، تأكد من قرائة الدروس بشكل جيد قبل السؤال، تأكد من أنك قد قرأت كل حرف من الدرس، وفي حالة لو استعصى أي شيء عليك، يمكنك مراسلتي على بريدي التالي: ahmeddangerman@gmail.com ، أو عن طريق كتابة إستفسارك مباشرة على هذا المنتدى.

ملاحظة (2) : جميع الدروس الموجودة قد تم تنفيذها على برنامج – او المصرف - Microsoft Visual C++ 2008، لتحميل البرنامج، ادخل الرابط التالي هنا (http://www.microsoft.com/express/download/#webInstall) .


الدرس الأول: مدخل في علم البرمجة بلغة C++ .


صنع أول مشروع برمجي

يفترض بك الآن انك قد انتهيت من تحميل وتثبيت البرنامج الخاص بالتطوير بلغة C++ ، إن كنت لم تفعل بعد، فعد لقراءة الدرس بعد انتهائك من التثبيت.

لعل أفضل طريقة لتعلم البرمجة، هي البدأ بكتابة البرامج مباشرة، لذا، دعونا من المقدمات الطويلة والتي لا فائدة منها، ولبدأ ببناء أول مشروع، سيتم شرح كيفية إنشاء مشروع في ببرنامج Microsoft Visual C++ .

أنت الآن بحاجة لفتح مشروع جديد، ولفعل ذلك في برنامج Microsoft Visual C++ اتبع الخطوات التالية:-

من القائمة في أعلى الصفحة اختر:
File => New => Project

وفي القائمة التالية، من اليسار عند Project type، اختر آخر كلمة General . بعدها Empty Project ، واختر أي اسم تريده لمشروعك، وليكن باسم my first program .

الآن، عند أقصى اليسار لدى Solution Explorer، ستجد 3 ملفات، حاليا سنستخدم Source Files، انقر بزر الفأرة الأيمن على هذا الملف واختر على Add => New item ، بعدها اختر C++ file . وسمه بأي ملف تشاء.

الآن، أدخل الشيفرة التالية:-


#include <iostream>
using namespace std;

int main ()
{
cout << "Hello World!";
return 0;
}

الآن اضغط زر F5 ليتم بناء أول برنامج لك، الإخراج سيكون كالتالي:-

Hello World!Press any key to continue . . .

مبارك عليك، لقد طورت أول برنامجٍ لك في علم البرمجة ! والآن مع الشرح التفصيلي، سيتم الشرح بشكل غير مرتب حتى يسهل الشرح: -


int main ()
int main()، الدالة الرئيسية main function والتي يبدأ أي برنامج منها، يجب أن يحتوي أي برنامج بلغة C++ على دالة رئيسية واحدة في كل برنامج، القوسين { و } يمثلان متن الدالة، بمعنى اوضح أن القوس { يمثل بداية الدالة، و القوس } يمثل نهاية الدالة (سيتم عن الدوال في موضوع مفصل إن شاء الله في وقت لاحق).


cout << "Hello World!";
يطلق على هذا السطر بـجملة Statement. هدفها هو إخراج جملة Hello world! ، بداية الكلمة cout تعني إخراج، والإخراج المطلوب هنا الجملة Hello World! ، بينما << تعني اتجاه الخرج، والآن، لكي تعرض أي جملة في برنامجك الخاص يجب أن تبدأ الجملة بعلامة تنصيص، في اول الجملة و آخرها، أما الرمز بعد علامة التنصيص الثانية ; فالمقصود منه أن الجملة انتهت، أي جملة في لغة C++ يجب أن تنتهي بهذا الرمز .


#include <iostream>
using namespace std;

#include، تسمى هذه الجملة بالمعالج المسبق، الغرض من هذه الكلمة هو استدعاء المكتبات الموجودة بلغة C++ ، المكتبة المستدعاة هنا هي iostream ، لو لم يتم استدعاء هذه المكتبة لما تمكنت من استخدام cout لأجل عرض جملة Hello World! على الشاشة، أياً يكن، هناك العديد من المكتبات الموجودة أساسا مع أي مصرف للغة C++ لكل منها غرض لتأديته.


return 0;

هذه الجملة تطلب من المصرف العودة للقيمة صفر، أي اخرج من البرنامج.

بالنسبة لـ using namespace فهي تعني فضاء الأسماء لـ std ، لو لم يتم وضع هذا السطر، لتوجب علينا كتابة cout هكذا std::cout، بمعنى آخر cout هي في الأصل std::cout

Press any key to continue . . .

وهذه الجملة تأتي عند انتهاء البرنامج، وتعني أنه تم الانتهاء من البرنامج.
والآن، لنعد قليلاً للشيفرة التي كتبناها لصنع البرنامج، ولنظف عليها تعديل بسيط جداً إرجع للشيفرة السابقة وغير حرف c في كلمة cout، اجعله من الحرف الصغير الى الحرف الكبير، ثم ابني البرنامج من جديد. سيحدث خطأ اثناء بناء الشيفرة ، لماذا ؟ لأن لغة C++ هي حساسة لحالة الأحرف، فكتابة cout هي ليست نفسها Cout .

حتى تعرف اكثر كيف تعمل برامج C++ لنعد من جديد للشيفرة، وقم بالتعديل التالي:-

#include <iostream>
using namespace std;

int main ()
{
cout << "Hello World!";
cout << "welcome to c++!";
return 0;
}

سيكون الخرج كالتالي:-

Hello World!welcome to c++!
ما يزال البرنامج يظهر الجملتين في نفس السطر، ولحل هذه المشكلة يجب علينا اخبار المصرف بدأ سطر جديد لتكون كل جملة في سطر، ولعمل ذلك، سنقوم بالتعديل التالي:-

cout << "Hello World!\n";
cout << "welcome to c++!";


لاحظ نهاية جملة Hello world! هناك رمز جديد علينا وهو \n، الغرض من هذا الرمز هو البدأ بسطر جديد بعد جملة Hello World، وبدون هذا الرمز، سيكمل البرنامج اظهار أي جملة حتى لو كتبت في أمر جديد، الآن سيكون الخرج كالتالي:-

Hello World!
welcome to c++!

والآن لنحذف الجملة الثانية، ولنجعل الجملتين في سطر واحد:-

cout << "Hello World!\nwelcome to c++!";

الإخراج سيكون هو نفسه كما في السابق.

مثال آخر: طباعة مثلث على الشاشة.

أحد الامثلة المنتشرة في كتب تعليم لغة C++ هو كيفية طباعة اشكال هندسية مبسطة على الشاشة; أحد هذه الاشكال هو المعروض في الصورة التالية :

*
***
*****
الشيفرة لهذا البرنامج هي:-

#include <iostream>
using namespace std;

int main ()
{
cout << " * \n *** \n ***** \n";
}

إلى هنا ينتهي الدرس، موعد الدرس التالي هو يوم الاربعاء القادم إن شاء الله، وسيكون بعنوان المتغيرات والعمليات الحسابية.

الواجب

* قم بكتابة برنامج يطبع الجملة التالية في في سطر واحد فقط:-


hello
world!
welcome to
c++

السؤال الثاني: بإستخدام الرمز * ، إصنع المزيد من الاشكال الهندسية، إصنع مربع، معين، ومستطيل...


إنتهى الدرس الاول من سلسلة دروس تعلم البرمجة بلغة سي++، أتمنى أن يكون الشرح واضحاً ومبسط كما رسمت له، والى اللقاء في موعدنا القادم، يوم الخميس من هذا الاسبوع من الدرس الثاني، وهو بعنوان: المتغيرات والعمليات الحسابية.

سلام

modyKun
11-07-2009, 11:47 PM
سلمت أناملك عزيزي على كتابة الدرس ^^ .. جاري اعتماد موضوعك كدورة مفصلة للـC++ في دورة محرك الأوغر ^^ ..
تحياتي لك =) .. وأشكرك من كل قلبي ^^ ..

kakarot
12-07-2009, 10:56 AM
بارك الله فيك على هذه المقدمة

بس إذا أمكن امر n/ يوضع لكي نبدأ بسطر جديد

هكذا

cout << "Hello World!"/n
؟؟

رجل المخاطر
13-07-2009, 03:03 PM
بسم الله الرحمن الرحيم

اشكر جميع من مر على الموضوع، واشكر من رد على الموضوع

[
LEFT]cout << "Hello World!"/n[/LEFT]

لا مايصلح، لازم تكون داخل علامة التنصيص.

بهذا الشكل:-



cout << "Hello World!/n"

alkhattab
13-07-2009, 04:34 PM
أخي عندي سؤال هذه الدورة للسي ++ أو لبرمجة الألعاب بها ؟؟؟
لأن مكانها في قسم البرمجة أخي الكريم
وهل ينفع إستخدام التيربو سي ++ أو أي من منتجات بورلاند فيها

رجل المخاطر
15-07-2009, 01:29 PM
أخير omarbozou، هذه الدروس تعتبر مقدمات للغة سي++ التي بعدها - إن شاء الله - تستطيع الدخول في عالم برمجة الالعاب بواسطة لغة سي++. والدروس تنفع لأي برنامج خاص للغة سي++، شكرا لتفاعلك.

رجل المخاطر
15-07-2009, 01:36 PM
أنواع حفظ البيانات
هناك عدة أنواع من البيانات التي يمكن حفظها في الذاكرة المؤقتة للحاسب RAM بلغة C++، منها عدد طبيعي، عدد صحيح، حرف..الخ. سيتم شرح المزيد من التفاصيل في هذا الدرس، لذا إبقى معنا.


تعريف متغير


لحفظ عدد صحيح في الذاكرة ، نحتاج لتعريف متغير Variable ، ولتعريف متغير، نقوم بالتعريف التالي:-


[نوع المتغير] [إسم المتغير] ;
ونوع البيانات لمتغير لعدد صحيح هو int (إختصاراً لـ integer). لذا، للتعريف عن عدد صحيح نقوم بما يلي :-
int variable;
و لو اردنا تعيين قيمة للمتغير نقوم بما يلي:-
int variable;
variable = 5;
هنا استخدمنا عامل التعيين، وهو = لتعيين قيمة للمتغير، يسمى الرمز = بعامل التعيين وليس عامل المساواة بينما عامل المساواة هو == ، ستعرف الفرق اكثر في الفصول القادمة من هذا الكتاب، وتذكر انك بتعريفك لمتغير يعني أنك قمت بحجز مكان في الذاكرة لهذا المتغير، تختلف حجم هذه الذاكرة بإختلاف نوع المتغير.


تسمية المتغير

هناك شروط يجب اتباعها لإختيار إسم لمتغير، وهي:-


لايمكن أن يبدأ المتغير بغير الحروف الابجدية (A – Z او a - z) أو رمز التسطير السفلي ( _ )، ولكن من بعد الحرف الثاني، من المككن ان تكون التسمية بعدها بعدد.
لا يمكن إستخدام المسافة في تسمية المتغير، يمكنك إستخدام عوضاً عن ذلك رمز التسطير السفلي ( _ ).
لا يمكن لإسم المتغير أن يكون كلمة محجوزة في لغة C++، سيتم الحديث أكثر عن الكلمات المحجوزة في وقت لاحق.
لا يمكن لمتغيرين أن يملكان نفس الاسم وهما في نفس المدى، سيتم مناقشة هذا الموضوع بشكل مفصل في وقت لاحق.

وهذه بعض النصائح لتسمية متغير:-


يفضل ان يكون اسم المتغير له دلالة على فائدته.
في حالة أنك إستخدمت للمتغير إسما لأكثر من كلمة، يفضل أن تبدأ أول حرف لكل كلمة بحرف كبير، أو إستخدام لكل كلمة من اول حرف حرف كبير، فيما عدى اول كلمة.
مثال: testScore, firstNumber ..الخ.



انواع البيانات

الاعداد الصحيحة

هناك اكثر من نوع للبيانات الرقمية في لغة C++، وهي: short, int, long، جميع هذه الانواع الثلاث المذكورة تستطيع حفظ بيانات من نوع عدد صحيح (ملاحظة: الاعداد الصحيحة هي الي لا تحوي كسور او فاصلة، وتشمل الصفر، و الأعداد السالبة والموجبة)، لكل متغير من هذه المتغيرات حجم يحتاجه للذاكرة، إضافة لكون كل متغير يملك حد معين يمكنه حفظه، تختلف قيمة الذاكرة التي يحتاجها المتغير للذاكرة بإختلاف نوع المصرف الذي تستخدمه ونظام التشغيل الذي تستخدمه، في مصرف Microsoft Visual C++ يحتاج متغير من نوع short الى 2 بايت، و int الى 4 بايت، وأخيراً long الى 4 بايت كذلك، كما ان متغير من نوع int يمكنه حفظ بيانات اكبر من متغير من نوع short، ومتغير من نوع long يمكنه حفظ بيانات اكبر من متغير int .


الاعداد عائمة النقطة

المقصود بالاعداد عائمة النقطة Floating point ، هي الاعداد التي تحوي فواصل، مثل 1.55 و 1.99 و 5.66 الخ..
انواع هذه البيانات : float , double , long double ، حيث flaot هو النوع الاصغر حجما في الذاكرة، وdouble هو الوسط، بينما long double هو الاعلى بينهما.


البيانات الحرفية

ولها نوعان، هما char ويحتفظ بقيمة حرف واحد فقط، و string ويمكنه عدة احرف، سواء اكانت جملة، او كلمة.


نوع البيانات المنطقي bool

ويأخذ هذا النوع قيمتين فقط، هما true أو false .


مثال: جمع عددين صحيحين


#include <iostream>
using namespace std;
int main()
{
int firstNumber;
int secondNumber;
int total ;
cout << "Enter first number: ";
cin >> firstNumber;
cout << "Enter second number: ";
cin >> secondNumber;
total = firstNumber + secondNumber ;
cout << "the total = " << total << endl;
}

هناك العديد من الرموز الجديد علينا هنا، لذا، سيتم شرح الجديد.
في البداية عرفنا متغيرين من نوع int، وهما:-


int firstNumber;
int secondNumber;

ثم استخدما cout لعرض نص يطلب من المستخدم إدخال عدد. بعدها تم وضع الكائن cin ليستقبل العدد المدخول من المستخدم ويعين القيمة للمتغير المكتوب بعد العامل >> .
اخيراً تم تعيين متغير آخر بإسم total قيمته تعادل قيمة المتغيرين firstNumber و secondNumber . وأخيراً في السطر الاخير:



cout << "the total = " << total << endl;

total لعرض قيمة جمع العددين، و endl، تعني البدأ بسطر جديد.
هذا ما لدي الآن في هذا الدرس، تحدثت في هذا الدرس عن انواع المتغيرات، وكيفية إجراء العمليات الحسابية بشكل مبسط، في الدرس القادم سأتحدث أكثر عن طريقة العمليات الحسابية في C++، إضافة لجمل إتخاذ القرار، if و switch

shadow king 210
22-07-2009, 01:16 PM
شكككككككككرا على الدروس الرائعة

Ahmedbna
23-07-2009, 04:37 PM
سلمت يداك يا بنى على الدروس السهلة المتميزة اللتى تقدمها الى الأن - انا مع انى مبحبش السى بلاس بلاس لكن سهولة شرحك جعلتنى اكمل قراءة بقية دروسك - عموما لا تحرمنا من ابداعك فى شرح ++C لأن هذه اللغة فعلا هى اللغة الأحترافية رقم 1 الى الأن فى العالم ولا تجد شركة العاب عالمية او شركات برامج لا تستخدمها - تحياتى لك وننتظر المزيد - بالتوفيق

LordOfShadows
10-08-2009, 07:36 PM
لطالما اردت تعلم ++c ولكن جميع الدروس التي وجدتها معقدة جدا الا دروسك فلقد أرجعت لي الرغبة بتعلم هذه الغة
ارجوا ان تكمل ولا تحرمنا من دروسك

AnonymDemon
19-08-2009, 04:50 PM
مشكووور على الموضوع بس في حوايج مافهمتها :

بينما << تعني اتجاه الخرج،
ويش قصدك ؟ وليش cin سمهها عكس cout ؟

total لعرض قيمة جمع العددين، و endl، تعني البدأ بسطر جديد.
طيب لو حطينا /n ينفع ؟

XOoKnightoOX
26-08-2009, 10:04 PM
هل ستستمر الدورة ام ماذا ؟

LiOn×HeaRt
31-08-2009, 03:09 AM
تمام عليك والله شرح حلو و ليس مختصر
أصلا الدروس للي شفتها مو عادية يضيفولك أشياء مال أمها داعي
انت شرحك عادي وليس مختصر ولكنه جميل جدا (ماتدري تقرا عامي ولا فصحة):bigeyes:

LiOn×HeaRt
31-08-2009, 05:37 AM
أخوي مافي ولا مثال زبط معاي
كل الأمثله سويتها ودققت فيها 100% ولما أظغط f5 اللي هو build
تطلعلي شاشة سوده اللي هي cmd وتقفل
والمثال الثاني اللي هو جمع عددين لما أدخل العدد الأول والعدد الثاني يقفل ومايطلعلي الناتج
ليش.؟