إعلان في الرئيسية

أخبار ساخنة

إعلان أعلي المقال

Structured

ماهى هياكل البيانات |DATA STRUCTURE

 هياكل البيانات




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





الخصوص ، تم التأكيد على مبدأ إخفاء المعلومات أخيرًا ، أحد العناصر المهمة في الكتاب هو تطبيق بنية البيانات ، مما يؤدي إلى اختيار لغة ++C كلغة برمجة. لغة ++C ، سليل C المنحى ، منتشرة في الصناعة والأوساط الأكاديمية كلغة برمجة ممتازة.كما انه مفيد وطبيعي لإدخال هياكل البيانات. سي ، بسبب الاستخدام الواسع لـ ++C في برمجة التطبيقات وخصائصها في اللغة ، واستخدام ++C لتدريس دورة بنيات وخوارزميات البيانات ، حتى على المستوى التمهيدي ، له ما يبرره تمامًا.قم بتنظيم دورات تدريبية حول هياكل البيانات التمهيدية ، وكذلك للدورة التدريبية المتقدمة لهياكل البيانات والخوارزميات. كما أنه يلبي متطلبات الوحدات التالية في منهج علوم الكمبيوتر 2008: DS / GraphsAndTrees ، PF / DataStructures ، PF / Recursion ، PF /


ObjectOriented ، AL / BasicAnalysis ، AL / AlgorithmicStrategies ، AL / FundamentalAlgorithms ، AL / PversusNP ، PL / DeclarationsAndTypes / التجريدالآليات ، PL / ObjectOrientedProgramming. دراسة حالة سياق سياقًا كاملًا. تم اختيار دراسات الحالة هذه من مجالات مختلفة من علوم الكمبيوتر مثل المترجمين الفوريين والحساب الرمزي ومعالجة الملفات ، للإشارة إلى مجموعة واسعة من التطبيقات التي قد تكون عليها المواضيع قيد المناقشة.



++Object-Oriented Programming Using C


أنواع البيانات المجردة

"AbstractDataTypes"



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


العنصر من حيث العمليات المنفذة عليه بدلاً من هيكله الداخلي. قد تعمل هذه العمليات وفقًا لهذا العنصر ، على سبيل المثال ، تعديله أو البحث عن بعض التفاصيل فيه أو تخزين شيء فيه. بعد تحديد هذه العمليات بدقة ، قد يبدأ تنفيذ البرنامج. يقرر التنفيذ بنية البيانات التي يجب استخدامها لجعل التنفيذ أكثر كفاءة من حيث الوقت والمكان. يسمى العنصر المحدد من حيث العمليات بنوع البيانات المجردة. لا يعد نوع البيانات المجردة جزءًا من البرنامج ، لأن البرنامج المكتوب بلغة برمجة يتطلب تعريف بنية البيانات ، وليس فقط العمليات على بنية البيانات. ومع ذلك ، فإن لغة موجهة للكائنات (OOL) مثل ++C لها صلة مباشرة بأنواع البيانات المجردة من خلال تنفيذها على أنها فئ

التغليف
{Encapsulation}


البرمجة الموجهة للكائنات (OOP) تدور حول مفهوم الكائن.
  الأشياء، ومع ذلك، يتم إنشاؤها باستخدام تعريف فئة. وهناك فئة هو قالب وفقا لوالتي يتم إنشاؤها الكائنات. وهناك فئة هو قطعة من البرمجيات التي تتضمن البيانات.


