0% found this document useful (0 votes)
18 views48 pages

C++ Programming Language

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

Uploaded by

Muhammad Elghoul
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views48 pages

C++ Programming Language

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

Uploaded by

Muhammad Elghoul
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 48

University of Tripoli

Faculty of Engineering
Petroleum Engineering Department

C++ Programming Language

Prepared by:
Nour Abdulslam Elhashmi

ID:
2190203443

Winter 2024
‫اإلهداء‬

‫هذا البحث مخصص آلبائنا وأمهاتنا وعائالتنا‪ ،‬الذين شجعونا طوال الطريق‬
‫وتأكدوا من أننا نبذل كل ما في وسعنا إلكمال ما بدأناه‪.‬‬

‫‪I‬‬
‫الشكر‬

‫الحمد لله رب العالمين‪ ،‬والصالة والسالم على سيدنا محمد وعلى آله‬
‫وصحبه أجمعين‪ .‬نشكر الله سبحانه وتعالى على توفيقه وعونه في إتمام‬
‫هذا البحث‪.‬‬

‫نتقدم بجزيل الشكر واالمتنان لعائالتنا الكريمة التي كانت دائًما مصدًر ا‬
‫للدعم والتشجيع واإللهام إلتمام هذا العمل‪ .‬لقد كان لوجودهم ودعائهم‬
‫األثر الكبير في إنجاز هذا التقرير‪.‬‬

‫وأخيًر ا‪ ،‬ال يسعنا إال أن نتقدم بالشكر الجزيل ألصدقائنا وزمالئنا ولكل من‬
‫ساندنا ودعمنا إلكمال هذا التقرير‪ .‬فلهم منا كل التقدير واالحترام‪.‬‬

‫‪II‬‬
‫الخالصة‬
‫يستكشف هذا البحث لغة البرمجة ‪ ،++C‬ويقدم فحًصا متعمًقا لتاريخها‬
‫وميزاتها وتطبيقاتها‪ .‬ويغطي المفاهيم األساسية وأنواع الوظائف والميزات‬
‫المتقدمة‪ ،‬ويقيم إيجابيات وسلبيات استخدام ‪ .++C‬ويهدف التقرير إلى‬
‫تسليط الضوء على أهمية ‪ ++C‬في البرمجة الحديثة وأهميتها في مختلف‬
‫الصناعات‪.‬‬

