📘 شرح الدرس الوحدة 1: حل المشكلات وتصميم الخوارزميات · الدرس 2 من 17
الدرس 2
📋 في الخطة: الوحدة 2. تصميم الخوارزميات

تصميم الخوارزميات

نصف خطوات الحل بالسودوكود وخرائط التدفق، ونتعرّف على التقسيم والفوز والتراجع.

if true ✓ false → else
بعد هذا الدرس ستستطيع أن:
  • تعرّف الخوارزمية وتذكر خصائصها.
  • تكتب خوارزمية بالسودوكود لمسألة بسيطة.
  • ترسم خريطة تدفق بأشكالها الصحيحة للتسلسل والقرار والتكرار.
  • تحوّل خوارزمية إلى خطوات برنامج.
  • تشرح فكرة التقسيم والفوز والتراجع وتطبقهما على مثال.

١ما هي الخوارزمية؟

الخوارزمية (Algorithm) مجموعة من الخطوات المرتّبة والواضحة التي تحلّ مشكلة محددة. بعد أن نفكّك المشكلة (الدرس السابق) نكتب خوارزمية تحدد ترتيب تنفيذ المهام.

وصفة الطبخ خوارزمية، وتعليمات تركيب قطعة أثاث خوارزمية، وخطوات سحب النقود من الصرّاف خوارزمية.

خاصية الخوارزمية الجيدةمعناها
واضحة ومحددةكل خطوة لها معنى واحد لا يحتمل التأويل
مرتّبةالخطوات تُنفَّذ بتسلسل معروف
منتهيةتتوقف بعد عدد محدود من الخطوات
لها مدخلات ومخرجاتتستقبل بيانات وتنتج نتيجة
فعّالةكل خطوة يمكن تنفيذها فعلًا

نصف الخوارزمية بطريقتين رئيسيتين: السودوكود (نص منظم) وخريطة التدفق (رسم).

٢السودوكود Pseudocode

السودوكود كتابة خطوات الحل بلغة قريبة من لغة البشر، لكن بصياغة منظمة تشبه البرمجة. لا يُنفَّذ على الحاسب، بل يساعدك على التفكير قبل الكود. هذه الكلمات التي نستخدمها في المقرر:

بالعربيةبالإنجليزيةالاستخدام
ابدأ / توقفSTART / ENDبداية الخوارزمية ونهايتها
اقرأ ... وخزنه فيREAD / INPUTاستقبال قيمة من المستخدم
اطبعPRINT / OUTPUTعرض قيمة أو رسالة
احسب أو x = ...SET / ←إسناد قيمة إلى متغير
إذا كان ... وإلاIF ... ELSEاتخاذ قرار
طالما / كرّرWHILE / FORتكرار خطوات

مثال: متوسط ثلاثة أعداد

  1. ابدأ
  2. اقرأ ثلاثة أعداد وخزنها في a و b و c
  3. احسب المجموع: sum = a + b + c
  4. احسب المتوسط: avg = sum / 3
  5. اطبع avg
  6. توقف
  1. START
  2. READ a, b, c
  3. SET sum ← a + b + c
  4. SET avg ← sum / 3
  5. PRINT avg
  6. END

٣خرائط التدفق Flowcharts

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

البداية والنهاية
شكل بيضاوي
إدخال أو إخراج
متوازي أضلاع: اقرأ أو اطبع
معالجة
مستطيل: حساب أو إسناد
قرار
معيّن: سؤال جوابه نعم أو لا
خط التدفق
سهم يحدد اتجاه التنفيذ
نقطة التقاء
دائرة تجمع المسارات

١. التسلسل: متوسط ثلاثة أعداد

ابدأاقرأ ⁦a⁩ ، ⁦b⁩ ، ⁦c⁩sum = a + b + cavg = sum / 3اطبع ⁦avg⁩توقف
خريطة التدفق

٢. القرار: ناجح أم راسب

  1. ابدأ
  2. اقرأ الدرجة وخزنها في n
  3. إذا كان n >= 60 :
  4. اطبع «ناجح»
  5. وإلا:
  6. اطبع «راسب»
  7. توقف
ابدأاقرأ ⁦n⁩n >= 60نعماطبع «ناجح»لااطبع «راسب»توقف
خريطة التدفق

٣. التكرار: مجموع الأعداد من 1 إلى n

  1. ابدأ
  2. اقرأ n
  3. sum = 0
  4. i = 1
  5. طالما i <= n :
  6. sum = sum + i
  7. i = i + 1
  8. اطبع sum
  9. توقف
