أدوات المستخدم

أدوات الموقع


docs:cpp_tutorial

اختلافات

عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.

رابط إلى هذه المقارنة

جانبي المراجعة السابقة المراجعة السابقة
المراجعة التالية
المراجعة السابقة
docs:cpp_tutorial [2010/02/18 10:27]
ghassane
docs:cpp_tutorial [2015/04/23 00:19] (حالي)
سطر 1: سطر 1:
 +{{tag>​مقالات برمجة سي++}}
  
 +====== مدخلك إلى لغة سي++ ======
 +
 +بسم الله الرحمن الرحيم
 +
 +===== ما هي لغة سي++؟ =====
 +
 +السي++ هي لغة برمجة رفيعة المستوى و كائنية التوجه و متعددة الاختصاصات,​
 +حيث انه يمكن عمل كل شيء بها اي لا توجد حدود لهذه اللغة.
 +هي تطوير للغة السي c من طرف بيارن ستروستروب في مختبرات بيل سنة 1983,
 +و هي من اللغات الاكثر استعمالا على انظمة GNU/Linux.
 +المترجم الخاص بها هو ++g من حزمة التطوير GNU Compiler Collection
 +و تتميز السي++ ب:
 +              -الاصناف
 +              -الوراثة
 +              -تعدد الاشكال
 +              -القوالب
 +              -المؤشرات
 +              -التحميل الزائد
 +
 +اقل كود ممكن لبرنامج سي++
 +
 +<code cpp>
 +#include <​iostream>​
 +
 +using namespace std;
 +
 +int main()
 +{
 +    return 0;
 +}
 +
 +</​code>​
 +
 +السطر الاول فيه مكتبة iostream القياسية و هي تتضمن بعض الدوال الاساسية للسي++
 +كاادخال و الاخراج.
 +
 +السطر الثاني فيه namespace سيتم شرحها في البرمجة الكائنية التوجه ان شاء الله.
 +
 +السطر3 فيه تعريف للدالة الرئيسية main و كل ما يوجد داخل هذه الدالة يتم تنفيذه.
 +
 +السطر الاخير في الدالة main هو return للدالة اي القيمة التي ترجعها و 0 تفيد انهاء البرنامج دون اخطاء.
 +
 +=== بئيات التطوير المتكاملة المفتوحة المصدر للسي++ ===
 +
 +codeBlocks
 +
 +[[http://​www.codeblocks.org/​downloads/​5|اختر توزيعتك]]
 +
 +eclipse
 +
 +[[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​galileo/​SR1/​eclipse-cpp-galileo-SR1-linux-gtk.tar.gz|32bit]]
 +
 +[[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​galileo/​SR1/​eclipse-cpp-galileo-SR1-linux-gtk-x86_64.tar.gz|64bit]]
 +
 +التنصيب سهل ان شاء الله
 +
 +هناك بيئات تطوير اخرى لكن واحدة تكفي ان شاء الله :-D
 +
 +===== اساسيات السي++ =====
 +
 +==== المتغيرات ====
 +
 +المتغيرات هي اماكن في الذاكرة يتم تخزين القيم فيها حسب النوع
 +اي ان قيمة من نوع1 تخزن في متغير من نوع1 و هذا المتغير يحجز له مكان في ذاكرة الحاسوب RAM عند تعريفه.
 +و انواع المتغيرات الاساسية في السي++ هي :
 +   *int : للاعداد الصحيحة
 +   ​*double : للاعداد العشرية بعدة ارقام بعد الفاصلة
 +   ​*float : للاعداد العشرية ببعض الارقام بعد الفاصلة
 +   *char : للحروف
 +و يتم تعريف المتغيرات في السي++ بهذه الطريقة
 +
 +<code cpp>
 +Variable_type Variable_name;​
 +</​code>​
 +
 +مثال
 +
 +
 +<code cpp>
 +int a;
 +double var1;
 +char chaine;
 +</​code>​
 +
 +و يشترط في اسماء المتغيرات ان لا تبدا برمز كé,à,@ و لا برقم
 +و ان لا تكون فيها فراغات و لا رموز كé,à,-
 +يسمح باستعمال الرمز _ في البداية و الوسط و الاخر
 +يسمح باستعمال الارقام في الوسط و في النهاية.
 +
 +و يمكن ارسال قيمة للمتغير مباشرة عند تعريفه او بعد تعرفيه
 +
 +
 +<code cpp>
 +int a = 100;
 +double var1 = 10.340;
 +char chaine;
 +chaine = '​A'​
 +</​code>​
 +
 +<color red>​ملاحظة : السي++ حساسة للحروف اي ان الحرف الكبير ليس هو الحرف الصغير
 +اي a ليست هي A لهذا يمكن تعريف متغير اسمه a و اخر اسمه A.</​color>​
 +
 +==== الثوابث ====
 +
 +هي مثل المتغيرات تخزن فيها القيم لكن تلك القيم لا يمكن تغيرها ابدا داخل البرنامج
 +اي ان القيمة البدئية للثابث تظل هي نفسها في كل البرنامج.
 +
 +و هذه القيمة تعطى له اثناء التصريح عنه.
 +
 +لتعريف الثابت ​ نتكتب :
 +
 +<code cpp>
 +const Constant_type Constant_name = value;
 +</​code>​
 +
 +مثال
 +
 +<code cpp>
 +const int num = 100;
 +const char ch = '​A'​
 +</​code>​
 +
 +<color red>
 +اي تغير في الثابث سيعطي رسالة خطا اثناء عمل البرنامج.
 +</​color>​
 +
 +==== التعليقات ====
 +
 +التعليقات هي اسطر تضاف للكود سورس و لا تتم ترجمتها للغة الالة.
 +اي لا يهتم بها المترجم اثناء ترجمة السورس كود.وجودها و عدمه لا يؤثر على البرنامج.
 +
 +الهدف منها هو تسهيل قرائة السورس كود و فهمه من طرف المبرمج بحذ ذاته او من طرف مبرمج اخر يريد الاطلاع على السورس كود خاصة اذا كان البرنامج مفتوح المصدر.
 +
 +و هي تكون هكذا :
 +
 +<code cpp>
 +//هذا تعليق لسطر واحد
 +هذا تعليق */
 +لعدة سطور */
 +</​code>​
 +
 +
 +==== الادخال و الاخراج ====
 +
 +
 +الاخراج output هو اظهار رسالة او كتابة في شاشة الكونسول console و الادخال input هو اخذ قيمة من المستعمال و استعمالها في البرنامج.
 +
 +   ​*الدالةالاساسية للاخراج في السي++ هي cout و هي موجودة في مكتبة iostream
 +و يتم استعمالها كالتالي:​
 +
 +<code cpp>
 +cout << "​Assalamo 3alaikom"​ << endl;
 +</​code>​
 +
 +endl تفيد العودة للسطر و يمكن تعوضها بالرمز ​
 +
 +<code cpp>
 +\n
 +</​code>​
 +
 +مثال
 +
 +<code cpp>
 +cout << "​Assalamo 3alaikom\n"; ​
 +</​code>​
 +
 +   ​*الدالة الاساسية للدخال في السي++ هي cin و هي ايضا موجودة في iostream
 +و يتم استعمالها كالاتي :
 +
 +<code cpp>
 +
 +cin >> variable;
 +
 +</​code>​
 +
 +variable هو المتغير الذي نريد ان تدخل اليه القيمة.
 +
 +==== الشروط conditions ====
 +
 +الشروط هي عبارات instructions تساعد على التحكم في سير البرنامج,​بعبارة اخرى تقوم بتنفيذ اوامر معينة في حالة تحقق شرط ما و تقوم بتنفيذ اوامر اخرى في حالة عدم تحققه و هكذا.
 +
 +الشروط في السي++ نواعان if...else و switch...case.
 +
 +الاولى تكون بهذا الشكل
 +
 +<code cpp>
 +if (الشرط)
 +{
 +الاوامر في حال تحقق الشرط
 +}
 +else
 +{
 +الاوامر في حال عدم تحقق الشرط
 +}
 +</​code>​
 +
 +مثال
 +
 +<code cpp>
 +if (age < 10)
 +{
 +cout << "you are a kid"<<​endl;​
 +}
 +else
 +{
 +cout << "you are not a kid\n";​
 + }
 +</​code>​
 +
 +و يمكن عمل عدة شروط بelse if
 +هكذا
 +
 +<code cpp>
 +if(condition1)
 +{
 +inst1
 +}
 +else if (condition2)
 +{
 +inst2
 +}
 +else if (condition3)
 +{
 +inst3
 +}
 +...
 +else if(conditionN)
 +{
 +instN
 + }
 +else
 +{
 +inst
 +}
 +
 +</​code>​
 +
 +النوع الثاني يكون هكذا
 +<code cpp>
 +switch(variable)
 +{
 +case value1 :
 +instruction1
 +break;
 +case value2 :
 +instruction2
 +break;
 +...
 +case valueN:
 +instructionN
 +break;
 +}
 +</​code>​
 +
 +مثال
 +
 +<code cpp>
 +#include <​iostream>​
 +
 +using namespace std;
 +
 +int main()
 +{
 +cout << "num1 = \n";
 +double num1,​num2,​result;​
 +cin >> num1;
 +cout << "num2 = \n";
 +cin >> num2;
 +cout << "​choise operation +or * or - or /" << endl;
 +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 << "​result = " << result << endl;
 +return 0;
 +}
 +</​code>​
 +
 +<color red>
 +اذا لم تكن break فان الاوامر ستتداخل مع بعضها.
 +
 +</​color>​
 +
 +=== عوامل المقارنة ===
 +
 +  *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>​
 +
 +مثال
 +
 +<code cpp>
 + int b = 129;
 +int a = 1;
 +while (a<=b)
 +{
 +if(b%a == 0)
 +{
 +cout << "​a/​b"​ << endl;
 +a = a + 1;
 +}
 +}
 +</​code>​
 +
 +=== الحلقة do...While ===
 +
 +تكون هكذا:
 +<code cpp>
 +do
 +}
 +الاوامر التي تريد تكريرها
 +}
 +while(الشرط)
 +</​code>​
 +
 +مثال:
 +
 +<code cpp>
 +int a = 0;
 +do
 +{
 +cout << a << endl;
 +a++;
 +</​code>​
 +
 +تعني ++a زادة واحد لa و
 +
 +<code cpp>
 +a--;
 +</​code>​
 +نقاصن واحد من a .
 +
 +=== الحلقة for ===
 +
 +تكون هكذا:
 +<code cpp>
 +for(الخطوة;​الشرط;​المتغير)
 +}
 +الاوامر التي تريد تكريرها
 +}
 +</​code>​
 +
 +مثال :
 +
 +<code cpp>
 +for(int i = 0;​i<​=9;​i++)
 +{
 +cout << i << "* 5 = " << i*5 <<"​\n";//​1
 +}
 +</​code>​
 +
 +في البداية تكون قيمة i هي 0 (يمكن ان تبدا باي قيمة تريدها),​ ثم تنفذ العملية 1, ثم في نهاية الحلقة يضاف 1 ل i (اي  i = i + 1 ) لاننا اخترنا ++i لو كتبنا --i لنقص من i واحد و يمكن ايضا كتابة i = i + n او i = i - n مع n العدد الذي تريد ان يضاف و ينقص من i في كل مرة. لكن الحلقة مقيدة بشرط فعندما تصل قيمة ​ i في المثال السابق الى 9
 +لن تضاف لها 1 و ستنتهي الحلقة.
 +
 +هذا مثال اخر لكن باضافة 3 و ليس واحد:
 +
 +
 +
 +{{for.png?​300}}
 +
 +
 +==== المصفوفات ====
 +
 +المصفوفات هي مجموعة تتكون من قيم من نفس النوع يتم الوصول لكل قيمة برقم ترتيبي index.
 +يتم تعريف مصفوفة في سي++ هكذا :
 +<code cpp>
 +array_type array_name[array_lenght];​
 +</​code>​
 +
 +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;​i<​3;​i++)
 +{
 +cout << nums[i] << endl;
 +}
 +</​code>​
 +
 +==== الدوال ====
 +الدوال هي عدة اوامر يتم تنفيذها لحظة استدعاء الدالة و يمكن ارسال بارامترات للدالة و ايضا ارجاع قيمة معينة. و يتم تعريف الدالة في سي++ هكذا :
 +<code cpp>
 +function_type function_name(param1_type parm1,​...,​paramN_type paramN)
 +{
 +هنا تكتب الاوامر
 +return return_value;​
 +}
 +</​code>​
 +
 +function_type هو نوع الدالة و هو نوع القيمة التي سترجعها الدالة. النوع مثل المتغيرات int و double و char و... لكن يضاف نوع جديد هو void و هو يعني ان الدالة
 + لا تعيد شيء و يجب حذف return في هذه الحالة.
 +function_name و هو اسم الدالة التي تريد له نفس شروط المتغيرات.
 +param_type param هي البارامترات التي سترسل للدالة و هي عبارة عن متغيرات.
 +return_value هي القيمة التي تريد ان ترجعها الدالة طبعا الدالة التي من نوع void
 +لا تحتاج لreturn, و القيمة يمكن ان تكون عدد او متغير او حرف حسب عمل الدالة.
 + ​مثال بسيط ان شاء الله :
 +<code cpp>
 +#inclue <​iostream>​
 +using namespace std;
 +
 +int main()
 +{
 +cout << addition(1,​2) << endl;
 +int num1 = 10;
 +int num2 = 100;
 +int c = addition(num1,​num2);​
 +cout << c << endl; 
 +return 0
 +}
 +int addition(int a,int b)
 +{
 +int c = a + b;
 +return c;
 +}
 +</​code>​
 +
 +و هذا مثال لدالة من نوع void 
 +<code cpp>
 +void salam()
 +{
 +cout << "​salam"​ << endl;
 +}
 +int main()
 +{
 +cout << salam() << endl;
 +return 0;
 +}
 +</​code>​
 +
 +
 +(لم يكتمل)
docs/cpp_tutorial.txt · آخر تعديل: 2015/04/23 00:19 (تحرير خارجي)