ملخص الحاسوب الوحدة الثانية

بنائيات البيانات

  نظام معالجة البيانات المحوسب :

             يعني استخدام الحاسوب في تخزين البيانات ثم استرجاعها بعد عمل المعالجات المطلوبة عليها.

   صور معالجة البيانات : 

            المعالجة يمكن ان تكون في شكل بحث عن معلومة معينة، او تصنيف للبيانات، او تحليل وفق نموذج رياضي، او رسم البيانات رسم بياني، او تأمينها، اواخفاءها وفق شفرة سرية معينة.

   بنائيات البيانات :   Data Structure

           هي الخوارزميات التي تمكن من تنظيم وتخزين البيانات (المعالجة) بالصورة المطلوبة في اسرع وقت ممكن واقل سعة تخزينية ممكنة.

   ذاكرة الحاسوب :

           تتكون ذاكرة الحاسوب من عدد كبير من مواقع تخزين البيانات المتساوية و كل موقع يتكون من عدد ثابت من الثنائيات او البتات (bits) يسمي الكلمة ويختلف من حاسوب الي آخر حسب حجم وقوة الحاسوب.

الكلمة Word هي موقع تخزين في ذاكرة الحاسوب يتكون من عدد ثابت من الثنائيات ويختلف من حاسوب الي آخر حسب حجم وقوة الحاسوب مثلا  8 و16و 32و64 و128 ثنائية للكلمة.

البت او الثنائية هي أصغر موقع تخزين بالذاكرة وهي اما (0،1).

البايت Byte هو موقع تخزين بالذاكرة وهو اما حرف او رقم او رمز او علامة يتكون من ثمانية ثنائيات.

   كيفية الوصول الي الكلمة :

          يتم الوصول الي الكلمة في ذاكرة الحاسوب عن طريق العنوان الخاص بها، اما في حالة الكلمات الطويلة الثنائيات فهناك عنوان داخل عنوان الكلمة يوصل الي الرمز (البايت) المطلوب داخل تلك الكلمة.

  عناوين الذاكرة الثابتة والمتغيرة :

         عناوين الذاكرة الثابتة هي مواقع تخزين لا يمكن التغيير في بياناتها أي لا تتقبل بيانات جديدة.

        عناوين الذاكرة المتغيرة هي مواقع تخزين البيانات التي يمكن التغيير في بياناتها حسب توجيهات البرنامج مثل رصيد العميل في البنك، يتغير كلما سحب او اودع.

يسمي عنوان الذاكرة سواء كان ثابتاً او متغيراً بالعنوان البسيط اذا كان يشير الي موقع واحد بالذاكرة وبالعنوان المركب اذا كان يشير الي عدة مواقع.

   أنواع البيانات:

         تتفق كل لغات البرمجة في الحد الادني علي أربعة أنواع من البيانات :

                1 –  الأعداد الرقمية Integer وهي مجموعة الاعداد الصحيحة…،1،2،3،0،-1،-2،-3،…

                2 – الاعداد الحقيقية Real وهي التي تحتوي علي الفاصلة العشرية.

                3 – البيانات الحرفية Character وتشمل كل مفاتيح الطباعة من حروف وعلامات وأرقام.

                4 – البيانات المنطقية Logical او Boolean وهي التي تأخذ فقط  قيمة صواب او خطأ.

  الترميز : هو عملية تحويل كل أنواع البيانات الي ما يقابلها في النظام الثنائي.

  جدول الترميز : هو الذي يحدد نوع البيانات في كل عنوان من عناوين الذاكرة ان كان به بيانات.

  ترميز الاعداد الرقمية (الاعداد الصحيحة الموجبة والسالبة) : 

      توجد ثلاث خوارزميات لترميز الاعداد السالبة والموجبة ثنائيا:

              1 – خوارزمية علامة القيمة

             2 – خوارزمية الاتمام (الاكمال) الأحادي

             3 – خوارزمية الاتمام (الاكمال) الثنائي

   تتفق الخوارزميات أعلاه في الآتي :

             1 –  الثنائية في اقصي اليسار(أقصي اليمين في الكتابة العربية) تكون لتحديد علامة الرقم.

             2 –  اذا كان الرقم موجب تكون الثنائية (0)، واذا كان الرقم سالب تكون الثنائية (1).

             3 – تمثل الرقم الموجب بالتمثيل العددي الثنائي العادي.

   أمثلة لتمثيل العدد الموجب :

  الرقم العشري            المقابل الثنائي                    التمثيل الثنائي داخل الكلمة

    +   2                                 10                                                00000010     الرقم الواقع أقصي اليسار يمثل علامة العدد السالب او الموجب

    +   7                                 111                                                00000111        ويعرف بثنائية العلامة

    +   9                               1001                                             00001001

    +   0                                 0                                                00000000

  ثنائية العلامة هي علامة العدد الثنائي السالب والموجب (+،-).

  اختلفت الخوارزميات الثلاث في ترميز العدد السالب :

   خوارزمية علامة القيمة :

           ترمز العدد السالب علي نفس طريقة العدد الموجب مع إعطاء ثنائية العلامة الرقم واحد.

