docs:cpp_tutorial
اختلافات
عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.
جانبي المراجعة السابقةالمراجعة السابقةالمراجعة التالية | المراجعة السابقة | ||
docs:cpp_tutorial [2010/02/18 12:22] – ghassane | docs:cpp_tutorial [2015/04/23 03:19] (حالي) – تحرير خارجي 127.0.0.1 | ||
---|---|---|---|
سطر 1: | سطر 1: | ||
+ | {{tag> | ||
+ | ====== مدخلك إلى لغة سي++ ====== | ||
+ | |||
+ | بسم الله الرحمن الرحيم | ||
+ | |||
+ | ===== ما هي لغة سي++؟ ===== | ||
+ | |||
+ | السي++ هي لغة برمجة رفيعة المستوى و كائنية التوجه و متعددة الاختصاصات, | ||
+ | حيث انه يمكن عمل كل شيء بها اي لا توجد حدود لهذه اللغة. | ||
+ | هي تطوير للغة السي c من طرف بيارن ستروستروب في مختبرات بيل سنة 1983, | ||
+ | و هي من اللغات الاكثر استعمالا على انظمة GNU/Linux. | ||
+ | المترجم الخاص بها هو ++g من حزمة التطوير GNU Compiler Collection | ||
+ | و تتميز السي++ ب: | ||
+ | -الاصناف | ||
+ | -الوراثة | ||
+ | -تعدد الاشكال | ||
+ | -القوالب | ||
+ | -المؤشرات | ||
+ | -التحميل الزائد | ||
+ | |||
+ | اقل كود ممكن لبرنامج سي++ | ||
+ | |||
+ | <code cpp> | ||
+ | #include < | ||
+ | |||
+ | using namespace std; | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | السطر الاول فيه مكتبة iostream القياسية و هي تتضمن بعض الدوال الاساسية للسي++ | ||
+ | كاادخال و الاخراج. | ||
+ | |||
+ | السطر الثاني فيه namespace سيتم شرحها في البرمجة الكائنية التوجه ان شاء الله. | ||
+ | |||
+ | السطر3 فيه تعريف للدالة الرئيسية main و كل ما يوجد داخل هذه الدالة يتم تنفيذه. | ||
+ | |||
+ | السطر الاخير في الدالة main هو return للدالة اي القيمة التي ترجعها و 0 تفيد انهاء البرنامج دون اخطاء. | ||
+ | |||
+ | === بئيات التطوير المتكاملة المفتوحة المصدر للسي++ === | ||
+ | |||
+ | codeBlocks | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | eclipse | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | التنصيب سهل ان شاء الله | ||
+ | |||
+ | هناك بيئات تطوير اخرى لكن واحدة تكفي ان شاء الله :-D | ||
+ | |||
+ | ===== اساسيات السي++ ===== | ||
+ | |||
+ | ==== المتغيرات ==== | ||
+ | |||
+ | المتغيرات هي اماكن في الذاكرة يتم تخزين القيم فيها حسب النوع | ||
+ | اي ان قيمة من نوع1 تخزن في متغير من نوع1 و هذا المتغير يحجز له مكان في ذاكرة الحاسوب RAM عند تعريفه. | ||
+ | و انواع المتغيرات الاساسية في السي++ هي : | ||
+ | *int : للاعداد الصحيحة | ||
+ | | ||
+ | | ||
+ | *char : للحروف | ||
+ | و يتم تعريف المتغيرات في السي++ بهذه الطريقة | ||
+ | |||
+ | <code cpp> | ||
+ | Variable_type Variable_name; | ||
+ | </ | ||
+ | |||
+ | مثال | ||
+ | |||
+ | |||
+ | <code cpp> | ||
+ | int a; | ||
+ | double var1; | ||
+ | char chaine; | ||
+ | </ | ||
+ | |||
+ | و يشترط في اسماء المتغيرات ان لا تبدا برمز كé,à,@ و لا برقم | ||
+ | و ان لا تكون فيها فراغات و لا رموز كé,à,- | ||
+ | يسمح باستعمال الرمز _ في البداية و الوسط و الاخر | ||
+ | يسمح باستعمال الارقام في الوسط و في النهاية. | ||
+ | |||
+ | و يمكن ارسال قيمة للمتغير مباشرة عند تعريفه او بعد تعرفيه | ||
+ | |||
+ | |||
+ | <code cpp> | ||
+ | int a = 100; | ||
+ | double var1 = 10.340; | ||
+ | char chaine; | ||
+ | chaine = ' | ||
+ | </ | ||
+ | |||
+ | <color red> | ||
+ | اي a ليست هي A لهذا يمكن تعريف متغير اسمه a و اخر اسمه A.</ | ||
+ | |||
+ | ==== الثوابث ==== | ||
+ | |||
+ | هي مثل المتغيرات تخزن فيها القيم لكن تلك القيم لا يمكن تغيرها ابدا داخل البرنامج | ||
+ | اي ان القيمة البدئية للثابث تظل هي نفسها في كل البرنامج. | ||
+ | |||
+ | و هذه القيمة تعطى له اثناء التصريح عنه. | ||
+ | |||
+ | لتعريف الثابت | ||
+ | |||
+ | <code cpp> | ||
+ | const Constant_type Constant_name = value; | ||
+ | </ | ||
+ | |||
+ | مثال | ||
+ | |||
+ | <code cpp> | ||
+ | const int num = 100; | ||
+ | const char ch = ' | ||
+ | </ | ||
+ | |||
+ | <color red> | ||
+ | اي تغير في الثابث سيعطي رسالة خطا اثناء عمل البرنامج. | ||
+ | </ | ||
+ | |||
+ | ==== التعليقات ==== | ||
+ | |||
+ | التعليقات هي اسطر تضاف للكود سورس و لا تتم ترجمتها للغة الالة. | ||
+ | اي لا يهتم بها المترجم اثناء ترجمة السورس كود.وجودها و عدمه لا يؤثر على البرنامج. | ||
+ | |||
+ | الهدف منها هو تسهيل قرائة السورس كود و فهمه من طرف المبرمج بحذ ذاته او من طرف مبرمج اخر يريد الاطلاع على السورس كود خاصة اذا كان البرنامج مفتوح المصدر. | ||
+ | |||
+ | و هي تكون هكذا : | ||
+ | |||
+ | <code cpp> | ||
+ | //هذا تعليق لسطر واحد | ||
+ | هذا تعليق */ | ||
+ | لعدة سطور */ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== الادخال و الاخراج ==== | ||
+ | |||
+ | |||
+ | الاخراج output هو اظهار رسالة او كتابة في شاشة الكونسول console و الادخال input هو اخذ قيمة من المستعمال و استعمالها في البرنامج. | ||
+ | |||
+ | | ||
+ | و يتم استعمالها كالتالي: | ||
+ | |||
+ | <code cpp> | ||
+ | cout << " | ||
+ | </ | ||
+ | |||
+ | endl تفيد العودة للسطر و يمكن تعوضها بالرمز | ||
+ | |||
+ | <code cpp> | ||
+ | \n | ||
+ | </ | ||
+ | |||
+ | مثال | ||
+ | |||
+ | <code cpp> | ||
+ | cout << " | ||
+ | </ | ||
+ | |||
+ | | ||
+ | و يتم استعمالها كالاتي : | ||
+ | |||
+ | <code cpp> | ||
+ | |||
+ | cin >> variable; | ||
+ | |||
+ | </ | ||
+ | |||
+ | variable هو المتغير الذي نريد ان تدخل اليه القيمة. | ||
+ | |||
+ | ==== الشروط conditions ==== | ||
+ | |||
+ | الشروط هي عبارات instructions تساعد على التحكم في سير البرنامج, | ||
+ | |||
+ | الشروط في السي++ نواعان if...else و switch...case. | ||
+ | |||
+ | الاولى تكون بهذا الشكل | ||
+ | |||
+ | <code cpp> | ||
+ | if (الشرط) | ||
+ | { | ||
+ | الاوامر في حال تحقق الشرط | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | الاوامر في حال عدم تحقق الشرط | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | مثال | ||
+ | |||
+ | <code cpp> | ||
+ | if (age < 10) | ||
+ | { | ||
+ | cout << "you are a kid"<< | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | cout << "you are not a kid\n"; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | و يمكن عمل عدة شروط بelse if | ||
+ | هكذا | ||
+ | |||
+ | <code cpp> | ||
+ | if(condition1) | ||
+ | { | ||
+ | inst1 | ||
+ | } | ||
+ | else if (condition2) | ||
+ | { | ||
+ | inst2 | ||
+ | } | ||
+ | else if (condition3) | ||
+ | { | ||
+ | inst3 | ||
+ | } | ||
+ | ... | ||
+ | else if(conditionN) | ||
+ | { | ||
+ | instN | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | inst | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | النوع الثاني يكون هكذا | ||
+ | <code cpp> | ||
+ | switch(variable) | ||
+ | { | ||
+ | case value1 : | ||
+ | instruction1 | ||
+ | break; | ||
+ | case value2 : | ||
+ | instruction2 | ||
+ | break; | ||
+ | ... | ||
+ | case valueN: | ||
+ | instructionN | ||
+ | break; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | مثال | ||
+ | |||
+ | <code cpp> | ||
+ | #include < | ||
+ | |||
+ | using namespace std; | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | cout << "num1 = \n"; | ||
+ | double num1, | ||
+ | cin >> num1; | ||
+ | cout << "num2 = \n"; | ||
+ | cin >> num2; | ||
+ | cout << " | ||
+ | char op; | ||
+ | cin >> op; | ||
+ | switch(op) | ||
+ | { | ||
+ | case ' | ||
+ | result = num1 + num2; | ||
+ | break; | ||
+ | case ' | ||
+ | result = num1 * num2; | ||
+ | break; | ||
+ | case ' | ||
+ | result = num1 - num2; | ||
+ | break; | ||
+ | case '/': | ||
+ | result = num1 / num2; | ||
+ | break; | ||
+ | } | ||
+ | cout << " | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <color red> | ||
+ | اذا لم تكن break فان الاوامر ستتداخل مع بعضها. | ||
+ | |||
+ | </ | ||
+ | |||
+ | === عوامل المقارنة === | ||
+ | |||
+ | *a == b :تعني هل a يساوي b تعيد true اذا كان نعم و false اذا لم يكن ذلك. | ||
+ | *a != b : تعني هل a لا يساوي b . | ||
+ | * a < b : اصغر | ||
+ | * a< = b : اصغر او يساوي | ||
+ | * a > b : اكبر | ||
+ | * a >= b : اكبر او يساوي | ||
+ | |||
+ | |||
+ | |||
+ | ==== الحلقات loop ==== | ||
+ | |||
+ | الحلقات هي مجموعة من الاوامر يتم تكريرها في حالة تحقق شرط معين, و تتوقف عندما يصبح الشرط غير محقق. | ||
+ | |||
+ | هناك ثلاث حلقات رئيسية في السي++ هي while و do...while و for. | ||
+ | |||
+ | === الحلقة while === | ||
+ | |||
+ | تكون هكذا : | ||
+ | <code cpp> | ||
+ | while(الشرط) | ||
+ | } | ||
+ | الاوامر التي تريد تكريرها في حال تحقق الشرط | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | مثال | ||
+ | |||
+ | <code cpp> | ||
+ | int b = 129; | ||
+ | int a = 1; | ||
+ | while (a<=b) | ||
+ | { | ||
+ | if(b%a == 0) | ||
+ | { | ||
+ | cout << " | ||
+ | a = a + 1; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === الحلقة do...While === | ||
+ | |||
+ | تكون هكذا: | ||
+ | <code cpp> | ||
+ | do | ||
+ | } | ||
+ | الاوامر التي تريد تكريرها | ||
+ | } | ||
+ | while(الشرط) | ||
+ | </ | ||
+ | |||
+ | مثال: | ||
+ | |||
+ | <code cpp> | ||
+ | int a = 0; | ||
+ | do | ||
+ | { | ||
+ | cout << a << endl; | ||
+ | a++; | ||
+ | </ | ||
+ | |||
+ | تعني ++a زادة واحد لa و | ||
+ | |||
+ | <code cpp> | ||
+ | a--; | ||
+ | </ | ||
+ | نقاصن واحد من a . | ||
+ | |||
+ | === الحلقة for === | ||
+ | |||
+ | تكون هكذا: | ||
+ | <code cpp> | ||
+ | for(الخطوة; | ||
+ | } | ||
+ | الاوامر التي تريد تكريرها | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | مثال : | ||
+ | |||
+ | <code cpp> | ||
+ | for(int i = 0; | ||
+ | { | ||
+ | cout << i << "* 5 = " << i*5 <<" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | في البداية تكون قيمة i هي 0 (يمكن ان تبدا باي قيمة تريدها), | ||
+ | لن تضاف لها 1 و ستنتهي الحلقة. | ||
+ | |||
+ | هذا مثال اخر لكن باضافة 3 و ليس واحد: | ||
+ | |||
+ | |||
+ | |||
+ | {{for.png? | ||
+ | |||
+ | |||
+ | ==== المصفوفات ==== | ||
+ | |||
+ | المصفوفات هي مجموعة تتكون من قيم من نفس النوع يتم الوصول لكل قيمة برقم ترتيبي index. | ||
+ | يتم تعريف مصفوفة في سي++ هكذا : | ||
+ | <code cpp> | ||
+ | array_type array_name[array_lenght]; | ||
+ | </ | ||
+ | |||
+ | array_type نوع المصفوفة و هو مثل المتغيرات اما يكون int او char او double او... | ||
+ | |||
+ | array_name اسم المصفوفة و له نفس شروط اسم المتغيرات. | ||
+ | |||
+ | array_lenght هنا تضع حجم المصفوفة اي كم عدد الخانات التي تريدها او بعبارة اخرى كم عدد القيم التي ستحتاج الى تخزينها في المصفوفة. | ||
+ | |||
+ | في سي++ ترتيب القيم يبدا ب0 اي ان مصفوفة حجمها 3 تبدا ب0 ثم 1 ثم 2. | ||
+ | |||
+ | مثال: | ||
+ | |||
+ | <code cpp> | ||
+ | int nums[3]; | ||
+ | nums[0] = 31; | ||
+ | nums[1] = 326; | ||
+ | nums[2] = 1; | ||
+ | for (int i = 0; | ||
+ | { | ||
+ | cout << nums[i] << endl; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== الدوال ==== | ||
+ | الدوال هي عدة اوامر يتم تنفيذها لحظة استدعاء الدالة و يمكن ارسال بارامترات للدالة و ايضا ارجاع قيمة معينة. و يتم تعريف الدالة في سي++ هكذا : | ||
+ | <code cpp> | ||
+ | function_type function_name(param1_type parm1, | ||
+ | { | ||
+ | هنا تكتب الاوامر | ||
+ | return return_value; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | function_type هو نوع الدالة و هو نوع القيمة التي سترجعها الدالة. النوع مثل المتغيرات int و double و char و... لكن يضاف نوع جديد هو void و هو يعني ان الدالة | ||
+ | لا تعيد شيء و يجب حذف return في هذه الحالة. | ||
+ | function_name و هو اسم الدالة التي تريد له نفس شروط المتغيرات. | ||
+ | param_type param هي البارامترات التي سترسل للدالة و هي عبارة عن متغيرات. | ||
+ | return_value هي القيمة التي تريد ان ترجعها الدالة طبعا الدالة التي من نوع void | ||
+ | لا تحتاج لreturn, و القيمة يمكن ان تكون عدد او متغير او حرف حسب عمل الدالة. | ||
+ | | ||
+ | <code cpp> | ||
+ | #inclue < | ||
+ | using namespace std; | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | cout << addition(1, | ||
+ | int num1 = 10; | ||
+ | int num2 = 100; | ||
+ | int c = addition(num1, | ||
+ | cout << c << endl; | ||
+ | return 0 | ||
+ | } | ||
+ | int addition(int a,int b) | ||
+ | { | ||
+ | int c = a + b; | ||
+ | return c; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | و هذا مثال لدالة من نوع void | ||
+ | <code cpp> | ||
+ | void salam() | ||
+ | { | ||
+ | cout << " | ||
+ | } | ||
+ | int main() | ||
+ | { | ||
+ | cout << salam() << endl; | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | (لم يكتمل) |
docs/cpp_tutorial.txt · آخر تعديل: 2015/04/23 03:19 بواسطة 127.0.0.1