شرح المفهوم
يجمع هذا الدرس العديد من أساسيات C++ للمبتدئين في برنامج صغير واحد. بدلاً من كتابة أسطر معزولة، ستبني قائمة مهام صغيرة تخزن البيانات، وتضيف إدخالات جديدة، وتطبع الحالة الحالية بطريقة قابلة للقراءة. الهدف هو رؤية كيف تبدأ `structs` و`vectors` و`functions` البسيطة في الشعور وكأنها أجزاء من برنامج حقيقي عندما تعمل معًا. أنت لا تستهدف تطبيقًا كبيرًا بعد. أنت تتدرب على كيفية تنظيم المنطق ذي الصلة بحيث يظل الكود قابلاً للإدارة مع نمو الميزة.
أين تضع الكود
- ابدأ بـ `variables` والمدخلات. حافظ على `includes` و`main function` و`data types` واضحة.
- أضف منطق المعالجة في القسم الأوسط.
- اختتم بالإخراج والتحقق السريع.
مرجع الأوامر
- قم بتجميع البرنامج وتشغيله، ثم تأكد من ظهور كلتا المهمتين بالحالة المعلقة المتوقعة.
- أضف مهمة أخرى وتحقق من أن الإخراج ينمو دون تغيير `print function`.
- انقل المنطق المتكرر إلى `function` بدلاً من التعامل مع كل شيء داخل `main()` .
- استخدم `const` حيث يحسن الأمان ويجعل قصد الـ `function` أسهل في القراءة.
دليل خطوة بخطوة
- اقرأ الـ `struct` واشرح ما يمثله كل حقل قبل تغيير أي كود.
- قم بتجميع الإصدار الأساسي وتحقق من تخزين المهام وعرضها بالترتيب.
- أضف `helper function` لمهمة واضحة واحدة، مثل إضافة المهام أو طباعتها.
- قم بإجراء تغيير صغير واحد على تنسيق الإخراج وقارن النتيجة قبل وبعد.
- اختتم بفحص قصير: هل لا يزال الكود سهل المسح بعد إضافة السلوك الجديد؟
تمارين تطبيقية
- أنشئ إصدارًا يضع علامة على مهمة واحدة كمكتملة قبل طباعة القائمة.
- ابنِ برنامجًا مصغرًا مشابهًا لعناصر التسوق باستخدام نفس نمط `struct-plus-vector`.
- أعد كتابة المثال بحيث تقوم `main()` بتنسيق الـ `functions` في الغالب بدلاً من القيام بكل العمل مباشرة.
تحديات برمجية
- امنع إضافة عناوين مهام فارغة وقرر أين ينتمي هذا الشرط.
- قارن إصدارًا يحتوي على كل المنطق في `main()` بإصدار مقسم إلى `helper functions`، ثم اشرح أيهما أسهل في التوسيع.
مهام تمرين صغيرة
- أعد تسمية `function` أو `variable` واحدة بحيث يكون غرضها واضحًا بدون تعليقات إضافية.
- أضف اختبارًا يدويًا سريعًا عن طريق إدراج مهمة ثالثة وإعادة تشغيل البرنامج.
- اكتب سطرًا واحدًا يصف ما يجعل هذا مثالًا صغيرًا ولكنه حقيقي بأسلوب المشروع.
خطأ شائع
Skipping input validation or mixing logic/output in one unstructured block.
تحدٍ مصغّر من الواقع
Build a small real-life example for this lesson topic using 3 clear steps: input, process, output.