المواصفات والوظائف التي تعمل على هذه البيانات وربما على البيانات التي تنتمي إلى مثيلات فئة أخرى. تسمى الوظائف المعرّفة في فئة ما بالطرق أو وظائف الأعضاء أو أعضاء الوظيفة ، وتسمى المتغيرات المستخدمة في الفصل أعضاء البيانات (بشكل أكثر ملاءمة ، يجب أن يطلق عليهم أعضاء البيانات). يسمى هذا الجمع بين البيانات والعمليات ذات الصلة تغليف البيانات. الكائن هو مثيل لفئة ، كيان تم إنشاؤه باستخدام تعريف الفئة. في تناقض مع وظائف بلغات غير موجهة للكائنات ، تجعل الكائنات العلاقة بين البيانات ووظائف الأعضاء أكثر تشددًا وأكثر جدوى. في اللغات غير الموجهة للكائنات ،


 يمكن أن تتداخل تصريحات البيانات وتعريفات الوظائف من خلال البرنامج بأكمله ، وتشير وثائق البرنامج فقط إلى وجود صلة بينها. في OOLs ، يتم تأسيس اتصال مباشرة في البداية ؛ في الواقع ، يعتمد البرنامج على هذا الاتصال. يتم تعريف الكائن بالبيانات والعمليات ذات الصلة ، ولأنه قد يكون هناك العديد من الكائنات المستخدمة في نفس البرنامج ، فإن الكائنات تتواصل عن طريق تبادل الرسائل التي تكشف عن تفاصيل قليلة عن بنيتها الداخلية عند الضرورة للاتصال المناسب.


 تتيح هيكلة البرامج من حيث الكائنات تحقيق العديد من الأهداف. أولاً ، يمكن استخدام هذا الاقتران القوي للبيانات والعمليات بشكل أفضل بكثير في نمذجة جزء من العالم ، وهو ما تؤكده بشكل خاص هندسة البرمجيات. ليس من المستغرب أن يكون لجذر OOP جذوره في المحاكاة. وهذا هو ، في نمذجة أحداث realworld. أول OOL كان يسمى Simula ، وقد تم تطويره في 1960s في النرويج.


ثانياً ، تسمح الكائنات بالعثور على الأخطاء بسهولة لأن العمليات مترجمة إلى حدود كائناتها. حتى لو حدثت آثار جانبية ، فهي أسهل في التتبع. ثالثًا ، تسمح لنا الكائنات بإخفاء تفاصيل معينة عن عملياتها من كائنات أخرى حتى لا تتأثر هذه العمليات سلبًا بالكائنات الأخرى. هذا هو المعروف باسم مبدأ إخفاء المعلومات. في اللغات غير الموجهة للكائنات ، يمكن العثور على هذا المبدأ إلى حد ما في حالة المتغيرات المحلية ، أو كما هو الحال في Pascal ، في الوظائف أو الإجراءات المحلية ، والتي يمكن استخدامها والوصول إليها فقط من خلال الوظيفة التي تحددها. هذا هو ، مع ذلك ، يختبئ ضيق جدا أو لا يختبئ على الإطلاق. في بعض الأحيان قد نحتاج إلى استخدام (مرة أخرى ، كما في Pascal) دالة f2 المعرفة في f1 خارج f1 ، لكن لا يمكننا ذلك. في بعض الأحيان قد نحتاج إلى


الوصول إلى بعض البيانات المحلية إلى f1 دون معرفة بنية هذه البيانات تمامًا ، لكن لا يمكننا ذلك. وبالتالي ، هناك حاجة إلى بعض التعديل ، ويتم ذلك في OOLs. كائن في OOL يشبه الساعة. كمستخدمين ، نحن مهتمون بما تظهره الأيدي ، ولكن ليس في الأعمال الداخلية للساعة. نحن على دراية بوجود التروس والينابيع داخل الساعة ، ولكن نظرًا لأننا عادة ما نعرف القليل عن سبب وجود كل هذه الأجزاء في تكوين معين ، فلا ينبغي لنا الوصول إلى هذه الآلية حتى لا نتلفها ، عن غير قصد أو على غرض. هذه الآلية مخفية عنا ، وليس لدينا إمكانية الوصول الفوري إليها ، والساعة محمية وتعمل بشكل أفضل من عندما تكون آليتها مفتوحة ليراها الجميع.


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



