المستندات


المزيد من المستندات


بسم الله الرحمن الرحيم


في هذا الملف سيتم شرح طريقة عمل لغة ألف5 بإختصار وباستخدام الأمثلة.


يمكن تشغيل البرنامج المكتوب بلغة ألف5 بإحدى طريقتين:

  • من خلال تمرير كلمة alif في الطرفية، حيث ستبدأ الطرفية بإستقبال الشفرة لتنفيذها بشكل فوري "غير متاحة في الوقت الحالي"
  • أو تمرير كلمة alif بالإضافة إلى اسم الملف test.alif حيث سيتم تنفيذ الشفرة المكتوبة في الملف test

اوامر الطرفية التي يمكن تنفيذها:

  1. النسخة الحالية:

    1

    alif -v
    نسخ
  2. المساعدة:

    1

    alif -h
    نسخ

العمليات التي تستطيع اللغة تنفيذها:

  1. التعليقات التوضيحية "#":

    1

    2

    س = 9 # هذا تعليق يوضح عمل الشفرة المكتوبة
    # تعليق في سطر فارغ
    نسخ
  2. حالات متعددة في سطر:

1

2

س = 5؛ ص = 7
اطبع(س، ص)
نسخ
  1. العمليات الحسابية:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    جمع: 1 + 2 = 3
    طرح: 9 - 3 = 6
    ضرب: 2 * 8 = 16
    قسمة: 9 \ 3 = 3
    باقي القسمة: 8 \\ 5 = 3
    ناتج القسمة: 8 \* 3 = 2
    قوة: 4 ^ 2 = 16
    جذر: \^ 4 = 2
    أولوية: (3 + 6) * 2 = 18
    نسخ
  2. المقارنة:

    1

    2

    3

    4

    5

    6

    يساوي: 9 == 9
    لا يساوي: 9 != 9
    اكبر من: 3 > 6
    اصغر من: 6 < 9
    اكبر من او يساوي: 6 >= 6
    اصغر من او يساوي: 9 <= 3
    نسخ
  3. العمليات المنطقية:

    1

    2

    3

    و: صح و صح
    او: صح او صح
    ليس: ليس خطا
    نسخ
  4. الإسناد:

    1

    2

    س = 9
    س, ص = 9, 7
    نسخ
  5. إسناد رجعي:

    1

    2

    3

    4

    5

    6

    7

    س += 5
    س -= 3
    س *= 2
    س \= 7
    س ^= 3
    س \*= 7
    س \\= 9
    نسخ
  6. إسناد الشرطي:

    1

    س = 9 اذا 6 == 6 والا 7
    نسخ

    حيث س تساوي 9 اذا تحقق الشرط وفي حال لم يتحقق الشرط س تساوي 7.

  7. الحذف:

    1

    2

    س = 5
    احذف س
    نسخ
  8. الدوال الضمنية:

    1

    2

    3

    4

    5

    ادخل("نص هنا: ")
    اطبع("نص هنا او متغير")
    اقصى(2, 9)
    ادنى(3, 7)
    طول(س) !! حيث س مصفوفة او مترابطة او فهرس
    نسخ

    الدوال الضمنية هي مجموعة من الدوال المضمنة في اللغة نفسها، ومع ذلك من الممكن كتابة دالة فوقها.

  9. النصوص:

    1

    2

    س = "هذا نص عادي"
    س = م"هذا نص منسق حيث يمكن تمرير عمليات فيه من خلال {7 + 9} القوسين المتعرجين"
    نسخ

    كما نلاحظ حيث أنه يوجد نص عادي ونص منسق والذي يقبل تمرير حالات بسيطة ضمن القوسين المتعرجين

  10. مصفوفة:

    1

    2

    3

    4

    5

    6

    س = [5, "سلام", صح]
    س.اضف(7)
    س.امسح("سلام")
    س.ادرج(0, 99)
    س[2]
    س = [9 لاجل _ في مدى(9)]
    نسخ

    حيث س.اضف(7) يقوم بإضافة عدد 7 الى نهاية المصفوفة س.امسح("سلام") يقوم بمسح او حذف العنصر "سلام" من المصفوفة س.ادرج(0, 99) يقوم بإدراج العدد 99 في موقع المؤشر 0 أي اول عنصر س[2] الوصول لقيمة العنصر الثالث. س = [9 لاجل _ في مدى(9)] هذه الحالة تسمى المصفوفة الضمنية حيث يتم إنشاء مصفوفة عن طريق حالة تكرار خاصية التكرار خلال المصفوفة, حيث يتم التكرار عبر القيم.

  11. مترابطة:

    1

    2

    س = 3, 5, 7
    س = (5, 7, 9)
    نسخ

    خاصية التكرار خلال المترابطة, حيث يتم التكرار عبر القيم.

  12. فهرس:

    1

    2

    س = {"أ": 5, "ب": 7, "ت": 9}
    س.مفاتيح()
    نسخ

    حيث س.مفاتيح() تقوم بإرجاع مفاتيح الفهرس. خاصية التكرار خلال الفهرس, حيث يتم التكرار عبر المفاتيح وليس القيم.

  13. الاستيراد:

    1

    2

    استورد مثال
    من مثال استورد ترحيب
    نسخ

    حيث يمكن استيراد ملفات ذات لاحقة .aliflib فقط عندما يتم استيراد مكتبة يتم تنفيذها وعند إعادة استيرادها لا يتم تنفيذها مرة اخرى

    • الاستيراد من الحزم

    1

    2

    3

    4

    5

    6

    مكتبة\ المستوى-الاعلى للحزمة
    |---- _تهيئة_.aliflib
    |---- ملف_مكتبة.aliflib
    |---- فرعية\
    |---- _تهيئة_.aliflib
    |---- ملف_فرعي.aliflib
    نسخ

    1

    2

    3

    4

    استورد مكتبة.فرعية.ملف_فرعي
    من مكتبة.فرعية استورد ملف_فرعي
    من مكتبة.فرعية.ملف_فرعي استورد تم_الاستيراد !! حيث أن تم_الاستيراد هي عبارة عن دالة ضمن ملف_فرعي
    استورد مكتبة.فرعية !! بشرط أن يتم استيراد دالة تم_الاستيراد في ملف _تهيئة_ الخاص بذلك المجلد "أي مجلد فرعية"
    نسخ

    نفس الحالات تطبق على مجلد مكتبة وملف_مكتبة

  14. النطاق:

    1

    2

    3

    4

    عدد = 1
    دالة زيادة(س):
    عام عدد
    عدد += س
    نسخ

    حالة "عام" تستخدم لجعل المتغير عدد عام ضمن نطاق الدالة بحيث يمكن إستخدامه ضمنها - وحيث أن العدد لن يصبح عام في حال عدم استدعاء الدالة

  15. المكتبات الضمنية:

    المكتبات الضمنية وهي المكتبات الداخلية الخاصة بلغة ألف

    1

    2

    3

    4

    5

    6

    7

    8

    الوقت
    الوقت.الوقت() !! حيث يقوم بإحضار الوقت الحالي بالثواني
    الوقت.غفوة(9) !! حيث يأخذ الممر الحالي غفوة لمدة 9 ثواني

    الرياضيات
    الرياضيات.جيب(30)
    الرياضيات.تجيب(60)
    الرياضيات.ظل(90) !! النتيجة تحسب بالراديان
    نسخ
  16. حالة "اذا":

    1

    2

    3

    4

    5

    6

    7

    س = 6
    اذا س > 9:
    اطبع("س أكبر من 9")
    اواذا س == 9:
    اطبع("س تساوي 9")
    والا:
    اطبع("س ليست اكبر من 9 ولا تساويها")
    نسخ
  17. حالة "لاجل":

    1

    2

    لاجل ب في مدى(10):
    اطبع(ب)
    نسخ

    في هذا المثال يتم عمل حلقة "لاجل" لتنفيذ برنامج يطبع قيمة ب .
    حيث تبدأ الحلقة بالعدد 0 وتقوم بإسناده إلى المتغير ب ومن ثم تنفذ جسم الحلقة.
    يتكرر الأمر حتى وصول الحلقة إلى العدد 9 - وهو العاشر لأن الحلقة بدأت من 0 - وبالتالي يتوقف التنفيذ.

    1

    2

    لاجل ب في مدى(2,100,20):
    اطبع(ب)
    نسخ

    سيتم إسناد 20 إلى المتغير ب ومن ثم يقوم بتنفيذ الحلقة.
    بعد الإنتهاء سيتم إسناد 22 إلى المتغير ب وذلك لأن عدد التزايد المحدد هو 2.
    وهكذا حتى يصل المتغير ب الى العدد 100.

    1

    2

    لاجل ب في ("سلام", 1 , خطأ):
    اطبع(ب)
    نسخ

    حيث هنا سيقوم بطباعة القيم الموجودة ضمن المترابطة.

  18. حالة "بينما":

    1

    2

    3

    4

    5

    6

    7

    8

    9

    س = 1
    بينما س < 10:
    اذا س == 4:
    س += 3
    استمر
    اواذا س == 9:
    توقف
    اطبع(س)
    س += 1
    نسخ

    سيتم التحقق من الشرط (س < 10) ، إذا كان صحيحاً سيتم تنفيذ جسم الحالة.
    اذا كانت س تساوي 4 فإن استمر لن تكمل باقي الجسم وسيعود للتحقق من س في بداية الحالة بينما واذا كانت س تساوي 9 سيقوم بالتوقف عن التكرار والخروج من الحالة بينما

  19. حالة حاول:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    حاول:
    اطبع("محاولة")
    س = 1 + "س"
    خلل:
    اطبع("خلل")
    وإلا:
    اطبع("لا يوجد خلل")
    نهاية:
    اطبع("نهاية حالة حاول")
    نسخ

    حيث سيتم طباعة "محاولة" وبسبب وجود خلل سيقوم بطباعة "خلل" وبعد ذلك سيقوم بطباعة "نهاية حالة حاول" حيث هذه الحالة يتم تنفيذها مهما كان قبلها

  20. تعريف دالة:

    1

    2

    3

    4

    5

    6

    دالة السرعة(المسافة, الزمن = 1):
    ارجع المسافة \ الزمن

    سرعة_سقوط_الكرة = السرعة(10, 5)

    اطبع(سرعة_سقوط_الكرة)
    نسخ

    في هذا المثال تم توضيح تعريف الدالة مع تمرير معاملان أحدهما لا يمتلك قيمة افتراضية والآخر يمتلك قيمة افتراضية.
    كما أنه تم توضيح طريقة إرجاع قيمة من الدالة.
    والمثال عبارة عن دالة لحساب السرعة في حال تحديد قيمة المسافة المقطوعة والزمن.
    وفي حال عدم تحديد قيمة الزمن فإن الدالة ستقوم بإستخدام القيمة الإفتراضية الممررة.

    1

    2

    3

    4

    5

    6

    7

    8

    دالة السرعة= 6):
    اطبع(ش)
    لاجل ص في (5, 7, 9):
    اذا ص == 9:
    توقف
    ارجع ص

    اطبع(السرعة(7))
    نسخ
  21. تعريف صنف:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    صنف مخروط_علوي:
    دالة _تهيئة_(هذا, نق = 1, ع = 1):
    هذا.نق_القاعدة = نق
    هذا.الارتفاع = ع
    هذا.بي = 3.14

    دالة مساحة_القاعدة(هذا):
    م_القاعدة = 2 * هذا.بي * هذا.نق_القاعدة * هذا.الارتفاع
    ارجع م_القاعدة

    دالة حجم_المخروط(هذا):
    ارجع هذا.مساحة_القاعدة() * هذا.الارتفاع \ 3

    صنف مخروط_سفلي:
    دالة _تهيئة_(هذا, نق = 1, ع = 1, مخروط_ع = عدم):
    هذا.نق_القاعدة = نق
    هذا.الارتفاع = ع
    هذا.بي = 3.14
    هذا.مخروط_ع = مخروط_ع

    دالة مساحة_القاعدة(هذا):
    م_القاعدة = 2 * هذا.بي * هذا.نق_القاعدة * هذا.الارتفاع
    ارجع م_القاعدة

    دالة حجم_المخروط(هذا):
    ارجع هذا.مساحة_القاعدة() * هذا.الارتفاع \ 3

    دالة مح_المخروطين(هذا):
    ارجع هذا.حجم_المخروط() + هذا.مخروط_ع.حجم_المخروط()

    مخروط_ع = مخروط_علوي(2, 2)
    مخروط_س = مخروط_سفلي(3, 4, مخروط_ع)

    ح_المخاريط= مخروط_س.مح_المخروطين()

    اطبع(مخروط_ع.حجم_المخروط(), مخروط_س.حجم_المخروط(), ح_المخاريط)
    نسخ

    في هذا المثال تم تعريف صنف من نوع مخروط وتم تمرير صنف ككائن ضمن صنف اخر. تتم تهيئة الصنف عن طريق دالة خاصة تدعى _تهيئة_

    الوراثة في الاصناف:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    صنف انسان:
    دالة _تهيئة_(هذا, عمر):
    هذا.العمر = عمر

    دالة اظهر(هذا):
    اطبع(هذا.العمر)

    صنف شخص(انسان):
    دالة _تهيئة_(هذا, عمر, طول):
    اصل()._تهيئة_(عمر)
    هذا.الطول = طول

    الشخص = شخص(40, 180)

    الشخص.اظهر()
    نسخ

    حيث تتم الوراثة عن طريق تمرير اسم الصنف الموروث ضمن الصنف الوارث, ويتم تهيئة الصنف الموروث عن طريق دالة اصل().تهيئة(معاملات) والتي تقوم بإستدعاء الدالة الاصل لتهيئتها, في حال الحاجة لاستيراد اكثر من صنف يتم ذلك عن طريق (موروث1, موروث2) وتتم تهيئتها عن طريق اسم الموروث بدل من اصل() كالتالي: موروث1.تهيئة(هذا, معاملات) موروث2.تهيئة(هذا, معاملات)

  22. تحويل النوع:

    1

    2

    3

    س = صحيح("1")
    س = عشري("0.5")
    س = مصفوفة(فهرس.مفاتيح())
    نسخ
  23. حالات خاصة:

    1

    2

    س = عشري("لانهائي")
    س = عشري("-لانهائي")
    نسخ

    حيث الاولى ترجع قيمة عدد لانهائي موجب والثانية ترجع قيمة عدد لانهائي سالب


    حالة مقارنة خاصة:

    1

    2

    س = 7 في [3, 2, 9]
    س = 7 ليس في [4, 8, 3]
    نسخ

    حيث الحالة الاولى ترجع خطأ لان 7 ليست في المصفوفة والثانية ترجع صح لان 7 ليست في المصفوفة