الفصل 44: مشاريع متقدمة
مقدمة
في هذا الفصل سنبني مشاريع عملية متقدمة تجمع كل ما تعلمناه.
مشروع 1: نظام ملاحظات
sad
صنف ملاحظة
متغير عنوان
متغير محتوى
متغير تاريخ
متغير وسوم = []
باني(عنوان، محتوى)
هذا.عنوان = عنوان
هذا.محتوى = محتوى
هذا.تاريخ = الآن()
نهاية
دالة أضف_وسم(وسم)
هذا.وسوم = هذا.وسوم + [وسم]
نهاية
دالة عرض()
اطبع_سطر("=== " + هذا.عنوان + " ===")
اطبع_سطر(هذا.محتوى)
إذا (طول(هذا.وسوم) > 0)
اطبع_سطر("الوسوم: " + هذا.وسوم)
نهاية
نهاية
نهاية
صنف دفتر_ملاحظات
خاص متغير _ملاحظات = []
دالة أضف(عنوان، محتوى)
متغير م = جديد ملاحظة(عنوان، محتوى)
هذا._ملاحظات = هذا._ملاحظات + [م]
ارجع م
نهاية
دالة بحث(كلمة)
متغير نتائج = []
لكل م في هذا._ملاحظات
إذا (يحتوي(م.عنوان، كلمة) أو يحتوي(م.محتوى، كلمة))
نتائج = نتائج + [م]
نهاية
نهاية
ارجع نتائج
نهاية
دالة عرض_الكل()
لكل م في هذا._ملاحظات
م.عرض()
اطبع_سطر("---")
نهاية
نهاية
نهاية
# الاستخدام
متغير دفتر = جديد دفتر_ملاحظات()
دفتر.أضف("اجتماع الغد"، "مناقشة المشروع الجديد")
دفتر.أضف("قائمة مشتريات"، "حليب وخبز وفواكه")
دفتر.عرض_الكل()مشروع 2: محلل CSV
sad
صنف محلل_CSV
خاص متغير _أعمدة = []
خاص متغير _صفوف = []
دالة حلل(نص)
متغير أسطر = قسم(نص، "\n")
هذا._أعمدة = قسم(أسطر[0]، "،")
لكل م في مدى(1، طول(أسطر) - 1)
متغير قيم = قسم(أسطر[م]، "،")
هذا._صفوف = هذا._صفوف + [قيم]
نهاية
نهاية
دالة احصل_عمود(اسم)
متغير فهرس = -1
لكل م في مدى(0، طول(هذا._أعمدة) - 1)
إذا (هذا._أعمدة[م] == اسم)
فهرس = م
نهاية
نهاية
إذا (فهرس == -1)
ارمي "عمود غير موجود: " + اسم
نهاية
متغير نتيجة = []
لكل صف في هذا._صفوف
نتيجة = نتيجة + [صف[فهرس]]
نهاية
ارجع نتيجة
نهاية
نهايةمشروع 3: محرك قوالب (Template Engine)
sad
دالة تطبيق_قالب(قالب، بيانات)
متغير نتيجة = قالب
لكل مفتاح في مفاتيح(بيانات)
نتيجة = استبدل(نتيجة، "{{" + مفتاح + "}}"، بيانات[مفتاح])
نهاية
ارجع نتيجة
نهاية
# الاستخدام
متغير قالب = "مرحباً {{اسم}}! عمرك {{عمر}} سنة."
متغير نتيجة = تطبيق_قالب(قالب، {
"اسم": "أحمد"،
"عمر": "25"
})
اطبع_سطر(نتيجة) # مرحباً أحمد! عمرك 25 سنة.تمرين
اختر مشروعاً وطوره بإضافة ميزات جديدة:
- نظام الملاحظات: أضف حفظ إلى ملف
- محلل CSV: أضف تصفية وترتيب
- محرك القوالب: أضف دعم الحلقات