تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[كورس] دورة كاملة في برمجة لغة C++
#1
Information 
دورة في تعلم برمجة لغة C++


الدورة طويلة ومتعبة جداً حاولت ابسطها قدر الامكان اتمنى ان تحقق الفائدة وتعجبكم

 في حال حذف الصور من مركز الرفع تجدون ملف pdf لهذا الموضوع بالمرفقات 

[صورة مرفقة: 113.cplus.jpg]



المتغيرات والثوابت وكيفية الاعلان عنهما :
1- المتغيرات :
عبارة عن اسماء يتم تخزين قيم في الذاكرة واستدعائها عند الحاجة , وسميت متغيرات لانها تتغير من قيمة الى اخرى

شروط الاعلان عن المتغيرات ( نفس الشروط تطبق على الثوابت )
لا تختلف لغة C++ عن بقية لغات البرمجة في اسلوب الاعلان عن المتغيرات فهناك عدة شروط يجب مراعاتها قبل الاعلان عن متغير ومن هذه الشروط :
  • ان لا يبدأ اسم المتغير برقم او رمز بأستثناء الرمز under score ( _ )
  • ان لا يكون المتغير كلمة محجوزة في اللغة .
  • ممكن استخدام الاحرف الكبيرة او الصغيرة .
  • لا يسمح بوجود الفراغات بين حروف المتغير الواحد , مثال ( A li )
  • لغة C++ تميز بين الاحرف الكبيرة والصغيرة وتعتبر( a ) على سبيل المثال متغير مختلفاً اختلافاً كلياً عن المتغير ( A )
انواع المتغيرات في سي بلس بلس : 

بعض الانواع البيانية :

[صورة مرفقة: 113.filerbvwi_1.jpg]


يمكن اعطاء المتغير قيمة فيصبح (متغير بقيمة ابتدائية ) كما بالمثال :

[صورة مرفقة: 113.fileeau4l_2.jpg]

كما يمكن اسناد معالجة للمتغير كأن تكون هذه المعالجة جمع او طرح او ضرب او اي عملية اخرى .. مثال :

[صورة مرفقة: 113.filemfntx_3.jpg]



2- الثوابت :

يتم تعريف الثوابت في البرنامج وذلك عن طريق كتابة كلمة const متبوعة بنوع الثابت ( صحيح – حقيقي – حرفي ) ثم اسم الثابت و قيمته
مثال توضيحي :


[صورة مرفقة: 113.file1jbtx_4.jpg]


في المثال اعلاه عرفنا ثابت نوعه صحيح integer اسمه ali قيمته 1000

اما اذا اردنا تعريف ثابت من نوع حقيقي , نغير النوع البياني و القيمة


[صورة مرفقة: 113.file6k28t_5.jpg]



طريقة اخرى لتعريف الثوابت :