‫‪III‬‬
‫المحتويات‬
2..................................................................................C++ (Introduction to C++) ‫ مقدمة إلى‬. 1
2.......................................)Brief History and Origin 1.1( ‫تاريخ موجز وأصل‬ 1.1
2............................................)Definition and Purpose 1.2( ‫التعريف والغرض‬ 1.2
3................)Role in Modern Software Development 1.3( ‫الدور في تطوير البرمجيات الحديثة‬1.3
7..............................................................................C++ (Overview of C++) ‫ نظرة عامة على‬. 2
7. .)Comparison with Other Programming Languages 2.1( ‫المقارنة مع لغات البرمجة األخرى‬2.1
8...................C++ (2.2 Fields and Industries Using C++) ‫المجاالت والصناعات التي تستخدم‬2.2
9............................................)Current Trends and Updates 2.3( ‫االتجاهات والتحديثات الحالية‬2.3
9.....................................................................................C++20 (C++20 Features) ‫ميزات‬2.3.1
10......................and Machine Learning)‫زيادة التبني في الذكاء االصطناعي والتعلم اآللي‬2.3.2
12..................................................................................................C++ ‫أساسيات لغة‬ 3
12............................................)Syntax and Structure( ‫البنية العامة والهيكل‬ 3.1
12......................)Variables and Data Types( ‫المتغيرات وأنواع البيانات‬ 3.2
13.................)Input and Output Operations( ‫عمليات اإلدخال واإلخراج‬ 3.3
13.................................................................)Control Structures( ‫هياكل التحكم‬ 3.4
13........................................................ )Function Components( ‫مكونات الدوال‬ 3.5
14.................)Advanced Function Topics( ‫مواضيع متقدمة في الدوال‬ 3.6
16.....................................................................................C++ (Functions in C++) ‫ الدوال في‬. 4
16............................................................)Types of Functions 4.1( ‫أنواع الدوال‬ 4.1
User-Defined( ‫الدوال الُمعّر فة من قبل المستخدم‬ 4.1.1
16 )Functions
17................................................................)Library Functions( ‫دوال المكتبة‬ 4.1.2
17....................................................)Function Components 4.2( ‫مكونات الدالة‬ 4.2
18..........)Advanced Function Topics 4.3( ‫مواضيع متقدمة عن الدوال‬ 4.3
18.................................)Function Overloading( ‫التحميل الزائد للدوال‬ 4.3.1
19.........................................................)Inline Functions( ‫الدوال المضمنة‬ 4.3.2

IV
‫الدوال التراجعية (‪20.................................................)Recursive Functions‬‬ ‫‪4.3.3‬‬
‫أفضل الممارسات الستخدام الدوال (‪Best Practices for 4.4‬‬ ‫‪4.4‬‬
‫‪20‬‬ ‫‪)Using Functions‬‬
‫‪4.5‬تطبيقات العالم الحقيقي للدوال (‪21......................)Real-World Applications of Functions 4.5‬‬
‫الميزات المتقدمة في ‪23.............................................................................C++‬‬ ‫‪5‬‬
‫القوالب (‪ - Templates‬القوالب)‪23...............................................................................‬‬ ‫‪5.1‬‬
‫مكتبة القوالب القياسية (‪24.................)Standard Template Library - STL‬‬ ‫‪5.2‬‬
‫البرمجة كائنية التوجه (‪ - Object-Oriented Programming‬البرمجة كائنية‬ ‫‪5.3‬‬
‫‪24‬‬ ‫التوجه)‬
‫المؤشرات الذكية (‪ - Smart Pointers‬المؤشرات الذكية)‪25...............................‬‬ ‫‪5.4‬‬
‫التعبيرات الل‪ - Lambda Expressions( ambda‬تعبيرات الل‪26.................)ambda‬‬ ‫‪5.5‬‬
‫تعدد الخيوط (‪ - Multithreading‬تعدد الخيوط) والتزامن (‪- Concurrency‬‬ ‫‪5.6‬‬
‫‪27‬‬ ‫التزامن)‬
‫المزايا والعيوب في ‪29................................................................................C++‬‬ ‫‪6‬‬
‫‪ 6.1‬المزايا‪29.......................................................................................................................‬‬ ‫‪6.1‬‬
‫العيوب‪30....................................................................................................................‬‬ ‫‪6.2‬‬
‫تطبيقات ‪31.........................................................................................................C++‬‬ ‫‪6.3‬‬
‫الخاتمة ومستقبل )‪34...................................C++ (Conclusion and Future of C++‬‬ ‫‪7‬‬
‫الخاتمة‪34...................................................................................................................:‬‬ ‫‪7.1‬‬
‫مستقبل ‪34.........................................................................................................C++:‬‬ ‫‪7.2‬‬
‫التوجهات المستقبلية‪34............................................................................... :‬‬ ‫‪7.3‬‬
‫المراجع‪36...........................................................................................................................‬‬ ‫‪8‬‬

‫‪V‬‬
VI
‫الفصل الأول‬

‫‪1‬‬
‫‪ .‬مقدمة إلى )‪C++ (Introduction to C++‬‬ ‫‪1‬‬
‫تاريخ موجز وأصل (‪)Brief History and Origin 1.1‬‬ ‫‪1.1‬‬
‫ُطّورت لغة ‪ ++C‬بواسطة بيارن ستروستروب (‪ )Bjarne Stroustrup‬في مختبرات بيل (‬
‫‪ )Bell Labs‬في أوائل الثمانينيات كتحديث للغة البرمجة ‪ .C‬نشأ دافع ستروستروب من‬
‫رغبة في إنشاء لغة تجمع بين أداء وتحكم ‪ C‬منخفض المستوى مع ميزات برمجة‬
‫عالية المستوى‪ ،‬مثل تجريد البيانات والبرمجة كائنية التوجه‪ُ .‬سّم يت اللغة في األصل "‬
‫‪ ،"C with Classes‬وقّدمت مفهوم الفئات (‪ ،)classes‬الذي وّفر طريقة منظمة لتجميع‬
‫البيانات والوظائف المرتبطة بها‪ .‬بحلول عام ‪ُ ،1983‬أعيد تسميتها رسمًيا إلى ‪،++C‬‬
‫حيث يرمز الرمز "‪ "++‬إلى زيادة‪ ،‬ويمّثل تحسيًنا على سابقتها‪.C (Stroustrup, 2013) ،‬‬

‫كان التبني المبكر للغة ‪ ++C‬مدفوًعا بقدرتها الفريدة على سد الفجوة بين البرمجة‬
‫على مستوى األجهزة وتطوير البرمجيات عالية المستوى‪ .‬على مر العقود‪ ،‬خضعت‬
‫‪ ++C‬لعدة مراجعات‪ ،‬تمّيزت بمعايير التوحيد القياسية مثل ‪ C++98‬و ‪ C++03‬و ‪C++11‬‬
‫و ‪ C++14‬و ‪ C++17‬و ‪ .C++20‬قّدم كل تحديث ميزات حديثة لتلبية االحتياجات‬
‫المتطورة لتطوير البرمجيات‪ .‬على سبيل المثال‪ ،‬أضافت ‪ C++11‬تعبيرات المدا (‬
‫‪ )lambda expressions‬والمؤشرات الذكية (‪ )smart pointers‬ودعم تعدد مؤشرات‬
‫الترابط (‪ ،)multi-threading‬بينما قّدمت ‪ C++20‬الوحدات (‪ )modules‬والمفاهيم (‬
‫‪ )concepts‬لتعزيز تنظيم الكود ووضوحه‪ .‬لقد ضمنت هذه التطورات أن تظل ‪ ++C‬أداة‬
‫قوية وذات صلة في مشهد البرمجة‪.‬‬

‫كانت رؤية ستروستروب للغة ‪ ++C‬هي إنشاء لغة يمكنها التعامل مع أنظمة‬
‫البرمجيات المعقدة دون التضحية بالكفاءة أو المرونة‪ .‬تردد صداها هذه الرؤية مع‬
‫المطورين عبر الصناعات‪ ،‬مما رّس خ ‪ ++C‬كمعيار لبرمجة مستوى النظام وتطوير‬
‫األلعاب وتطبيقات الوقت الفعلي‪ .‬يبرز طول عمرها وتطورها قدرتها على التكيف‬
‫وأهميتها في سياقات هندسة البرمجيات التاريخية والمعاصرة‪.‬‬

‫‪2‬‬
‫التعريف والغرض (‪)Definition and Purpose 1.2‬‬ ‫‪1.2‬‬
‫‪ ++C‬هي لغة برمجة عالية المستوى تدعم كًال من النماذج اإلجرائية والكائنية التوجه‪،‬‬
‫مما يجعلها لغة متعددة النماذج ومتعددة االستخدامات‪ .‬تسمح طبيعتها المزدوجة‬
‫للمطورين باختيار النموذج األنسب لمهامهم المحددة‪ ،‬حيث تمزج إدارة الذاكرة‬
‫منخفضة المستوى مع التجريدات عالية المستوى‪ .‬هذا المزيج هو سمة مميزة للغة‬
‫‪ ++C‬وقد عزز مكانتها في عالم البرمجة (‪.)Meyers, 2005‬‬

‫في جوهرها‪ُ ،‬صممت ‪ ++C‬من أجل‪:‬‬

‫تسهيل برمجة النظام (‪ :)Facilitate system programming‬بفضل القدرات‬ ‫‪.1‬‬


‫التي تقّر ب المطورين من األجهزة‪ُ ،‬تعد ‪ ++C‬مثالية إلنشاء أنظمة التشغيل‬
‫وبرامج تشغيل األجهزة واألنظمة المضمنة‪ .‬تسمح إدارة الذاكرة الدقيقة‬
‫باستخدام الموارد بكفاءة‪.‬‬

‫دعم تطوير التطبيقات (‪ :)Support application development‬تجعلها‬ ‫‪.2‬‬


‫منظومة المكتبات واألطر الواسعة للغة مناسبة لتطوير تطبيقات متنوعة في‬
‫مجاالت مثل األلعاب والتمويل والبحث العلمي‪.‬‬

‫موازنة األداء والتجريد (‪ :)Balance performance and abstraction‬بينما‬ ‫‪.3‬‬


‫ُتقّدم ميزات مثل القوالب (‪ )templates‬وتعدد األشكال (‪)polymorphism‬‬
‫والتغليف (‪ )encapsulation‬إلدارة تعقيد البرامج‪ُ ،‬تمّكن ‪ ++C‬أيًض ا المطورين من‬
‫كتابة كود ُمحّس ن لألداء‪.‬‬

‫إحدى أكثر ميزات ‪ ++C‬إقناًعا هي قدرتها على توفير تحكم دقيق في موارد النظام‪.‬‬
‫يمكن للمطورين إدارة تخصيص الذاكرة وإلغاء تخصيصها بشكل صريح‪ ،‬وهو أمر بالغ‬
‫األهمية للتطبيقات الحساسة لألداء‪ .‬باإلضافة إلى ذلك‪ُ ،‬تقّدم مكتبتها القياسية‬
‫الواسعة أدوات لمعالجة البيانات والحسابات الرياضية وعمليات اإلدخال‪/‬اإلخراج‪ ،‬مما‬
‫يقلل الحاجة إلى التبعيات الخارجية‪.‬‬

‫‪3‬‬
‫يمتد غرض اللغة إلى ما هو أبعد من المواصفات الفنية؛ فهي بمثابة أساس لبناء‬
‫أنظمة برمجيات قوية وقابلة للتطوير وقابلة للصيانة‪ .‬لقد جعل مزيجها من األداء‬
‫والمرونة والتجريد خياًر ا مفضاًل لتطوير مجموعة واسعة من التطبيقات‪ ،‬من الحوسبة‬
‫عالية األداء إلى تطبيقات سطح المكتب سهلة االستخدام‪.‬‬

‫الدور في تطوير البرمجيات الحديثة (‪Role in Modern 1.3‬‬ ‫‪1.3‬‬


‫‪)Software Development‬‬
‫على الرغم من ظهور لغات برمجة أحدث‪ ،‬إال أن ‪++ C‬ال تزال تلعب دوًر ا محورًيا في‬
‫تطوير البرمجيات الحديثة‪ .‬كفاءتها وتعدد استخداماتها وأداؤها يجعلها ال غنى عنها في‬
‫المجاالت التي تكون فيها الموارد محدودة أو السرعة أمر بالغ األهمية‪ .‬فيما يلي بعض‬
‫المجاالت الرئيسية التي ُتستخدم فيها ‪ ++C‬على نطاق واسع‪:‬‬

‫تطوير األلعاب (‪)Game Development‬‬


‫‪ ++C‬هي العمود الفقري للعديد من محركات األلعاب‪ ،‬مثل ‪ Unreal Engine‬و‬
‫‪ .CryEngine‬قدرتها على إدارة الذاكرة بكفاءة وتحسين األداء أمر بالغ األهمية لعرض‬
‫رسومات عالية الجودة والتعامل مع حسابات الفيزياء المعقدة في الوقت الفعلي‪.‬‬
‫تسمح سرعة اللغة ومرونتها لمطوري األلعاب بإنشاء تجارب ألعاب غامرة وسريعة‬
‫االستجابة‪.‬‬

‫أنظمة التشغيل والنوى (‪)Operating Systems and Kernels‬‬


‫تعتمد أنظمة التشغيل الرئيسية‪ ،‬بما في ذلك ‪ Windows‬و ‪ macOS‬و ‪ ،Linux‬بشكل‬
‫كبير على ‪ ++C‬لتطويرها‪ .‬تجعلها قدرات اللغة القريبة من األجهزة واستقرارها خياًر ا‬
‫مثالًيا لكتابة تعليمات برمجية للنواة وإدارة موارد النظام بفعالية‪.‬‬

‫األنظمة المضمنة (‪)Embedded Systems‬‬


‫من برمجيات التحكم في السيارات إلى أجهزة إنترنت األشياء‪ُ ،‬تعد ‪ ++C‬لغة سائدة‬
‫في تطوير األنظمة المضمنة‪ .‬قدرتها على التفاعل مباشرة مع األجهزة‪ ،‬إلى جانب‬
‫كفاءة أدائها‪ ،‬تجعلها مناسبة تماًم ا للتطبيقات التي تعمل في ظل قيود صارمة على‬
‫الموارد‪.‬‬

‫‪4‬‬
‫األنظمة المالية (‪)Financial Systems‬‬
‫غالًبا ما يعتمد القطاع المالي على ‪ ++C‬لتطوير أنظمة التداول وأدوات تحليل‬
‫المخاطر والتطبيقات األخرى عالية التردد‪ .‬دقة اللغة وسرعتها أمران بالغان األهمية‬
‫للتعامل مع الحسابات المعقدة ومعالجة كميات كبيرة من البيانات في الوقت الفعلي‪.‬‬

‫الحوسبة العلمية والمحاكاة (‪Scientific Computing and‬‬


‫‪)Simulations‬‬
‫ُتستخدم ‪ ++C‬على نطاق واسع في البحث العلمي والمحاكاة عالية األداء‪ .‬تطبيقات‬
‫مثل محرك الحساب في ‪ MATLAB‬وأدوات المحاكاة للفيزياء والكيمياء والهندسة‬
‫تستفيد من ‪ ++C‬لمكتباتها الرياضية القوية وقدرات المعالجة‪ .‬قدرتها على التعامل مع‬
‫مهام الحوسبة المتوازية والموزعة تعزز من فائدتها في الحوسبة العلمية‪.‬‬

‫الميزات الحديثة لالحتياجات المعاصرة (‪Modern Features for‬‬


‫‪)Contemporary Needs‬‬
‫لقد ضمن تطور معايير ‪ ++C‬توافقها مع متطلبات البرمجة الحديثة‪ .‬تشمل الميزات‬
‫الرئيسية التي تم تقديمها في التحديثات األخيرة ما يلي‪:‬‬

‫المؤشرات الذكية (‪ :)Smart Pointers‬تبسيط إدارة الذاكرة وتقليل خطر‬ ‫‪‬‬

‫تسرب الذاكرة‪.‬‬

‫تعيبيرات المدا (‪ :)Lambda Expressions‬تمكين تعريفات دالة موجزة‬ ‫‪‬‬

‫ومعبرة‪.‬‬

‫دعم التزامن (‪ :)Concurrency Support‬تسهيل تطوير التطبيقات متعددة‬ ‫‪‬‬

‫مؤشرات الترابط‪.‬‬

‫الوحدات (‪ :)Modules‬تحسين تنظيم التعليمات البرمجية وتقليل أوقات‬ ‫‪‬‬

‫التجميع‪.‬‬

‫المفاهيم (‪ :)Concepts‬تحسين برمجة القوالب من خالل تمكين قيود أوضح‪.‬‬ ‫‪‬‬

‫‪5‬‬
‫تعكس هذه الميزات التزام اللغة بالحفاظ على أهميتها مع الحفاظ على مبادئها‬
‫األساسية‪ .‬من خالل دمج نماذج البرمجة الحديثة‪ ،‬تستمر ‪ ++C‬في تلبية متطلبات‬
‫تطوير البرمجيات المعاصرة‪.‬‬

‫التوافق عبر األنظمة األساسية (‪)Cross-Platform Compatibility‬‬


‫ميزة أخرى مهمة للغة ‪ ++C‬هي طبيعتها عبر األنظمة األساسية‪ .‬يمكن تجميع‬
‫التعليمات البرمجية المكتوبة بلغة ‪ ++C‬وتنفيذها على مجموعة واسعة من أنظمة‬
‫التشغيل وبنى األجهزة مع الحد األدنى من التعديالت‪ .‬هذه المرونة ذات قيمة خاصة‬
‫للمطورين الذين ينشئون برامج مخصصة لبيئات متنوعة‪.‬‬

‫المجتمع والنظام البيئي (‪)Community and Ecosystem‬‬


‫تتمتع ‪ ++C‬بمجتمع ونظام بيئي قوي‪ ،‬حيث تقدم موارد واسعة للتعلم وحل المشكالت‬
‫والتعاون‪ .‬يزيد توفر المكتبات واألطر مفتوحة المصدر‪ ،‬مثل ‪ Boost‬و ‪ ،Qt‬من إثراء‬
‫تجربة التطوير‪ ،‬مما ُيمّكن المطورين من بناء تطبيقات معقدة بشكل أكثر كفاءة‪.‬‬

‫‪6‬‬
‫الفصل الثاني‬

‫‪7‬‬
‫‪ .‬نظرة عامة على )‪C++ (Overview of C++‬‬ ‫‪2‬‬
‫المقارنة مع لغات البرمجة األخرى (‪Comparison with Other 2.1‬‬ ‫‪2.1‬‬
‫‪)Programming Languages‬‬
‫تشتهر ‪ ++C‬بأدائها االستثنائي وتعدد استخداماتها‪ ،‬مما يميزها عن لغات البرمجة األخرى مثل ‪Python‬‬
‫و ‪ Java‬و ‪ .#C‬بينما تخدم كل لغة أغراًضا متميزة‪ ،‬فإن ‪ ++C‬تبرز في مجاالت محددة حيث يكون‬
‫التحكم والكفاءة والسرعة ذات أهمية قصوى‪.‬‬

‫المقارنة مع )‪Python (Comparison with Python‬‬


‫ُيحتفى بـ ‪ Python‬لبساطتها وقابليتها للقراءة وسهولة استخدامها‪ ،‬مما يجعلها خياًر ا‬
‫ممتاًز ا للمبتدئين والتطوير السريع للتطبيقات‪ .‬ومع ذلك‪ ،‬فهي تفتقر إلى التحكم‬
‫منخفض المستوى وسرعة التنفيذ التي توفرها ‪ .++C‬على عكس ‪ ،Python‬التي تعتمد‬
‫على مترجم‪ ،‬فإن ‪ ++C‬هي لغة ُم جمعة‪ ،‬مما يتيح التفاعل المباشر مع األجهزة وإنتاج‬
‫ملفات قابلة للتنفيذ عالية التحسين‪ .‬وهذا يجعل ‪ ++C‬أكثر مالءمة للتطبيقات‬
‫الحساسة لألداء مثل محركات األلعاب واألنظمة المضمنة‪ ،‬بينما تتفوق ‪ Python‬في‬
‫البرمجة النصية وتحليل البيانات وتطبيقات التعلم اآللي (‪.)Lippman, 2012‬‬

‫المقارنة مع )‪Java (Comparison with Java‬‬


‫‪ Java‬هي لغة أخرى عالية المستوى‪ ،‬موجهة للكائنات‪ ،‬ومعروفة باستقالليتها عن‬
‫النظام األساسي من خالل )‪ .Java Virtual Machine (JVM‬بينما ُتبسط فلسفة ‪Java‬‬
‫"اكتب مرة واحدة‪ ،‬شّغل في أي مكان" التطوير عبر األنظمة األساسية‪ ،‬إال أنها تضحي‬
‫ببعض األداء مقارنة بـ ‪ .++C‬يمنح التجميع المباشر لـ ‪ ++C‬إلى رمز اآللة والحد األدنى‬
‫من حمل وقت التشغيل ميزة مميزة في التطبيقات التي تتطلب أقصى قدر من‬
‫الكفاءة‪ ،‬مثل أنظمة التداول عالية التردد أو عمليات المحاكاة في الوقت الفعلي‪.‬‬
‫باإلضافة إلى ذلك‪ ،‬يمكن أن يؤدي جمع البيانات المهملة في ‪ Java‬إلى توقف غير‬
‫متوقع‪ ،‬بينما توفر ‪ ++C‬إدارة دقيقة للذاكرة‪ ،‬مما يمنح المطورين مزيًدا من التحكم‬
‫في موارد النظام‪.‬‬

‫المقارنة مع )‪C# (Comparison with C#‬‬

