Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 23

Array

DATA STRUCTURES (D.S)


‫المصفوفات‬
‫‪One Dimensional Array‬‬
‫‪ ‬هـي عبارة عـن طريقـة لتخزيـن الـبيانات مـن نوع واحـد‪ ،‬ذات حجم‬
‫محدد يتـم تحديده مـن بدايـة تكويـن الـمصفوفة‪ .‬العناصرـ تبعدـ عن‬
‫بعضها بمسافات متساوية‪.‬‬
‫‪ ‬هـي مجموعـة مـن المواقـع فـي الذاكرة التـي تخزن بشكـل متسلسل‬
‫تحت أسم واحد‪.‬‬
‫‪ ‬المصفوفة من هياكل البيانات الثابتة من حيث الحجم‪.‬‬
‫أنواع المصفوفات‪:‬‬ ‫‪‬‬

‫البعد الواحد‪.‬‬
‫المصفوفة ذات ُ‬ ‫‪‬‬

‫مصفوفة ثنائية البعد‬ ‫‪‬‬

‫‪2‬‬
Array
User Level Implementation
Level
Int MyArr[10] //many thing happen here;
- Reserving a contiguous space in memory.
so that:
• memey size=element size * #elements
• giving the starting address the name
MyArr.
MyArr[3]=27 ; //many thing happen here;
- calculates the location address:
• Loc address =MyArr+3*sizeof(int)
• stores 27 in that location

3
‫‪Information hiding‬‬
‫‪(Encapsulation):‬‬
‫‪ ‬كتابة البرامج واستخدام الوظائف والدوال‪ ،‬يمكن للمبرمج استخدام هياكل‬
‫البيانات على مستوي (‪ )User Level‬دون االهتمام بالتفاصيل على‬
‫مستوي (‪.)Implementation Level‬‬

‫‪ ‬لن يكون بالضرورة التغيير في البرنامج الخاص بك أي علي مستوى‬


‫المستخدم (‪ ، )User Level‬حتى لو تم تغيير الهيكل علي مستوي التنفيذ‬
‫(‪.)Implementation Level‬‬
‫‪ ‬برنامجك اواضح من الناحية المنطقية‪.‬‬

‫‪4‬‬
‫هياكل البيانات (المصفوفات)‬

‫تعد المصفوفات من الهياكل البيانية الخطية البسيطة التركيب واالستخدام وهي تستخدم‬
‫من قبل المبرمج ببساطة دون الحاجة الى معرفة تقنية خزنها بالذاكرة وذلك باستخدام‬
‫المعادالت الرياضية ‪ .‬اذن‪ - :‬المصفوفة هي عبارة عن مجموعة من المواقع التخزينية في‬
‫الذاكرة او هي مجموعة من االزواج (القيم و الموقع) والعمليات التي تحصل عليها هي‪:‬‬
‫‪.1Create empty array‬‬
‫‪2. Store a partial mapping from index to value‬‬
‫‪3. Retrieve use that mapping‬‬

‫‪5‬‬
‫فوائدها‪- :‬‬
‫‪. 1‬سهلة االستخدام‬
‫‪. 2‬سهلة التنفيذ‬
‫‪. 3‬االحتفاظ باكثر من قيمة للمتغير‬
‫‪. 4‬تسهيل بعض المعالجات المعقدة‬
‫‪ -5‬الوصول فيها عشوائي‬

‫مساوئها‪- :‬‬
‫‪. 1‬اليمكن حشر او حذف اي موقع‬
‫‪. 2‬اليمكن ان نخزن فيها سوى نوعية واحدة‬
‫‪. 3‬الخزن فيها غير ديناميكي‬

‫‪6‬‬
‫الذاكرة‬ ‫مكانها في‬ ‫المصفوفة وحجز‬ ‫تكوين‬
‫المصفوفة يتم حجزها في الذاكرة بطريقة متسلسلة‪ ،‬فمثال إن قمت بتحديد حجم‬
‫المصفوفة‪    ‬بـ ‪ 6‬بايت سوف يقوم بحجز ‪ 6‬بايت في الذاكرة متسلسلة‪ ،‬ولكن إن كنت‬
‫تريد حجز مصفوفة بحجم ‪ 10‬بايت وذاكرتك ال يوجد فيها مساحة بحجم ‪ 10‬متسلسلة‪،‬‬
‫فإذا لن تستطيع تكوين هذه المصفوفة‪.‬‬
‫وهذه الصورة توضح هذا المفهوم‪.‬‬

