العناوين


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



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



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

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


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

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

    1

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

    1

    alif -h
    نسخ

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

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

    1

    2

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

    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
    نسخ
  3. المقارنة:

    1

    2

    3

    4

    5

    6

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

    1

    2

    3

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

    1

    2

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

    1

    2

    3

    4

    5

    6

    7

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

    1

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

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

  8. الحذف:

    1

    2

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

    1

    2

    3

    4

    5

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

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

  10. النصوص:

    1

    2

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

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

  11. مصفوفة:

    1

    2

    3

    4

    5

    6

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

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

  12. مترابطة:

    1

    2

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

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

  13. فهرس:

    1

    2

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

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

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

    1

    2

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

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

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

    1

    2

    3

    4

    5

    6

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

    1

    2

    3

    4

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

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

  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

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

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

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

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

    1

    2

    3

    4

    5

    6

    7

    8

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

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

    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

    37

    38

    39

    40

    41

    42

    43

    44

    45

    صنف مخروط_علوي:
    نق_القاعدة = 0
    الارتفاع = 0
    بي = 0

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

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

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

    صنف مخروط_سفلي:
    نق_القاعدة = 0
    الارتفاع = 0
    بي = 0
    مخروط_ع = عدم

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

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

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

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

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

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

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

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

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

    1

    2

    س = صحيح("1")
    س = عشري("0.5")
    نسخ
  22. حالات خاصة:

    1

    2

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

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


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

    1

    2

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

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




: ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ :




ملاحظات:
محدد الخطأ غير مكتمل، وقد يتم تحديد مكان الخطأ بدقة أو تظهر رسالة توضح أنه يوجد خطأ وقد يتم الخروج من البرنامج دون معرفة السبب أو الخطأ.
لغة ألف5 تقوم بإدارة الذاكرة بشكل تلقائي، ولكن يفضل عدم معالجة كميات ضخمة جداً من البيانات أو الدخول في حلقات لا نهائية وذلك تفادياً لأي ضرر قد يحصل لجهازك.