‫‪8‬‬
‫‪ ،#C‬وهي لغة طورتها ‪ ،Microsoft‬تشترك في العديد من أوجه التشابه مع ‪ Java‬ولكنها‬
‫تتكامل بإحكام مع نظام ‪ NET.‬البيئي‪ُ .‬تستخدم بشكل شائع لتطوير تطبيقات‬
‫‪ Windows‬وبرامج المؤسسات‪ .‬بينما توفر ‪ #C‬سهولة التطوير مع ميزات مثل اإلدارة‬
‫التلقائية للذاكرة‪ ،‬إال أنها تفتقر إلى أداء األنظمة األساسية والتحكم في مستوى‬
‫الموارد الموجود في ‪ .++C‬على سبيل المثال‪ ،‬غالًبا ما ُيفضل مطورو األلعاب ‪++C‬‬
‫للمهام كثيفة األداء داخل المحركات مثل ‪ ،Unreal‬على الرغم من أن ‪( Unity‬التي‬
‫تستخدم ‪ #C‬بشكل أساسي) هي بديل شائع للمشاريع األقل تطلًبا‪.‬‬

‫تظل ‪++ C‬ال مثيل لها في السيناريوهات التي تكون فيها برمجة مستوى األجهزة‬
‫واألداء في الوقت الفعلي أمًر ا بالغ األهمية‪ ،‬مما يجعلها عنصًر ا أساسًيا في مجاالت‬
‫مثل أنظمة التشغيل وتطوير األلعاب والحوسبة العلمية‪.‬‬

‫المجاالت والصناعات التي تستخدم ‪C++ (2.2 Fields and‬‬ ‫‪2.2‬‬


‫)‪Industries Using C++‬‬
‫‪ ++C‬هي لغة متعددة االستخدامات مع تطبيقات تمتد عبر العديد من‬
‫المجاالت والصناعات‪ .‬مزيجها من األداء العالي والمرونة ومجموعة‬
‫الميزات الغنية يجعلها خياًر ا مفضاًل في العديد من المجاالت‪:‬‬

‫تطوير األلعاب (‪)Game Development‬‬

‫‪ ++C‬هي العمود الفقري لمحركات األلعاب مثل ‪ Unreal Engine‬و ‪ ،CryEngine‬والتي‬


‫تشغل العديد من األلعاب الشهيرة‪ .‬تضمن كفاءة اللغة في التعامل مع عرض‬
‫الرسومات في الوقت الفعلي وحسابات الفيزياء المعقدة تجربة ألعاب سلسة‪ .‬تسمح‬
‫إمكانيات إدارة الذاكرة منخفضة المستوى للمطورين بتحسين األداء للمهام كثيفة‬
‫الموارد‪.‬‬

‫األنظمة المضمنة (‪)Embedded Systems‬‬

‫‪9‬‬
‫تعتمد األنظمة المضمنة‪ ،‬بدًءا من برمجيات السيارات وحتى األجهزة الطبية‬
‫واإللكترونيات االستهالكية‪ ،‬بشكل كبير على ‪ .++C‬تجعل قدرة اللغة على التفاعل‬
‫مباشرة مع األجهزة والعمل داخل بيئات مقيدة الموارد مثالية لهذه التطبيقات‪ .‬على‬
‫سبيل المثال‪ ،‬غالًبا ما تستخدم أنظمة المعلومات والترفيه في المركبات الحديثة‬
‫وأنظمة مساعدة السائق المتقدمة ‪ ++C‬لمنطقها األساسي‪.‬‬

‫األنظمة المالية (‪)Financial Systems‬‬

‫في القطاع المالي‪ُ ،‬تستخدم ‪ ++C‬على نطاق واسع لتطوير منصات التداول وأدوات‬
‫تحليل المخاطر وأنظمة التداول عالية التردد‪ .‬سرعتها ودقتها أمران حاسمان لمعالجة‬
‫مجموعات البيانات الكبيرة وتنفيذ الصفقات بأقل زمن وصول‪ُ .‬تعطي المؤسسات‬
‫األولوية لـ ‪ ++C‬للخوارزميات التي تتطلب سلوًكا حتمًيا وأداًء في الوقت الفعلي‪.‬‬

‫‪Scientific‬‬ ‫‪Computing‬‬ ‫(‪and‬‬ ‫والمحاكاة‬ ‫العلمية‬ ‫الحوسبة‬


‫‪)Simulations‬‬

‫تلعب ‪ ++C‬دوًر ا محورًيا في البحث العلمي‪ ،‬حيث ُتشغل عمليات المحاكاة في مجاالت‬
‫مثل الفيزياء والكيمياء والهندسة‪ .‬توفر مكتبات مثل ‪ Boost‬و ‪ Eigen‬أدوات قوية‬
‫للحسابات العددية والنمذجة الرياضية‪ .‬غالًبا ما تعتمد تطبيقات الحوسبة عالية األداء‬
‫على ‪ ++C‬لالستفادة من المعالجة المتوازية واالستخدام الفعال للموارد‪.‬‬

‫أنظمة التشغيل والنوى (‪)Operating Systems and Kernels‬‬

‫‪ ++C‬هي أداة أساسية في تطوير أنظمة التشغيل والنوى‪ ،‬بما في ذلك مكونات‬
‫‪ Windows‬و ‪ Linux‬و ‪ .macOS‬تسمح قدرات اللغة منخفضة المستوى للمطورين‬
‫بإدارة موارد النظام بشكل فعال وكتابة التعليمات البرمجية بالقرب من األجهزة‪.‬‬

‫متصفحات الويب وقواعد البيانات (‪)Web Browsers and Databases‬‬

‫تدمج متصفحات الويب الحديثة‪ ،‬مثل ‪ Chrome‬و ‪ ،Firefox‬لغة ‪ ++C‬في محركات‬


‫العرض الخاصة بها نظًر ا ألدائها وموثوقيتها‪ .‬وبالمثل‪ ،‬تستخدم قواعد البيانات مثل‬

‫‪10‬‬
‫‪ MySQL‬و ‪ MongoDB‬لغة ‪ ++C‬لوظائفها األساسية‪ ،‬مستفيدة من كفاءة اللغة‬
‫وقابليتها للتوسع‪.‬‬

‫االتجاهات والتحديثات الحالية (‪Current Trends and 2.3‬‬ ‫‪2.3‬‬


‫‪)Updates‬‬
‫استمرت ‪ ++C‬في التطور‪ ،‬متكيفة مع متطلبات تطوير البرمجيات الحديثة‪ .‬يمثل‬
‫إصدار ‪ C++20‬عالمة فارقة مهمة‪ ،‬حيث يقدم ميزات تعزز كاًل من إنتاجية المطور‬
‫وجودة التعليمات البرمجية‪ .‬فيما يلي بعض االتجاهات والتحديثات البارزة في نظام ‪+C‬‬
‫‪ +‬البيئي‪:‬‬

‫ميزات )‪C++20 (C++20 Features‬‬ ‫‪2.3.1‬‬


‫جلبت ‪ C++20‬العديد من الميزات التحويلية‪ ،‬بما في ذلك‪:‬‬

‫المفاهيم (‪ :)Concepts‬تبسيط برمجة القوالب من خالل تحديد قيود على‬ ‫‪‬‬

‫وسيطات القوالب‪ ،‬مما يجعل التعليمات البرمجية أكثر قابلية للقراءة‬


‫والمحافظة عليها‪.‬‬

‫النطاقات (‪ :)Ranges‬توفير طريقة جديدة للعمل مع تسلسالت البيانات‪ ،‬مما‬ ‫‪‬‬

‫يتيح خوارزميات موجزة ومعبرة‪.‬‬

‫الوحدات (‪ :)Modules‬تحسين تنظيم التعليمات البرمجية وتقليل أوقات‬ ‫‪‬‬

‫التجميع عن طريق استبدال ملفات الرأس التقليدية بنظام أكثر كفاءة‪.‬‬

‫الروتينات المساعدة (‪ :)Coroutines‬تسهيل البرمجة غير المتزامنة‪ ،‬مما‬ ‫‪‬‬

‫يسمح للمطورين بكتابة تعليمات برمجية غير متوقفة بشكل أكثر سهولة‪.‬‬

‫عامل المقارنة الثالثي (<=>)‪ :‬تبسيط المقارنات من خالل تقديم عامل‬ ‫‪‬‬

‫واحد لفحص المساواة والعالقات‪.‬‬

‫ُتحاذي هذه الميزات ‪ ++C‬مع نماذج البرمجة المعاصرة‪ ،‬مما يضمن بقاءها ذات صلة‬
‫في صناعة سريعة التطور (‪.)ISO/IEC, 2020‬‬

‫‪11‬‬
‫زيادة التبني في الذكاء االصطناعي والتعلم اآللي (‬ ‫‪2.3.2‬‬
‫‪)Increased Adoption in AI and Machine Learning‬‬
‫على الرغم من أن ‪ Python‬تهيمن على الذكاء االصطناعي والتعلم اآللي‪ ،‬إال أن ‪++C‬‬
‫تكتسب قوة دفع للمكونات الحساسة لألداء‪ .‬تتضمن مكتبات مثل ‪ TensorFlow‬و‬
‫‪ PyTorch‬وحدات خلفية ‪ ++C‬للحسابات الُمحّس نة‪ ،‬وغالًبا ما ُتستخدم ‪ ++C‬لتطوير‬
‫خوارزميات مخصصة لتطبيقات عالية األداء‪.‬‬

‫التركيز على السالمة والبساطة (‪)Focus on Safety and Simplicity‬‬

‫تؤكد معايير ‪ ++C‬الحديثة على البرمجة األكثر أماًنا واألكثر بساطة‪ .‬تساعد الميزات‬
‫مثل المؤشرات الذكية واالستدالل على النوع الُمحّس ن المطورين على كتابة تعليمات‬
‫برمجية قوية مع عدد أقل من األخطاء‪ .‬هذا التركيز على السالمة مهم بشكل خاص‬
‫في مجاالت مثل التمويل والرعاية الصحية‪ ،‬حيث تعد الموثوقية أمًر ا بالغ األهمية‪.‬‬

‫التطوير عبر األنظمة األساسية (‪)Cross-Platform Development‬‬

‫ال تزال ‪ ++C‬خياًر ا شائًعا للتطوير عبر األنظمة األساسية‪ ،‬بفضل أدوات مثل ‪ Qt‬وأطر‬
‫عمل مثل ‪ .Boost‬تسمح هذه األدوات للمطورين بإنشاء تطبيقات تعمل بسالسة عبر‬
‫أنظمة تشغيل متعددة دون التضحية باألداء‪.‬‬

‫الفصل الثالث‬

‫‪12‬‬
‫أساسيات لغة ‪++C‬‬ ‫‪3‬‬
‫البنية العامة والهيكل (‪)Syntax and Structure‬‬ ‫‪3.1‬‬
‫البنية األساسية ألي برنامج مكتوب بلغة ‪ ++C‬تتكون من الرؤوس (‪ ،)headers‬والدالة‬
‫الرئيسية (‪ ،)main function‬واألوامر (‪ .)statements‬مثال‪:‬‬

‫‪>include <iostream#‬‬

‫‪;using namespace std‬‬

‫‪{ )(int main‬‬


‫‪13‬‬
;"!cout << "Hello, World

;return 0

)Variables and Data Types( ‫المتغيرات وأنواع البيانات‬ 3.2


( ‫ بما في ذلك األعداد الصحيحة‬،)data types( ‫ عدة أنواع من البيانات‬++C ‫تدعم لغة‬
( ‫ واألحرف‬،)floating-point numbers - float( ‫ األرقام العشرية‬،)integers - int
:‫ يتم تعريف المتغيرات كالتالي‬.)characters - char

;int age = 25

;float height = 5.9

;'char grade = 'A

)Input and Output Operations( ‫عمليات اإلدخال واإلخراج‬ 3.3


‫) باستخدام‬standard input and output( ‫يتم التعامل مع اإلدخال واإلخراج القياسي‬
:‫ مثال‬.cout‫ و‬cin ‫دوال‬

;int number

;" :cout << "Enter a number

;cin >> number

;cout << "You entered: " << number

)Control Structures( ‫هياكل التحكم‬ 3.4


while‫ و‬for ‫) مثل‬loops( ‫) مثل الحلقات‬control structures( ‫ هياكل تحكم‬++C ‫تتيح لغة‬
.else‫ و‬if ‫) مثل‬conditionals( ‫ والشروط‬،do-while‫و‬

14
C++ (Functions in C++) ‫الدوال في‬ .4

)Types of Functions( ‫ أنواع الدوال‬4.1 .5

‫ الدوال‬:)User-defined Functions( ‫الدوال المعرفة بواسطة المستخدم‬ .1


.‫التي ينشئها المبرمج‬

‫() و‬sqrt ‫ الدوال المعرفة مسبًقا مثل‬:)Library Functions( ‫الدوال المدمجة‬ .2


.)(pow

)Function Components( ‫مكونات الدوال‬ 3.5


:‫تتكون الدوال من‬

.)Declaration( ‫التصريح‬ .1

.)Definition( ‫التعريف‬ .2

.)Calling( ‫االستدعاء‬ .3

:‫مثال‬

int add(int a, int b); // Declaration

int add(int a, int b) { // Definition

;return a + b

{ )(int main

15
‫‪cout << add(5, 3); // Calling‬‬

‫‪;return 0‬‬

‫}‬

‫مواضيع متقدمة في الدوال (‪)Advanced Function Topics‬‬ ‫‪3.6‬‬


‫التعددية في الدوال (‪ :)Function Overloading‬تعريف دوال متعددة بنفس‬ ‫‪.1‬‬
‫االسم ولكن بمعامالت (‪ )parameters‬مختلفة‪.‬‬

‫الدوال المضمنة (‪ :)Inline Functions‬تحسين األداء من خالل تضمين كود‬ ‫‪.2‬‬


‫الدالة أثناء وقت الترجمة (‪.)compile time‬‬

‫الدوال التكرارية (‪ :)Recursive Functions‬الدوال التي تستدعي نفسها‪.‬‬ ‫‪.3‬‬

‫الفصل الرابع‬

‫‪16‬‬
‫‪ .‬الدوال في )‪C++ (Functions in C++‬‬ ‫‪4‬‬
‫الدوال هي إحدى اللبنات األساسية في برمجة ‪ .++C‬فهي تسمح للمطورين بتنظيم‬
‫الكود إلى مكونات معيارية قابلة إلعادة االستخدام مما يحسن قابلية القراءة والصيانة‬
‫والكفاءة‪ .‬في ‪ ،++C‬يمكن تصنيف الدوال بشكل عام إلى دوال ُمعّر فة من قبل‬
‫المستخدم ودوال مكتبة‪ ،‬كل منها يخدم أغراًضا متميزة‪.‬‬

‫‪17‬‬
‫أنواع الدوال (‪)Types of Functions 4.1‬‬ ‫‪4.1‬‬
‫(‪User-Defined‬‬ ‫المستخدم‬ ‫قبل‬ ‫من‬ ‫الُم عّر فة‬ ‫الدوال‬ ‫‪4.1.1‬‬
‫‪)Functions‬‬
‫الدوال الُمعّر فة من قبل المستخدم هي تلك التي أنشأها المبرمج ألداء مهام محددة‪.‬‬
‫تتم كتابة هذه الدوال بشكل صريح في الكود وهي مصممة خصيًص ا لتلبية المتطلبات‬
‫الفريدة للبرنامج‪ .‬فهي توفر نمطية من خالل السماح للمبرمج بتقسيم المهام‬
‫المعقدة إلى وحدات أصغر قابلة لإلدارة‪ .‬على سبيل المثال‪:‬‬

‫‪>include <iostream#‬‬

‫‪;using namespace std‬‬

‫‪ //‬دالة ُمعّر فة من قبل المستخدم لحساب مربع الرقم‬

‫)‪{ int square(int number‬‬

‫‪;return number * number‬‬

‫}‬

‫‪{ )(int main‬‬

‫‪;int num = 5‬‬

‫‪" << cout‬مربع " << ‪ " << num‬هو‪;square(num) << endl << " :‬‬

‫‪;return 0‬‬

‫}‬

‫دوال المكتبة (‪)Library Functions‬‬ ‫‪4.1.2‬‬


‫دوال المكتبة هي دوال ُمعّر فة مسبًقا توفرها مكتبات ‪ .++C‬هذه الدوال مصممة ألداء‬
‫عمليات شائعة وتوفير وقت المطورين من كتابة التعليمات البرمجية المتكررة‪.‬‬
‫تتضمن األمثلة ‪ )(sqrt‬للجذور التربيعية و ‪ )(pow‬لحسابات القوة و ‪ )(strlen‬لطول‬

‫‪18‬‬
‫السلسلة‪ .‬الستخدام دوال المكتبة‪ ،‬يجب تضمين ملفات الرأس المناسبة‪ .‬على سبيل‬
‫المثال‪:‬‬

‫‪>include <cmath#‬‬

‫‪>include <iostream#‬‬

‫‪;using namespace std‬‬

‫‪{ )(int main‬‬

‫‪;double base = 2.0, exponent = 3.0‬‬

‫‪ cout << "2‬مرفوعة للقوة ‪ 3‬هي‪pow(base, exponent) << << " :‬‬
‫‪;endl‬‬

‫‪;return 0‬‬

‫}‬

‫مكونات الدالة (‪)Function Components 4.2‬‬ ‫‪4.2‬‬


‫تتكون الدالة في ‪ ++C‬من ثالثة مكونات رئيسية‪ :‬اإلعالن والتعريف واالستدعاء‪.‬‬

‫اإلعالن (‪ُ :)Declaration‬يحدد إعالن الدالة‪ ،‬المعروف أيًض ا باسم النموذج‬ ‫‪.1‬‬
‫األولي‪ ،‬اسم الدالة ونوع اإلرجاع والمعامالت‪ُ .‬يعلم الُمجّم ع بوجود الدالة قبل‬
‫تعريفها أو استخدامها‪ .‬على سبيل المثال‪int add(int a, int b); // Declaration :‬‬

‫التعريف (‪ :)Definition‬يوفر تعريف الدالة تنفيذ الدالة‪ .‬ويشمل الكود الذي‬ ‫‪.2‬‬
‫يؤدي المهمة المطلوبة‪ .‬على سبيل المثال‪:‬‬

‫‪int add(int a, int b) { // Definition‬‬

‫‪19‬‬
‫‪;return a + b‬‬

‫}‬

‫االستدعاء (‪ :)Calling‬يتم تنفيذ الدالة عن طريق استدعائها من دالة أخرى‪،‬‬ ‫‪.1‬‬


‫عادًة ‪ .)(main‬يمرر استدعاء الدالة الوسيطات إلى الدالة ويستخدم قيمة‬
‫اإلرجاع الخاصة بها‪ .‬على سبيل المثال‪:‬‬

‫‪{ )(int main‬‬

‫‪cout << add(5, 3); // Calling‬‬

‫‪;return 0‬‬

‫}‬

‫هنا‪ ،‬يتم استدعاء الدالة ‪ add‬مع وسيطين‪ 5 ،‬و ‪ .3‬تحسب الدالة مجموع هذين الرقمين‬
‫وترجع القيمة ‪ ،8‬والتي يتم تخزينها بعد ذلك في المتغير ‪.sum‬‬

‫المعامالت (‪ :)Parameters‬هي متغيرات ُتستخدم لنقل البيانات إلى الدالة‪ .‬يتم‬


‫تعريفها في إعالن الدالة وفي قائمة معامالت تعريف الدالة‪.‬‬

‫قيمة اإلرجاع (‪ :)Return Value‬هي القيمة التي ُترجعها الدالة إلى الدالة التي‬
‫الكلمة‬ ‫وُتستخدم‬ ‫الدالة‪،‬‬ ‫إعالن‬ ‫في‬ ‫اإلرجاع‬ ‫نوع‬ ‫ُيحدد‬ ‫استدعتها‪.‬‬
‫المفتاحية ‪ return‬إلرجاع القيمة‪ .‬يمكن أن يكون للدالة نوع إرجاع ‪ ،void‬مما يعني أنها‬
‫ال ُترجع أي قيمة‪.‬‬

‫مواضيع متقدمة عن الدوال (‪)Advanced Function Topics 4.3‬‬ ‫‪4.3‬‬


‫التحميل الزائد للدوال (‪)Function Overloading‬‬ ‫‪4.3.1‬‬
‫يسمح التحميل الزائد للدوال لدوال متعددة بمشاركة نفس االسم ولكنها تختلف في‬
‫نوع أو عدد معامالتها‪ .‬يوفر هذا المرونة ويبسط قراءة الكود‪ .‬على سبيل المثال‪:‬‬

‫‪>include <iostream#‬‬

‫‪;using namespace std‬‬

‫‪20‬‬
‫‪ //‬دوال محملة بشكل زائد‬

‫)‪{ int multiply(int a, int b‬‬

‫‪;return a * b‬‬

‫}‬

‫)‪{ double multiply(double a, double b‬‬

‫‪;return a * b‬‬

‫}‬

‫‪{ )(int main‬‬

‫‪ //‬يستدعي نسخة األعداد الصحيحة‬ ‫‪;cout << multiply(2, 3) << endl‬‬

‫‪ // ;cout << multiply(2.5, 3.5) << endl‬يستدعي نسخة األعداد العشرية‬

‫‪;return 0‬‬

‫}‬

‫الدوال المضمنة (‪)Inline Functions‬‬ ‫‪4.3.2‬‬


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

‫‪>include <iostream#‬‬

‫‪;using namespace std‬‬

‫)‪{ inline int square(int x‬‬

‫‪;return x * x‬‬

‫}‬

‫‪{ )(int main‬‬

‫‪;cout << square(4) << endl‬‬

‫‪21‬‬
‫‪;return 0‬‬

‫}‬

‫الدوال التراجعية (‪)Recursive Functions‬‬ ‫‪4.3.3‬‬


‫الدوال التراجعية هي دوال تستدعي نفسها‪ .‬وهي مفيدة بشكل خاص للمشكالت التي‬
‫يمكن تقسيمها إلى مشكالت فرعية أصغر ومتشابهة‪ ،‬مثل حساب العامل أو توليد‬
‫متوالية فيبوناتشي‪ .‬على سبيل المثال‪:‬‬

‫‪>include <iostream#‬‬

‫‪;using namespace std‬‬

‫‪ //‬دالة تراجعية لحساب العامل‬

‫)‪{ int factorial(int n‬‬

‫)‪if (n == 0 || n == 1‬‬

‫‪;return 1‬‬

‫)‪;return n * factorial(n - 1‬‬

‫}‬

‫‪{ )(int main‬‬

‫‪" << cout‬عامل ‪;factorial(5) << endl << " :5‬‬

‫‪;return 0‬‬

‫}‬

‫أفضل الممارسات الستخدام الدوال (‪Best Practices for 4.4‬‬ ‫‪4.4‬‬


‫‪)Using Functions‬‬
‫لزيادة فوائد الدوال‪ ،‬ضع في اعتبارك أفضل الممارسات التالية‪:‬‬

‫‪22‬‬
‫استخدم أسماء ذات معنى (‪ :)Use Meaningful Names‬يجب أن تشير‬ ‫‪‬‬

‫أسماء الدوال بوضوح إلى الغرض منها‪.‬‬

‫اجعل الدوال قصيرة (‪ :)Keep Functions Short‬يجب أن تؤدي كل دالة‬ ‫‪‬‬

‫مهمة واحدة لتعزيز القراءة والصيانة‪.‬‬

‫قلل من اآلثار الجانبية (‪ :)Minimize Side Effects‬تجنب تعديل المتغيرات‬ ‫‪‬‬

‫العامة داخل الدوال‪.‬‬

‫وّثق الدوال (‪ :)Document Functions‬استخدم التعليقات لوصف الغرض‬ ‫‪‬‬

‫والمعامالت وقيم إرجاع الدوال‪.‬‬

‫استخدم المعامالت االفتراضية (‪ :)Use Default Parameters‬قم بتوفير‬ ‫‪‬‬

‫قيم افتراضية للمعامالت لزيادة المرونة‪.‬‬

‫تطبيقات العالم الحقيقي للدوال (‪Real-World 4.5‬‬ ‫‪4.5‬‬


‫‪)Applications of Functions‬‬
‫الدوال‬ ‫ُتبسط‬ ‫‪:)Mathematical‬‬ ‫(‪Operations‬‬ ‫الرياضية‬ ‫العمليات‬ ‫‪.1‬‬
‫مثل ‪ )(add‬و ‪ )(subtract‬و ‪ )(sqrt‬العمليات الحسابية المعقدة‪ ،‬مما يجعل الكود‬
‫أكثر نمطية‪.‬‬

‫تصميم البرامج النمطية (‪ُ :)Modular Program Design‬تمّكن الدوال من‬ ‫‪.2‬‬
‫تقسيم البرامج إلى وحدات أصغر‪ ،‬كل منها يتعامل مع جانب محدد من‬
‫التطبيق‪ ،‬مثل التحقق من صحة اإلدخال أو معالجة البيانات أو إنشاء‬
‫المخرجات‪.‬‬

‫إعادة االستخدام (‪ :)Reusability‬تقلل دوال المكتبة‪ ،‬جنًبا إلى جنب مع‬ ‫‪.3‬‬
‫الدوال الُمعّر فة من قبل المستخدم‪ ،‬من التكرار وتسمح بإعادة استخدام الكود‬
‫عبر مشاريع متعددة‪.‬‬

‫‪23‬‬
‫البرمجة الوظيفية في )‪ :C++ (Functional Programming in C++‬تدعم‬ ‫‪.4‬‬
‫‪ ++C‬نماذج البرمجة الوظيفية مع ميزات مثل تعبيرات المدا‪ ،‬مما يجعلها‬
‫متعددة االستخدامات لمهام مثل ردود النداء ومعالجة األحداث‪.‬‬

‫في الختام‪ُ ،‬تعد الدوال ال غنى عنها في ‪ .++C‬فهي تعزز النمطية وإعادة االستخدام‬
‫والوضوح‪ ،‬مما ُيمّكن المطورين من كتابة تعليمات برمجية فعالة وقابلة للصيانة‪ .‬توّس ع‬
‫المفاهيم المتقدمة مثل التحميل الزائد والدوال المضمنة والتراجع من فائدتها‪ ،‬مما‬
‫يجعلها حجر الزاوية في برمجة ‪ ++C‬الفعالة‪.‬‬

‫الفصل الخامس‬

‫‪24‬‬
‫الميزات المتقدمة في ‪++C‬‬ ‫‪5‬‬
‫ُتعتبر لغة ‪ ++C‬من اللغات البرمجية الغنية بالميزات المتقدمة التي توفر للمطورين‬
‫أدوات قوية لبناء تطبيقات معقدة وفعالة‪ .‬تشمل هذه الميزات‪:‬‬

‫القوالب (‪ - Templates‬القوالب)‬ ‫‪5.1‬‬


‫تتيح القوالب في ‪ ++C‬إنشاء دوال وفئات عامة (‪ ،)Generic‬مما يسهم في إعادة‬
‫استخدام الكود وضمان األمان في النوع (‪ .)Type Safety‬تدعم القوالب البرمجة العامة‬
‫من خالل السماح للدوال أو الفئات بالعمل مع أي نوع من البيانات‪.‬‬

‫مثال‪:‬‬

‫‪>include <iostream#‬‬

‫‪;using namespace std‬‬

‫‪>template <typename T‬‬

‫)‪{ T add(T a, T b‬‬

‫‪;return a + b‬‬

‫‪25‬‬
}

{ )(int main

‫ لألعداد الصحيحة‬// ;cout << add(5, 10) << endl

‫ لألعداد العشرية‬// ;cout << add(5.5, 10.2) << endl

;return 0

)Standard Template Library - STL( ‫مكتبة القوالب القياسية‬ 5.2


‫ مجموعة من الفئات والدوال المخصصة للقوالب التي توفر هياكل‬STL ‫ُتعد مكتبة‬
)‫ الطوابير‬- Queues(‫ القوائم) و‬- Lists(‫ المتجهات) و‬- Vectors( ‫بيانات مثل‬
.)‫ البحث‬- Searching(‫ الفرز) و‬- Sorting( ‫وخوارزميات مثل‬

:‫مثال‬

>include <iostream#

>include <vector#

>include <algorithm#

;using namespace std

{ )(int main

;vector<int> numbers = {4, 2, 3, 1}

;sort(numbers.begin(), numbers.end())

{ for (int n : numbers)

;" " << cout << n

}
26
‫‪;return 0‬‬

‫}‬

‫البرمجة كائنية التوجه (‪- Object-Oriented Programming‬‬ ‫‪5.3‬‬


‫البرمجة كائنية التوجه)‬
‫تدعم لغة ‪ ++C‬بشكل كامل مبادئ البرمجة كائنية التوجه مثل‪:‬‬

‫التغليف (‪ - Encapsulation‬التغليف)‪ :‬جمع البيانات والدوال داخل الفئات‪.‬‬ ‫‪‬‬

‫الوراثة (‪ - Inheritance‬الوراثة)‪ :‬إنشاء فئات جديدة بناًء على فئات موجودة‬ ‫‪‬‬

‫مسبًقا‪.‬‬

‫تعدد األشكال (‪ - Polymorphism‬تعدد األشكال)‪ :‬السماح للدوال أو الطرق‬ ‫‪‬‬

‫بالعمل بطرق مختلفة بناًء على السياق‪.‬‬

‫المؤشرات الذكية (‪ - Smart Pointers‬المؤشرات الذكية)‬ ‫‪5.4‬‬


‫تساعد المؤشرات الذكية على إدارة ذاكرة الكائنات الُمخصصة ديناميكًيا‪ ،‬مما يقلل‬
‫من مخاطر التسربات في الذاكرة‪ .‬تشمل األنواع الشائعة ‪ unique_ptr‬و‪ shared_ptr‬و‬
‫‪.weak_ptr‬‬

‫مثال‪:‬‬

‫‪>include <iostream#‬‬

‫‪>include <memory#‬‬

‫‪;using namespace std‬‬

‫‪{ )(int main‬‬

‫)‪;unique_ptr<int> ptr = make_unique<int>(10‬‬

‫‪;cout << *ptr << endl‬‬

‫‪;return 0‬‬
‫‪27‬‬
}

‫ تعبيرات الل‬- Lambda Expressions( ambda‫التعبيرات الل‬ 5.5


)ambda
‫) بشكل ُمباشر‬Anonymous Functions( ‫ إنشاء دوال مجهولة‬ambda‫ُتمّكن تعبيرات الل‬
.‫ مما ُيبسط العمليات مثل الفرز والترشيح‬،‫داخل الكود‬

:‫مثال‬

>include <iostream#

>include <vector#

>include <algorithm#

;using namespace std

{ )(int main

;vector<int> numbers = {1, 2, 3, 4, 5}

{ for_each(numbers.begin(), numbers.end(), [](int n)

;" " << cout << n * n

;)}

;return 0

28
( ‫ تعدد الخيوط) والتزامن‬- Multithreading( ‫تعدد الخيوط‬ 5.6
)‫ التزامن‬- Concurrency
‫ ُتستخدم‬.‫ مما يسمح بتنفيذ الشيفرة بشكل متواٍز‬،‫ مكتبات لتعدد الخيوط‬++C ‫ُتوفر‬
.‫> بشكل شائع إلدارة الخيوط‬thread< ‫مكتبة‬

:‫مثال‬

>include <iostream#

>include <thread#

;using namespace std

)(void printMessage

;cout << "Hello from thread!" << endl

{ )(int main

;thread t(printMessage)

;)(t.join

29
‫‪;return 0‬‬

‫}‬

‫الفصل السادس‬

‫‪30‬‬
‫المزايا والعيوب في ‪++C‬‬ ‫‪6‬‬
‫‪ 6.1‬المزايا‬ ‫‪6.1‬‬
‫األداء (‪ - Performance‬األداء)‬

‫ُتعتبر ‪ ++C‬واحدة من أسرع لغات البرمجة بفضل قربها من العتاد وقدرتها على إدارة‬
‫الموارد بكفاءة‪ُ .‬تستخدم في التطبيقات التي تتطلب أداًء عالًيا مثل األلعاب‪ ،‬األنظمة‬
‫المدمجة‪ ،‬والمحاكاة العلمية‪ .‬يسمح التحكم الدقيق في تخصيص وإدارة الذاكرة‬
‫بتحقيق أقصى أداء مقارنة بلغات أخرى تعتمد على جمع النفايات مثل ‪ Java‬و‪.Python‬‬
‫ُتستخدم ميزات مثل المؤشرات (‪ - Pointers‬المؤشرات) والقوالب (‪- Templates‬‬
‫القوالب) لتقديم حلول برمجية فعالة من حيث الزمن واالستهالك‪.‬‬

‫المرونة (‪ - Flexibility‬المرونة)‬

‫تدعم ‪ ++C‬عدة أنماط برمجية‪ ،‬بما في ذلك البرمجة اإلجرائية ( ‪Procedural‬‬


‫‪ - Programming‬البرمجة اإلجرائية)‪ ،‬وكائنية التوجه (‪- Object-Oriented Programming‬‬
‫كائنية التوجه)‪ ،‬والبرمجة العامة (‪ - Generic Programming‬البرمجة العامة)‪ُ .‬يمكن‬
‫للمبرمج اختيار النمط األنسب وفًقا لمتطلبات المشروع‪ .‬على سبيل المثال‪ ،‬يمكن‬
‫استخدام البرمجة اإلجرائية لبناء أجزاء بسيطة من الكود‪ ،‬بينما تتيح كائنية التوجه‬

‫‪31‬‬
‫التعامل مع المشاريع المعقدة عبر التغليف (‪ - Encapsulation‬التغليف) والوراثة (‬
‫‪ - Inheritance‬الوراثة)‪.‬‬

‫المكتبات الواسعة (‪ - Extensive Libraries‬المكتبات الواسعة)‬

‫توفر مكتبة القوالب القياسية (‪ )STL‬هياكل بيانات مثل القوائم (‪ - Lists‬القوائم)‬


‫والطوابير (‪ - Queues‬الطوابير)‪ ،‬إلى جانب خوارزميات قوية مثل البحث (‪- Searching‬‬
‫البحث) والفرز (‪ - Sorting‬الفرز)‪ .‬باإلضافة إلى ‪ ،STL‬تحتوي ‪ ++C‬على مكتبات‬
‫خارجية شهيرة ُتستخدم لتطوير األلعاب (مثل ‪ SDL‬و‪ ،)OpenGL‬وتحليل البيانات (مثل‬
‫‪ ،)Boost‬والذكاء االصطناعي‪.‬‬

‫االستقاللية عن المنصة (‪ - Platform Independence‬االستقاللية‬


‫عن المنصة)‬

‫رغم أن ‪ُ ++C‬تترجم إلى رمز آلة خاص بمنصة معينة‪ ،‬فإن الشيفرة المصدرية‬
‫المكتوبة جيًدا تكون قابلة للنقل إلى منصات أخرى مع تعديالت بسيطة‪ُ .‬يسهم ذلك‬
‫في جعلها خياًر ا مثالًيا لتطوير تطبيقات تعمل على أنظمة تشغيل متعددة مثل‬
‫‪ Windows‬و‪ Linux‬و‪.macOS‬‬

‫المجتمع واإلرث (‪ - Community and Legacy‬المجتمع واإلرث)‬

‫بفضل إرثها الذي يمتد لعدة عقود‪ ،‬تمتلك ‪ ++C‬مجتمًعا كبيًر ا من المطورين ومجموعة‬
‫هائلة من الموارد‪ ،‬بما في ذلك األدلة‪ ،‬والمنتديات‪ ،‬ومكتبات األكواد‪ .‬هذا اإلرث يجعلها‬
‫الخيار األول في المشاريع التي تحتاج إلى تكامل مع أنظمة أو تطبيقات مكتوبة‬
‫مسبًقا‪.‬‬

‫‪32‬‬
‫العيوب‬ ‫‪6.2‬‬
‫التعقيد (‪ - Complexity‬التعقيد)‬ ‫‪.1‬‬

‫تمتلك ‪ ++C‬مجموعة كبيرة من الميزات‪ ،‬مما يجعلها لغة معقدة إلى حد ما‪ .‬يمكن أن‬
‫تكون هذه الميزات مربكة للمبتدئين الذين يواجهون صعوبة في فهم كيفية عمل‬
‫المؤشرات أو الوراثة المتعددة (‪ - Multiple Inheritance‬الوراثة المتعددة)‪ .‬كما أن كود‬
‫‪ ++C‬يميل إلى أن يكون أقل وضوًح ا مقارنة بلغات أخرى مثل ‪.Python‬‬

‫إدارة الذاكرة يدوًيا (‪ - Manual Memory Management‬إدارة‬ ‫‪.2‬‬


‫الذاكرة يدوًيا)‬

‫بينما تمنح ‪ ++C‬المطورين تحكًما كامًال في الذاكرة باستخدام المؤشرات‪ ،‬يمكن أن‬
‫يؤدي سوء إدارة الذاكرة إلى أخطاء خطيرة مثل تسرب الذاكرة (‪- Memory Leaks‬‬
‫تسرب الذاكرة) أو استخدام الذاكرة بعد تحريرها ( ‪ - Use After Free‬االستخدام بعد‬
‫التحرير)‪ .‬يتطلب ذلك خبرة كبيرة لضمان كتابة كود آمن وفعال‪.‬‬

‫عدم وجود جامع نفايات مدمج ( ‪- Lack of Built-in Garbage Collection‬‬ ‫‪.3‬‬
‫عدم وجود جامع نفايات مدمج)‬

‫على عكس لغات مثل ‪ Java‬و‪ ,#C‬تفتقر ‪ ++C‬إلى جامع نفايات مدمج‪ .‬يعني ذلك أن‬
‫المطورين بحاجة إلى تتبع جميع الكائنات الُمنشأة ديناميكًيا والتأكد من تحرير الذاكرة‬
‫عند عدم الحاجة إليها‪ .‬قد يؤدي هذا إلى زيادة التعقيد واحتمالية األخطاء‪.‬‬

‫أوقات الترجمة (‪ - Compile Times‬أوقات الترجمة)‬ ‫‪.4‬‬

‫‪33‬‬
‫بسبب التعقيد في النظام النوعي (‪ - Type System‬النظام النوعي) واستخدام‬
‫القوالب‪ ،‬قد تستغرق مشاريع ‪ ++C‬الكبيرة وقًتا طويًال للترجمة‪ .‬يمكن أن يؤدي هذا‬
‫إلى تباطؤ عملية التطوير‪ ،‬خاصة عند إجراء تغييرات صغيرة تحتاج إلى إعادة ترجمة‬
‫كبيرة‪.‬‬

‫التوافق العكسي (‪ - Backward Compatibility‬التوافق‬ ‫‪.5‬‬


‫العكسي)‬

‫بينما ُتعتبر ‪ ++C‬متوافقة مع اإلصدارات السابقة‪ ،‬فإن هذا قد يؤدي إلى تعقيدات‬
‫إضافية‪ .‬على سبيل المثال‪ ،‬يمكن أن ُتسبب الشيفرات القديمة مشاكل في التوافق‬
‫مع اإلصدارات األحدث من المترجمات‪ ،‬مما يتطلب تعديالت كبيرة‪.‬‬

‫تطبيقات ‪++C‬‬ ‫‪6.3‬‬

‫ُتعتبر ‪ ++C‬واحدة من أكثر لغات البرمجة استخداًم ا في العالم بفضل ميزاتها المتقدمة‬
‫وتعدد استخداماتها‪ .‬تشمل التطبيقات الرئيسية‪:‬‬

‫تطوير األلعاب (‪ - Game Development‬تطوير األلعاب)‬ ‫‪.1‬‬

‫ُتستخدم ‪ ++C‬على نطاق واسع في تطوير ألعاب الفيديو‪ُ .‬تعتبر محركات األلعاب مثل‬
‫‪ Unreal Engine‬و‪ CryEngine‬مبنية على ‪ ++C‬نظًر ا لقدرتها على التعامل مع‬
‫الرسومات المعقدة والحسابات الفيزيائية‪ .‬كما أن األداء العالي الذي تقدمه يجعلها‬
‫مناسبة لتطبيقات الزمن الحقيقي‪.‬‬

‫برمجيات النظام (‪ - System Software‬برمجيات النظام)‬ ‫‪.2‬‬

‫أنظمة التشغيل مثل ‪ Windows‬و‪ Linux‬تحتوي على مكونات كبيرة مكتوبة بـ ‪.++C‬‬
‫ُتعتبر اللغة مثالية لتطوير برمجيات النظام نظًر ا لمرونتها وقدرتها على الوصول إلى‬
‫العتاد مباشرة‪.‬‬

‫‪34‬‬
‫األنظمة الُم دمجة (‪ - Embedded Systems‬األنظمة الُم دمجة)‬ ‫‪.3‬‬

‫ُتستخدم ‪ ++C‬في البرمجيات المدمجة التي تعمل على أجهزة ذات موارد محدودة‬
‫مثل السيارات‪ ،‬واألجهزة الطبية‪ ،‬واألجهزة المنزلية الذكية‪ .‬تسمح ميزاتها القريبة من‬
‫العتاد بتحقيق الكفاءة المطلوبة‪.‬‬

‫البرمجيات المالية (‪ - Financial Software‬البرمجيات المالية)‬ ‫‪.4‬‬

‫ُتستخدم ‪ ++C‬بشكل شائع في تطوير منصات التداول عالية السرعة‪ ،‬وأدوات تقييم‬
‫المخاطر‪ ،‬ونماذج التحليل المالي‪ .‬تتميز هذه التطبيقات بمتطلباتها العالية من حيث‬
‫السرعة والدقة‪ ،‬وهو ما توفره ‪.++C‬‬

‫الحوسبة العلمية (‪ - Scientific Computing‬الحوسبة العلمية)‬ ‫‪.5‬‬

‫غالًبا ما ُتستخدم ‪ ++C‬في تطبيقات الحوسبة العلمية والمحاكاة بسبب أدائها العالي‪.‬‬
‫ُتستخدم مكتبات مثل ‪ Eigen‬و‪ Armadillo‬لتسريع العمليات الحسابية‪.‬‬

‫متصفحات الويب (‪ - Web Browsers‬متصفحات الويب)‬ ‫‪.6‬‬

‫ُتستخدم ‪ ++C‬في تطوير مكونات متصفحات الويب مثل ‪ Chrome‬و‪ .Firefox‬على‬


‫سبيل المثال‪ ،‬يتم استخدام اللغة لتطوير محركات العرض (‪- Rendering Engines‬‬
‫محركات العرض) وتحسين األداء‪.‬‬

‫الذكاء‬ ‫‪-‬‬ ‫‪Artificial‬‬ ‫(‪Intelligence‬‬ ‫االصطناعي‬ ‫الذكاء‬ ‫‪.7‬‬


‫االصطناعي)‬

‫على الرغم من أن ‪ُ Python‬تعتبر اللغة الرائدة في مجال الذكاء االصطناعي‪ُ ،‬تستخدم‬


‫‪ ++C‬لتطوير النماذج التي تحتاج إلى أداء عاٍل ‪ُ .‬تستخدم مكتبات مثل ‪ TensorRT‬في‬
‫هذا السياق‪.‬‬

‫‪35‬‬
‫الفصل السابع‬

‫‪36‬‬
‫الخاتمة ومستقبل )‪C++ (Conclusion and Future of C++‬‬ ‫‪7‬‬
‫الخاتمة‪:‬‬ ‫‪7.1‬‬
‫ُتعد ‪ ++C‬واحدة من أكثر لغات البرمجة تأثيًر ا واستمرارية في مجال تطوير‬
‫البرمجيات‪ .‬منذ إنشائها في الثمانينيات وحتى اليوم‪ ،‬أثبتت ‪ ++C‬مرونتها‬
‫وقدرتها على التكيف مع متطلبات التكنولوجيا المتغيرة‪ .‬من خالل الجمع‬
‫بين األداء العالي والمرونة‪ ،‬أصبحت اللغة خياًر ا شائًعا لتطوير البرمجيات‬
‫في مجموعة واسعة من المجاالت‪ ،‬من األلعاب إلى األنظمة الُمدمجة‪ .‬ومع‬
‫استمرار تحديث معايير اللغة‪ ،‬تظل ‪ ++C‬قادرة على تلبية احتياجات‬
‫المطورين المعاصرين‪.‬‬

‫مستقبل ‪:++C‬‬ ‫‪7.2‬‬


‫مستقبل ‪ ++C‬يبدو واعًدا‪ ،‬خاصة مع استمرار تحسين معايير اللغة‪ .‬تتضمن‬
‫اإلصدارات الحديثة مثل ‪ C++20‬و‪ C++23‬ميزات جديدة تهدف إلى تبسيط‬
‫الكود وتحسين األداء‪ ،‬مثل دعم المفاهيم (‪ )Concepts‬والمدى (‪.)Ranges‬‬
‫هذه التطورات ُتظهر التزام مجتمع ‪ ++C‬بمواكبة احتياجات المطورين‪.‬‬

‫التوجهات المستقبلية‪:‬‬ ‫‪7.3‬‬


‫االعتماد على ‪ ++C‬في الذكاء االصطناعي‪ :‬مع ازدياد تعقيد‬ ‫‪.1‬‬
‫تطبيقات الذكاء االصطناعي‪ ،‬سيظل أداء ‪ ++C‬عامًال حاسًما في‬
‫تدريب النماذج وتطبيقها‪.‬‬

‫التكامل مع تقنيات الحوسبة الكمومية‪ :‬نظًر ا لطبيعتها القريبة‬ ‫‪.2‬‬


‫من العتاد‪ ،‬قد تكون ‪ ++C‬الخيار األفضل لتطوير تطبيقات الحوسبة‬
‫الكمومية‪.‬‬

‫‪37‬‬
‫االستدامة البيئية‪ :‬مع التركيز المتزايد على كفاءة الطاقة‪،‬‬ ‫‪.3‬‬
‫سُتستخدم ‪ ++C‬لتطوير تطبيقات أكثر استدامة من حيث استهالك‬
‫الموارد‪.‬‬

‫باختصار‪ُ ،‬تعد ‪ ++C‬لغة برمجة ُم صممة لالستمرار والنمو في المستقبل‪ ،‬مع‬


‫الحفاظ على إرثها القوي وتقديم حلول جديدة لتحديات البرمجة الحديثة‪.‬‬

‫المراجع‬

‫‪38‬‬
‫المراجع‬ 8
 Stroustrup, B. (2013). The C++ Programming Language. 4th Edition.
Addison-Wesley.

 Discusses the development, features, and applications of C++.

 Meyers, S. (2005). Effective C++: 55 Specific Ways to Improve Your


Programs and Designs. 3rd Edition. Addison-Wesley.

 Covers best practices and advanced techniques in C++ programming.

 Lippman, S. B., Lajoie, J., & Moo, B. E. (2012). C++ Primer. 5th Edition.
Addison-Wesley.

 An introduction to C++ fundamentals and modern programming features.

 ISO/IEC (2020). Programming Languages – C++ (ISO/IEC 14882:2020).


International Organization for Standardization.

 Defines the official C++20 standard, including new language features.

 Sutter, H. (2020). C++ Today: The Beast Is Back.

39
 Highlights the modern evolution and relevance of C++ in the software
industry. Available at: https://herbsutter.com/

 Alexandrescu, A. (2001). Modern C++ Design: Generic Programming and


Design Patterns Applied. Addison-Wesley.

 Explores advanced topics like generic programming and design patterns in


C++.

 Unreal Engine Documentation. Using C++ in Unreal Engine.

 Details the role of C++ in game development. Available at:


https://www.unrealengine.com/

 Chromium Project. The Chromium Browser Source Code Documentation.

 Describes the use of C++ in the development of the Chrome web browser.
Available at: https://www.chromium.org/

 Bjarne Stroustrup's Website. C++ Resources and FAQs.

 Insightful discussions by the creator of C++. Available at:


https://www.stroustrup.com/

 Microsoft Documentation. C++ in Windows Development.

 Discusses the application of C++ in Windows operating systems and


applications. Available at: https://learn.microsoft.com/

 Boost C++ Libraries Documentation.

 Comprehensive details about widely used libraries in C++. Available at:


https://www.boost.org/

 Game Development Resources. C++ in Game Engines.

40
 Industry practices in game development with C++. Available at:
https://www.gamedeveloper.com/

41

You might also like