دورة في تعلم برمجة لغة C++ ( من البرمجة المهيكلة الى الكائنية التوجه )
خاصة بمنتديات درر العراق
مقدمة عن لغة C++
تعتبر لغة C++ لغة كائنية التوجه متعددة انماط البرمجة اّي تتيح للمبرمج العمل بأساليب مختلفة , يصنفها البعض انها من افضل واقوى لغات البرمجة لتصميم التطبيقات الكبيرة وانظمة التشغيل المختلفة . صمم هذه اللغة بيارن ستروستروب ( عالم حاسوب ولد في الدنيمارك ) في مختبرات بل , شبيها بلغة C لدرجة كبيرة , الا ان لغة C لا تحتوي كلاسات .
بالمختصر السي بلس بلس لغة سهلة قوية تمكنك من البرمجة على عدة منصات وبعدة طرق
|
بيارن ستروستروب |
المتغيرات والثوابت وكيفية الاعلان عنهما :
1- المتغيرات :
عبارة عن اسماء يتم تخزين قيم في الذاكرة واستدعائها عند الحاجة , وسميت متغيرات لانها تتغير من قيمة الى اخرى
شروط الاعلان عن المتغيرات ( نفس الشروط تطبق على الثوابت )
لا تختلف لغة C++ عن بقية لغات البرمجة في اسلوب الاعلان عن المتغيرات فهناك عدة شروط يجب مراعاتها قبل الاعلان عن متغير ومن هذه الشروط :
- ان لا يبدأ اسم المتغير برقم او رمز بأستثناء الرمز under score ( _ )
- ان لا يكون المتغير كلمة محجوزة في اللغة .
- ممكن استخدام الاحرف الكبيرة او الصغيرة .
- لا يسمح بوجود الفراغات بين حروف المتغير الواحد , مثال ( A li )
- لغة C++ تميز بين الاحرف الكبيرة والصغيرة وتعتبر( a ) على سبيل المثال متغير مختلفاً اختلافاً كلياً عن المتغير ( A )
انواع المتغيرات في سي بلس بلس :
بعض الانواع البيانية :
يمكن اعطاء المتغير قيمة فيصبح (متغير بقيمة ابتدائية ) كما بالمثال :
كما يمكن اسناد معالجة للمتغير كأن تكون هذه المعالجة جمع او طرح او ضرب او اي عملية اخرى .. مثال :
2- الثوابت :
يتم تعريف الثوابت في البرنامج وذلك عن طريق كتابة كلمة const متبوعة بنوع الثابت ( صحيح – حقيقي – حرفي ) ثم اسم الثابت و قيمته
مثال توضيحي :
في المثال اعلاه عرفنا ثابت نوعه صحيح integer اسمه ali قيمته 1000
اما اذا اردنا تعريف ثابت من نوع حقيقي , نغير النوع البياني و القيمة
طريقة اخرى لتعريف الثوابت :
نكتب علامة التقريب (#) متبوعة بالكلمة ( define ) ثم اسم الثابت وقيمته .. في هذا التعريف لا نحتاج ذكر النوع البياني للثابت لان قيمة الثابت هي التي تحدد ذلك , مثلا اذا كانت قيمة الثابت ( 10.7 ) فمن الطبيعي ان هذا الثابت حقيقي , كذلك لو كانت قيمة الثابت محرفا واحد فأن هذا يعني ان نوعه ) char ) وهكذا , المثال ادناه يوضح تعريف ثوابت من انواع مختلفة
* ملاحظة :
اختر اي اسم للثابت ولكن يجب ان لا يكون الاسم كلمة محجوزة . ولا يبدأ برقم او رمز ما عدة الرمز ( _ )
كيفية استدعاء الثابت :
يتم استدعاء الثابت بكتابة اسمه والمترجم يضع قيمته تلقائياً , فمثلا لو اردت ان اطبع قيمة الثابت ( ali ) على الشاشة نكتب الكود :
الهيكل العام للبرنامج المكتوب بلغة سي بلس :
دالة الادخال :
تستخدم دالة الادخال لادخال القيم الى البرنامج , ونستخدم الدالة cin كدالة ادخال وهي تماثل الدالة readln المستخدمة في باسكال وتكتب كما بالصورة ادناه :
على فرض ان المتغير المراد ادخاله هو x .
واذا اردنا ان ندخل قيمتين ( x , y ) بأستخدام دالة cin واحدة نكتب الامر التالي :
دالة الاخراج :
تستخدم هذه الدالة لاظهار القيم والنتائج او الرسائل التوضيحية للمستخدم , كأن تطلب منه ادخال قيمة x او y او تظهر ناتج عملية جمع او ضرب او اي عملية اخرى , وتماثل هذه الدالة دالة writeln المستخدمة في باسكال .
و تكتب بالصورة التالية :
كود PHP:
cout <<your message";"
والنص المراد اظهاره يجب ان يكون بين علامتي اقتباس .
هناك مجموعة من الرموز المهمة التي تستخدم في الطباعة مثل الرمز \n الذي يستخدم لنقل المؤشر لسطر جديد , وكذلك الرمز \t الذي يستخدم وضع مسافة في نفس السطر .. ادناه مثال يوضح كيفية كتابة هذه العلامات :
معامل الزيادة والنقصان :
يستعمل معامل الزيادة والنقصان في زيادة او انقاص قيمة معينة وهو من العوامل المستخدمة كثيراً في لغة سي و سي بلس بلس , ويكتب بالصيغة التالية :
بمعنى .. قم بزيادة قيمة المتغير ( y ) بـ ( 1 ) وخزن الناتج في المتغير ( x1 )
ويمكن ان نعبر عنها بالصورة البسيطة التالية :
ويكون هذا المعامل على نوعين ( سواء معامل الزيادة او معامل النقصان )
النوع الاول : المعامل البعدي ( y++ , y-- )
النوع الثاني : المعامل القبلي ( ++y , --y )
الاختلاف بسيط جداً بين النوعين وهو واضح من الاسم , حيث النوع الاول يقوم بزيادة او نقصان المتغير (y ) بعد استخدامه , والنوع الثاني قبل استخدامه وهكذا.
العمليات الرياضية :
تستخدم في البرمجة كثيراً مثل استخراج حاصل جمع او طرح او ايجاد مساحة او محيط شكل هندسي او استخراج قيمة رواتب العمال و الاجرة الاضافية , والكثير من العمليات الرياضية .
نبدأ باهم العوامل الرياضية وهي العمليات الاساسية ( الجمع و الطرح والضرب والقسمة ) .
الجدول التالي يوضح العمليات الرياضية وما يكافئها في C++
مثال بسيط يوضح كيفية كتابة برنامج يقوم يستقبل قيمة ( x ) و ( y ) وبعد ذلك يطبق العمليات الرياضية اعلاه على القيمتين ويخزن القيمة الناتجة في متغير جديد :
الحل :
عوامل المقارنة في C++ :
يقصد بعوامل المقارنة هي التي تستخدم لمقارنة عنصرين او اكثر . وتسمى ايضا المعاملات النسبية
وعوامل المقارنة هي :
== , != , > , < , >= , <= ) )
جدول يوضح عوامل المقارنة وعملها :
ملاحظة مهمة جداً :
لاختبار تساوي قيمتين او اكثر يجب ان نستخدم علامتي اليساوي ( == ) واذا استخدمت علامة يساوي واحدة ( = ) لا يحدث خطأ من الناحية البرمجية ولا يكتشف المترجم اي خطأ ولكن تكون النتائج جميعها خاطئة .. وهذا الخطأ من الاخطاء صعبة الاكتشاف .
العوامل المنطقية :
هناك ثلاث عوامل منطقية يمكن استعمالها في الشروط المركبة وهذه العوامل هي :
عامل الجمع المنطقي ( و ) ويرمز له ( && ) ويماثل الدالة ( and ) في لغة باسكال
عامل ( أو ) المنطقي ويرمز له ( || ) ويماثل الدالة ( or ) في لغة باسكال
عامل النفي المنطقي ويرمز له ( ! ) ويماثل الدالة ( not ) في لغة باسكال
الاوامر الشرطية :
الاوامر الشرطية بكل بساطة تمكنك من فحص شرط معين وعلى اساس هذا الشرط يتم تنفيذ الاوامر البرمجية المكتوبة في البرنامج , بغض النظر عن الاداة المستخدمة في الشرط , والبرنامج الذي يحتوي على جمل او اوامر شرطية يكون تنفيذه اختيارياً , اي وفق الشرط المكتوب .
انواع الاوامر الشرطية :
دالة ( if )الشرطية ( البسيطة ) :
تنفذ هذه الدالة الاوامر البرمجية في حالة تحقق الشرط فقط , والهيكل العام للدالة يكون كالتالي :
المخطط الانسيابي :
مثال عملي :
اكتب برنامج بلغة C++ يفحص قيمة المتغير (x) فاذا كانت قيمته اكبر من عشرة يطبع كلمة pass واذا كانت غير ذلك لا تطبع اي شيء .
الدالة ( if .. else ) الشرطية :
لا تختلف كثيرا عن الدالة السابقة ( if ) , حيث ان الدالة ( if .. else ) تنفذ تعليمتين وفق الشرط المحدد , في حالة تحقق الشرط تنفذ امراً معين وفي حالة عدم تحققه تنفذا امرا اخر .
الهيكل العام للدالة :
مثال عملي :
اكتب برنامج بلغة C++ يفحص قيمة المتغير (x) فاذا كانت قيمته اكبر من عشرة يطبع كلمة pass واذا كانت قيمته اقل اطبع fail .
الدالة if – else if :
اذا كان لدينا عدة شروط في السؤال فيجب استخدام الدالة if – else if للتعويض عن كل الشروط الموجودة بما يماثلها .
الهيكل العام للدالة :
مثال عملي :
اكتب برنامج بلغة C++ يقوم بتحويل درجة الطالب الرقمية الى درجة رمزية .
الحل :
* ملاحظة مهمة جداً:
في حالة استخدام عدة تعليمات ( تعليمة مركبة ) فيجب استخدام حاصرتي الغلق والفتح " { }" و ان عدم استخدامهما يتم تنفيذ التعليمة الاولى فقط وتجاهل بقية التعليمات
الدالة switch
هي احد الدوال الشرطية التي تستخدم في البرمجة الاختيارية .. يمكن من خلالها الاستغناء عن عدة جمل بـ ( if ) الشرطية .
الهيكل العام للدالة switch :
المخطط الانسيابي لها :
* مثال عملي :
اكتب برنامج بلغة C++ يفحص قيمة متغير رقمي ( x ) فاذا كان قيمة المتغير تساوي ( 1 ) اكتب كلمة " first " واذا كانت تساوي ( 2 ) اكتب "second " واذا كانت غير ذلك اكتب كلمة " other " .
ان الدالة " default " تماثل الدالة " " else في جملة " if " حيث ان الامر المندرج تحتها يتنفذ في حالة عدم تحقق اي من الشروط اعلاه .
مثال عملي اخر :
اكتب برنامج بلغة C++ يسئل المستخدم " هل انت طالب ؟ " " Are you a student " فاذا كانت الاجابة " نعم " اطبع I wish you success "" واذا كانت " لا " اطبع "hard luck" واذا كانت الاجابة غير ذلك اطبع "Wrong entry".
الحل :
في هذا المثال نتعامل مع قيم حرفية "char" وليس قيم صحيحة "integer" .
توضيح حول الكود اعلاه :
سواء كتب المستخدم "y" او "Y" او "yes" فان النتيجة واحدة لذلك كتُبت بهذه الصورة , وكذلك الحال مع n"" و" "N و no"" .
حلقات التكرار :
الغاية من الحلقات تكرار تنفيذ التعليمات المطلوبة وفق شرط معين , بغض النظر عن حلقة التكرار المستعملة على سبيل المثال , اذا طلُب منا جمع الاعداد المحصورة بين " 1 – 100 " ليس من المنطقي ان ندخل الاعداد يدويا 100 مرة !! في هذه الحالة نحتاج هيكل تكرار وعداد يتوقف عند الوصول الى اكبر من 100 , وهكذا
انواع حلقات التكرار :
- حلقة while
- حلقة for
- حلقة do while
حلقة while :
الهيكل العام للدالة :
المخطط الانسيابي :
مثال عملي :
اكتب برنامج بلغة C++ يطبع الاعداد المحصورة بين 1 و 20 بأستخدام دالة while
2- حلقة for :
الهيكل العام للدالة
المخطط الانسيابي :
اكتب برنامج بلغة C++ يطبع الارقام المحصورة بين 1 – 20 بأستخدام حلقة for
3- حلقة do .. while :
هذه الدالة شبيها بدالة while لكنها تنفذ الاوامر البرمجية على الاقل مرة واحدة قبل فحص الشرط , فاذا كان الشرط صحيح تستمر بالتنفيذ واذا كان خطأ يتوقف عمل البرنامج .
الهيكل العام للدالة
المخطط الانسيابي للدالة :
مثال عملي:
اكتب برنامج بلغة C++ يطبع الارقام المحصورة بين 1 – 20 بأستخدام حلقة do .. while .
الحل :
قبل ان يتم فحص الشرط , قام البرنامج بتنفيذ الاوامر الموجودة ضمن ( do ) واصبح x = 1 , بعد ذلك قام بفحص الشرط ( هل x اصغر او تساوي 20 ( ونفذ التعلميات من جديد لان الشرط صحيحاً وهكذا وصولا الى ان يصبح الشرط غير صحيح .
المصفوفات Arrays :
هي عبارة عن مجموعة من القيم تحت اسم ونوع بياني واحد , قد تكون المصفوفة رقمية صحيحة او رقمية حقيقة او حرفية او غير ذلك .
كيفية الاعلان عن المصفوفات :
يتم الاعلان عن المصفوفات بأستخدام اسم المصفوفة و القوسين المربيعين [ ]كما بالصورة التالي :
النوع البياني للمصفوفةType =
اسم المصفوفةarrayName =
حجم المصفوفةarraySize =
انواع المصفوفات :
المصفوفة احادية البعد :
هي مصفوفة متكونة من بعد واحد فقط ويكون هذا البعد اما صف واحد
تحتوي كل مصفوفة على دليل ( index ) يمثل الموقع الحالي للعنصر في المصفوفة .
يبدأ الدليل في المصفوفة من الرقم ( 0 ( وهو يمثل الموقع الاول ويبدأ بالتزايد وصولا الى اخر عنصر في المصفوفة .
الشكل اعلاه يوضح الدليل في المصفوفة الاحادية
للاعلان عن مصفوفة احادية رقمية صحيحة :
للاعلان عن مصفوفة من نوع double ( نوع بياني حقيقي طويل جداً )
ادخال عناصر للمصفوفة عن طريق الكود :
على فرض ان x مصفوفة حجمها ( 5 ) ونريد ان ندخل لها قيم بداخل الكود :
كذلك اذا كانت المصفوفة حقيقية الاعداد :
وهكذا .
ادخال العناصر الى المصفوفة من خلال لوحة المفاتيح :
نفترض لدينا مصفوفة من النوع الصحيح بحجم 5 ونريد ان ندخل لها العناصر من لوحة المفاتيح , في هذه الحالة يجب استخدام جملة الادخال cin بداخل حلقة تكرار
طباعة عناصر المصفوفة :
لطباعة عناصر مصفوفة يجب استخدام جملة الطباعة والاخراج cout بداخل حلقة تكرار .
امثلة عامة عن لغة C++ :-
السؤال موجود في الصورة ادناه :
بدون استخدام الدوال .
نفس السؤال اعلاه بأستخدام الدوال
س : ادخل سلسلة من الاعداد في مصفوفة وبعد ذلك اوجد مفكوك كل عنصر واضف المفكوك في مصفوفة جديدة واطبع المصوفتين :
مثال : ادخل عناصر مصفوفتين واجمع كل عنصر من االمصفوفة (A) مع العنصر الذي يقابل موقعه في المصفوفة الثانية (B) واطبع الناتج في مصفوفة ثالثة (C)
يتبع .. شرح الكلاسات و الوراثة ومبدأ تعدد الاشكال بالاضافة الى امثلة كثيرة في موضوع مستقل
اتمنى لكم الفائدة والتوفيق