الموضوع السابق   الموضوع التالي 

ما هو رقم الصف و العمود؟

Procedure: GetRowAndCol

الغرض
تحديد رقم الصف و رقم العمود لعنصر في مصفوفة ثنائية الأبعاد بمعلومية ترتيبه فيها.


الصيغة

procedure GetRowAndCol(ItemOrder, RowCount, ColCount: Integer; var Row, Col: Integer; Row1: Integer = 1; Col1: Integer = 1);


الوسائط (Parameters)

ItemOrder ترتيب العنصر في المصفوفة (باعتبار أن العنصر رقم 1 هو العنصر الواقع في الصف الأول و العمود الأول).
RowCount عدد الصفوف في المصفوفة (البعد الأول).
ColCount عدد الأعمدة في المصفوفة (البعد الثاني).
Row بارامتر متغير (var) حيث سيتم تخزين رقم الصف.
Col بارامتر متغير (var) حيث سيتم تخزين رقم العمود.
Row1 رقم الصف الأول (بداية البعد الأول). الافتراضي 1.
Col1 رقم العمود الأول (بداية البعد الثاني). الافتراضي 1.

الشرح
في بعض البرامج - كالألعاب مثلاً - قد تحتاج أحياناً إلى معالجة عناصر مصفوفة ثنائية الأبعاد و كأنها مرقمة ترقيماً تسلسلياً بدايةً من العنصر الواقع في الصف الأول و العمود الأول، و انتهاءً بالعنصر الواقع في الصف الأخير و العمود الأخير (إذا اعتبرنا أن البعد الأول يمثل الصفوف و البعد الثاني يمثل الأعمدة)، كما في هذين المثالين:

 12345
1
12345
678910
1112131415
1617181920
2
3
4

 -2-1012
5
12345
678910
1112131415
1617181920
6
7
8

فإذا كنا نعرف الرقم التسلسلي لعنصر ما (مثلاً العنصر المظلل الذي يحمل الرقم التسلسلي 14) و نريد معرفة رقم الصف و رقم العمود اللذين يقع فيهما هذا العنصر فإن استدعاء الإجراء GetRowAndCol للنموذج الأول يكون كالتالي:

var
  Row, Col: Integer;
.
.
.
GetRowAndCol(14, 4, 5, Row, Col);

لاحظ أننا أهملنا البارامترين الأخيرين (Row1 و Col1) و في هذه الحالة سيعتبر الإجراء أن المصفوفة تبدأ بالعنصر (1, 1) و هو ما عليه المصفوفة الأولى.

أما الاستدعاء للمصفوفة الثانية فيكون بالشكل التالي:

GetRowAndCol(14, 4, 5, Row, Col, 5, -2);

حيث نحتاج إلى تحديد رقم الصف الأول (بداية البعد الأول) و رقم العمود الأول (بداية البعد الثاني).

في كل الأحوال يعتبر الإجراء أن الترقيم يبدأ دائماً بالرقم 1.


 أعلى الصفحة
 الموضوع السابق   الموضوع التالي