العناوين
في هذا الملف سيتم شرح طريقة عمل لغة ألف5 بإختصار وباستخدام الأمثلة.
يمكن تشغيل البرنامج المكتوب بلغة ألف5 بإحدى طريقتين:
1
alif -v
نسخ
1
alif -h
نسخ
1
2
س = 9 # هذا تعليق يوضح عمل الشفرة المكتوبة
# تعليق في سطر فارغنسخ
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
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
دالة السرعة(المسافة, الزمن = 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
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, مخروط_ع)
ح_المخاريط= مخروط_س.مح_المخروطين()
اطبع(مخروط_ع.حجم_المخروط(), مخروط_س.حجم_المخروط(), ح_المخاريط)نسخ
في هذا المثال تم تعريف صنف من نوع مخروط وتم تمرير صنف ككائن ضمن صنف اخر. تتم تهيئة الصنف عن طريق دالة خاصة تدعى _تهيئة_
1
2
س = صحيح("1")
س = عشري("0.5")نسخ
1
2
س = عشري("لانهائي")
س = عشري("-لانهائي")نسخ
حيث الاولى ترجع قيمة عدد لانهائي موجب والثانية ترجع قيمة عدد لانهائي سالب
حالة مقارنة خاصة:
1
2
س = 7 في [3, 2, 9]
س = 7 ليس في [4, 8, 3]نسخ
حيث الحالة الاولى ترجع خطأ لان 7 ليست في المصفوفة والثانية ترجع صح لان 7 ليست في المصفوفة
: ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ :
ملاحظات: |
---|
محدد الخطأ غير مكتمل، وقد يتم تحديد مكان الخطأ بدقة أو تظهر رسالة توضح أنه يوجد خطأ وقد يتم الخروج من البرنامج دون معرفة السبب أو الخطأ. |
لغة ألف5 تقوم بإدارة الذاكرة بشكل تلقائي، ولكن يفضل عدم معالجة كميات ضخمة جداً من البيانات أو الدخول في حلقات لا نهائية وذلك تفادياً لأي ضرر قد يحصل لجهازك. |