المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الباب الثانى ( البنائيات المتجردة )


عثمان صدى
09-17-2014, 02:08 PM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله تعالى وبركاته

البنائيات المتجردة :

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

المكدسات Stacks :
هى بنائية متجردة يتم فيها الحذف والإضافة من إتجاه واحد لأنها تعمل بنظام " الليفو"
lifo) Last in put first out put )
وتعنى أن آخر من يدخل الصف هو أول من يخرج منه وذلك لتكدس الأشياء بعضها فوق بعض .
مثال لها المخازن.
الصفوف Queues :
هى بنائية متجردة يتم الحذف والإضافة فيها من إتجاهين متعاكسين لأنها تعمل بنظام " الفيفو "
fifo) first in put first out put )
وتعنى أن أول من يدخل الصف هو أول من يخرج منه وذلك لعدم تكدس الأشياء .
مثال لها الصفوف عموماً

القوائم المتصلة : linked list
توصف بأنها بنائية متجردة من أكثر البنائيات المتجردة مرونة .
تعريف : هى مجموعة سجلات لكل سجل تكوينه الخاص .

الصورة العامة لبنائية القوائم المتصلة :
أن يكون هنالك حقل به عنوان يشير إلى موقع السجل التالى بالذاكرة وحقل واحد أو أكثر به البيانات.
يعرف السجل فى القوائم المتصلة بالعقدة (node) . ويعرف حقل موقع السجل التالى بالمؤشر (pointer)
وهنالك عقدتان أساسيتان فى القوائم المتصلة :
الأولى رأس القائمة ( لا توجد عقدة تشير إلى عنوانها ) .
الأخيرة ذيل القائمة ( لا تشير لعقدة تالية لها ).
(راجع الرسم فى الكتاب )

،،،،، يتبع

عثمان صدى
09-17-2014, 02:08 PM
الشهادة مارس 2003م :موضحاً بالرسم عرف العقدة والسجل ورأس القائمة وذيل القائمة فى القوائم المتصلة .
* من الرسم يتضح أن ذيل القائمة يشير لعقدة تالية تعنى النهاية .
علِّل : ذيل القائمة يشير لعقدة تالية وهو الأخير ؟
لأنه من الضرورى أن يكون هنالك عنوان فى أى عقدة لذلك ذيل القائمة يشير لعقدة وهمية تعنى النهاية .
* عموماً تناسب القوائم المتصلة الملفات متغيرة السجلات .

عثمان صدى
09-17-2014, 02:13 PM
القوائم المتصلة بصورة أدق ( قواعد البيانات العلائقية ) Data Base Relationship
هى بنية بيانات ذات تركيب خاص تستخدم فى قواعد البيانات .
تعريف :
هى ربط منطقى وعملى بين البنائيات المتجردة وقواعد البيانات .
ويمكن إعتبار قواعد البيانات العلائقية بنائية متجردة .
وصف :
يتم تصميم قواعد البيانات من عدة جداول(مجموعة كبيرة)بواسطة لغات قواعد البيانات مثـــل إس كيو إل (SQL)
آكسس(Access)أوراكل(Oracle)
فوكس برو(FoxPro)فيجوال بيسك(Visual Basic)
وغيرها من اللغات
فمثلاً فى لغة آكسس يتم تعريف حقل من هذه الجداول نوع بياناته رقمية
وربطه مع الجداول والسجلات الأخرى بالعلاقات(Relationship)
وتسمى هذه القاعدة بقاعدة بيانات علائقية لأن لها علاقة ببعضها البعض
ومثال لهذه القواعد والبرمجيات قاعدة بيانات الطلاب (رقم الطالب،عنوانه، المواد)
قاعدة بيانات الشرطة(رقم وطنى،بطاقات،جنسيات،جوازات)
وقاعدة بيانات الطيران(حجز،سفر ،إستعلام)
وقاعدة بيانات الإتصالات (سودانى،زين،إم تى إن)
وغيرها من قواعد البيانات كالبنوك
فلا يمكن التعامل مع هذه البيانات الضخمة بواسطة المكدسات .
مثال : حسابات البنوك :
إذا كان لدينا عميل فى بنك يسمى الخرطوم له فرع يسمى القضارف له حساب بالرقم 222
وإسم العميل هو عثمان عوض وعنوانه ص ب 123 وتلفونه هو 4444 .