نكتب علامة التقريب (#) متبوعة بالكلمة ( define ) ثم اسم الثابت وقيمته .. في هذا التعريف لا نحتاج ذكر النوع البياني للثابت لان قيمة الثابت هي التي تحدد ذلك , مثلا اذا كانت قيمة الثابت ( 10.7 ) فمن الطبيعي ان هذا الثابت حقيقي , كذلك لو كانت قيمة الثابت محرفا واحد فأن هذا يعني ان نوعه ) char ) وهكذا , المثال ادناه يوضح تعريف ثوابت من انواع مختلفة


[صورة مرفقة: 113.filemgqzl_6.jpg]



* ملاحظة :
اختر اي اسم للثابت ولكن يجب ان لا يكون الاسم كلمة محجوزة . ولا يبدأ برقم او رمز ما عدة الرمز ( _ )


كيفية استدعاء الثابت :


يتم استدعاء الثابت بكتابة اسمه والمترجم يضع قيمته تلقائياً , فمثلا لو اردت ان اطبع قيمة الثابت ( ali ) على الشاشة نكتب الكود :


[صورة مرفقة: 113.file8jl45_7.jpg]


الهيكل العام للبرنامج المكتوب بلغة سي بلس :
[صورة مرفقة: 113.filenzhy9_8.jpg]



دالة الادخال : 

تستخدم دالة الادخال لادخال القيم الى البرنامج , ونستخدم الدالة cin كدالة ادخال وهي تماثل الدالة readln المستخدمة في باسكال وتكتب كما بالصورة ادناه :

[صورة مرفقة: 113.filel931s_9.jpg]

على فرض ان المتغير المراد ادخاله هو x .
واذا اردنا ان ندخل قيمتين ( x , y ) بأستخدام دالة cin واحدة نكتب الامر التالي :

[صورة مرفقة: 113.filea6l5v_10.jpg]



دالة الاخراج :

تستخدم هذه الدالة لاظهار القيم والنتائج او الرسائل التوضيحية للمستخدم , كأن تطلب منه ادخال قيمة x او y او تظهر ناتج عملية جمع او ضرب او اي عملية اخرى , وتماثل هذه الدالة دالة writeln المستخدمة في باسكال .
و تكتب بالصورة التالية :

PHP كود :
cout <<your message";" 



والنص المراد اظهاره يجب ان يكون بين علامتي اقتباس .
هناك مجموعة من الرموز المهمة التي تستخدم في الطباعة مثل الرمز \n الذي يستخدم لنقل المؤشر لسطر جديد , وكذلك الرمز \t الذي يستخدم وضع مسافة في نفس السطر .. ادناه مثال يوضح كيفية كتابة هذه العلامات :

[صورة مرفقة: 113.filebxifu_11.jpg]



معامل الزيادة والنقصان :

يستعمل معامل الزيادة والنقصان في زيادة او انقاص قيمة معينة وهو من العوامل المستخدمة كثيراً في لغة سي و سي بلس بلس , ويكتب بالصيغة التالية :

PHP كود :
y++ ; 


بمعنى .. قم بزيادة قيمة المتغير ( y ) بـ ( 1 ) وخزن الناتج في المتغير ( x1 )
ويمكن ان نعبر عنها بالصورة البسيطة التالية :


[صورة مرفقة: 113.filec4ymr_12.jpg]


ويكون هذا المعامل على نوعين ( سواء معامل الزيادة او معامل النقصان )

النوع الاول : المعامل البعدي (--y,++y)

النوع الثاني : المعامل القبلي ( ++y , --y )

الاختلاف بسيط جداً بين النوعين وهو واضح من الاسم , حيث النوع الاول يقوم بزيادة او نقصان المتغير (y ) بعد استخدامه , والنوع الثاني قبل استخدامه وهكذا.


العمليات الرياضية :

تستخدم في البرمجة كثيراً مثل استخراج حاصل جمع او طرح او ايجاد مساحة او محيط شكل هندسي او استخراج قيمة رواتب العمال و الاجرة الاضافية , والكثير من العمليات الرياضية .
نبدأ باهم العوامل الرياضية وهي العمليات الاساسية ( الجمع و الطرح والضرب والقسمة ) .
الجدول التالي يوضح العمليات الرياضية وما يكافئها في C++


[صورة مرفقة: 113.file34aoi_13.jpg]


مثال بسيط يوضح كيفية كتابة برنامج يقوم يستقبل قيمة ( x ) و ( y ) وبعد ذلك يطبق العمليات الرياضية اعلاه على القيمتين ويخزن القيمة الناتجة في متغير جديد :
الحل :

[صورة مرفقة: 113.fileqbdra_14.jpg]



عوامل المقارنة في C++ :


يقصد بعوامل المقارنة هي التي تستخدم لمقارنة عنصرين او اكثر . وتسمى ايضا المعاملات النسبية
وعوامل المقارنة هي :

== , != , > , < , >= , <= ) )

جدول يوضح عوامل المقارنة وعملها :

[صورة مرفقة: 113.file1ljhq_15.jpg]



ملاحظة مهمة جداً :

