Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

‫‪Sheet-1‬‬

‫تراكيب البيانات والخوارزميات‬

‫مقدمة الى تراكيب البيانات‬


‫)‪(INTRODUCTION TO DATA STRUCTURE‬‬

‫أستاذ المادة‬
‫د‪ .‬خالد سويسي‬
‫مفهوم تراكيب البيانات‬
‫والخوارزميات‬
‫ماهي تراكيب (أو هياكل) البيانات؟‬

‫■ هي وحدة تخزين تُستخدم لتخزين البيانات وتنظيمها‪.‬‬


‫■ إنها طريقة لترتيب البيانات على جهاز الحاسوب بحيث يمكن الوصول إليها وتحديثها‬
‫بكفاءة‪ .‬وتستخدم أيضا في معالجة واسترجاع وتخزين البيانات‪.‬‬
‫■ هناك أنواع مختلفة من تراكيب البيانات (أساسية ومتقدمة) والتي يتم استخدامها تقريبًا في‬
‫كل برنامج أو نظام برمجي تم تطويره‪ .‬لذلك يجب أن يكون لدينا معرفة جيدة بهياكل‬
‫البيانات‪.‬‬
‫■ تعد تراكيب البيانات جز ًءا ال يتجزأ من أجهزة الحاسوب حيث تستخدم لترتيب البيانات‬
‫في الذاكرة‪ .‬فهي ضرورية جدا وهى المسؤولة عن تنظيم البيانات ومعالجتها والوصول‬
‫إليها وتخزينها بكفاءة‪.‬‬
‫■ لكن هذا ليس كل شيء‪ .‬األنواع المختلفة من تراكيب البيانات لها خصائصها وميزاتها‬
‫وتطبيقاتها ومزاياها وعيوبها‪.‬‬
‫لماذا نتعلم تراكيب البيانات؟‬
‫كيف يمكنك تحديد تراكيب‬
‫البيانات المناسبة لمهمة‬
‫معينة؟‬

‫ما المقصود بمصطلح‬


‫"تراكيب البيانات"؟‬

‫كم عدد أنواع تراكيب‬


‫البيانات الموجودة وما‬
‫هي استخدامها؟‬
‫يتبع‪ ...‬لماذا نتعلم تراكيب البيانات؟‬
‫■ نظرا لزيادة تعقيد التطبيقات ووفرة البيانات‪ ،‬فان هناك ‪ 3‬مشاكل تطبيقية‬
‫عامة تواجهنا هذه األيام والتي تستوجب إيجاد حل لها‪:‬‬
‫‪ .1‬بحث البيانات‪.‬‬
‫‪ .2‬سرعة المعالجة‪.‬‬
‫‪ .3‬الطلبات المتعددة‪.‬‬
‫■ عليه فإن تراكيب البيانات (‪ )Data Structure‬تعمل على تنظيم البيانات في‬
‫الذاكرة والتقليل من هذه المشاكل‪.‬‬
‫■ فاختيار تراكيب بيانات غير مناسبة يؤدي إلى خوارزمية عالية التعقيد‬
‫والعكس صحيح‪ ،‬فاالختيار الجيد لتراكيب البيانات يؤدي إلى خوارزمية سهلة‬
‫التنفيذ ومناسبة بشكل كبير‪.‬‬
‫كيف تختلف تراكيب البيانات عن نوع البيانات؟‬
‫تراكيب البيانات‬ ‫نوع البيانات‬
‫‪Data Structure‬‬ ‫‪Data Type‬‬
‫هي مجموعة من أنواع مختلفة من البيانات‪ .‬يمكن تمثيل‬ ‫هو شكل المتغير الذي تحدد نوع بياناته حسب القيمة التي‬
‫تلك البيانات بأكملها باستخدام كائن (‪ )object‬بحيث‬ ‫ستخصص له فقط‪.‬‬
‫يمكن استخدامه في أي مكان من البرنامج‪.‬‬
‫يمكن أن تحتوي على أنواع عديدة من البيانات داخل كائن‬ ‫يمكن أن تحتوي على قيمة وال تحتوي على بيانات‬
‫واحد‪.‬‬ ‫(‪ .)data‬ولذلك‪ ،‬فهي بال بيانات (‪.)dataless‬‬
‫يعرف تنفيذ تراكيب البيانات بالتنفيذ (الملموس) الواقعي‬ ‫يعرف تنفيذ نوع البيانات داخل البرنامج بالتنفيذ المجرد‬
‫(‪)concrete implementation‬‬ ‫(‪)abstract implementation‬‬
‫من الضروري والمهم قياس األداء الزمني ( ‪time‬‬ ‫ال نحتاج لتقيم األداء الزمني (‪ )time complexity‬مع‬
‫‪ )complexity‬للخوارزميات المستخدمة في تراكيب‬ ‫أنواع البيانات‬
‫البيانات‬
‫أمثلة عن أنواع البيانات مثل‪ ،double ،float ،int -:‬من أنواع تراكيب البيانات مثل‪ -:‬المكدس (‪،)stack‬‬
‫الطابور(‪ ،)queue‬الشجرة (‪ ،)tree‬وغيرها‪.‬‬ ‫‪...‬إلخ‪.‬‬
‫أنواع تراكيب البيانات (‪)Types of Data Structure‬‬

‫■ يوجد العديد من االستخدامات‬


‫المختلفة لتراكيب البيانات في‬
‫حياتنا اليومية‪.‬‬
‫■ هناك العديد من هياكل البيانات‬
‫المختلفة التي تُستخدم لحل‬
‫المشكالت الرياضية والمنطقية‬
‫المختلفة‪.‬‬
‫■ باستخدام تراكيب البيانات‪،‬‬
‫يمكن للمرء تنظيم ومعالجة‬
‫كمية كبيرة جدًا من البيانات في‬
‫فترة قصيرة نسبيًا‪.‬‬
‫‪ -1‬تراكيب البيانات الخطية (‪)Linear data structure‬‬
‫■ هي تراكيب البيانات التي يتم فيها ترتيب عناصر البيانات بشكل تسلسلي أو خطي‪ ،‬حيث يرتبط كل‬
‫عنصر بالعناصر المجاورة السابقة له والتي تليه‪ .‬من أمثلة هياكل البيانات الخطية‪:‬‬
‫– المصفوفات (‪ ،)Array‬والمكدس (‪ ،)Stack‬والطابور (‪ ،)Queue‬والقائمة المرتبطة ( ‪Linked‬‬
‫‪ ،)List‬وغيرها والتي سيتم شرحها الحقا‪.‬‬
‫‪ .1‬تراكيب البيانات الثابتة (‪:)Static data structure‬‬
‫– يكون لها حجم ذاكرة ثابت‪.‬‬
‫– ومن السهولة الوصول إلى العناصر الموجودة فيها‪.‬‬
‫– من أمثلتها‪ -:‬المصفوفات (‪.)Array‬‬
‫‪ .2‬تراكيب البيانات الديناميكية (‪:)Dynamic data structure‬‬
‫– الحجم البيانات فيها غير ثابت‪.‬‬
‫– يمكن تحديثها بشكل عشوائي أثناء وقت التشغيل‪.‬‬
‫– من أمثلتها‪ -:‬الطابور(‪ )Queue‬والمكدس(‪)Stack‬‬
‫والقوائم المرتبطة (‪ )Linked List‬وغيرها‪.‬‬
‫‪ -2‬تراكيب البيانات الغير خطية (‪)Non-Linear data structure‬‬
‫■ هي التي ال يتم وضع عناصر البيانات فيها بشكل تسلسلي أو خطي‪.‬‬
‫■ في هياكل البيانات الغير خطية‪ ،‬ال يمكننا اجتياز جميع العناصر في عملية‬
‫واحدة فقط‪.‬‬
‫■ من أمثلة هياكل البيانات غير الخطية‪-:‬‬
‫– األشجار (‪)Trees‬‬
‫– والمخططات (‪.)Graphs‬‬
‫لماذا نحتاج إلى تراكيب البيانات‬
‫■ ترتبط تراكيب البيانات والخوارزميات ببعضهما البعض‪.‬‬
‫■ عرض البيانات يجب ان يكون سهل الفهم لكي يتسنى لمطوري ومستخدمي‬
‫البرامج من تنفيذ العمليات بشكل فعال‪.‬‬
‫■ توفر تراكيب (أو هياكل) البيانات طريقة سهلة في تنظيم‪ ،‬واسترجاع‪ ،‬وإدارة‪،‬‬
‫وتخزين البيانات‪.‬‬
‫■ فيما يلي توضح الحاجة إلى تراكيب البيانات‪:‬‬
‫– سهلة في التعديل‪.‬‬
‫– تتطلب وقت قليل‪.‬‬
‫– توفير في مساحة ذاكرة التخزين‪.‬‬
‫– طريقة تمثيلها للبيانات بسيط‪.‬‬
‫– تسهل التعامل مع قواعد البيانات الكبيرة‪.‬‬
‫ما هي الخوارزمية ‪Algorithm -‬؟‬
‫■ هي مجموعة من الخطوات واإلجراءات‬
‫المنطقية المتسلسلة لحل مشكلة ما‪.‬‬
‫■ ويمكن أيضا أن نقول انها خطة مكونة‬
‫من خطوات منطقية لحل مشكلة أو عمل‬
‫فكرة محددة‪.‬‬
‫■ وهي ليس لها عالقة بلغة برمجة معينة‬
‫أنما هي مجموعة من التعليمات المحددة‬
‫اما كخطوات أو مخططات انسيابية‪،‬‬
‫والتي يجب اتباعها لبناء البرامج‬
‫والعمليات الحاسوبية وتصميمها‪.‬‬
‫أهم تراكيب البيانات استخدا ًما‬
‫أولا‪ -:‬المصفوفات (‪)Arrays‬‬
‫■ تعتبر من أنواع تراكيب البيانات الخطية‪.‬‬
‫■ وهي عبارة عن مجموعة من العناصر مخزنة في مواقع متجاورة من الذاكرة‪.‬‬
‫■ فكرتها هي تخزين عناصر متعددة لها نفس النوع في مكان واحد معًا‪.‬‬
‫■ تسمح بمعالجة كمية كبيرة من البيانات في وقت قصير نسبيًا‪.‬‬
‫■ العنصر األول من المصفوفة تخصص له قيمة للفهرسة (‪ )index‬هي ‪.0 ‬‬
‫■ يوجد العديد من العمليات التي يمكن تنفيذها على المصفوفة‪ ،‬مثل‪-:‬‬
‫– البحث (‪.)search‬‬
‫– والفرز (‪.)sort‬‬
‫– واإلدراج (‪.)insert‬‬
‫– والحذف (‪ ،)delete‬وغيرها‪.‬‬
‫ثانياا‪ -:‬القوائم المرتبطة (‪)Linked Lists‬‬
‫■ وهي أي ً‬
‫ضا من تراكيب البيانات الخطية‪.‬‬
‫■ ال يتم تخزين عناصر القائمة المرتبطة في مواقع متجاورة في الذاكرة‪ ،‬بعكس‬
‫المصفوفات‪.‬‬
‫■ ولكن يتم ربط العناصر باستخدام المؤشرات (‪.)Pointers‬‬
‫■ تتكون القوائم المرتبطة من مجموعة من العناصر تعرف بالعقد (‪.)Nodes‬‬
‫■ كل عقدة تحتوي حقل بيانات (‪ )Data‬ومرجع أو رابط (‪ )Next‬للعقدة التالية في القائمة‪.‬‬
‫مميزات وعيوب تراكيب البيانات‬
‫العيوب‬ ‫المميزات‬
‫‪ .1‬تزيد في العمليات الحسابية وامتالء‬ ‫‪ .1‬تزيد من عملية تنظيم البيانات وكفاءة‬
‫الذاكرة‪.‬‬ ‫التخزين‪.‬‬
‫‪ .2‬أسرع في استرجاع البيانات ومعالجتها‪ .2 .‬تصبح صعبة في تصميم وتنفيذ هياكل‬
‫البيات المعقدة‪.‬‬
‫‪ .3‬تسهل تصميم الخوارزميات لحل المسائل ‪ .3‬غير مرنة وتوسعها محدود عندما تكبر‬
‫البيانات‪.‬‬ ‫المعقدة‪.‬‬
‫‪ .4‬معقدة عند اختبار وتصحيح األخطاء‪.‬‬ ‫‪ .4‬تسهل عملية تحديث البيانات والحفاظ‬
‫عليها‪.‬‬
‫‪ .5‬توفر أبسط الطرق في فهم أفضل للعالقات ‪ .5‬صعوبة التعديل على الخوارزميات‬
‫المتبعة (المطورة سابقًا) في تراكيب البيانات‪.‬‬ ‫بين عناصر البيانات‪.‬‬
‫النهاية‬

THANK YOU ☺

You might also like