الرقم العشري            المقابل الثنائي                    التمثيل الثنائي داخل الكلمة

    –   2                              10                                              10000010 

    –   7                              111                                             10000111

    –   9                            1001                                           10001001

    –   0                              0                                             10000000

        نلاحظ ان الخوارزمية أعلاه أعطت سالب صفر وموجب صفر تمثيلين مختلفين مع انهما متساويان وهذا هو احد عيوب هذه الخوارزمية.

الجمع والطرح لا يتم فيها بطريقة مباشرة.

     خوارزمية الاتمام (الاكمال) الأحادي : ترمز العدد السالب بعكس ثنائيات الرقم الموجب. مثال

الرقم العشري             التمثيل الثنائي داخل الكلمة

    –   2                                     11111101 

    –   7                                    11111000

    –   9                                   11110110

    –   0                                    11111111

    الخوارزمية أعلاه  لها نفس عيوب خوارزمية علامة القيمة بإعطاء الصفر تمثيلين مختلفين.

وميزتها علي الخوارزمية السابقة ان الجمع والطرح يتم فيها بطريقة مباشرة ودون اعتبار لثنائية العلامة.

في حالة الجمع اذا كان هناك واحد زائد  بعد ثنائية العلامة يضاف في اقصي اليمين مرة أخري.

    خوارزمية الاتمام (الاكمال) الثنائي : ترمز العدد السالب علي نفس طريقة الاكمال الأحادي مع إضافة واحد في اقصي اليمين.

ميزاتها : سالب صفر وموجب صفر يأخذ نفس القيمة.

الجمع والطرح يتم فيها بطريقة عادية ودون أي اعتبار لثنائية العلامة او الواحد الزائد بعد ثنائية العلامة.

الرقم العشري             التمثيل الثنائي داخل الكلمة

    –   2                                 11111110 

    –   7                                11111001

    –   9                                11110111

    –   0                             00000000

   ترميز الاعداد الحقيقية :

    ترمز الاعداد الحقيقية في جزئين من الكلمة الجزء الأول يخزن فيه الكسر ويسمي المانتيسا Mantissa او الخانات الكسرية المؤثرة , اما الجزء الثاني يخزن فيه القوة او الاساس.

العدد الحقيقي هو عبارة عن ضرب الجزء الأول الكسري في الأساس مرفوعا للقوة التي بالجزء الثاني.

  كيفية تمثيل الاعداد الحقيقية :

   نطبع العدد. ويتم ذلك بتحريك العلامة العشرية نحو الشمال او اليمين حتي يصبح العدد :

  • كسري لا يوجد به جزء صحيح
  • الرقم المجاور للخانة العشرية اكبر من صفر

 مثال: كيف يتم تمثيل الاعداد الحقيقية الاتية

                  1-   1000000 =0,1 × 107

يخزن 0,1 في الجزء الكسري وتخزن 7 في جزء القوة

               2-    0,0025 =25, × 10-2   