لاختبار تساوي قيمتين او اكثر يجب ان نستخدم علامتي اليساوي ( == ) واذا استخدمت علامة يساوي واحدة ( = ) لا يحدث خطأ من الناحية البرمجية ولا يكتشف المترجم اي خطأ ولكن تكون النتائج جميعها خاطئة .. وهذا الخطأ من الاخطاء صعبة الاكتشاف .


العوامل المنطقية :

هناك ثلاث عوامل منطقية يمكن استعمالها في الشروط المركبة وهذه العوامل هي :
عامل الجمع المنطقي ( و ) ويرمز له ( && ) ويماثل الدالة ( and ) في لغة باسكال
عامل ( أو ) المنطقي ويرمز له ( || ) ويماثل الدالة ( or ) في لغة باسكال
عامل النفي المنطقي ويرمز له ( ! ) ويماثل الدالة ( not ) في لغة باسكال





الاوامر الشرطية : 

الاوامر الشرطية بكل بساطة تمكنك من فحص شرط معين وعلى اساس هذا الشرط يتم تنفيذ الاوامر البرمجية المكتوبة في البرنامج , بغض النظر عن الاداة المستخدمة في الشرط , والبرنامج الذي يحتوي على جمل او اوامر شرطية يكون تنفيذه اختيارياً , اي وفق الشرط المكتوب .


انواع الاوامر الشرطية :

دالة ( if )الشرطية ( البسيطة ) :
تنفذ هذه الدالة الاوامر البرمجية في حالة تحقق الشرط فقط , والهيكل العام للدالة يكون كالتالي :


[صورة مرفقة: 113.filegqb3h_16.jpg]


المخطط الانسيابي :


[صورة مرفقة: 113.filebsgev_28.jpg]


مثال عملي :
اكتب برنامج بلغة C++ يفحص قيمة المتغير (x) فاذا كانت قيمته اكبر من عشرة يطبع كلمة pass واذا كانت غير ذلك لا تطبع اي شيء .


[صورة مرفقة: 113.file7qfoc_18.jpg]



الدالة ( if .. else ) الشرطية :


لا تختلف كثيرا عن الدالة السابقة ( if ) , حيث ان الدالة ( if .. else ) تنفذ تعليمتين وفق الشرط المحدد , في حالة تحقق الشرط تنفذ امراً معين وفي حالة عدم تحققه تنفذا امرا اخر .


الهيكل العام للدالة : 





[صورة مرفقة: 113.filew91xd_19.jpg]

[صورة مرفقة: 113.file7qfoc_18.jpg]


مثال عملي :
اكتب برنامج بلغة C++ يفحص قيمة المتغير (x) فاذا كانت قيمته اكبر من عشرة يطبع كلمة pass واذا كانت قيمته اقل اطبع fail .


[صورة مرفقة: 113.fileub9tn_20.jpg]



الدالة if – else if :


اذا كان لدينا عدة شروط في السؤال فيجب استخدام الدالة if – else if للتعويض عن كل الشروط الموجودة بما يماثلها .
الهيكل العام للدالة :

[صورة مرفقة: 113.filex2hb6_21.jpg]



مثال عملي : 

اكتب برنامج بلغة C++ يقوم بتحويل درجة الطالب الرقمية الى درجة رمزية .


الحل :

[صورة مرفقة: 113.filej8zbg_22.jpg]


* ملاحظة مهمة جداً:


في حالة استخدام عدة تعليمات ( تعليمة مركبة ) فيجب استخدام حاصرتي الغلق والفتح " { }" و ان عدم استخدامهما يتم تنفيذ التعليمة الاولى فقط وتجاهل بقية التعليمات 



الدالة switch 


هي احد الدوال الشرطية التي تستخدم في البرمجة الاختيارية .. يمكن من خلالها الاستغناء عن عدة جمل بـ ( if ) الشرطية .
الهيكل العام للدالة switch :


[صورة مرفقة: 113.filel5r40_23.jpg]


المخطط الانسيابي لها :


