منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
الدرس 6- المصفوفات والتعامل معها وشرح التراكيب Structures - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90)
+--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113)
+---- قسم : دورة البرمجة باستخدام C# (http://vb4arb.com/vb/forumdisplay.php?fid=131)
+---- الموضوع : الدرس 6- المصفوفات والتعامل معها وشرح التراكيب Structures (/showthread.php?tid=6463)



الدرس 6- المصفوفات والتعامل معها وشرح التراكيب Structures - RaggiTech - 18-10-12

كاتب الموضوع : Tarek Aldwire

السلام عليكم ورحمة الله

المصفوفات:
أولا كيف يتم تعريف المصفوفات:

1- المصفوفات أحادية البعد:
يتم تعريف المصفوفات أحادية البعد على الشكل:

كود :
[color=#000000][COLOR=#0000bb]int[/color][color=#007700][] [/color][color=#0000bb]MyArr [/color][color=#007700]= new [/color][color=#0000bb]int[/color][color=#007700][[/color][color=#0000bb]50[/color][COLOR=#007700]];  
[/COLOR][color=#0000bb][/color][/COLOR]

حيث يكون في الكود هذا لدينا مصفوفة بالأسم MyArr تحوي على 50 حقل حيث يمكنك تعبئت حقولها على الشكل:

كود :
[color=#000000][COLOR=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]0[/color][color=#007700]] = [/color][color=#0000bb]5[/color][COLOR=#007700];  
[/COLOR][color=#0000bb][/color][/COLOR]

هنا أصبحت الخانة الأولى للمصفوفة = 5

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

كود :
[color=#000000][COLOR=#0000bb]int[/color][color=#007700][] [/color][color=#0000bb]MyArr [/color][color=#007700]= new [/color][color=#0000bb]int[/color][color=#007700][[/color][color=#0000bb]5[/color][COLOR=#007700]];  
[/COLOR][color=#0000bb][/color][/COLOR]

أنتبه هنا الخانة MyArr[5] خارج مجال المصفوفة وذلك لأن العد يبدأ من الصفر
والان ضع Button وفي الحدث Click الخاص به أكتب:


كود :
[color=#000000][COLOR=#0000bb]            int[/color][color=#007700][] [/color][color=#0000bb]MyArr [/color][color=#007700]= new [/color][color=#0000bb]int[/color][color=#007700][[/color][color=#0000bb]5[/color][COLOR=#007700]];
            [/COLOR][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]0[/color][color=#007700]] = [/color][color=#0000bb]1[/color][COLOR=#007700];
            [/COLOR][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]] = [/color][color=#0000bb]2[/color][COLOR=#007700];
            [/COLOR][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]2[/color][color=#007700]] = [/color][color=#0000bb]3[/color][COLOR=#007700];
            [/COLOR][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]3[/color][color=#007700]] = [/color][color=#0000bb]4[/color][COLOR=#007700];
            [/COLOR][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]4[/color][color=#007700]] = [/color][color=#0000bb]5[/color][COLOR=#007700];
            [/COLOR][color=#0000bb]MessageBox[/color][color=#007700].[/color][color=#0000bb]Show[/color][color=#007700]([/color][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]0[/color][color=#007700]].[/color][color=#0000bb]ToString[/color][color=#007700]() + [/color][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]] + [/color][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]2[/color][color=#007700]] + [/color][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]3[/color][color=#007700]] + [/color][color=#0000bb]MyArr[/color][color=#007700][[/color][color=#0000bb]4[/color][COLOR=#007700]]);  
[/COLOR][color=#0000bb][/color][/COLOR]

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

مثال: ( هنا سوف نستخدم الحلقة التكرارية for إذا كنت لا تعرفها فقد تم شرحها في الدرس 5)

ضع Button و TextBox واكتب في الحدث Click لل Button ما يلي:


كود :
[color=#000000][COLOR=#0000bb]            int[/color][color=#007700][] [/color][color=#0000bb]MyArr [/color][color=#007700]= new [/color][color=#0000bb]int[/color][color=#007700][[/color][color=#0000bb]26[/color][COLOR=#007700]];
            for ([/COLOR][color=#0000bb]int x [/color][color=#007700]= [/color][color=#0000bb]0[/color][color=#007700];[/color][color=#0000bb]x [/color][color=#007700]< [/color][color=#0000bb]26[/color][color=#007700];[/color][color=#0000bb]x[/color][COLOR=#007700]++)
            {
                [/COLOR][color=#0000bb]MyArr [/color][color=#007700][[/color][color=#0000bb]x[/color][color=#007700]] = [/color][color=#0000bb]x[/color][COLOR=#007700];
            }
            foreach ([/COLOR][color=#0000bb]int x in Arr[/color][COLOR=#007700])
            {
                [/COLOR][color=#0000bb]textBox1[/color][color=#007700].[/color][color=#0000bb]Text [/color][color=#007700]+= [/color][color=#dd0000]" " [/color][color=#007700]+ [/color][color=#0000bb]x[/color][color=#007700].[/color][color=#0000bb]ToString[/color][COLOR=#007700]();
            }  
[/COLOR][color=#0000bb][/color][/COLOR]

جرب الكود ولاحظ
سوف تكون النتيجة أن ال textBox1 أصبح بداخله كالتالي:
0 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
شرح الكود:

أولا قمنا بتعريف مصفوفة
ثانيا:
في حلقة التكرار كان المتغير x يزيد 1 في كل مرة ينفذ فيها الكود
وكانت الخانة الموافقة للمتغير x في المصفوفة MyArr تصبح تساوي x
مما سوف يشكل لنا في النهاية أن خانات MyArr سوف تكون من 0 إلى 25
وهذا ما حصل...

_____________________ المصفوفات متعددة الأبعاد _____________________________

يتم تعريف هذا النوع من المصفوفات كالتالي:


كود :
[color=#000000][COLOR=#0000bb]int[/color][color=#007700][,] [/color][color=#0000bb]MyArr [/color][color=#007700]= new [/color][color=#0000bb]int[/color][color=#007700][[/color][color=#0000bb]5[/color][color=#007700],[/color][color=#0000bb]5[/color][COLOR=#007700]];  
[/COLOR][color=#0000bb][/color][/COLOR]


فمثلا بالمصفوفة التي تم تعريفها في الأعلى ( Arr وليس matrix )
في الواقع هي تحتوي على 25 خانة

يتم القراءة من المصفوفات عن طريق الحلقة التكرارية foreach
على الشكل:


كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]foreach ([/color][color=#0000bb]int x in MyArr[/color][COLOR=#007700])
{
[/COLOR][color=#0000bb]MessageBox[/color][color=#007700].[/color][color=#0000bb]Show[/color][color=#007700]([/color][color=#0000bb]x[/color][color=#007700].[/color][color=#0000bb]ToString[/color][COLOR=#007700]());
}  
[/COLOR][color=#0000bb][/color][/COLOR]

خصائص المصفوفات:
Rank : تحدد عدد الأبعاد في المصفوفة
ToString : تحويل المصفوفة إلى متغير من نوع String كما ورد في الدروس السابقة
Reverse : تقوم بعكس العناصر التي في داخل المصفوفة
Sort : ترتيب عناصر المصفوفة
Length : تحديد طول عناصر المصفوفة


أظن أنه قد أصبح لديك معلومات جيدة عن المصفوفات والتعامل معها والان لنبدأ بالقسم الثاني من الدرس وهو :
_____________________________ التراكيب Structures ________________________

إن ال Structures تسهل كثيرا من العمل في حال كنا نود إضافة كائنات جديدة مثل تعريف نوع بإسم
(كتاب)
ملاحظة : لا تكتب ال Structures في داخل أمر ما وإنما تكتب في داخل Classes أو NameSpaces
يعني سوف نكتب ال Structures:


كود :
[COLOR=#000000][COLOR=#0000bb]namespace WindowsFormsApplication6
[/COLOR][COLOR=#007700]{
[/COLOR][COLOR=#0000bb]هنا ممكن
    [/COLOR][color=#007700]public [/color][color=#0000bb]partial [/color][color=#007700]class [/color][color=#0000bb]Form1 [/color][color=#007700]: [/color][COLOR=#0000bb]Form
    [/COLOR][COLOR=#007700]{
  [/COLOR][COLOR=#0000bb]هنا ممكن
        [/COLOR][color=#007700]public [/color][color=#0000bb]Form1[/color][COLOR=#007700]()
        {
            [/COLOR][color=#0000bb]InitializeComponent[/color][COLOR=#007700]();
            [/COLOR][COLOR=#0000bb]هنا لا يمكن
        [/COLOR][COLOR=#007700]}

        private [/COLOR][color=#0000bb]void button1_Click[/color][color=#007700]([/color][color=#0000bb]object sender[/color][color=#007700], [/color][color=#0000bb]EventArgs e[/color][COLOR=#007700])
        {
[/COLOR][COLOR=#0000bb]هنا غير ممكن
        [/COLOR][COLOR=#007700]}
[/COLOR][COLOR=#0000bb]هنا ممكن
    [/COLOR][COLOR=#007700]}
}  
[/COLOR][color=#0000bb][/color][/COLOR]

وحتى لو كتبتها بعد ما تم إستيراد المجالات ممكن ولو كانت خارج ال NameSpace الخاص بالرنامج !!!

مثال :

قم بكتابة struct كالتالي:

كود :
[COLOR=#000000][COLOR=#0000bb]    struct Book
    [/COLOR][COLOR=#007700]{
       public [/COLOR][color=#0000bb]string BookName[/color][COLOR=#007700];
       public [/COLOR][color=#0000bb]int BookPrice[/color][COLOR=#007700];
       public [/COLOR][color=#0000bb]string BookWriter[/color][COLOR=#007700];
    }  
[/COLOR][color=#0000bb][/color][/COLOR]

والان جرب في أمر جديد تعريف متغير ككتاب:

كود :
[color=#000000][COLOR=#0000bb]        [/color][color=#007700]private [/color][color=#0000bb]void mybooktest[/color][COLOR=#007700]()
        {
            [/COLOR][color=#0000bb]Book Mybook [/color][color=#007700]= new [/color][color=#0000bb]Book[/color][COLOR=#007700]();
            [/COLOR][color=#0000bb]Mybook[/color][color=#007700].[/color][color=#0000bb]BookName [/color][color=#007700]= [/color][color=#dd0000]"C# Language"[/color][COLOR=#007700];
            [/COLOR][color=#0000bb]Mybook[/color][color=#007700].[/color][color=#0000bb]BookPrice [/color][color=#007700]= [/color][color=#0000bb]200[/color][COLOR=#007700];
            [/COLOR][color=#0000bb]Mybook[/color][color=#007700].[/color][color=#0000bb]BookWriter [/color][color=#007700]= [/color][color=#dd0000]"tarek aldwire"[/color][COLOR=#007700];
        }  
[/COLOR][color=#0000bb][/color][/COLOR]

والان سوف نرى كيف يمكن إنشاء دوال داخل ال struct

سوف نأخذ المثال السابق بعد التعديل إنظر كيف سوف يصبح:


كود :
[COLOR=#000000][COLOR=#0000bb]    struct Book
    [/COLOR][COLOR=#007700]{
       public [/COLOR][color=#0000bb]string BookName[/color][COLOR=#007700];
       public [/COLOR][color=#0000bb]int BookPrice[/color][COLOR=#007700];
       public [/COLOR][color=#0000bb]string BookWriter[/color][COLOR=#007700];
       public [/COLOR][color=#0000bb]void RenameBook[/color][color=#007700]([/color][color=#0000bb]string NewName[/color][COLOR=#007700])
       {
           [/COLOR][color=#0000bb]BookName [/color][color=#007700]= [/color][color=#0000bb]NewName[/color][COLOR=#007700];
       }
    }  
[/COLOR][color=#0000bb][/color][/COLOR]

حيث هنا أصبح بإمكاننا إعادة تسمية الكتاب...

قمت بعمل مثال تجده في المرفقات...

إلى اللقاء في الدرس القادم إن شاء الله....