المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : سلسلة شروحات الأكشن سكريبت رقم 4 المصفوفات جزء ثالث والتعامل مع أكواد Table


عبود عبود
18-09-2013, 04:58 AM
http://i.imgur.com/57UrtCm.gif

http://i.imgur.com/emf2NIh.gif


نبدأ مع كيفية تفكيك المصفوفات



شرحنا سابقا كيفية بناء المصفوفات و اليوم نلقى نظرة على تفكيك المصفوفة من عناصرها وهنا سوف نقسمها إلى قسمين أو نوعين لآداء تلك المهمة :


أولا : بواسطة الكلمة المحجوزة للبرنامج والتى تعبر عن وظيفة و إسم هذة الكلمة فى اللوا هى unpack
وباللغة العربية تنطق أن باك


:abc_087: مثال للتوضيح لدينا مصفوفة مكونة من 4 عناصر مثل المصفوفة التالية :


{"abood", "Haitham", "aziz", "khaled"}



نريد تفكيك هذة المصفوفة السابقة من عناصرها وذلك بغرض عرض العناصر كل على حدى فيكون كالآتى :


unpack ({"abood", "Haitham", "aziz", "khaled"} )


هنا سوف يكون ناتج تفكيك المصفوفة كالتالى :


abood , Haitham , aziz , khaled


:abc_087: مثال تطبيقى :

f = unpack ({"abood", "Haitham", "aziz", "khaled"})
Dialog.Message("Notice", f, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);


:abc_012: هنا سوف يكون ناتج التفكيك فى المتغير الإفتراضى المسمى بـــ f هو abood فلماذا ؟


نعود بمثال بسيط للتوضيح إذا كان :

t = 1


:abc_087: فهذا واضح جدا أن الــ تى = 1


نعود بمثال آخر إذا كان :


t = "abood", "abohmam"


:abc_113: أيضا سوف يكون الناتج المخزن فى الــ t هو abood

من التوضيحات السابقة نجد أن لتساوى طرفين أحدهما يعبر عنه بالمتغير أو المتغيرات و الآخر هو القيمة أو القيم يتم وضع عدد من المتغيرات و عدد من القيم
فيكون المتغير الأول يساوى القيمة الأولى أو بمعنى المتغير الأول معبر عنة بالقيمة الأولى
ولا يخفى علينا معنى كلمة المتغير فقد وضحناها فى الشروحات السابقة
وطبعا القراءة من اليسار إلى اليمين بالنسبة للأكواد
إذن فى المثال السابق نجد أن القيمة abohmam لايوجد متغير معبر عنة
أما القيمة abood فقد كان المتغير t معبرا عنة



http://www.abc4web.net/vb/images/icons/icon12.png إذا كان عدد القيم أكبر من عدد المتغيرات فإن القيم يتم إهمالها لعدم وجود متغير يكون معبرا عنها


نعود بمثال لآخر إذا كان :


t , s = "abood" , "abohmam"


http://www.abc4web.net/vb/images/icons/icon12.png إذن الــــ t يساوى abood
http://www.abc4web.net/vb/images/icons/icon12.png و إذن الــــ s يساوى abohmam



نعود بمثال لآخر إذا كان :


t , s , v = "abood" , "abohmam"


http://www.abc4web.net/vb/images/icons/icon12.png إذن الــــ t يساوى abood
http://www.abc4web.net/vb/images/icons/icon12.png و إذن الــــ s يساوى abohmam
http://www.abc4web.net/vb/images/icons/icon12.png و إذن الــــ v يساوى nil



:abc_012: إذا كان عدد المتغيرات أكبر من عدد القيم فإن المتغير الذى لا يوجد قيمة لة يكون قيمتة nil



:abc_012: عذرا للإطالة فقد كانت للتوضيح :abc_052: فنعود مرة أخرى إلى الكود الذى كان :


f = unpack ({"abood", "Haitham", "aziz", "khaled"})
Dialog.Message("Notice", f, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);





ذكرنا سابقا أن كلمة unpack هى تعليمة برمجية محجوزة و تعمل على تفكيك المصفوفات
وعلى ضوء توضيحاتنا فى الأعلى فإن نتيجة تفكيك المصفوفة السابقة يخزن فى المتغير f فقط التفكيك الأول للمصفوفة وهو القيمة abood
وذلك لأنة المتغير الأول
لذلك لتخزين القيم الباقية يجب وضع متغيرات لها أو بمعنى إضافة متغيرات مع المتغير f