[صورة مرفقة: 113.fileaj21x_24.jpg]

* مثال عملي :
اكتب برنامج بلغة C++ يفحص قيمة متغير رقمي ( x ) فاذا كان قيمة المتغير تساوي ( 1 ) اكتب كلمة " first " واذا كانت تساوي ( 2 ) اكتب "second " واذا كانت غير ذلك اكتب كلمة " other " .

[صورة مرفقة: 113.filehbcrv_25.jpg]

ان الدالة " default " تماثل الدالة " " else في جملة " if " حيث ان الامر المندرج تحتها يتنفذ في حالة عدم تحقق اي من الشروط اعلاه .


مثال عملي اخر :
اكتب برنامج بلغة C++ يسئل المستخدم " هل انت طالب ؟ " " Are you a student " فاذا كانت الاجابة " نعم " اطبع I wish you success "" واذا كانت " لا " اطبع "hard luck" واذا كانت الاجابة غير ذلك اطبع "Wrong entry".
الحل :
في هذا المثال نتعامل مع قيم حرفية "char" وليس قيم صحيحة "integer" .

[صورة مرفقة: 113.filezagy1_26.jpg]

توضيح حول الكود اعلاه :
سواء كتب المستخدم "y" او "Y" او "yes" فان النتيجة واحدة لذلك كتُبت بهذه الصورة , وكذلك الحال مع n"" و" "N و no"" .




حلقات التكرار :


الغاية من الحلقات تكرار تنفيذ التعليمات المطلوبة وفق شرط معين , بغض النظر عن حلقة التكرار المستعملة على سبيل المثال , اذا طلُب منا جمع الاعداد المحصورة بين " 1 – 100 " ليس من المنطقي ان ندخل الاعداد يدويا 100 مرة !! في هذه الحالة نحتاج هيكل تكرار وعداد يتوقف عند الوصول الى اكبر من 100 , وهكذا
انواع حلقات التكرار :
  • حلقة while
  • حلقة for
  • حلقة do while
حلقة while :
الهيكل العام للدالة :


[صورة مرفقة: 113.file9nsj1_27.jpg]


المخطط الانسيابي :


[صورة مرفقة: 113.filebsgev_28.jpg]


مثال عملي :
اكتب برنامج بلغة C++ يطبع الاعداد المحصورة بين 1 و 20 بأستخدام دالة while

[صورة مرفقة: 113.file5tv0z_29.jpg]



2- حلقة for :

الهيكل العام للدالة


[صورة مرفقة: 113.filenbo2l_30.jpg]

المخطط الانسيابي :

[صورة مرفقة: 113.filekug14_31.jpg]


اكتب برنامج بلغة C++ يطبع الارقام المحصورة بين 1 – 20 بأستخدام حلقة for

[صورة مرفقة: 113.filef5x4b_32.jpg]




3- حلقة do .. while :


هذه الدالة شبيها بدالة while لكنها تنفذ الاوامر البرمجية على الاقل مرة واحدة قبل فحص الشرط , فاذا كان الشرط صحيح تستمر بالتنفيذ واذا كان خطأ يتوقف عمل البرنامج .


الهيكل العام للدالة

[صورة مرفقة: 113.file1jb3k_33.jpg]


المخطط الانسيابي للدالة :


[صورة مرفقة: 113.filecym84_34.jpg]





مثال عملي:
اكتب برنامج بلغة C++ يطبع الارقام المحصورة بين 1 – 20 بأستخدام حلقة do .. while .

الحل :


[صورة مرفقة: 113.file5kinz_35.jpg]