ابدأاقرأ ⁦n⁩sum = 0i = 1i <= nنعمsum = sum + ii = i + 1لااطبع ⁦sum⁩توقف
خريطة التدفق

لاحظ السهم الراجع إلى المعيّن: هو ما يصنع التكرار. وعندما يصبح الشرط «لا» يخرج التنفيذ من الحلقة.

٤من الخوارزمية إلى البرنامج

بعد أن تكتب الخوارزمية يصبح تحويلها إلى كود عملية ترجمة شبه مباشرة: كل خطوة تقابل سطرًا أو أكثر. قارن الأعمدة الثلاثة لمسألة «زوجي أم فردي»:

السودوكود

  1. ابدأ
  2. اقرأ الرقم وخزنه في n
  3. إذا كان n % 2 == 0 :
  4. اطبع «زوجي»
  5. وإلا:
  6. اطبع «فردي»
  7. توقف

خريطة التدفق

ابدأاقرأ ⁦n⁩n % 2 == 0نعماطبع «زوجي»لااطبع «فردي»توقف

جافا

snippet
Scanner in = new Scanner(System.in);int n = in.nextInt();if (n % 2 == 0)    System.out.println("زوجي");else    System.out.println("فردي");

٥تقنية التقسيم والفوز Divide and Conquer

فكرتها: قسّم المشكلة إلى أجزاء أصغر من النوع نفسه، حلّ كل جزء، ثم اجمع الحلول. أشهر مثال: البحث عن كلمة في القاموس؛ لا تقرأ الصفحات واحدة واحدة، بل تفتح في المنتصف ثم تستبعد النصف الذي لا يحتوي الكلمة.

جرّب: خمّن الرقم من 1 إلى 100

الحاسب يخمّن رقمك بطريقة التقسيم والفوز

  1. ابدأ
  2. low = 1 ، high = 100
  3. طالما لم تجد الرقم:
  4. mid = (low + high) / 2
  5. إذا كان الرقم السري = mid : اطبع «وجدته» وتوقف
  6. إذا كان الرقم السري أكبر: low = mid + 1
  7. وإلا: high = mid - 1
  8. توقف

في كل خطوة نستبعد نصف الاحتمالات، لذلك لا يحتاج الحاسب أكثر من 7 محاولات لأي رقم من 1 إلى 100، بينما التخمين المتسلسل قد يحتاج 100 محاولة.

٦تقنية التراجع Backtracking

فكرتها: جرّب طريقًا خطوة بخطوة، فإذا وصلت إلى طريق مسدود ارجع إلى آخر نقطة كان فيها خيار آخر، وجرّب الخيار التالي. هكذا يخرج الإنسان من متاهة: يمشي، وإذا اصطدم بجدار عاد وجرّب ممرًا آخر.

جرّب: الخروج من المتاهة

ابحث عن طريق من S إلى G. ترتيب المحاولة: يمين، أسفل، يسار، أعلى

🟩 الطريق الحالي · 🟥 طريق مسدود تراجعنا عنه · 🟨 الموقع الحالي

  1. ابدأ من الخانة S
  2. كرّر حتى تصل إلى G:
  3. إذا وُجدت خانة مجاورة مفتوحة لم تزرها: تحرّك إليها وأضفها إلى الطريق
  4. وإلا: علّم الخانة الحالية طريقًا مسدودًا وارجع خطوة إلى الخلف
  5. اطبع الطريق
  6. توقف

توقّع وتحقّق

أي شكل في خريطة التدفق يمثل «اقرأ العدد»؟

الإدخال والإخراج يُرسمان بمتوازي الأضلاع.

أي شكل يمثل سؤالًا جوابه نعم أو لا؟

المعيّن هو شكل القرار.

خوارزمية لا تتوقف أبدًا تفتقد خاصية:

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

البحث عن كلمة في قاموس بفتحه من المنتصف ثم استبعاد النصف مثال على:

نقسّم المشكلة إلى نصفين ونكمل في النصف الصحيح فقط.

عند الوصول إلى طريق مسدود في المتاهة، تقنية التراجع:

هذا معنى التراجع: الرجوع خطوة وتجربة الخيار التالي.

الخلاصة

انتقل إلى تقييم الدرسأسئلة الاختيار، وصح وخطأ، وأكمل الفراغات، والأسئلة العملية.ابدأ التقييم ←