Skip to content

الفصل 44: مشاريع متقدمة

مقدمة

في هذا الفصل سنبني مشاريع عملية متقدمة تجمع كل ما تعلمناه.

مشروع 1: نظام ملاحظات

sad
صنف ملاحظة
    متغير عنوان
    متغير محتوى
    متغير تاريخ
    متغير وسوم = []
    
    باني(عنوان، محتوى)
        هذا.عنوان = عنوان
        هذا.محتوى = محتوى
        هذا.تاريخ = الآن()
    نهاية
    
    دالة أضف_وسم(وسم)
        هذا.وسوم = هذا.وسوم + [وسم]
    نهاية
    
    دالة عرض()
        اطبع_سطر("=== " + هذا.عنوان + " ===")
        اطبع_سطر(هذا.محتوى)
        إذا (طول(هذا.وسوم) > 0)
            اطبع_سطر("الوسوم: " + هذا.وسوم)
        نهاية
    نهاية
نهاية

صنف دفتر_ملاحظات
    خاص متغير _ملاحظات = []
    
    دالة أضف(عنوان، محتوى)
        متغير م = جديد ملاحظة(عنوان، محتوى)
        هذا._ملاحظات = هذا._ملاحظات + [م]
        ارجع م
    نهاية
    
    دالة بحث(كلمة)
        متغير نتائج = []
        لكل م في هذا._ملاحظات
            إذا (يحتوي(م.عنوان، كلمة) أو يحتوي(م.محتوى، كلمة))
                نتائج = نتائج + [م]
            نهاية
        نهاية
        ارجع نتائج
    نهاية
    
    دالة عرض_الكل()
        لكل م في هذا._ملاحظات
            م.عرض()
            اطبع_سطر("---")
        نهاية
    نهاية
نهاية

# الاستخدام
متغير دفتر = جديد دفتر_ملاحظات()
دفتر.أضف("اجتماع الغد"، "مناقشة المشروع الجديد")
دفتر.أضف("قائمة مشتريات"، "حليب وخبز وفواكه")
دفتر.عرض_الكل()

مشروع 2: محلل CSV

sad
صنف محلل_CSV
    خاص متغير _أعمدة = []
    خاص متغير _صفوف = []
    
    دالة حلل(نص)
        متغير أسطر = قسم(نص، "\n")
        هذا._أعمدة = قسم(أسطر[0]، "،")
        
        لكل م في مدى(1، طول(أسطر) - 1)
            متغير قيم = قسم(أسطر[م]، "،")
            هذا._صفوف = هذا._صفوف + [قيم]
        نهاية
    نهاية
    
    دالة احصل_عمود(اسم)
        متغير فهرس = -1
        لكل م في مدى(0، طول(هذا._أعمدة) - 1)
            إذا (هذا._أعمدة[م] == اسم)
                فهرس = م
            نهاية
        نهاية
        
        إذا (فهرس == -1)
            ارمي "عمود غير موجود: " + اسم
        نهاية
        
        متغير نتيجة = []
        لكل صف في هذا._صفوف
            نتيجة = نتيجة + [صف[فهرس]]
        نهاية
        ارجع نتيجة
    نهاية
نهاية

مشروع 3: محرك قوالب (Template Engine)

sad
دالة تطبيق_قالب(قالب، بيانات)
    متغير نتيجة = قالب
    لكل مفتاح في مفاتيح(بيانات)
        نتيجة = استبدل(نتيجة، "{{" + مفتاح + "}}"، بيانات[مفتاح])
    نهاية
    ارجع نتيجة
نهاية

# الاستخدام
متغير قالب = "مرحباً {{اسم}}! عمرك {{عمر}} سنة."
متغير نتيجة = تطبيق_قالب(قالب، {
    "اسم": "أحمد"،
    "عمر": "25"
})
اطبع_سطر(نتيجة)  # مرحباً أحمد! عمرك 25 سنة.

تمرين

اختر مشروعاً وطوره بإضافة ميزات جديدة:

  • نظام الملاحظات: أضف حفظ إلى ملف
  • محلل CSV: أضف تصفية وترتيب
  • محرك القوالب: أضف دعم الحلقات

مُرخَّص بموجب رخصة MIT