إذن على سبيل المثال كان الكود التالى :


f , b , d , y = unpack ({"abood", "Haitham", "aziz", "khaled"})
Dialog.Message("Notice", f, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Notice", b, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Notice", d, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Notice", y, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);




عند عمل معاينة للكود السابق من خلال 4 رسائل توضيحية فيكون :

http://www.abc4web.net/vb/images/icons/icon12.png f يساوى abood
http://www.abc4web.net/vb/images/icons/icon12.png b يساوى Haitham
http://www.abc4web.net/vb/images/icons/icon12.png d يساوى aziz
http://www.abc4web.net/vb/images/icons/icon12.png y يساوى khaled

وبهذا قد عرضنا نتيجة تفكيك المصفوفة السابقة بإستخدام الكلمة المحجوزة unpack


http://i.imgur.com/NfWIHC5.gif

ثانيا : بواسطة الكود المخصص للتعامل مع المصفوفات والمدمج فى أكواد البرنامج ضمن مجموعة تسمى Table


:abc_012: هذا الكود هو : Table.Concat


هذا الكود يعمل على إرجاع كل القيم الموجودة فى الجدول ويتم الفصل بين القيمة و الأخرى من خلال تحديد محدد أو فاصل من إختيارك
ويحتوى هذا الكود على 4 بارامترات Parameters وهم :

SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول
Separator وهو المحدد الذى يتم إختيارة لفصل القيم الموجودة فى الجدول
Start وهو القيمة التى يراد البدأ عندها فى الجدول بمعنى الرقم
End وهو القيمة التى يراد الإنتهاء عندها فى الجدول بمعنى الرقم فإذا كان المراد هو الإنتهاء عند آخر قيمة فى الجدول فيمكن إستخدام 1 -
أو يمكن إستخدام المتغير المحجوز و المعبر عن كل القيم المدرجة بالجدول TABLE_ALL


:abc_012: إذن عندما نأخذ مثال تطبيقى على هذا الكود كما يلى :


t = {"abood" , "Haitham" , "aziz" , "khaled"}

result = Table.Concat(t, ";", 1, -1);
Dialog.Message("Notice", result, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);


كما هو موضح بالكود أعلاة فإن لدينا جدول أو مصفوفة إسمها t
وتم إستخدام Table.Concat وذلك للحصول على العناصر أو القيم المدرجة فى الجدول أو المصفوفة السابقة وتم إستخدام متغير إفتراضى إسمة result
بغرض تخزين النتيجة بة
ونجد أننا إستخدمنا الفاصلة المنقوطة وذلك بغرض الفصل بين كل عنصر فى المصفوفة أو الجدول
أيضا نجد أننا إستخدمنا رقم 1 وذلك للبدأ من العنصر أو القيمة رقم 1 فى المصفوفة أو الجدول
أيضا نجد أنا إستخدمنا رقم 1- وذلك للتعبير عن القيمة أو الإندكس المراد التوقف عندة وهو فى هذة الحالة سوف يكون آخر قيمة موجودة فى الجدول أو المصفوفة
أو كان ممكنا أن نعوض عن ذلك بالمتغير المحجوز وهو TABLE_ALL



http://www.abc4web.net/vb/images/icons/icon12.png هنا سوف تظهر الرسالة بالعناصر كما يلى :


abood;Haitham;aziz;khaled


http://i.imgur.com/NfWIHC5.gif


مجموعة أكواد التعامل مع المصفوفات أو الجداول


إستعراض لمجموعة أكواد أو وظائف التعامل مع المصفوفات أو الجداول فكلا التعبيري صحيح كما بالصورة التالية :


http://i.imgur.com/DrJhrcH.png


أولا : Table.Concat


:abc_012: فى أعلى الشرح وضحنا كيفية التعامل بإستخدام الكود أو الوظيفة Table.Concat



http://i.imgur.com/NfWIHC5.gif


ثانيا : Table.Count



تعمل هذة الوظيفة على معرفة عدد العناصر الموجودة فى الجدول
ويحتوى هذا الكود على 1 بارامترات Parameters وهو :

SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول


:abc_012: إذن عندما نأخذ مثال تطبيقى على هذا الكود كما يلى :


t = {"abood" , "Haitham" , "aziz" , "khaled"}

result = Table.Count(t);
Dialog.Message("Notice", result, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);



كما هو موضح بالكود أعلاة فإن لدينا جدول أو مصفوفة إسمها t
وتم إستخدام Table.Count وذلك للحصول على عدد العناصر أو القيم المدرجة فى الجدول أو المصفوفة السابقة وتم إستخدام متغير إفتراضى إسمة result
بغرض تخزين النتيجة بة


:abc_087: هنا ستعرض لنا الرسالة التى تظهر عدد عناصر الجدول t والذى سوف يكون 4


http://i.imgur.com/NfWIHC5.gif


ثالثا : Table.Insert



يستخدم هذا الكود أو هذة الوظيفة لإجراء تعديلات إدخال عناصر على مصفوفة أو جدول معلوم مسبقا أى بمعنى أن يكون الجدول قد أعلن عنة مسبقا فربما نكون بصدد إنشاء جدول جديد
ونريد إدخال قيم أو عناصر فية وكما ذكرنا سابقا فى الشرح السابق عن طريقة الإعلان عن جدول يكون بفتح قوسين كبيرين و عمل إسم إفتراضى متغير للتعامل معه
و كمثال مرة أخرى على ذلك سوف ننشئ أو نعلن جدول جديد فارغ من أى عناصر كالتالى :


k = {}


ففى الحالة السابقة أعلنت عن جدول فارغ إسمة k
ولإدخال عناصر بهذا الجدول يمكن بالوظيفة التى نتكلم عنها حاليا Table.Insert
الطريقة الأخرى التى تستخدم فيها هذا الكود هو عند التعامل مع جدول موجود بالفعل ومحتوى على عناصر

ويحتوى هذا الكود أو الوظيفة على 3 بارامترات Parameters وهم :

SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول
Position وهو المكان أو المفتاح أو رقم الإندكس أو الترتيب المراد الإدخال إلية فى المصفوفة
Value وهو العنصر أو القيمة المراد إدخالها فى الجدول



:abc_012: إذن عندما نأخذ مثال تطبيقى على إدخال عنصر أو قيمة جديدة فى جدول كما يلى :


t = {"abood" , "Haitham" , "aziz" , "khaled"}
Table.Insert(t, 4, "أبو يوسف");


هنا فى الكود السابق قمنا بإدخال عنصر أو قيمة جديدة "أبو يوسف" فى الترتيب الرابع فى المصفوفة t
إذن سوف يصبح شكل المصفوفة النهائى كالتالى بعد إدخال العنصر الجديد لها :


t = {"abood" , "Haitham" , "aziz" , "أبو يوسف" , "khaled"}



http://i.imgur.com/NfWIHC5.gif


رابعا : Table.Remove


يستخدم هذا الكود أو الوظيفة فى إجراء تعديلات على مصفوفة موجودة فعليا أى مصفوفة معروفة وتحتوى على عناصر هذة التعديلات هى حذف أى عنصر منها وذلك بمعلومية ترتيبة داخل هذة المصفوفة أو الجدول

ويحتوى هذا الكود أو الوظيفة على 2 بارامترات Parameters وهم :

SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول
Position وهو المكان أو المفتاح أو رقم الإندكس أو الترتيب المراد الإدخال إلية فى المصفوفة



:abc_012: إذن عندما نأخذ مثال تطبيقى على حذف عنصر أو قيمة من جدول كما يلى :


t = {"abood" , "Haitham" , "aziz" , "أبو يوسف" , "khaled"}
s = Table.Remove(t, 1);




:abc_113: فى المثال الموضح أعلاة قمنا بحذف العنصر رقم 1 كترتيب فى المصفوفة أو الجدول t
وبالتالى فقد تم حذف abood من المصفوفة t

:abc_087: إذن سوف يصبح شكل المصفوفة النهائى كالتالى بعد حذف العنصر رقم 1 منها :


t = {"Haitham" , "aziz" , "أبو يوسف" , "khaled"}



http://i.imgur.com/NfWIHC5.gif


خامسا : Table.Sort


تستخدم هذة الوظيفة بغرض ترتيب العناصر داخل المصفوفة إما ترتيبا رقميا أو أبجديا وتصاعديا أو تنازليا

ويحتوى هذا الكود أو الوظيفة على 2 بارامترات Parameters وهم :

SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول
Compare وهى وظيفة مقارنة بين آرجين أو بارامترين و من ثم إعادة قيمة بولينية لهذة الوظيفة فى حالة تحقق الشرط أو عدم تحقق الشرط
وهذة المقارنة تتم بواسطة أو عن طريق إستخدام علامة أكبر من أو علامة أصغر من
ومثال لهذة الوظيفة مع إمكانية تغيير علامة أكبر من إلى علامة أصغر من فى عملية المقارنة وذلك طبقا للترتيب المراد تصاعديا أو تنازليا :


function sorter(v1,v2)
if (v1 > v2)then
return true;
else
return false;
end
end




:abc_012: فى حالة إستخدام علامة < سوف يكون الترتيب تنازليا


:abc_012: فى حالة إستخدام علامة > سوف يكون الترتيب تصاعديا



:abc_087: إذن عندما نأخذ مثال تطبيقى على ترتيب عناصر جدول كما يلى :


function sorter(v1,v2)
if (v1 > v2)then
return true;
else
return false;
end
end
t = {"Abood" , "Haitham" , "Aziz" , "Khaled"}
Table.Sort(t, sorter);




:abc_012: فى هذا المثال السابق سوف يكون نتيجة الترتيب أبجديا تنازليا
:abc_012: وفى هذة الحالة أى حالة ترتيب النصوص يجب مراعاة وضع أول حرف للنص كابيتل أى حرف كبير
بمعنى أنة لن يعترف فى الترتيب النصى بحروف صغيرة فى أول النص

:abc_138: طبعا وضعت مثال و توضيح فى حالة الترتيب النصى و أعتقد لا يوجد صعوبات مع الترتيب الرقمى فليس هاك داعى لوضع مثال




http://i.imgur.com/NfWIHC5.gif


:abc_012: طبعا أنا متعمد لعدم ذكر التكرار بأنواعة لعرض ما بداخل المصفوفة أو الجدول فسوف يتم التعرض للتكرار في دروس لاحقة فتابعونا :abc_023:



:abc_138: أكتفى بهذا القدر البسيط و أتمنى أن يكون مفيـــــــــــــــد :abc_138:


:abc_138:يمكن تحميــل الشرح من المرفقات فقد تم تحويلة إلى كتـاب بى دى إف:abc_138:


http://i.imgur.com/2GnNEXz.gif


http://i.imgur.com/Nz3B0Vj.gif

امل الماضي
18-09-2013, 07:23 AM
جزاك الله خيرا
ووفقك الى مايحب ويرضى
وبارك في أعمالك الطيبة
شكرا لك

abohmam
18-09-2013, 09:26 AM
:teslam:

جزاك الله خيرا أخى أمير :abc_022:

ماشاء الله دروس رائعة ومفيدة

بارك في جهودك المولى

أبو يوسف
18-09-2013, 01:43 PM
بارك الله فيك اخانا عبود على هذه الهمة والمتابعة

.

عاصم المرابطي
18-09-2013, 04:54 PM
Thaaanks A Loot !!

عبود عبود
19-09-2013, 03:33 PM
نتمنى لكم الإستفادة إن شاء الله

القنـاص المصرى
20-09-2013, 11:23 AM
ابدعت ياملك

الكبيراوى
27-09-2013, 05:49 PM
https://lh6.ggpht.com/ljsBlBRMogh_nP_CuBBoS3ux8F6J5KB8Uo4A-75cCGGKj9RyVTEMUyE_nP9-Nhwk99bw=w300

الهمام
28-09-2013, 07:02 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

فرح صالحي
28-11-2013, 12:12 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

محمد رشاد الهادي
18-03-2015, 12:38 AM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

عبود عبود
16-02-2016, 11:03 PM
تم عمل تحديث لوضع صور الشرح على سيرفر آخر حفاظا على ظهورها بالشكل المناسب

17 \ 2 \ 2016

تحياتى :abc_152:

عبدالله عمر
22-02-2016, 10:49 AM
شكرررررررررررراااااااااا

محمد سامر
11-07-2016, 06:29 PM
مشكوووووووووووووووووووووو وور

منار بربرة
19-11-2016, 07:16 AM
مشكر اخى بارك الله فيك

ح د فتحي
22-12-2017, 02:55 AM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

جمال سات
12-05-2020, 10:53 PM
جزاك الله خيرا

كمال عماري
21-05-2020, 04:39 PM
شكراااا جزيلااااااااااااااااااااا اااااااااااا:abc_051::abc_091::abc_022 ::abc_139:

فهد الشيخ
27-01-2021, 07:19 AM
شرح مبسط .. بارك الله فيك