مقدمة للخوارزميات – Introduction to algorithms

Ashraf Salem ∙

Everybody in this country should learn to program a computer, because it teaches you how to think

Steve Jobs

كما يحرض مؤسس شركة Apple تعلم برمجة الحاسوب يساعد على اخلاق طريقة تفكير منهجية مفيدة لحل المشاكل أو Problem Solving, و لكن في نفس الوقت يجب علينا التفريق ما بين البرمجة و التفكير الحسابي (Computational Thinking). بواسطة التفكير الحسابي يمكننا ايجاد خوارزمية (Algorithm) لحل مشكلة و بعدها نستخدم البرمجة لكي نعبر عن الخوارزمية بطريقة يفهمها الحاسوب لكي يمكنه تطبيقه.

الان قد تسأل نفسك ما هي الخوارزميات؟

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

مشكلة #1: عدد الأشخاص في غرفة.

أنت في غرفة و تريد معرفة عدد الأشخص فيها. أذا كنت مثلي ستقوب بالأغلب بالتأشير على كل شخص ,كل واحد على حدة, و سوف تعد من الصفر, 1, 2, 3, 4 و هكذا دواليك… هذا مثال لخوارزمية 🙂

يمكننا أيضا وصف الخطوات بطريقة أكثر رسمية (Pseudocode):

  • نسمي عدد الأشخاص بالحرف N الذي يساوي 0 في البداية
  • لكل شخص في الغرفة N = N + 1
  • عندما ننتهي من عد الأشخاص N يحتوي على عدد الأشخاص في الغرفة

غالبا ما يتم تمثيل الخوارزميات بواسطة ما يسمى بمخطط أنسيابي (Flowchart) لكي يمكن تتبع خطوات الخوارزمية بطريقة أسهل. المفهوم بسيط, نبدأ من start و نتبع الأسهم, و أذا نصل الى نقطة اتخاد قرار نتخد المسار المناسب.

دعنا نرى مثال اّخر.

مشكلة #2: ألتقاط الفراولة.

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

من العادة يكتب الPseudocode بالأنجليزية لكي يكون أقرب للغات البرمجة.

Pseudocode:

for each strawberry
    if strawberry is red
        pick strawberry and put in basket
    else if strawberry is green
        do nothing
    end if

    if Basket is full
        empty basket
    end if
end for

و يمكننا أيضا تمثيل المخطط الانسيابي لهذه الخوارزمية.

Flowchart of strawberry algorithm

هذه الامثلة بسيطة جدا و لكن ترينا كيف ان في حياتنا اليومية نستخدم العديد من الخوارزميات و نجعلها أكثر كفائة. لصنع كعكة نتبع وصفة (خوارزمية), لعبور الطريق نتبع أشارات المرور (خوارزمية) و للذهاب الى المدرسة نتبع مسار محدد (خوارزمية). من المهم جدا في علم الحاسوب تطوير القدرة على تجريد المشاكل (Problem abstraction) لكي يمكن تطبيق خوارزمية عليها لحلها بشكل أسهل.


Ashraf Salem

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

There are 2 comments.

Leave a Reply

Your email address will not be published. Required fields are marked *