تخزن 25, في الجزء الكسري و -2 في جزء القوة

 خوارزمية الجمع في الاعداد الحقيقية :

               1 – حرك العلامة العشرية او (الثنائية) للعدد الأصغر نحو الشمال حتي تصبح قوة العدد الأصغر مثل قوة العدد الأكبر.

              2 – أجمع كسري العددين فقط.

              3 – طبع الكسر الناتج بإزالة الاصفار وتعديل القوة ثم قرب حسب المساحة المتاحة للجزء الكسري.

   تمثيل الحروف :

        يتم ترميز الحروف حسب نظم الترميز المعروفة وأشهرها:

              1 – نظام آسكي ASCII وهو النظام القياسي (العالمي) ويبدأ بتشفير الأرقام ثم الحروف الكبيرة ثم الصغيرة.

             2 – نظام ابيسيدك EBCDIC وهو نظام شركة IBM الامريكية وهي اكبر شركات الحواسيب في العالم، ويبدأ النظام بترميز الحروف الصغيرة ثم الكبيرة ثم الأرقام.

   البيانات المنطقية :

       تمثل بثنائية واحدة فقط عندما تكون قيمتها واحد تكون صحيحة وعندما تكون قيمتها صفر تكون خاطئة.

   التحول في نوع البيانات :

  تتيح لغات البرمجة التحول من نوع بيانات الي آخر :

      التحويل من رقمي الي حقيقي (عددي) يكون بإضافة الفاصلة العشرية.

                مثال : حول 442 الي عدد حقيقي = 0,442  × 3 10

  التحويل من حقيقي الي رقمي يتم بطريقتين : 

           1 – الكشط وهو حذف الجزء الكسري مهما كانت قيمته.

          2 – التقريب وهو تحويل الجزء الكسري الي العدد الأقرب.

                    مثال: 37.7  بالكشط تصبح 37 وبالتقريب تصبح 38

  التحويل من حرفي الي رقمي :

      نعطي الحرف قيمة العدد في التمثيل الثنائي وذلك لان كل حرف له عدد مقابل له في نظام الترميز ثم نحول العدد الثنائي الي عشري.

           مثال: اذا كان الحرف (أ) ممثل ب 100000001 ما الرقم المقابل له

      نحول 100000001 الي النظام العشري فنجدها تساوي 257.

   تعريف المتغيرات في لغات البرمجة :

 

            لغة بيسك

لا تشترط تعريف نوع المتغير وهذا له عدة مشاكل.

          لغة فورتران

تعرف نوع المتغير تلقائيا حسب الحرف الأول المستخدم فإذا كان الحرف بين I وN يكون المتغير رقمي، باقي الحروف تعتبر عدد حقيقي.

     لغة سي وباسكال

تعرف المتغير في بداية البرنامج في جزء التعريفات.

 

    التعامل مع المتغيرات :

            المتغير عبارة عن مخزن بذاكرة الحاسوب له اسمه وقيمته ولكن قيمته متغيرة.

  وهو نوعان :

       المتغير البياني البسيط وهو الذي يعبر عن وحدة بيانية مفردة بذاكرة الحاسوب، وهو لا يحقق جميع الأغراض لذلك نحتاج الي المتغير البياني المركب.

       المتغير البياني المركب وهو الذي يشير الي عدة مواقع بالذاكرة، مثال له المصفوفة.

  المصفوفة هي بنائية مركبة لها المواصفات الاتية :

         كل وحداتها البنائية (عناصرها) من نوع واحد و تتكون من أبعاد مركبة وكل بعد مركب من عدد من الوحدات البنائية.

   أنواع المصفوفة:

              1 – المصفوفة ذات البعد الواحد وهي عبارة صف او عمود واحد فقط مثال لها مصفوفة أسماء الطلاب في الفصل.

             2 – المصفوفة ذات البعدين وهي تتكون من صفوف واعمدة ليس بالضرورة ان تكون متساوية.

  تخزين المصفوفة :

    يتم تخزين المصفوفة في الحاسوب علي النحو الاتي:

              1 – تخزين الموقع الأساسي.

             2 – تخزين أبعاد المصفوفة وطول كل بعد.

             3 – تخزين ارقام المؤشرات لكل عنصر.

             4 – لا يتم تخزين موقع كل عنصر بالذاكرة وانما يتم الوصول اليه بمؤشرات العنصر وطول البعد والموقع الأساسي.

   كيفية حساب موقع العنصر في المصفوفة :

      معادلة موقع العنصر في المصفوفة ذات البعد الواحد

     موقع العنصر(س) = الموقع الأساسي + (رقم المؤشر-1)

     معادلة موقع العنصر في المصفوفة ذات البعدين

     موقع العنصر(س ، ص) = الموقع الأساسي + (ص-1)× البعد الأول +(س-1)

  السجلات: Records

            السجل هو مجموعة من الحقول التي تشترك في وصف شيء واحد، وكل حقل يمثل وحدة بيانية مفردة , ولا يشترط ان تكون كل بياناته من نوع واحد، ويتم تخزين الحقول في مواقع متجاورة بالذاكرة. ويتم الوصول لعناصر السجلات داخل الذاكرة عن طريق أسماء الحقول والتي تمثل عناوين لها.

