برمجة:سي ++
من ويكي الكتب
إن لغة البرمجة سي++ (++C) هي واحدة من أكثر لغات البرمجة إستخدامًا و أوسعها إنتشارًا بالإضافة إلى جدتها، لغة سي (C). تعتبر لغة سي++ من لغات البرمجة الكائنية التوجه (Object-Oriented programming)، وإن كان من الممكن إستخدامها بشكل بنيوي (Structural) أو كمزيج من الإثنين.
جزء كبير من لغة سي++ تعتبر من لغات البرمجة عالية المستوى. ولغات البرمجة عالية المستوى هي اللغات التي ظهرت لتسريع عملية البرمجة حيث أن تعليماتها أقرب ماتكون إلى لغة الإنسان وهذا ما يجعل عملية البرمجة أكثر سرعةً وسهولةً. تسهّل لغة سي++ الأسلوب المهيكل والمنهجي لعملية تصميم البرامج، حيث تتألّف برامج هذه اللغة من مكونات تسمّى الأصناف (classes) والدوال (functions) وبالتالي يمكن تقسيم عمليّة تعلّم لغة سي++ إلى قسمين: يعتمد الأول منها على تعلّم لغة سي++ نفسها، في حين يسمح الثاني بتعلّم كيفية استخدام الأصناف الملحقة بهذه اللّغة واستخدام التوابع الموجودة ضمن المكتبة المعياريّة ANSI C.
[عدل] ماذا تحتاج للبدء ؟
- تحتاج مصرّف (compiler) (مترجم يقوم بتحويل ما تكتبه إلى لغة الآلة التي يفهمها المعالج)، ورابط (linker)، ومحرر نصوص. بعض بيئات التحرير توفر هذه الثلاث. لإختيار أحد بيئات التطوير المتكاملة، يمكنك رؤية المقارنة بينها على هذه الصفحة في ويكيبيديا الإنجليزية. وفي ما يلي بعض الإقتراحات :
- فيجوال سي ++ (++Visual C)، من شركة ميكروسوفت، وهو مغلق المصدر وغير مجاني.
- برنامج (Intel® C++ Compiler 9.1)، مغلق المصدر ومجاني لمدّة معينة. للتحميل
- بيئة (Quincy 2005) الذي يأتي مع مصرّف gcc وأدوات أخرى حرّة. للتحميل
- إستخدام برامج حزمة مينجوي، تعمل من سطر أوامر دوس (DOS) بشكل عام وتستخدم مصرّف (gcc) وأدوات أخرى مرافقة. للتحميل
- إستخدام بيئة إكليبس (Eclipse CDT)، و هي مجانية ومفتوحة المصدر. للتحميل
[عدل] قائمة الموضوعات و الدروس
- برمجة:سي ++/ مقدمة في البرمجة
- التفكير في كيفية عمل الأشياء، ايجاد حلول للمشاكل، الخ
- برمجة:سي ++/ الدرس الأول
- البرنامج الأول(الفارغ)، شرح مفاهيم أساسية: نقطة الدخول إلى البرنامج، نقطة الخروج، لماذا الـ main؟ فكرة عامة عن تقسيم البرامج الكبيرة إلى أجزاء صغيرة (برامج جزئية).
- برمجة:سي ++/الدرس الثاني
- الكتابة على الشاشة، العمليات الأساسية، الجمع و الطرح، المتغيرات، الثوابت (litteral constants).
- برمجة:سي ++/الدرس الثالث
- القراءة من المستخدم، تابع العمليات الرياضية و الاشارات في اللغة
- برمجة:سي ++/الدرس الرابع
- السير المنطقي للبرنامج، الأوامر الشرطية، الاشارات الشرطية، و منطقها
- برمجة:سي ++/الدرس الخامس
- تمارين، حل مشكلات بسيطة، أمثلة للتفكير البرمجي، التركيز على عقلية التحليل .. الخ.
- برمجة:سي ++/الدرس السادس
- الدوال (functions)، تقسيم البرنامج إلى برامج جزئية (حسب المهام)، إرسال الإعدادات (parameters) الخ.
- برمجة:سي ++/الدرس السابع
- تابع الدوال (functions)، مفهوم الـ expression و الـ return value، استخدام الدوال (functions) كعمليات حسابية، نطاق المتغيرات scope الخ.
- برمجة:سي ++/الدرس الثامن
- استخدام الدوال (functions) لتحسين بنية و تركيب البرامج، تحسين برامجنا السابقة.
- برمجة:سي ++/الدرس التاسع
- تطبيقات و تمارين، مزيد من المشاكل و حلولها
- برمجة:سي ++/الدرس العاشر
- المصفوفات (arrays)، مفهوم الـ initialization بشكل عام، و تطبيقه على المصفوفات و بيان حالاته الاستثنائية.
- برمجة:سي ++/الدرس الحادي عشر
- مفاهيم عامة عن الذاكرة، طبيعة المصفوفات في الذاكرة، مقدمة عن المؤشرات.
- برمجة:سي ++/الدرس الثاني عشر
- استخدام المصفوفات في البرامج، التفكير في استخدامها، فوائدها، تطبيقات، الخ.
- برمجة:سي ++/الدرس الثالث عشر
- مقدمة عن المؤشرات: مفهوم الـ statically allocated و الـ dynamically allocated بالنسبة للمتغيرات، الكومبايلر و اسماء المتغيرات و عناوينها في الذاكرة، استخدام المؤشرات للوصول إلى المتغيرات اللتي تم حجزها ديناميكيا.
- برمجة:سي ++/الدرس الرابع عشر
- تطبيق على المؤشرات: إرسال عناوين المتغيرات إلى الدوال (functions)، مع تركيز على شرح الستاك و توضيح عدم جواز إرجاع مؤشر لمتغير داخلي في فنكشن، مع مقدمة عن الرفرنس في السي بلص بلص.
- برمجة:سي ++/الدرس الخامس عشر
- الـ struct، تجميع معلومات متعلقة ببعضها، تمثيل حالة كائنات حقيقية، الخ.
- برمجة:سي ++/الدرس السادس عشر
- تطبيقات عملية على الـ struct
- برمجة:سي ++/الدرس السابع عشر
- استخدام الـ struct و المؤشرات لعمل linked list. نقاط القوة الضعف في الـ linked list و متى يمكن استخدامها، مع تطبيق بسيط.
- برمجة:سي ++/الدرس الثامن عشر
- الأقسام (class)، توضيح عام من ناحية لغوية، الـ syntax الخاص بالأقسام الخ.
- برمجة:سي ++/الدرس التاسع عشر
- البرمجة الشيئية / الكانئية، الكائنات objects، مفاهيم متعمقة .. تحليل المشكلة إلى أشياء وكائنات، الخصائص والتصرفات، attrbutes and behaviour .. الخ.
- برمجة:سي ++/الدرس العشرون
- تابع مفاهيم متعمقة عن البرمحة الشيئية.. تصميم الحلول باستخدام الكائنات، ذكر بسيط لقضايا الـ cohesion and coupling، مع تطبيقات عملية، و لو بسيطة.
- برمجة:سي ++/الدرس الحادي و العشرون
- مناقشة مواضيع الـ cohesion، coupling، association: التفكير جيدا في تصميم الفئات بشكل جيد ومتماسك، فصل المهام الزائدة عن الـ class إلى فئات classes أخرى، الربط بين الكائنات، تقليل التداخل coupling.
- برمجة:سي ++/الدرس الثاني و العشرون
- الوراثة (inheritance)، مع تطبيقات.
- برمجة:سي ++/الدرس الثالث و العشرون
- الـ (polymorphism).
- برمجة:سي ++/الدرس الرابع و العشرون
- تطبيقات عملية تستخدم المفاهيم اللتي تمت مناقشتها، مع التقديم لبعض الـ (design patterns)، كالـ (singleton) مثلا.

