يتكون هذا المشروع من بعض مشاكل الترميز الشائعة والرمز التجريبي ونصوص الإعداد والخوارزميات وهياكل البيانات وأنماط التصميم التي تم تطويرها في الغالب في C ++
كان ذلك خاصًا في وقت سابق ولكني قررت أن أعرض ذلك لسببين:
أ. يمكن للأشخاص الاستفادة من رمز للمشاكل الشائعة والخوارزميات وأنماط التصميم
ب. يمكنني الحصول على مجموعة جديدة ومتعددة من العيون على الكود الخاص بي تساعدني على تحسين جودته
يتم شرح محتويات الدليل أدناه لتحسين التنقل. للحصول على تعليمات الإنشاء ، راجع القسم التالي في هذا ReadMe
يحتوي هذا القسم/الدليل على أمثلة رمز لـ 23 أنماط تصميم تمسكت بها عصابة من أربعة في عام 1994
هناك 3 أقسام فرعية قياسية: الهيكلية والإبداعية والسلوكية
يحتوي كل دليل في القسم الفرعي على ملف مصدر لكل نمط تصميم بموجب الفئات الثلاثة المذكورة أعلاه
يحتوي دليل القسم هذا (DSA_EXERCISES) على مختلف بيانات مشكلة DSA وحلولها في شكل رمز المصدر.
يتم وضع وثيقة بيانات المشكلة لكل فئة ضمن دليل كل منها. يتم ذكر الملف المصدر الذي يحتوي على الحل في نفس الدليل في نهاية كل مشكلة.
main() المستخدمة داخل الحل للمشكلة المعنية يحتوي Directory Directory ExperimentalCode على رمز مصادر محض استنادًا إلى مفاهيم C ++ الجديدة التي تعلمتها. لقد تركتها هنا فقط في حالة فائدة أي شخص يتعلم أيضًا C ++ أو هو مبرمج جديد
يمكن للخبراء في C ++ تجاهل هذا القسم بأمان
يحتوي هذا الدليل على مرافق مشتركة في شكل رؤوس أو مكتبات مشتركة مطلوبة عادة من قبل معظم المصادر في هذا المشروع. يمكن أن يساعد ذلك في تقليل الازدواجية وأيضًا الحجم الثنائي في بعض الحالات إذا تم تعريف الطرق في مكتبة مشتركة بدلاً من رمز المصدر.
يحتوي هذا الدليل على بعض البرامج النصية MISC والرمز المستخدمة لإعداد بيئة المشروع الخاصة بي أو تطويرها لتقييم المفهوم.
السبب في أنه ينتهي هنا وليس في قسم التعليمات البرمجية التجريبية بسبب طبيعته. على سبيل المثال ، DL_API_shell.c هو ملف مصدر يحتوي على واجهة برمجة تطبيقات المحمولة الديناميكية من مكتبة libdl.so المشتركة ويجب تجميعها بشكل مختلف عن كيفية تصميم ملفات المصدر الأخرى في التعليمات البرمجية التجريبية في CMAKE كما هو موضح أدناه:
gcc -rdynamic -o DL_API_shell DL_API_shell.c -ldl
قد لا تنطبق البرامج النصية Shell على إعداد Env Project الخاص بك ، ولكن في حالة قيامها ، قم بتشغيلها كجذر باستخدام sudo
تم إعداد هذا المشروع باستخدام أداة إنشاء CMAKE في كل مستوى لأقسام مختلفة لتوفير المزيد من القابلية للتأثير أثناء البناء.
ثانياً ، لا يحتوي هذا المشروع على ثنائي/مكتبة موحدة مرتبطة بملفات كائنات أخرى قابلة للنقل ، كل ملف مصدر هو تطبيق مستقل
في كل مستوى ، يضيف Cmake Directories للأدلة المصب. بشكل افتراضي ، ستقوم Cmake من المستوى الأعلى ببناء جميع المصادر الموجودة في جميع أدلة الأقسام. يمكن أن يكون هذا مضيعة للوقت إذا كنت تنوي العمل مع أي قسم واحد ، على سبيل المثال DesignPatterns
في مثل هذه السيناريوهات ، قم بالتعليق (تبدأ تعليقات CMake بـ # ) مكالمات add_subdirectory() غير المطلوبة. في مثالنا ، سيبدو Cmake من المستوى الأعلى مثل هذا:
add_subdirectory(DesignPatterns)
#add_subdirectory(DSA_Exercises)
#add_subdirectory(ExperimentalCode)
سيؤدي هذا إلى توليد ثنائيات رمز مصدر DesignPatterns فقط تحت bin
يمكن تطبيق هذه القاعدة بشكل متكرر على أدلة المصب بطريقة مماثلة لتوفير وقت البناء
بمجرد إعداد الدلالات الفرعية المطلوبة في CMake ، قم بتشغيل Clean Reconfigure All تليها Clean Rebuild All لبناء المصادر إذا فتحت المشروع في VSCODE
في حالات أخرى ، قم بتشغيل الأوامر التالية على موجه الأوامر على مستوى الجذر للمشروع
mkdir build
cd build
cmake ..
make
سيتم إنشاء الإخراج للمصادر المعنية في دليل bin للمشروع بموجب أدلة القسم الخاصة بهم
يرجى ملاحظة أن الرمز هنا ليس مثاليًا! قد تكون هناك طرق أفضل وأكثر تحسينًا لتنفيذ بعض المهام ، وهذا بالضبط هو نية تعريض هذا الريبو للجمهور.
أنا أدعو الاقتراحات والتعديلات على الرمز في أي من الأقسام المذكورة أعلاه.
يمكنك إما إرسال بريد إلكتروني ([email protected])
يمكنك أيضًا إثارة مشكلات على Github إذا اكتشفت أي شيء
الترميز والتعلم سعيد!