CS2 Test - Computer Science - Grade 12 - PDF
Document Details
Uploaded by DelightedTropicalRainforest
علوم حاسب
مصطفى بكري
Tags
Summary
This past paper covers Computer Science concepts for grade 12. The document introduces the concepts of static and dynamic data structures, focusing on linked lists. It includes a comparison between static and dynamic data structures.
Full Transcript
علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة الدرس الثاني -القائمة المرتبطة Linked List...
علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة الدرس الثاني -القائمة المرتبطة Linked List هياكل البيانات الثابتة والديناميكية هياكل البيانات هي طريقة لتخزين وتنظيم البيانات بكفاءة. -ثابتة .Static -ديناميكية (متغيرة) .Dynamic هياكل البيانات الثابتة : ذات حجم ثابت ،فيتم تخصيص مواقع متجاورة في الذاكرة لعناصرها ( المصفوفات ). هياكل البيانات الديناميكية (المتغرية) : ً يتغير حجمها أثناء تنفيذ البرنامج اعتمادا علي العمليات التي يتم إجراؤها ،وتصمم لتوفير المرونة في تغيير حجم هياكل البيانات وقت التشغيل (القائمة المرتبطة) سؤال :قارن بين هياكل البيانات الثابتة وهياكل البيانات الديناميكية ؟ هياكل البيانات الثابتة وهياكل البيانات الديناميكية الديناميكية الثابتة وجه املقارنة ال نامج يتغ أثناء تنفيذ ب يمكن أن ي ثابت حجم الذاكرة مواقع عشوائية مواقع متجاورة طريقة التخزين أبطأ أرسع رسعة الوصول يإيل البيانات تخصيص الذاكرة تنتمي القائمة المرتبطة لهياكل البيانات الديناميكية ،ولهذا السبب نحتاج إلي استخدام مؤشرات أخرى خاصة للعقد -ثابتة : تحتــاج إلــي مجموعــة متجــاورة مــن مواقــع الذاكــرة (المصفوفــات) -ديناميكية : ال تحتــاج إلــي مواقــع ذاكــرة متجــاورة ، فيمكنهــا التوســع بصــورة ديناميكيــة (القوائــم المرتبطــة) 17 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة القائمة المرتبطة Linked List ً هــي أحــد أكثــر هيــاكل البيانــات الخطيــة شــيوعا فــي عالــم البرمجــة ،تشــبه سلســلة مــن العقــد المتتاليــة ،وكل عقــدة تحــوي علــي حقليــن :حقــل البيانــات وحقــل يحــوي عنــوان العقــدة التاليــة وتســتثني العقــدة األخيــرة التــي ال يحمــل حقــل العنــوان فيهــا أي ً بيانــات.احــد مزاياهــا فــي زيــادة او نقــص حجمهــا تلقائيــا بإضافــة او حــذف عقــدة. العقدة Node تتكون كل عقدة من قسمين : -البيانات. -مؤرش يشري إيل عنوان العقد التالية. 1-ليس للعقد في القائمة أي أسماء فقط العنوان (موقع الذاكرة) الذي يتم تخزينه للوصول إلي أي عقدة. 2-الوصول في القائمة المرتبطة وصول تسلسلي إي أن للوصول الى عقده يجب المرور بجميع العقد التي تسبقها. 18 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة قارن بين القائمة (المصفوفة) والقائمة المرتبطة ؟ هياكل البيانات الثابتة وهياكل البيانات الديناميكية القائمة املرتبطة القائمة وجه املقارنة ف ف غ متجاورة تخزن ي مواقع ي تخزن ي مواقع مجاورة تخزين البيانات التعامل مع عنارصها من خالل التسلسيل ي التعامل مع عنارصها بالرقم المؤ ش xednI الهيكل تخزن العنارص كعقد فيها البيانات ش يتم تخزين كل عنرص بعد اآلخر (مؤ ) التايل ي العنرص وعنوان ف ش ف والمؤ ات ي الذاكرة تخزين البيانات تخزين البيانات فقط ي الذاكرة استخدام الذاكرة ئ تسلسيل ي عشوا ي الوصول يإيل البيانات أبطأ أرسع رسعة الوصول أرسع أبطأ رسعة اإلضافة واإلزالة سؤال :كيف يمكن الوصول لبيانات العقدة الثالثة في قائمة ؟ إذا أردنا الوصول إلي العقدة الثالثة من القائمة لمعالجة بياناتها ،يجب أن نبدأ من العقدة األولي في القائمة ،ثم من العقدة األولي للثانية ومن الثانية للوصول إلي الثالثة. -يتم تخزين عنوان العقدة األولي في متغير خاص (مستقل) نسميه الرأس .Head -يشير مؤشر العقدة األخيرة من القائمة إلي قيمة خالية Nullونمثلها بالرمز . -عندما تكون القائمة فارغة ،يشير مؤشر الرأس إلي قيمة خالية .Null سؤال :ماذا تعني Null؟ سؤال :متي يشير مؤشر الرأس الى قيمة Null؟ 19 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة القائمة المرتبطة في Python ال يوجد نوع مخصص للقوائم المرتبطة بلغة البرمجة ، Pythonلذلك علينا استخدام مكتبات Pythonإضافية توفر ً تمثيال لهذا النوع من البيانات.يتم استخدام الفئات كقالب إلنشاء الكائنات. الفئة class هي بنية يحددها المستخدم وتحتفظ بمجموعتها الخاصة من البيانات مثل :الخصائص والوظائف. العقدة تكون مقسمة الى 3أجزاء وهي كالتالي : 1-عنوان العقدة ويشير الى مكان العقدة في الذاكرة 2-البيانات التي تحملها العقدة 3-عنوان العقدة التالية انظر الى الرسم التالي ثم جاوب على األسئلة التالية : -ما هو عنوان اخر عقدة ؟ -ما هو عنوان ثاني عقدة ؟ -ما هي البيانات الموجودة في العقدة األولى ؟ -ما معنى العالمة ( ) في اخر عقدة -ما هي العقدة التي تلي العقدة التي تحمل عنوان 30 20 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة ال يوجــد متغيــر مدمــج فــي Pythonلتمثيــل القوائــم المرتبطــة ( )Linked Listsكمــا هــو الحــال مــع القوائــم العاديــة. ولكــن يمكننــا إنشــاء قائمــة مرتبطــة عــن طريــق تعريــف فئتيــن ( :)Classesواحــدة لتمثيــل العقــدة ( )Nodeواألخــرى لتمثيــل القائمــة المرتبطــة نفســها. إليك كيفية إنشاء قائمة مرتبطة بسيطة في Pythonالكود البرمجي مصحوب بشرح للكود . المثال التالي لعمل قائمة مرتبطة أليام األسبوع من االثنين الى األربعاء : تعريف فئة العقدة ()Node Class هي فئة تمثل كل عقدة في القائمة المرتبطة. تحتوي العقدة على بيانات ( )dataومرجع او عنوان إلى العقدة التالية (.)next يتم تعيين ( )dataو ( )nextافتراضيا الى .None تعريف فئة القائمة المرتبطة ()LinkedList Class هي فئة تمثل القائمة المرتبطة .LinkedList تحتوي على رأس القائمة ( )headالذي يشير إلي العقدة األولى في القائمة. ً يتم تعيين ( )headافتراضيا الى .Noneمما يعني أن القائمة تبدأ افتراضيا. الربنامج الرئييس يتم إنشاء كائن ،LinkedListمما يعني أن القائمة المرتبطة تبدأ فارغة .None يتم إنشاء العقدة األولى التي تحتوي على " "Mondayوتعيينها كرأس القائمة. يتم إنشاء العقدة الثانية التي تحتوي على " "Tuesdayوربطها بالعقدة األولى. يتم إنشاء العقدة الثالثة التي تحتوي على " "Wednesdayوربطها بالعقدة الثانية. 21 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة طباعة محتويات القائمة المرتبطة يبدأ الطباعة من رأس القائمة (.)head يتم تكرار الطباعة حتى الوصول إلى نهاية القائمة عندما يكون nodeهو None يتم طباعة البيانات ( )dataلكل عقدة ،ثم االنتقال إلى العقدة التالية (.)next إضافة العقدة إيل قائمة مرتبطة : -مؤشر أول عقدة يشير إلي عنوان العقد الجديدة. -يجب أن يشير مؤشر العقدة الجديدة (الثانية) إلي عنوان العقد الثالثة. -بهذه الطريقة ال نضطر إلي إزاحة العناصر في حال إضافة عنصر جديد. علل :عملية الضافة في القوائم المرتبطة أسرع من القوائم المتسلسلة ؟ ألنها تقتصر على تغيير قيم العناوين في العقد فقط. حذف العقدة من القائمة المرتبطة يتوجب علينا تغيير مؤشر العقدة السابقة لها لتشير إلي العقدة التالية للعقدة المحذوفة هي (بيانات عديمة الفائدة) 22 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة تطبيقات القوائم المرتبطة في علم الحاسوب -تخصيص الذاكرة الديناميكية من خالل نظام التشغيل. -أداء العمليات الحسابية الخاصة باألعداد الصحيحة الطويلة. -االحتفاظ بجميع التطبيقات التي تعمل علي جهاز الحاسوب في قائمة مرتبطة. -عرض الصور بشكل متتالي ببرنامج عارض الصور (.)image viewer -الحركة بين الصفحة السابقة والتالية في متصفح الويب. ً -ربط ملفات الصوت السابقة والتالية معا في مشغل الصوتيات. هياكل البيانات الثابتة وهياكل البيانات الديناميكية الديناميكية الثابتة ال نامج يتغ أثناء تنفيذ ب يمكن أن ي ثابت حجم الذاكرة مواقع عشوائية مواقع متجاورة طريقة التخزين أبطأ أرسع رسعة الوصول يإيل البيانات 23 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة الدرس الثالث -هياكل بيانات األشجار هياكل البيانات غري الخطية تمتاز بإمكانية ربط عناصرها بأكثر من عنصر آخر في نفس الوقت. سؤال :ما هي األمثلة على البيانات غير الخطية ؟ األمثلة علي البيانات غير الخطية :األشجار ( )Treesوالمخططات (.)Graphs الفروقات بين هياكل البيانات الخطية وغير الخطية غير الخطية الخطية يتم ترتيب عناصر البيانات بشكل خطي حيث يتم إحلاق كل عنصر يتم ترتيب عناصر البيانات بشكل غري خطي حبيث ميكن ربط عنصر بأكثر من عنصر. بعنصر سابق وعنصر تالي. توجد مستويات متعددة لتمثيل البيانات يوجد مستوي واحد لتمثيل البيانات يكون التنفيذ أكثر تعقيداً يتم التنفيذ بشكل أسهل 24 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة األشجار هي هياكل بيانات غير خطية ،وتتكون من مجموعة من العقد ترتب بشكل هرمي ويمكن لكل عقدة أن ترتبط بعقدة أو أكثر. سؤال :فيما تستخدم هيالك البيانات األشجار ؟ تستخدم في العديد من مجاالت علوم الحاسوب مثل أنظمة التشغيل والرسومات وأنظمة قواعد البيانات واأللعاب والذكاء االصطناعي وشبكات الحاسوب. المصطلحات المستخدمة في هيكل بيانات الشجرة -الجذر ( : )Rootهي العقدة األولي وليس لها أب ( )Parentوتكون في المستوي األول من الشجرة. -االبن ( : )Childهي العقدة المتصلة مباشرة بعقدة في مستوي أعلي. -األب ( : )Parentهي العقدة التي لديها ابن واحد أو أكثر في مستوي أدنى. -الورقة ( : )Leafهي العقدة التي ال تحتوي علي أي عقد فرعية (ابن). -األشقاء ( : )Siblingsهي جميع العقد التابعة لنفس العقد األصلية (األب). -األطراف ( : )Edgesهي الروابط التي تربط بين عقد الشجرة. -الشجرة الفرعية ( : )Sub-Treeهي األشجار الصغيرة التي يمكن العثور عليها داخل الشجرة الكبيرة. 25 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة رسم توضيحي للمصطلحات المستخدمة في هيكل بيانات الشجرة سؤال :قم برسم الشجرة التالية : الجذر ( :)Rootالعقدة العليا في الشجرة (مدير المشروع). األب ( :)Parentعقدة لها أبناء (مدير المشروع ،مدير التطوير). األبناء ( :)Childrenالعقد التي تتفرع من عقدة معينة (مدير التطوير ،مدير التصميم ،مدير االختبار هم أبناء مدير المشروع). العقد ( :)Nodesجميع العناصر في الشجرة (مدير المشروع ،مدير التطوير ،مدير التصميم ،مدير االختبار ،مطور ،1مطور ،2مطور ،3مصمم ،1مختبر ،1مختبر ،2متدرب). األطراف ( :)Leavesعقدة ليس لها أبناء (مطور ،2مطور ،3مصمم ،1مختبر ،1مختبر ،2متدرب). 26 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة مزيات هيكل بيانات الشجرة -تستخدم لتمثيل التسلسل الهرمي. ً -تتسم بالمرونة ،فمن السهل جدا إضافة أو إزالة عنصر. -تتسم بسهول البحث عن عنصر داخل الشجرة. -تبين العالقات الهياكل بين البيانات. هيكل بيانات الشجر في Python ً ال تقدم لغة برمجة Pythonنوع بيانات محدد مسبقا لهيكل بيانات الشجرة ،ولكن يمكن إنشاؤه باستخدام القوائم ( )Listsوالقواميس (.)Dictionaries 27 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة مثال :2باستخدام لغة الـ Pythonقوم بإنشاء شجرة عائلة بسيطة تتكون من جد وأب له ابن 1وابن 2 وعم له ابن واحد ،ثم قم بطباعة الشجرة بشكل هرمي ،أرسم الشجرة وبين الجذر والعقد. في المثال السابق غير ما يلزم لطباعة الشجرة بشكل هرمي مع طباعة عدد العقد التي تنتمي لكل أب في األباء مثال : 3باستخدام لغة الـ Pythonقوم بإنشاء شجرة تنظيمية لفريق برمجي يتكون من مدير مشروع يترأس مدير للتطوير ومدير للتصميم بينما مدير التطوير يترأس مطور 1ومطور 2واخيرا مدير التصميم يترأس مصمم واحد فقط ،ثم قم بطباعة الشجرة بشكل هرمي ،أرسم الشجرة وبين الجذر والعقد. مثال :4باستخدام لغة الـ Pythonقوم بإنشاء شجرة قرارات مبسطة لنظام اختياري الجذر هو : «السؤال ،»1األجوبة تفرع إلى «الجواب 1-نعم» أو «السؤال.»2 «السؤال »2يتفرع إلى «الجواب 2-نعم» أو «الجواب 2-ال». ثم قم بطباعة الشجرة بشكل هرمي ،أرسم الشجرة وبين الجذر والعقد. 28 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة الشجرة الثنائية Binary Tree هي حالة خاصة من هياكل بيانات األشجار ،وتتميز بوجود «ابنين» ،يطلق عليهما االبن األيمن ( )Right Childواالبن األيسر (.)Left Child أنواع هيكل بيانات الشجرة الثنائية رسم اهليكل الوصف النوع الشجرة الثنائية الممتلئة يوجد لكل عقدة إما 0أو 2أبناء eerT yraniB lluF تمتئل جميع المستويات بالكامل ئ الشجرة الثنائية الكاملة األخ ما أمكن ي باستثناء المستوي eerT yraniB etelpmoC ذلك (تملء من اليسار قدر االمكان أوال) جميع العقد الداخلية لها ابنان وجميع الشجرة الثنائية التامة االوراق ف ي نفس المستوي. eerT yraniB tcefreP سؤال :حدد نوع الشجرة الثنائية Binary Treeفي كل من الهياكل التالية: ) ( ) ( ) ( 29 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة أمثلة عيل تطبيقات هياكل بيانات األشجار -تخزين البيانات الهرمية ،مثل هياكل المجلدات. -تعريف البيانات في لغة .HTML -تنفيذ الفهرسة في قواعد البيانات. شجرة القرار Decision Tree شــجرة الق ـرار ( )Decision Treeتتشــابه نوعــا مــا مــع المخطــط االنســيابي ( ، )Flow Chartمــع مالحظــة أن المخططــات االنســيابية تســمح بالتك ـرارات. يطلق مصطلح "تعلم شجرة القرار" ( )Decision Tree Learningعلي تطبيق أشجار القرار في علم الذكاء االصطناعي وتعلــم اآللــة.حيــث تســمي العقــد النهائيــة بالورقــة أو بعقــدة القـرار وتحتــوي عــادة علــي الحلــول وترتبــط كل عقــدة -باســتثناء األوراق -بشــرط منطقي يتفرع منه احتماالت اإلجابة بنعم أو ال. 30 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة الدرس الرابع -هياكل بيانات المخططات المخطط Graph هــو أحــد أنــواع هيــاكل البيانــات التــي تتكــون مــن مجموعــة مــن العقــد (أو النقــاط أو الــرؤوس) ،ومجموعــة مــن الخطــوط أو (األضــاع أو األط ـراف) ،والتــي تربــط جميــع العقــد أو بعضهــا. مالحظات هامة : ً 1.يعتبر المخطط أكثر هياكل البيانات استخداما. 2.الشجرة يمكن أن تكون مخطط وال يمكن اعتبار المخطط شجرة. سؤال :قارن بين األشجار والمخططات ؟ الفروقات بين األشجار والمخططات المخططات األشجار ترتابط يف شكل شبكة ترتابط يف شكل هرمي ال توجد عقدة فريدة أو جذر توجد يف األشجار عقدة فريدة تسمي اجلذر ال توجد عالقة أب وأبناء بني العقد ترتبط العقد بعالقة أب وأبناء ()dlihC - tneraP املخططات هي هياكل أكثر تعقيداً تعترب األشجار هياكل أكثر بساطة مقارنة باملخططات 31 55437757 مصطفى بكري بايثونيستا الثانوية العامة علوم حاسب-12-تكنولوجي الفصل األول -هياكل البيانات المتقدمة أنواع المخططات المخطط الموجه Directed Graph ترتبــط العقــد بأضــاع موجهــة باتجــاه واحــد فقــط ،نســتطيع االنتقــال مــن العقــدة Aإلــي العقــدة B والعكس غير صحيح (.اإلنتقال في اتجاه واحد ) المخطط غري الموجه Undirected graphs ال يكون لالرتباطات أي اتجاه ،نستطيع االنتقال من العقدة Aإلي العقدة Bوالعكس أيضا صحيح. المخططات في حياتنا اليومية : شــبكة الويــب العالميــة ،تعتبــر بمثابــة مخطــط موجــه ،فالعقــد هــي صفحــات الويــب واألضــاع الموجهــة هــي االرتباطــات التشــعبية . تنقيب هياكل الويب (: )Web Structure Mining هو عملية اكتشاف المعرفة المفيدة من هياكل شبكة الويب العالمية من خالل االرتباطات التشعبية. األهمية النسبية ( )Relative Importanceلصفحة الويب : العالقــة الموجــودة بيــن صفحــات الويــب المختلفــة ،ويمكــن حســابها مــن خــال تكويــن مخطــط لهيــاكل بيانــات االرتباطــات التشــعبية Facebook ً الفيســبوك مثــال آخــر علــي هيــاكل المخطــط الغيــر موجــه ،فعندمــا نضيــف صديقــا يتوجــب عليــه قبــول طلبــك ،كمــا أن خوارزميــة اقترح األصدقاء في فيسبوك تستخدم نظرية المخطط (.)Graph Theory خرائط Google تســتخدم خرائــط Googleوجميــع التطبيقــات المماثلــة األخــرى المخططــات غيــر الموجهــة إلظهــار أنظمــة النقــل وحســاب أقصــر مســار بيــن موقعيــن. المخططات في Python ً ال يوجد نوع بيانات معرف مسبقا في الـ ،Pythonويمكننا إنشاء المخططات بواسطة القوائم والقواميس مثل األشجار. 32 55437757 مصطفى بكري بايثونيستا الثانوية العامة