وحدثت حركة فى حساب البنك (أى أودع عثمان مبلغ 15 ألف فإن ذلك يكون كالآتى )
(عميل) (222) (عثمان عوض) (15) (القضارف) (6/6/2006) (4444 ) ( ص ب 123) .

لمعرفة تفاصيل أكثر حول هذا الموضوع راجع الكتاب صفحة (75) .


خوارزميات الإضافة والحذف :
وجدت من نظام الحذف والإضافة فى المكدسات حيث تم إنشاء خوارزميات لها عرفت بخوارزميات بالإضافة والحذف

خوارزمية الإضافة :
هى خوارزمية تختبر المكدس هل يمكن الإضافة عليه أم لا إذا كان نعم تعطى رسالة يمكن الإضافة وتبدأ عملية الإضافة وإذا كان لا تعطى رسالة بذلك .

الخطوات ( الخوارزمية )

1) هل الموقع الأعلى أصبح أكبر من أو يساوى حجم المكدس ؟
نعم ( لا يمكن الإضافة لأن المكدس مغمور " ممتلئ " وتنتهى الخوارزمية )
لا ( تستمر الخوارزمية فى الإضافة )
2) حرك الموقع الأعلى خطوة لأعلى : الموقع الأعلى = الموقع الأعلى + 1
3) العنصر المضاف هو الموقع الأعلى .

خوارزمية الحذف :

هى خوارزمية تختبر المكدس هل يمكن الحذف منه أم لا إذا كان نعم تعطى رسالة يمكن الحذف وتبدأ عملية الحذف وإذا كان لا تعطى رسالة بذلك .

الخطوات (الخوارزمية)

1) هل الموقع الأعلى = صفر ( هل المكدس خالى أم لا) ؟
نعم ( لا يمكن الحذف لأن المكدس خالى وتنتهى الخوارزمية )
لا ( تستمر الخوارزمية فى الحذف )
2) العنصر المحذوف هو الموقع الأعلى .
3) حرك الموقع الأعلى خطوة لأسفل : الموقع الأعلى = الموقع الأعلى – 1 .

،،،،،،

عثمان صدى
09-17-2014, 02:19 PM
ملحوظة : يتم الإعلان عن المكدسات إما :
1/ كسجلات مثال :
Type
Stack = record
ـــــــــــــــــ
ـــــــــــــــــ
ـــــــــــــــــ
ـــــــــــــــــ
End ;



2/ كمصفوفات مثال :
Var
Stack : array [1.. n] of data type



//////////////

عثمان صدى
09-17-2014, 02:20 PM
برنامج الحذف فى المكدسات
Program delete stack ;
Const max = 100 ;
Var
Top : integer;
delete element : char ;
Stack[top] : array [1..max] of char ;
Begin
Readln (top);
If Top = 0 then
writeln ( ' Stack Empty ')
else
begin
top := top - 1 ;
delete element : = stack [top] ;
end ;
end .


برنامج الإضافة :

Program add stack ;
Const max = 100 ;
Var
Top : integer;
New element : char ;
Stack[top] : array [1..max] of char ;
Begin
Readln (top);
Readln (new element) ;
If Top = max then
writeln ( ' Over Flow ')
else
begin
top := top + 1 ;
stack [top] : = new element ;
end ;
end .

عثمان صدى
09-17-2014, 02:21 PM
مقارنة بين القوائم المتصلة والمصفوفات :
تميزت القوائم على المصفوفات بالميزة الأولى والثانية وتميزت المصفوفات على القوائم بالثالثة .
1. ديناميكية مساحة التخزين فى القوائم المتصلة وتظل ثابتة فى المصفوفات .
حيث يتم ذلك كالآتى : تزيد وتنقص حسب العملية ،ويتم حجز الذاكرة كاملة منذ البداية أولاً
2. سهولة الحذف والإضافة فى القوائم المتصلة .
حيث يتم ذلك بتغيير رأس المؤشر فقط فى المكدس أو بجعل العنصر الجديد يشير إلى السابق واللاحق يشير إلى الجديد
3. سهولة البحث عن المعلومات :
تميزت المصفوفات بسهولة البحث حيث يتم ذلك بعدة طرق منها البحث الثنائى والإختيار المباشر .
وفى القوائم المتصلة فقط بالبحث المتتالى .

،،، تم بحمد الله وتوفيقه ،،،
اللهم صل على سيدنا محمد الأمين بقدر ما خط القلم فى الورق وبقدر ما أشرق نورٌ أو برق
لأى إستفسار لمعلومة غير واضحة
00249918084991

والله يحفظكم ويرعاكم