‫‪7‬‬
8
‫المصفوفة‬ ‫البحث عن عنصر معين داخل‬

‫شرح الخوارزمية‪:‬‬
‫سوف نقوم بإرسال المصفوفة‪ ،‬حجمها‪ ،‬أول موقع غير مشغول في المصفوفة بمعنى‬
‫ل و أن ك أنشأ ت مص فوفة بحج م ‪ 10‬ولكن ك قم ت بتعبئ ة ‪ 6‬فق ط ‪ count‬هن ا سيكون ‪،7‬‬
‫وأخيراً العنصر الذي سوف نقوم بالبحث عنه‪.‬‬
‫أم ا المخرجات فس تكون عبارة ع ن رق م ص حيح‪ ،‬ف ي حال ة وجود العنص ر سوف تقوم‬
‫الميثود بإرجاع رقم ‪ index‬الخاص في العنصر‪ ،‬وأما إذا لم تجد العنصر فسوف يرجع ‪. 1-‬‬
‫أيضاً هناك ما يجب االنتباه له عند كتابة الخوارزميات وهي الحاالت الحرجة أو الخاصة‪،‬‬
‫في حالة المصفوفات لدينا حالتين فقط‪:‬‬
‫األولى‪ :‬أن تكون المصفوفة فارغة وهذا إذا كان ‪ count‬يساوي صفر‪.‬‬
‫الثانية‪ :‬أن تكون المصفوفة ممتلئة وهذا إذا كان ‪ count‬يساوي الحجم‪.‬‬
‫المصفوفات‬ ‫باستخدام قيمته لكال من‬ ‫حذف عنصر‬
‫المرتبة والغير مرتبة‬
‫باستخدام قيمته لكال من‬ ‫حذف عنصر‬
‫المرتبة والغير مرتبة‬ ‫المصفوفات‬
‫شرح الخوارزمية‪:‬‬

‫نبدأ من البداية‪ ،‬رقم ‪1‬و ‪ 2‬نختبر إذا كانت المصفوفة فارغة فماذا سنحذف أساسا‪ ،‬رقم ‪ 4‬نقوم بمناداة‬
‫ميثود البحث السابقة والتي كانت ترجع لنا قيمة عدد صحيح‪ ،‬ومن ثم نقوم باختبار هذا الرقم‪ ،‬رقم ‪ 7‬إلى ‪9‬‬
‫هذه عملية شرحها في الصورة التالية وهي عندما تجد العنصر الذي تريد حذفه‪ ،‬رقم ‪ 10‬نغير مكان‬
‫الكاونت والذي يعتبر أول مكان فارغ في المصفوفة‪ ،‬وأخيراً نقوم بإرجاع القيمة الستخدامها الحقا‪.‬‬
‫مرتبة‬ ‫مصفوفة غير‬ ‫أضافة عنصر الى‬

‫شرح الخوارزمية‪:‬‬
‫‪ ‬عندما نقوم بإضافة عنصر إلى المصفوفة يجب أن نتأكد أوال ً أنه يوجد مكان فارغ لهذا‬
‫العنص ر‪ ،‬ألن ه كم ا ذكرن ا س ابقا أ ن المص فوفة حجمه ا ال يتغي ر أثناء التشغي ل ب ل يجب‬
‫تعيين الحج م المتوقع م ن البداية‪ ،‬فهذا بالنس بة للس طر األول‪ ،‬وعند توفر مكان فارغ‬
‫نقوم بإضافة العنصر عند الكاونت والذي ذكرنا أنه أول مكان فارغ في المصفوفة‪ ،‬وهذه‬
‫الصورة توضح المفهوم‪:‬‬
‫مرتبة‬ ‫مصفوفة‬ ‫أضافة عنصر الى‬
‫شرح الخوارزمية‪:‬‬
‫رقم ‪ 1‬و ‪ 2‬نفس السابق للتأكد من وجود مكان فارغ‪ ،‬رقم ‪ 4‬نقوم بعمل لوب يمشي على جميع عناصر المصفوفة‬
‫بشكل مرتب‪ ،‬وأثناء ذلك يقوم بمقارنة العنصر الذي يريد إضافته بجميع العناصر إذا وجد عنصر يحقق الشرط –‬
‫أصغر من أو أكبر – عندها يقوم بعمل لوب آخر يبدأ من عند الكاونت وهو أول مكان فارغ في المصفوفة ويبدأ‬
‫بإزاحة العناصر – أي من رقم إندكس أصغر إلى أكبر – إلى أن يصل للمكان الذي يضيف فيه يعمل بريك ويضيف‬
‫العنصر‪،‬وتسمى هذه العملية بالشفت آوت‪ ،‬والصورة التالية ربما توضح المفهوم أكثر‪:‬‬

