منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : الدرس الحادي عشر ( 11 ) - - المصفوفات (نظرة مفصلة) الجزء الأول (1)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كاتب الموضوع : lo2i


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

(( وماأوتيتم من العلم إلا قليلاً ))

----------------------------------------------------------------------------------------------------------------------------

الدرس الحادي عشر ج(1) في دورة السي بلس بلس

-------------------------------------------------------------------------------------------------------------------------------



سنتعلم في هذا الدرس ان شاء الله :-

  • التعرف على فائدة المصفوفات .
  • التعرف على أنواع المصفوفات .
  • كيفية تعريف المصفوفة وإدخال القيم بداخل حقولها.
  • بعض المسائل لحلها بالمصفوفات .
-------------------------------------

أولاً : التعرف على فائدة المصفوفات .


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


فستكون صعبة جدأً عليك ان تدخل قيمة درجة كل طالب على حدا


مثل


كود :
[color=#000000][COLOR=#0000bb]int student_1 [/color][color=#007700]= [/color][color=#0000bb]80[/color][COLOR=#007700];
     [/COLOR][color=#0000bb]int student_2 [/color][color=#007700]= [/color][color=#0000bb]90[/color][COLOR=#007700];
     [/COLOR][color=#0000bb]int student_3 [/color][color=#007700]= [/color][color=#0000bb]76[/color][COLOR=#007700];
     [/COLOR][color=#0000bb]int student_4 [/color][color=#007700]= [/color][color=#0000bb]55[/color][COLOR=#007700];
     [/COLOR][color=#0000bb]int student_5 [/color][color=#007700]= [/color][color=#0000bb]90[/color][COLOR=#007700];
     [/COLOR][color=#0000bb]int student_6 [/color][color=#007700]= [/color][color=#0000bb]76[/color][COLOR=#007700];
     [/COLOR][color=#0000bb]int student_7 [/color][color=#007700]= [/color][color=#0000bb]55[/color][COLOR=#007700];
     .
     .
     .
     [/COLOR][color=#0000bb]int student_30[/color][color=#007700]=[/color][color=#0000bb]77[/color][COLOR=#007700];  
[/COLOR][color=#0000bb][/color][/COLOR]

فاختصاراً لهذه العملية الطويلة والقابلة للاخطاء الكثيرة من قبل المستخدم اثناء كتابة الكود ,,

فلهذا ظهر مبدأ المصفوفات

فاختصاراً للكود الطويل الذي كتبناه هو الكود التالي

كود :
[color=#000000][COLOR=#0000bb] int students[/color][color=#007700][[/color][color=#0000bb]30[/color][COLOR=#007700]];  
[/COLOR][color=#0000bb][/color][/COLOR]

في الكود السابق قمنا بتعريف مصفوفة مكونة من 30 متغير باسم students وهو من نوع رقم صحيح int

وهو اختصاراً للكود الطويل اعلاه .

--------------------------

ثانياً : التعرف على أنواع المصفوفات .


على حد علمي يوجد نوعان من المصفوفات

[SIZE=4]
[/SIZE]
  1. [SIZE=4]المصفوفات ذات البعد الواحد (الاستاتيكية)(Static)
  2. المصفوفات ذات الأبعاد الكثيرة (الديناميكية)(Dynamic)
------
[/SIZE]

[SIZE=4]بداية المصفوفات الاستاتيكية ..
[/SIZE]

هي مصفوفات تحدد طول المصفوفة على بعد واحد في الذاكرة



كما يظهر في الصورة السابقة هذه تمثل مصفوفة استاتيكية تم تعريفها وهذه هي صورتها في الذاكرة بعد تعريفها في البرنامج.


الكود التالي هو المسؤول عن الشكل الذي في الاعلى
كود :
[color=#000000][COLOR=#0000bb] int billy [/color][color=#007700][[/color][color=#0000bb]5[/color][COLOR=#007700]];  
[/COLOR][color=#0000bb][/color][/COLOR]


نأتي الان لنضع قيمة في كل غرقة من غرف المصفوفة


يوجد أكثر من طريقة لادخال قيمة لكل غرفة في المصفوفة ..


  • [SIZE=4]الأولى :
    كود :
    [color=#000000][COLOR=#0000bb] int billy [/color][color=#007700][[/color][color=#0000bb]5[/color][color=#007700]] = { [/color][color=#0000bb]16[/color][color=#007700], [/color][color=#0000bb]2[/color][color=#007700], [/color][color=#0000bb]77[/color][color=#007700], [/color][color=#0000bb]40[/color][color=#007700], [/color][color=#0000bb]12071 [/color][COLOR=#007700]};  
    [/COLOR][color=#0000bb][/color][/COLOR]


  • الثانية وهي الطريقة المتعارف عليها في كثير من لغات البرمجة

كود :
[color=#000000][COLOR=#0000bb]billy[/color][color=#007700][[/color][color=#0000bb]0[/color][color=#007700]]=[/color][color=#0000bb]16[/color][COLOR=#007700];
[/COLOR][color=#0000bb]billy[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]]=[/color][color=#0000bb]2[/color][COLOR=#007700];
[/COLOR][color=#0000bb]billy[/color][color=#007700][[/color][color=#0000bb]2[/color][color=#007700]]=[/color][color=#0000bb]77[/color][COLOR=#007700];
[/COLOR][color=#0000bb]billy[/color][color=#007700][[/color][color=#0000bb]3[/color][color=#007700]]=[/color][color=#0000bb]40[/color][COLOR=#007700];
[/COLOR][color=#0000bb]billy[/color][color=#007700][[/color][color=#0000bb]4[/color][color=#007700]]=[/color][color=#0000bb]12071[/color][COLOR=#007700];  
[/COLOR][color=#0000bb][/color][/COLOR]

وفي كلتا الحالتيين هذه هي صورة المصفوفة في الذاكرة .
[/SIZE]

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

وسوف تمثل المصفوفة التالية في الذاكرة بالشكل التالي ..








ولنرجع قليلاً إلى الكود الذي قمنا بكتابته وهو



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

عندما تريد معرفة كم غرفة سوف تُبنى في الذاكرة

3 × 5 = 15 غرفة

-----------*----------

السؤال هنا كيف نصل إلى غرفة محددة في المصفوفات الديناميكية


فمثلاً اذا اردنا أن نضع قيمة 10 في الغرفة [2][2]


بكل سهولة

كود :
[color=#000000][COLOR=#0000bb] jimmy[/color][color=#007700][[/color][color=#0000bb]2[/color][color=#007700]][[/color][color=#0000bb]2[/color][color=#007700]]=[/color][color=#0000bb]10[/color][COLOR=#007700];  
[/COLOR][color=#0000bb][/color][/COLOR]

مثال آخر اذا اردنا أن نصل للغرفة

كود :
[color=#000000][COLOR=#0000bb] jimmy[/color][color=#007700][[/color][color=#0000bb]1[/color][color=#007700]][[/color][color=#0000bb]3[/color][COLOR=#007700]]  
[/COLOR][color=#0000bb][/color][/COLOR]

وهذه الصورة توضح إلى الطريقة









===========

يتبع