سي++ (لغة برمجة)
Paradigm | Multi-paradigm:[1] procedural, functional, object-oriented, generic |
---|---|
Designed by | Bjarne Stroustrup |
First appeared | 1983 |
الإصدار المستقر | |
Typing discipline | Static, nominative |
Implementation language | C++ |
OS | Cross-platform (multi-platform) |
Filename extensions | .cc .cpp .cxx .C .c++ .h .hh .hpp .hxx .h++ |
Website | News, status & discussion about Standard C++ |
Major implementations | |
LLVM Clang, GCC, Microsoft Visual C++, Intel C++ Compiler | |
Influenced by | |
C, Simula, ALGOL 68, Ada, CLU, ML | |
Influenced | |
Perl, LPC, Lua, Pike, Ada 95, Java, PHP, D, C99, C#,[2] Falcon, Seed7 | |
|
سي++ (تنطق: سي بلس بلس) إنگليزية: ++C هي لغة برمجة للاستخدامات العامة، تعتبر لغة السي++ لغة برمجة كائنية. والتي يعتبرها الكثيرون اللغة الأفضل لتصميم التطبيقات ذات الواجهة الكبيرة و للتعامل مع البنية الصلبة للحاسب. ولغة السي بلس بلس ++C من لغات البرمجة العالية المستوى وفي نفس الوقت قريبة من لغة التجميع ذات المستوي المحدود كما أنها تعد لغة برمجة إجرائية(يمكن كتابة برنامج يحتوي على إجراءات و توابع فقط) كما تعد لغة غرضية التوجه(البرنامج المكتوب عبارة عن صفوف و تستخدم الخواص المتاحة من كبسلة و تعددية الأشكال و الوراثة و التركيب...). وهي لغة ناشئة من لغة C الذي قام بتطويرها بيارن ستروستروب إلي ++C.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
تاريخ السي بلس بلس
طور بيارن ستروستروب (Bjarne Stroustrup)، والذي كان يعمل في مختبرات بيل، لغة السي++ في الثمانينات كتحسين للغة السي (لغة برمجة)سي، تشمل السي++ جميع مزايا السي بالأضافة إلى مزايا البرمجة الكائنية، تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج، وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.
ومثلها مثل لغة السي، فان السي++ هى لغة متعدده الاستخدامات الا انها مناسبة لبرامج أنظمة التشغيل. وتكتب معظم أجزاء أنظمة التشغيل وبرامج مساعدة أنظمة التشغيل باستخدام السي++ ومنها نظام جنو/لينكس.
و يتجنب الكثير من المبرمجين لغة السي++ والسي نظرا لشهرتهما كلغات برمجة معقدة. وقد أدى ذلك إلى استخدام الكثيرين للغات مثل فيجوال بيسك وديلفي ثم جافا وسي شارب والأخيرتين هما مجرد تسهيل (و ليس تطوير) للغة السي++ وبدا في وقت معين أن لغات مثل الجافا سوف تستولى على سوق البرمجيات التجارية من السي++ مع هجرة عدد كبير من مبرمجى السي++ إلى جافا وسي شارب ، الا أنه سرعان ما أدرك المبرمجون أن السي++ هى السبيل الوحيد لإنتاج برامج تجارية قوية وسريعة وتؤدى المطلوب منها بكفاءة وبأقل عدد من الأخطاء.
Standardization
Year | C++ Standard | Informal name |
---|---|---|
1998 | ISO/IEC 14882:1998[3] | C++98 |
2003 | ISO/IEC 14882:2003[4] | C++03 |
2007 | ISO/IEC TR 19768:2007[5] | C++07/TR1 |
2011 | ISO/IEC 14882:2011[6] | C++11 |
2014 | ISO/IEC 14882:2014[7] | C++14 |
2017 | to be determined | C++17 |
Operators and operator overloading
Operator | Symbol |
---|---|
Scope resolution operator | قالب:C-lang |
Conditional operator | قالب:C-lang |
dot operator | قالب:C-lang |
Member selection operator | قالب:C-lang |
"sizeof" operator | قالب:C-lang |
"typeid" operator | قالب:C-lang |
#include <iostream>
#include <vector>
int main() {
try {
std::vector<int> vec{3,4,3,1};
int i{vec.at(4)}; // Throws an exception, std::out_of_range (indexing for vec is from 0-3 not 1-4)
}
// An exception handler, catches std::out_of_range, which is thrown by vec.at(4)
catch (std::out_of_range& e) {
std::cerr << "Accessing a non-existent element: " << e.what() << '\n';
}
// To catch any other standard library exceptions (they derive from std::exception)
catch (std::exception& e) {
std::cerr << "Exception thrown: " << e.what() << '\n';
}
// Catch any unrecognised exceptions (i.e. those which don't derive from std::exception)
catch (...) {
std::cerr << "Some fatal error\n";
}
}
بين السي والسي++
- تدعم السي++ السي بشكل كامل(نظريا أو هذا ما تقوله الشركات المنتجة للمترجمات) وعمليا يمكن لمعظم برامج السي أن تترجم بواسطة مترجمات سي++ ولهذا تسمى هذه المترجمات بمترجمات سي/سي++. - الا أن الأمر لا يخلو من بعض المشاكل غير المتوقعه، مثلا قد يحدث أن تسمى متغيرا باسم new وهى كلمة محجوزه في سي++ وليست محجوزة في سي.
الجديد في سي++
الإضافة الأهم التي أتت بها السي++ عن السي هى بالطبع البرمجه عن طريق الكائنات. حيث تعتمد السي على البرمجة الاجرائية والتي كانت كافية في وقتها. الا أن بظهور أنظمة التشغيل ذات الواجهة الرسومية انتقل معظم المبرمجين إلى البرمجة بالكائنات . الا أن السي مازالت تستخدم في برمجة الويندوز.
و هذا بالإضافة إلى وجود مكتبات جديدة لأداء مهام الادخال والاخراج تعتمد على الكائنات.
&
بنية البرنامج في السي بلس بلس
ما هو التّابع function وما هي الإجرائيّة procedure ؟
إن كل مجموعة تعليمات تتواجد مع بعضها تدعى Block (التّابع هو مجموعة) ويمكن للتّابع أو للإجرائيّة أن يحوي مجموعات جزئيّة عديدة. (إن ذكر كلمة "إجرائيّة" قليل جدّاً في لغة سي بلس بلس، لذلك قد لا نجدها في شروحات هذه اللّغة)
البنية الأساسيّة لبرنامج سي بلس بلس
إنّ بنية البرنامج أساساً تقوم على التّوابع ! حيث يكون البرنامج بكامله عبارة عن تابع أساسي يستدعي التّوابع الأخرى في البرنامج. أي بمعنى آخر..... مجموعات كل منها تحوي تعليمات مختلفة يتمّ التّنقّل بينها وفقاً لبرمجة المبرمج، أو ردّ المستخدم.
أمثلة
مثال لطباعة !Hello, World بالسي++
هذا المثال يطبع عبارة "Hello, World!" على شاشة "موجّه الأوامر" .... يعمل هذا البرنامج على برنامج مايكروسوفت فيجوال سي بلس بلس 100% وقد لا يعمل على محرّكات أخرى.
//This program show a message 'Hello, World!' on the screen (on console) //This program works 100% on Microsoft Visual C++
- include <iostream>
using namespace std;
int main(){
cout << "Hello, World!" << endl; return 0;
}
</source>التطور المستقبلي
لا تزال لغة سي++ تواصل تطورها. فهناك نسخة جديدة من سي++ قيد التطوير، وتسمى سي++0اكس، وقد صدرت في مارس 2009، يشير العمل الحالي بأنّ سي++ سيواصل الاستفادة من طبيعته متعددة المثال. boost مجموعة تعمل للاستفادة إلى أبعد الحدود من سي++ في شكله الحالي. هم يتوسّعون كثيرا في سي++ من حيث الوظيفية والقدرات وينصحون أيضا لجنة معايير سي++ التي تعمل فيها الميزّات حسنا والتي تحتاج التحسين.
انظر أيضاً
- سي (لغة برمجة)
- Bjarne Stroustrup
- C++ Standard Library
- International Organization for Standardization
- Outline of C++
- List of C++ compilers
- The C++ Programming Language
- Comparison of programming languages
References
- ^ Stroustrup, Bjarne (1997). "1". The C++ Programming Language (Third ed.). ISBN 0-201-88954-4. OCLC 59193992.
- ^ Naugler, David (May 2007). "C# 2.0 for C++ and Java programmer: conference workshop". Journal of Computing Sciences in Colleges. 22 (5).
Although C# has been strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java.
- ^ "ISO/IEC 14882:1998". International Organization for Standardization.
- ^ "ISO/IEC 14882:2003". International Organization for Standardization.
- ^ "ISO/IEC TR 19768:2007". International Organization for Standardization.
- ^ "ISO/IEC 14882:2011". International Organization for Standardization.
- ^ "ISO/IEC 14882:2014". International Organization for Standardization.
وصلات خارجية
- موقع يحتوي على شروحات للغة ++C
- صفحة بيارنه ستروستروب
- مرجع في ال ++C
- مترجم مجاني لنظام ويندوز
- المترجم الحر من جنو
- دروس وأمثله في سي++
- موقع موج : المصدر المفتوح لعدة لغات برمجية , و تعليمي ايضاً
لغات برمجة | |
لغات كائنية | |
سي++ ++C |
سي شارپ #C |
دلفي (لغة برمجة) Delphi |
ادا 95 Ada |
جاڤا Java |
سمولتوك Smalltalk |
روبي Ruby |
اوبجكت پاسكال Object Pascal |
لغات تقليدية | |
بيسيك Basic |
سي C |
باسكال Pascal |
كوبول COBOL |
فورتران FORTRAN |
أسمبلي Assembly |
لغات وظيفية | |
ليسپ Lisp |
پرولوگ Prolog |
پايثون Python |
پاريس Paris |
هندسة برامج | |
- الصفحات التي تستخدم علامات المصدر الموقوفة
- Articles containing إنگليزية-language text
- Pages using Lang-xx templates
- C++
- Algol programming language family
- C++ programming language family
- لغات البرمجة القائمة على الفئات
- Cross-platform software
- لغات البرمجة كائنية التوجه
- Programming languages created in 1983
- Statically typed programming languages
- Programming languages with an ISO standard
- لغات برمجة كائنية التوجه
- لغات برمجة إستاتيكية
- لغات برمجة
- حاسوب