قبل ان يتم فحص الشرط , قام البرنامج بتنفيذ الاوامر الموجودة ضمن ( do ) واصبح x = 1 , بعد ذلك قام بفحص الشرط ( هل x اصغر او تساوي 20 ( ونفذ التعلميات من جديد لان الشرط صحيحاً وهكذا وصولا الى ان يصبح الشرط غير صحيح .




المصفوفات Arrays :

هي عبارة عن مجموعة من القيم تحت اسم ونوع بياني واحد , قد تكون المصفوفة رقمية صحيحة او رقمية حقيقة او حرفية او غير ذلك .


كيفية الاعلان عن المصفوفات :

يتم الاعلان عن المصفوفات بأستخدام اسم المصفوفة و القوسين المربيعين [ ]كما بالصورة التالي :


[صورة مرفقة: 113.filetke65_43.jpg]


النوع البياني للمصفوفةType =
اسم المصفوفةarrayName =
حجم المصفوفةarraySize =


انواع المصفوفات : 



المصفوفة احادية البعد : 

هي مصفوفة متكونة من بعد واحد فقط ويكون هذا البعد اما صف واحد
تحتوي كل مصفوفة على دليل ( index ) يمثل الموقع الحالي للعنصر في المصفوفة .
يبدأ الدليل في المصفوفة من الرقم ( 0 ( وهو يمثل الموقع الاول ويبدأ بالتزايد وصولا الى اخر عنصر في المصفوفة .

[صورة مرفقة: 113.filelhzw2_36.jpg]


الشكل اعلاه يوضح الدليل في المصفوفة الاحادية

للاعلان عن مصفوفة احادية رقمية صحيحة :

[صورة مرفقة: 113.fileubzhk_37.jpg]


للاعلان عن مصفوفة من نوع double ( نوع بياني حقيقي طويل جداً )

[صورة مرفقة: 113.filejml75_38.jpg]


ادخال عناصر للمصفوفة عن طريق الكود :
على فرض ان x مصفوفة حجمها ( 5 ) ونريد ان ندخل لها قيم بداخل الكود :

[صورة مرفقة: 113.filebvy52_39.jpg]

كذلك اذا كانت المصفوفة حقيقية الاعداد :

[صورة مرفقة: 113.filebgnxq_40.jpg]

وهكذا .




ادخال العناصر الى المصفوفة من خلال لوحة المفاتيح :


نفترض لدينا مصفوفة من النوع الصحيح بحجم 5 ونريد ان ندخل لها العناصر من لوحة المفاتيح , في هذه الحالة يجب استخدام جملة الادخال cin بداخل حلقة تكرار


[صورة مرفقة: 113.fileskbcf_41.jpg]




طباعة عناصر المصفوفة : 

لطباعة عناصر مصفوفة يجب استخدام جملة الطباعة والاخراج cout بداخل حلقة تكرار .

[صورة مرفقة: 113.file3oem0_42.jpg]



امثلة عامة عن لغة C++ :-

السؤال موجود في الصورة ادناه :

[صورة مرفقة: 113.113.2_fact_and_power.jpg]



[صورة مرفقة: 113.1-8-2015_2-42-55_pm.png]

س : ادخل سلسلة من الاعداد في مصفوفة وبعد ذلك اوجد مفكوك كل عنصر واضف المفكوك في مصفوفة جديدة واطبع المصوفتين :



[صورة مرفقة: 113.113.12-22-2014_2-06-58_am.jpg]





مثال : ادخل عناصر مصفوفتين واجمع كل عنصر من االمصفوفة (A) مع العنصر الذي يقابل موقعه في المصفوفة الثانية (B) واطبع الناتج في مصفوفة ثالثة © 



[صورة مرفقة: 113.12-14-2014_11-26-07_pm.jpg]







اتمنى لكم الفائدة والتوفيق 
الرد }}}
#2
شكرا لكن الصور
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو
#3
مرحبا 
عدلت الصور في المشاركة واضف الموضوع ككتاب الكتروني في المرفقات


الملفات المرفقة
.zip   C++.zip (الحجم : 1.14 م ب / التحميلات : 77)
الرد }}}
تم الشكر بواسطة: asemshahen5 , ابراهيم ايبو , Miloud , سعود
#4
شكرا لكن الصور
Nox Vidmate VLC
الرد }}}
تم الشكر بواسطة: سعود


التنقل السريع :


يقوم بقرائة الموضوع: