المستندات
في هذا الملف سيتم شرح طريقة عمل لغة ألف5 بإختصار وباستخدام الأمثلة.
يمكن تشغيل البرنامج المكتوب بلغة ألف5 بإحدى طريقتين:
1
alif -v
نسخ
1
alif -h
نسخ
1
2
س = 9 # هذا تعليق يوضح عمل الشفرة المكتوبة
# تعليق في سطر فارغنسخ
1
2
س = 5؛ ص = 7
اطبع(س، ص)نسخ
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نسخ
1
2
3
4
5
6
يساوي: 9 == 9
لا يساوي: 9 != 9
اكبر من: 3 > 6
اصغر من: 6 < 9
اكبر من او يساوي: 6 >= 6
اصغر من او يساوي: 9 <= 3نسخ
1
2
3
و: صح و صح
او: صح او صح
ليس: ليس خطانسخ
1
2
س = 9
س, ص = 9, 7نسخ
1
2
3
4
5
6
7
س += 5
س -= 3
س *= 2
س \= 7
س ^= 3
س \*= 7
س \\= 9نسخ
1
س = 9 اذا 6 == 6 والا 7
نسخ
حيث س تساوي 9 اذا تحقق الشرط وفي حال لم يتحقق الشرط س تساوي 7.
1
2
س = 5
احذف سنسخ
1
2
3
4
5
ادخل("نص هنا: ")
اطبع("نص هنا او متغير")
اقصى(2, 9)
ادنى(3, 7)
طول(س) !! حيث س مصفوفة او مترابطة او فهرسنسخ
الدوال الضمنية هي مجموعة من الدوال المضمنة في اللغة نفسها، ومع ذلك من الممكن كتابة دالة فوقها.
1
2
س = "هذا نص عادي"
س = م"هذا نص منسق حيث يمكن تمرير عمليات فيه من خلال {7 + 9} القوسين المتعرجين"نسخ
كما نلاحظ حيث أنه يوجد نص عادي ونص منسق والذي يقبل تمرير حالات بسيطة ضمن القوسين المتعرجين
1
2
3
4
5
6
س = [5, "سلام", صح]
س.اضف(7)
س.امسح("سلام")
س.ادرج(0, 99)
س[2]
س = [9 لاجل _ في مدى(9)]نسخ
حيث س.اضف(7) يقوم بإضافة عدد 7 الى نهاية المصفوفة س.امسح("سلام") يقوم بمسح او حذف العنصر "سلام" من المصفوفة س.ادرج(0, 99) يقوم بإدراج العدد 99 في موقع المؤشر 0 أي اول عنصر س[2] الوصول لقيمة العنصر الثالث. س = [9 لاجل _ في مدى(9)] هذه الحالة تسمى المصفوفة الضمنية حيث يتم إنشاء مصفوفة عن طريق حالة تكرار خاصية التكرار خلال المصفوفة, حيث يتم التكرار عبر القيم.
1
2
س = 3, 5, 7
س = (5, 7, 9)نسخ
خاصية التكرار خلال المترابطة, حيث يتم التكرار عبر القيم.
1
2
س = {"أ": 5, "ب": 7, "ت": 9}
س.مفاتيح()نسخ
حيث س.مفاتيح() تقوم بإرجاع مفاتيح الفهرس. خاصية التكرار خلال الفهرس, حيث يتم التكرار عبر المفاتيح وليس القيم.
1
2
استورد مثال
من مثال استورد ترحيبنسخ
حيث يمكن استيراد ملفات ذات لاحقة .aliflib فقط عندما يتم استيراد مكتبة يتم تنفيذها وعند إعادة استيرادها لا يتم تنفيذها مرة اخرى
1
2
3
4
5
6
مكتبة\ المستوى-الاعلى للحزمة
|---- _تهيئة_.aliflib
|---- ملف_مكتبة.aliflib
|---- فرعية\
|---- _تهيئة_.aliflib
|---- ملف_فرعي.aliflibنسخ
1
2
3
4
استورد مكتبة.فرعية.ملف_فرعي
من مكتبة.فرعية استورد ملف_فرعي
من مكتبة.فرعية.ملف_فرعي استورد تم_الاستيراد !! حيث أن تم_الاستيراد هي عبارة عن دالة ضمن ملف_فرعي
استورد مكتبة.فرعية !! بشرط أن يتم استيراد دالة تم_الاستيراد في ملف _تهيئة_ الخاص بذلك المجلد "أي مجلد فرعية"نسخ
نفس الحالات تطبق على مجلد مكتبة وملف_مكتبة
1
2
3
4
عدد = 1
دالة زيادة(س):
عام عدد
عدد += سنسخ
حالة "عام" تستخدم لجعل المتغير عدد عام ضمن نطاق الدالة بحيث يمكن إستخدامه ضمنها - وحيث أن العدد لن يصبح عام في حال عدم استدعاء الدالة
المكتبات الضمنية وهي المكتبات الداخلية الخاصة بلغة ألف
1
2
3
4
5
6
7
8
الوقت
الوقت.الوقت() !! حيث يقوم بإحضار الوقت الحالي بالثواني
الوقت.غفوة(9) !! حيث يأخذ الممر الحالي غفوة لمدة 9 ثواني
الرياضيات
الرياضيات.جيب(30)
الرياضيات.تجيب(60)
الرياضيات.ظل(90) !! النتيجة تحسب بالرادياننسخ
1
2
3
4
5
6
7
س = 6
اذا س > 9:
اطبع("س أكبر من 9")
اواذا س == 9:
اطبع("س تساوي 9")
والا:
اطبع("س ليست اكبر من 9 ولا تساويها")نسخ
1
2
لاجل ب في مدى(10):
اطبع(ب)نسخ
في هذا المثال يتم عمل حلقة "لاجل" لتنفيذ برنامج يطبع قيمة ب .
حيث تبدأ الحلقة بالعدد 0
وتقوم بإسناده إلى المتغير ب ومن ثم تنفذ جسم الحلقة.
يتكرر الأمر حتى وصول الحلقة إلى العدد
9 - وهو العاشر لأن الحلقة بدأت من 0 - وبالتالي يتوقف التنفيذ.
1
2
لاجل ب في مدى(2,100,20):
اطبع(ب)نسخ
سيتم إسناد 20 إلى المتغير ب ومن ثم يقوم بتنفيذ الحلقة.
بعد الإنتهاء سيتم إسناد 22 إلى
المتغير ب وذلك لأن عدد التزايد المحدد هو 2.
وهكذا حتى يصل المتغير ب الى العدد 100.
1
2
لاجل ب في ("سلام", 1 , خطأ):
اطبع(ب)نسخ
حيث هنا سيقوم بطباعة القيم الموجودة ضمن المترابطة.
1
2
3
4
5
6
7
8
9
س = 1
بينما س < 10:
اذا س == 4:
س += 3
استمر
اواذا س == 9:
توقف
اطبع(س)
س += 1نسخ
سيتم التحقق من الشرط (س < 10) ، إذا كان صحيحاً سيتم تنفيذ جسم الحالة.
اذا كانت س تساوي
4 فإن استمر لن تكمل باقي الجسم وسيعود للتحقق من س في بداية الحالة بينما
واذا كانت س تساوي 9 سيقوم بالتوقف عن التكرار والخروج من الحالة بينما
1
2
3
4
5
6
7
8
9
حاول:
اطبع("محاولة")
س = 1 + "س"
خلل:
اطبع("خلل")
وإلا:
اطبع("لا يوجد خلل")
نهاية:
اطبع("نهاية حالة حاول")نسخ
حيث سيتم طباعة "محاولة" وبسبب وجود خلل سيقوم بطباعة "خلل" وبعد ذلك سيقوم بطباعة "نهاية حالة حاول" حيث هذه الحالة يتم تنفيذها مهما كان قبلها
1
2
3
4
5
6
دالة السرعة(المسافة, الزمن = 1):
ارجع المسافة \ الزمن
سرعة_سقوط_الكرة = السرعة(10, 5)
اطبع(سرعة_سقوط_الكرة)نسخ
في هذا المثال تم توضيح تعريف الدالة مع تمرير معاملان أحدهما لا يمتلك قيمة افتراضية والآخر
يمتلك قيمة افتراضية.
كما أنه تم توضيح طريقة إرجاع قيمة من الدالة.
والمثال عبارة عن
دالة لحساب السرعة في حال تحديد قيمة المسافة المقطوعة والزمن.
وفي حال عدم تحديد قيمة الزمن
فإن الدالة ستقوم بإستخدام القيمة الإفتراضية الممررة.
1
2
3
4
5
6
7
8
دالة السرعة(ش = 6):
اطبع(ش)
لاجل ص في (5, 7, 9):
اذا ص == 9:
توقف
ارجع ص
اطبع(السرعة(7))نسخ
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.تهيئة(هذا, معاملات)
1
2
3
س = صحيح("1")
س = عشري("0.5")
س = مصفوفة(فهرس.مفاتيح())نسخ
1
2
س = عشري("لانهائي")
س = عشري("-لانهائي")نسخ
حيث الاولى ترجع قيمة عدد لانهائي موجب والثانية ترجع قيمة عدد لانهائي سالب
حالة مقارنة خاصة:
1
2
س = 7 في [3, 2, 9]
س = 7 ليس في [4, 8, 3]نسخ
حيث الحالة الاولى ترجع خطأ لان 7 ليست في المصفوفة والثانية ترجع صح لان 7 ليست في المصفوفة