الشكل العام لبرنامج باسكال :  يتكون برنامج باسكال من ثلاثة أجزاء هي:

         1 – رأس البرنامج وهو جزء اختياري لا يؤثر علي تنفيذ البرنامج ويبدأ بالكلمة المحجوزة program يليها اسم يدل علي طبيعة البرنامج.

        2 – التعريفات او الإعلانات ويتم فيه الإعلان عن الجمل المستخدمة داخل البرنامج. 

        3 –  جسم البرنامج وهو الجزء الأساسي لكتابة البرنامج ويبدأ بكلمة Begin وينتهي بكلمة End وبينهما مجموعة من العبارات التي تشكل البرنامج.

  الأشياء التي يجب الإعلان عنها في جزء الإعلانات :

 أسماء الوحدات: وعند الإعلان عن وحدات معينة يمكن استخدام الدوال المتاحة فيها في لغة باسكال وتعرف تحت الكلمة المحجوزة Uses.

 الثوابت: const  وهي العناوين التي لا تتغير قيمتها في الذاكرة وتعرف تحت الكلمة المحجوزة Const.

 المتغيرات: وهي العناوين التي تتغير قيمتها في الذاكرة وهي اما اعداد حقيقية او رقمية او منطقية او حرفية وتعرف تحت الكلمة المحجوزة Var.

السجلات: تعرف تحت الكلمة المحجوزة type.

عبارتي الادخال      Read and Readln      

تستخدم لغة الباسكال العبارتين Read و  Readln لقراءة المعلومات من لوحة المفاتيح او من ملف.

عبارات الإخراج:   Write and Writeln

تستخدم العبارتين لكتابة المعلومات علي الشاشة او علي ملف محدد. الفرق بينهما ان عبارة writeln  تنقل المؤشر الي سطر جديد بعد اظهار او كتابة المعلومات بينما عبارة write  لا تنقل المؤشر الي سطر جديد.

معالجات الحاسوب لانواع البيانات  المختلفة في لغة باسكال:

هناك معالجات تتفق فيها كل لغات البرمجة في التعامل مع أنواع البيانات المختلفة وهي :

معالجـات الاعــداد الحقـيقـة 

 

الضرب

*

عدد حقيقي × عدد حقيقي او × رقم  الناتج عدد حقيقي

القسمة

/

عدد حقيقي ÷ عدد حقيقي او ÷ رقم  الناتج عدد حقيقي

الجمع

+

عدد حقيقي + عدد حقيقي او + رقم  الناتج عدد حقيقي

الطرح

عدد حقيقي – عدد حقيقي  او – رقم  الناتج عدد حقيقي

القيمة المطلقة

Abs(x)

 

القيمة المطلقة  لا تغير من نوع العدد

المربع للعدد   الحقيقي

Sqr(x)

دالة المربع لاي عدد حقيقي            تنتج عدد حقيقي

الجذر التربيعي

Sqrt(x)

الجذر التربيعي لاي عدد حقيقي         ينتج عدد حقيقي

جا

sin(x)

 

 

                      هذه الدوال

                 تنتج عدد  حقيقيا

         سواء أكانت قيمة X رقما ام عدد

جتا

cos(x)

ظا

tan(x)

معكوس الظل

arc tan (x)

اللوغريثم الطبيعي

ln(x)

القوي

exp(x)

 

 معـالجات الاعـداد الرقمـية

الضرب

*

ضرب الأرقام الصحيحة            ينتج رقما 

القسمة

/

قسمة الأرقام الصحيحة         ينتج عدد حقيقي

الجمع

+

جمع الأرقام الصحيحة              ينتج رقما

الطرح

طرح الأرقام الصحيحة              ينتج رقما

القسمة

Y div X

 

هذه القسمة تنتج رقما بكشط الكسر الناتج بعد قسمة Y  علي X

باقي القسمة

Y mod x

هذه تنتج رقما هو باقي قسمة Y  علي X

الجذر التربيعي

Sqr(x)

هذه دالة المربع وتنتج رقما اذا كان X رقما

الكشط

Trunc(x)

هذه تنتج من العدد الحقيقي X رقما بكشط الكسر

التقريب

Round(x)

هذه تنتج من العدد الحقيقي X رقما بتقريب الكسر

 

معالجات البيانات المنطقية

 

AND

تحقق كل الشروط                    وتنتج قيمة منطقية

OR

تحقق أي شرط                       وتنتج قيمة منطقية

NOT

نفي الشرط                           وينتج قيمة منطقية

أقل من                                وتنتج قيمة منطقية

=>

