المصفوفات بلغة ألف


(سليمان ) #1

طلب المساعدة لمجتمع ألف لكتابة المصفوفات بلغة ألف :
https://www.aliflang.org/community/d/24--

تعتبر المصفوفات من أهم الأدوات التي يحتاجها المبرمج لفهم أعمق لمنطق البرمجة،
و يستعملها أي شخص في بداية تعلم أي لغة برمجة

في معضم لغات البرمجة تتيح مصفوفة ببعد واحد رقمي، مثلا

حرف م[5] = {"أ"، "ب"}

م[0] --> “أ”
م[1] --> “ب”

بعض لغات البرمجة تتيح مصفوفة متعددة الأبعاد رقمية كذالك، مثلا

حرف ج[5][5] = {  {"أ"، "ب"} ، {"ج"، "د"}  }

ج[0][0] --> “أ”
ج[0][1] --> “ب”
ج[1][0] --> “ج”
ج[1][1] --> “د”

مع العلم من أن أي برنامج يحاول استعمال خانة خارج حجم المصفوفة فأن البرنامج ينكسر و يتوقف، مثلا

حرف م[4]
م[6] = "أ"

أفكر في تصميم طريقة للتعامل مع المصفوفات بأسهل الطرق، مع إمكانية تعدد الأبعاد، و استعمال الحروف في الأبعاد، مثلا :

عدد رقم_البطاقة_الوطنية[حرف][حرف]
رقم_البطاقة_الوطنية ["محمد"]["الفاتح"] = 1111
رقم_البطاقة_الوطنية ["عمر"]["أبو جندل"] = 2222

حرف الأسم[عدد]
الأسم[1111] = "محمد"
الأسم[2222] = "عمر"

حرف عنوان_السكن [عدد][حرف][حرف]
حرف عنوان_السكن[222][عمر][أبو جندل] = "شارع النخيل، شقة 44"

هكذا لن نزعج المبرمج في التفكير في حجم المصفوفة، و يمكنه تحديت البعد باستعمال رقم، أو حرف.
ما رأيكم ؟

https://www.aliflang.org/community/d/24--


(مهند الرسيني) #2

إذا كنت تريد تبسيط كتابة الأكواد بشكل عام اجعل المترجم يفهم نوع البيانات ويقوم باختيارها بنفسه بدلاً من جعل المبرمج يدخل نوع البيانات، طبعا هذه تكون اختيارية فيمكن للمبرمج اختيار نوع البيانات.

المفهوم الذي أتحدث عنه هو Type inference

أفضل مثال للغة تطبق هذا المفهوم لغة Rust من وجهة نظري :slight_smile:

مثلاً لنقل أن هذا المفهوم موجود في لغة ألف، ستصبح الأكود في مشاركتك كتالي:

حجم المصفوفة هنا 2 ونوعها “حرف”
أجعل م = {“أ”، “ب”}

حجم المصفوفة هنا 2×2 من نوع “حرف”
أجعل ج = { {“أ”، “ب”} ، {“ج”، “د”} }

كذلك يمكنك مثلا تعريف مصفوفة بطول 6 تحتوي على الرقم 0 في جميع خاناتها هكذا
أجعل ج = { 0؛ 6 }
ج[0] = 2018
الان أصبحت المصفوفة تحتوي على { 2018، 0، 0، 0، 0، 0 }
ويمك تعريف مصفوفة ذات بعدين 3×3 مع وضع القيمة 5 في خانات المصفوفة بهذه الطريقة
أجعل ج = { {5؛ 3}؛ 3}
هكذا اصبح لدينا مصفوفة بهذه المبيانات
{
{ 5، 5، 5 }،
{ 5، 5، 5 }،
{ 5، 5، 5 }،
}

ملاحظة، في بعض أمثلتك كنت تستعمل “حرف” ك index للبحث عن القيم داخل المصفوفة، هل هكذا تكون المصفوفات ؟ أم أن هذه Map ؟ فبحسب معرفتي المصفوفات يمكن البحث بها باستعمال رقم عددي وليس نص…

كذلك أمر أخير أرى ان تستعمل الأقواس [ و ] لتعريف المصفوفات وقيم المصفوفات، مثلاً
ج[3] = [“أحمد”، “علي”، “إبراهيم”]

بالتوفيق


(saifcoder) #3

شكرا لك أخي Muhannad_Alusayni، لقد ثم اعتماد فكرتك
ثم التفرقة بين map و arrays

https://www.aliflang.org/community/d/39--

شكرا