‫‪14‬‬
‫الذاكرة‬ ‫عنوان عنصر في‬ ‫التعرف على‬

‫المعادلة العامة التي يتحدد بواسطتها عنوان اي عنصر في الذاكرة بمصفوفة احادية هي‪- :‬‬

‫]‪Loc (Name [I]) = Loc (Name [1]) + [I-1‬‬

‫حيث‪- :‬‬

‫‪ Name‬هو اسم المصفوفة‬

‫([ [‪ Name (Loc[I‬هو موقع العنصر في المصفوفة‬

‫( [‪[1Name (Loc‬هو موقع اول عنصر مصفوفة في الذاكرة‬

‫‪15‬‬
‫صـ فـيـ‬
‫عـر‬
‫ن‬ ‫عـ‬
‫ن‬
‫اـوـن‬ ‫ىـ‬
‫عـ‬
‫فـ لـ‬ ‫تلرـعاـ‬ ‫يةـفيـكـ‬ ‫ىـ‬
‫عـ‬
‫لـ‬ ‫لـ‬
‫اـثم‬
‫مثال‬ ‫رةاـكذلـاـ‬

‫‪16‬‬
17
‫‪Two Dimensional Arrays‬‬
‫‪ ‬الهيكل المنطقي‬

‫الهيكـل التخزينـي (الذاكرة)‪ -:‬ان عمليـة تحويـل الـبيانات مـن الهيكـل المنطقـي الـى الهيكـل التخزيني‬
‫في الذاكرة تتم يطريقتين‪- :‬‬
‫‪.1 Row Wise‬‬
‫‪2. Column Wise‬‬

‫‪18‬‬
‫‪-:Row Wise‬‬
‫حيث انها طريقة تخزينية يتم فيها تخزين بيانات الصف االول في الذاكرة ويعدها بيانات الصف الثاني‬
‫والثالث وهكذا‪.‬‬

‫اما المعادلة التي نحتاجها لترتيب عناصر المصفوفة في الذاكرة فهي ‪- :‬‬

‫‪19‬‬
Ex:- Row Wise

20
‫‪-:Column Wise‬‬
‫حيث انها طريقة تخزينية يتم فيها تخزين بيانات العمود االول في الذاكرة ويعدها بيانات العمود الثاني‬
‫والثالث وهكذا‪.‬‬

‫اما المعادلة التي نحتاجها لترتيب عناصر المصفوفة في الذاكرة فهي ‪- :‬‬

‫‪21‬‬
-:Column Wise

22
‫‪ -:‬مالحظات‪:‬‬
‫* في حالة عدم ذكر قيمة موقع العنصر االبتدائي فاننا نعتبره واحد‬
‫* مترجم او مفسر اللغة عندما يجد تصريحا ً لمصفوفة ثنائية فانه يقوم‬
‫بما ياتي‪- :‬‬
‫‪. 1‬تحضير منطقة خزنية بسعة وتبدا بعنوان مطلق في الذاكرة يقابل‬
‫االسم المنطقي المصرح في البرنامج‪.‬‬
‫وضحناه<<<اعاله‬
‫ا‬ ‫الرياضي<<< الت<<ي‬
‫ة‬ ‫اللغ<<<المعادالت‬
‫مترج<<< ة‬
‫م‬ ‫‪. 2‬يستخدم‬
‫لتحديد عنوان اي قيمة في المصفوفة‬

‫‪23‬‬

You might also like