أقل من أويساوي                    وتنتج قيمة منطقية

=

يساوي                                وتنتج قيمة منطقية

<> 

لا يساوي                             وتنتج قيمة منطقية

Odd(x)

تحقق فردية X                       وتنتج قيمة منطقية

Eol(f)

تحقق انتهاء السطر                 و تنتج قيمة منطقية

Eof(f)

تحقق انتهاء الملف                  وتنتج قيمة منطقية

 

 معالجـات الحـروف : 

نعني بها الحروف الهجائية والأرقام و حرف الفراغ، وتوجد دالتان لمعالجة الحروف وهما :

            1 – الدالة (Ord(c الحرف c  يشير الي أي حرف في جدول الترميز , وناتج الدالة دائما رقم وهو عبارة عن الرقم المقابل لذلك الحرف من جدول الترميز.

           2 – الدالة (Chr (i الحرف i يشير الي أي رقم من جدول الترميز , وناتج الدالة دائما حرف وهو عبارة عن الحرف المقابل لذلك الرقم من جدول الترميز.

 اذن الدالة (Ord(c و (Chr (i متعاكستان.

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

  البنائية المتجردة هي عبارة عن بنائية بيانية زائدا البريمجات التي تمكن من التعامل معها , وتصمم البنائية المتجردة عادة بطريقة تناسب الحذف والاضافة.

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

        1 – المكدسات: وهي عبارة عن بنائية بيانية  متجردة يتم فيها الحذف والاضافة من اتجاه واحد ويعرف هذا النظام ب ليفو LIFO اختصارا last input first out put أي ان من دخل أخيرا يخرج أولا. وهي تناسب تطبيقات المخازن حيث يتم سحب الأشياء التي وصلت أخيرا قبل السابقة , سميت هذه البنائية بالمكدسات لتكدس الأشياء بعضها فوق بعض وليس بالإمكان سحب السفلي قبل العلوي.

       2 – بنائية الصفوف: وهي عبارة عن بنائية  بيانية متجردة يتم فيها الحذف والاضافة من اتجاهين متعاكسين مثل الصف تماما، ويعرف هذا النظام بنظام فيفو FIFO اختصارا ل first input first output وتناسب هذه البنائية كل التطبيقات التي تستخدم الصفوف مثل صفوف العربات في صف البنزين.

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

الشكل العام للسجل يتكون من حقلين، الحقل الأول يخزن فيه بيانات السجل والحقل الثاني يخزن فيه عنوان السجل التالي له في الذاكرة ويسمي بالمؤشر كما موضح بالشكل

ويعرف السجل في القوائم المتصلة بالعقدة node ، وهناك عقدتان اساسيتان في القوائم المتصلة هما رأس القائمة وذيل القائمة :

رأس القائمة : وهي العقدة الاولي والتي ليست هنالك عقدة تحفظ مكانها أو تشير اليها.

العقدة الأخيرة: (ذيل القائمة) ليس بها عنوان عقدة أولا تشير لعقدة تالية لها وهي تشير الي عقدة وهمية تعني نهاية القائمة.

4 – قواعد البيانات: يتم تصميمها بواسطة برمجيات قواعد البيانات مثل برنامج اس كيو إل (sql) او اوراكل oracle او فوكس برو foxbro وهي تناسب المجموعات البيانية الضخمة والمتداخلة مثل:

      أ – بيانات عملاء البنك وحركة حساباتهم.

     ب – بيانات حركة الطيران في الخطوط المختلفة.

      ج – بيانات المسافرين وأمتعتهم.

5 – بنائية قواعد البيانات العلائقية : وهي ربط بين منطقي وعملي بين البنائيات المتجردة وقواعد البيانات ومثال لذلك:

   بيانات العملاء وبيانات المسافرين وبيانات البضائع تمثل قاعدة بيانات، وعند ربط تلك البيانات مع بعضها تمثل بنائية متجردة معقدة تعرف باسم قواعد البيانات العلائقية، وهي تناسب الأنظمة التي تتعامل مع بيانات ضخمة ومختلفة ومتداخلة.

مقارنة القوائم المتصلة و المصفوفات:

المقارنة ل

القوائم المتصلة

المصفوفات

مساحة التخزين

ديناميكية مساحة التخزين

حجم المساحة ثابت منذ البداية

إضافة أو حذف عنصر

سهولة الحذف والاضافة

صعوبة الحذف والاضافة

البحث عن عنصر

طريقة البحث المتتالي

تعدد طرق البحث