Professional Documents
Culture Documents
المحاضرة الثانية المصفوفات
المحاضرة الثانية المصفوفات
البعد الواحد.
المصفوفة ذات ُ
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
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
الذاكرة عنوان عنصر في التعرف على
المعادلة العامة التي يتحدد بواسطتها عنوان اي عنصر في الذاكرة بمصفوفة احادية هي- :
حيث- :
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