. لا يكشف الكائن إلا بقدر ما يلزم للمستخدم لاستخدامه. يحتوي على جزء عام يمكن الوصول إليه من قبل أي مستخدم عندما يرسل المستخدم رسالة تتطابق مع أي من أسماء وظائف العضو التي كشفها الكائن. في هذا الجزء العام ، يتم عرض الكائن على أزرار المستخدم التي يمكن دفعها لاستدعاء عمليات الكائن. يعرف المستخدم فقط أسماء هذه العمليات والسلوك المتوقع. يميل إخفاء المعلومات إلى طمس الخط الفاصل بين البيانات والعمليات. في اللغات المشابهة لـ Pascal ، يكون التمييز بين البيانات والوظائف أو الإجراءات واضحًا وصلبًا. يتم تعريفهم بشكل مختلف وأدوارهم متميزة جدا. تضع OOLs البيانات والأساليب معًا ،


 وبالنسبة لمستخدم الكائن ، يكون هذا التمييز أقل وضوحًا. إلى حد ما ، يتضمن هذا ميزات اللغات الوظيفية. تتيح LISP ، إحدى لغات البرمجة الأولى ، للمستخدم التعامل مع البيانات والوظائف بشكل مشابه ، لأن بنية كليهما هي نفسها. لقد قمنا بالفعل بالتمييز بين كائنات معينة وأنواع الكائنات أو الفئات. نكتب وظائف لاستخدامها مع متغيرات مختلفة ،


 وقياسا على ذلك ، لا نرغب في أن نضطر إلى كتابة أكبر عدد ممكن من إعلانات الكائنات مث. كائنات معينة من نفس النوع ونود فقط استخدام مرجع لمواصفات عامة للكائن. بالنسبة للمتغيرات الفردية ، فإننا نميز بين إعلان النوع والإعلان المتغير. في حالة الكائنات ، لدينا إعلان فئة ونسخة الكائن. على سبيل المثال ، في تعريف الفئة التالي ، C عبارة عن فئة و object1 خلال object3 عبارة عن كائنات.



رسالة عابرة ما يعادل استدعاء دالة في اللغات التقليدية. ومع ذلك، لنؤكد على حقيقة أن وظائف الأعضاء في OOLs قريبة إلى الأشياء، ويستخدم هذا المصطلح الجديد. على سبيل المثال، والدعوة إلى memberFunction1 الجمهور () في object1

object1.memberFunction1 (); 

ينظر إليها على أنها رسالة memberFunction1 () إرسالها إلى object1. عند استلام الرسالة ، يستدعي الكائن وظيفة العضو ويعرض جميع المعلومات ذات الصلة. يمكن أن تشمل الرسائل المعلمات بحيث



object1.memberFunction2(123);

هي رسالة memberFunction2 () مع المعلمة 123 من object1 الواردة. في الأسطر التي تحتوي على هذه الرسائل إما في البرنامج الرئيسي، في وظيفة، أو في وظيفة عضو في كائن آخر. ولذلك، فإن متلقي الرسالة هو محدد، ولكن ليس بالضرورة المرسل. إذا object1 يتلقى رسالة memberFunction1 ()، فإنه لا أعرف من أين نشأت الرسالة. فإنه يستجيب فقط لأنه عن طريق عرض memberFunction1 المعلومات () بتغليف. الشيء نفسه ينطبق على memberFunction2 (). ولذلك، فإن المرسل قد تفضل بإرسال رسالة تتضمن أيضا تحديد لها، على النحو التالي:


object1.memberFunction2(123,"object1"); 


وهناك ميزة قوية من ++C هي إمكانية إعلان الطبقات العامة باستخدام المعلمات نوع في تعريف فئة. على سبيل المثال، إذا نحن بحاجة إلى إعلان الدرجة التي تستخدم مجموعة لتخزين بعض البنود، ثم ونحن قد أعلن هذه الفئة كما



classintClass{intstorage[50];.....};  



ومع ذلك ، وبهذه الطريقة ، نقصر قابلية استخدام هذه الفئة على الأعداد الصحيحة فقط ؛ إذا احتجنا إلى فصل يقوم بنفس العمليات مثل intClass إلا أنه يعمل على أرقام عائمة ، عندئذٍ يلزم إصدار إعلان جديد ، مثل

classfloatClass{floatstorage[50];......};

إذا التخزين هو اجراء الهياكل، أو مؤشرات إلى أحرف، ثم يجب إعلان فئتين أكثر. هو أفضل بكثير لإعلان فئة عامة وتقرر ما هو نوع من المواد الكائن يتم الإشارة إلى فقط عند تحديد الكائن. لحسن الحظ، ++C يسمح لنا بإعلان فئة في هذا الطريق،

إعلان أسفل المقال

إتصل بنا

نموذج الاتصال

الاسم

بريد إلكتروني *

رسالة *

تم الكشف عن مانع الإعلانات

الإعلانات تساعدنا في تمويل موقعنا، فالمرجو تعطيل مانع الإعلانات وساعدنا في تقديم محتوى حصري لك. شكرًا لك على الدعم ❤️