المصفوفات:
المصفوفة هي مجموعة من العناصر من نفس النوع، وتكون عناصر المصفوفة مرتبة بحيث يمكننا الوصول إلى عنصر نريده بتحديد ترتيبه في المصفوفة.
فالمصفوفات عبارة عن مجموعة من العناصر المتتالية يتم حجز موقع لها في الذاكرة بشكل متتالي لها اسم مشترك ونوع بيانات مشترك.
يشار إلى كل عنصر منها باستخدام اسم المصفوفة ودليل (مؤشر) (index) الذي يمثل ترتيب ذلك العنصر في المصفوفة.
ويمكن تعريف المصفوفة بأنها: سلسة من المتغيرات تحمل نفس الاسم ويتم التمييز بين هذه المتغيرات باستخدام رقم المتغير داخلها"
فوائد المصفوفات:
1- توفير الوقت والجهد.
2- تؤدي إلى بساطة البرنامج وصغر حجمه.
والمصفوفات تنقسم لنوعين فهناك المصفوفات ذات البعد الواحد والمصفوفات ذات البعدين.
مصفوفات البعد الواحد:
المصفوفة ذات البعد الواحد هي مجموعة من العناصر مرتبة بحيث يمكن الوصول إلى أي عنصر فيها باستخدام ترتيبه بالنسبة لأول عنصر في المصفوفة وفي لغة c++ يأخذ أول عنصر الرقم صفر والشكل الآتي يوضح مصفوفة ذات بعد واحد
A=[2 3 4 5 6]
وعناصر المصفوفة مرتبة بدءاً من العنصر الأول والذي يأخذ الرقم صفر، ويكون العنصر الأول a[0] مساوياً للقيمة 2 , وبالمثل يكون a[1]=3 و a[2]=4 وهكذا...
تعريفالمصفوفة ذات البعد الواحد:
لقد سبق وأن درست في برنامج فيجول بيسك كيفية الإعلان عن مصفوفة ذات بعد واحد، حيث كان شكل جملة الإعلان عن مصفوفة ذات بعد واحد كالآتي:
Dim اسم المصفوفة (-1 عدد العناصر) as نوع البيانات
مثال:
للإعلان في برنامج الفيجول بيسك عن مصفوفة اسمها markesعدد عناصرها 10 ونوع بياناتها double
الجواب: dim markes(9) as double
أما في لغة c++ فللإعلان عن مصفوفة ذات بعد واحد يكون كالآتي:
قراءة عناصر المصفوفة ذات البعد الواحد عن طريق لوحة المفاتيح
طباعة عناصر المصفوفة ذات البعد الواحد في سطر واحد:
طباعة عناصر المصفوفة ذات البعد الواحد كل عنصر في سطر:
مثال: لإيجاد أكبر عدد في المصفوفة وموقعه:
إعطاء قيم إبتدائية للمصفوفة:
المثال الموضح بالشكل الآتي يوضح كيفية التعامل مع مصفوفة ذات بعد واحد بالاسم A
ويقوم البرنامج في المثال السابق بعدة عمليات نتناولها بالتفصيل:
السطر المشار إليه بالرقم (1) يعلن عن المصفوفة من النوع العددي الصحيح (int) وعدد العناصر 4 و الإعلان عن المصفوفة كالإعلان عن المتغيرات العادية يذكر نوع المتغيرات أولاً ثم اسم المصفوفة متبوعاً بعدد العناصر بين قوسين مربعين، ويلاحظ أنه لابد لنا من حلقة تكرارية لإدخال البيانات في المصفوفة والحلقة (for) الأولى تقوم بتعبئة المصفوفة بالبيانات التي يدخلها المستخدم واحداً تلو الآخر، أما الحلقة (for) الثانية فتقوم بعرض عناصر المصفوفة التي تم إدخالها عنصراً عنصراً.
المصفوفة ذات ابعدين:
المصفوفة ذات البعدين تحتوي على عناصر من نفس النوع ولكنها مرتبة في صفوف وأعمدة وبذلك تختلف طريقة الوصول للعناصر إذ يلزم لتحديد العنصر استخدام رقم الصف ورقم العمود.
وسنتناول فيما يلي كيفية التعامل مع المصفوفات من خلال لغة c++ والإعلان عنها وتخصيص قيم للعناصر وطباعة العناصر وغيرها من أساليب معالجة المصفوفات.
يتم التعامل مع المصفوفة ثنائية البعد برمجيا على أنها جدول ثنائي البعد مكون من صفوف وأعمدة حيث تمثل الخلايا الناتجة من تقاطع الصفوف بالأعمدة عناصر هذة المصفوفة.
لتمثيل مصفوفة برمجياً ل3 طلاب في 4 مواد مختلفة، فالجدول الذي بالأسفل يوضح مصفوفة ممثلة برمجياً تتكون من 3 صفوف و4 أعمدة:
ملحوظة: يبدأ ترقيم الصفوف والأعمدة إبتداء من صفر.
تعريف المصفوفة ذات البعدين:
إعطاء قيمة إبتدائية لعناصر المصفوفة ذات البعدين:
قراءة عناصر المصفوفة ذات البعدين عن طريق لوحة المفاتيح:
طباعة عناصر المصفوفة ذات البعدين صف صف:
العبارة الشرطية الكاملة: (if…..else statement)
إذا المركبة compound if
من الممكن أن تستخدم (if) بشكل متداخل مع (if OR else) أخرى، وبهذه الحالة تسمى مركبة (أى ممكن أن يكون بعد الشرط الذى بعد (if) عبارة (if) اخرى وممكن أيضا بعد عبارة (( else وممكن أن تكون أكثر من عبارة (if) واحدة. فمثلا تريد أن تفحص نوعية رمز معين ووفقا لذلك تقرر ماهو الإجراء الواجب إتباعه وكما يأتى:
If (expression 1)
{ If (expression 2)
Statement1 ;
Else
If (expression )
Statement2;
Else
Statement3 ;
}
}
Else
Statement4;
مثال:
If (char kind = dig it)
Read name ;
Else
If (char kind = letter)
Read name ;
Else
Send error mess a g e ;
لنتأمل هذا المثال ففي البداية يتم فحص الشرط لمعرفة نوع الرمز للمتغير (char kind) هل هو رقم (digit) أم لا، وكما تعلمت دائما أن الإجابة أما نعم (صح) أو لا (خطأ) ولا يوجد احتمال آخر، فإذا كان صح معناه أن الرمز من نوع (digit)، عليه تنفذ العبارة التى بعد (if) مباشرة أى أقرأ رقم (هذا الاحتمال الأول )، أما الاحتمال الثانى فتكون إجابة الشرط خطأ أى أن نوع الرمز هى ليست أرقاما عليه فستهمل العبارة التى بعد (if) وتنفذ العبارة التى بعد (else)، عندما يحين الدور لتنفيذ العبارة التى بعد (else) لاحظ أن هذه العبارة هى أيضا عبارة (if) هذا يعنى أنه لازال هناك احتمالات أخرى يجب أن تفحص فممكن أن يكون الرمز هو (letter) أو شئ آخر وتطبق نفس القاعدة فإذا كانت إجابة الشرط صح تنفذ العبارة التى بعد (if) (الثانية )أما إذا كانت الإجابة خطأ فتنفذ العبارة التى بعد (else) (الثانية) والتى هى إصدار رسالة خطأ (أى إعلام المستخدم أن هذا الرمز هو ليس (digit OR letter).
عبارات (if) هذه تسمى أيضا عبارات (if) المتداخلة (nested if statements)
تذكر أنه في لغة فيجول بيسك إذا كان المطلوب تنفيذ مجموعة من الأوامر في حالة تحقق الشرط ومجموعة آخرى في حالة عدم تحققه فإن التركيب يأخذ الصورة العامة التالية: