تجاوز إلى المحتوى الرئيسي
تابعنا على تيليجرامانضم

الخوارزميات

الخوارزميات والبرمجة · المهارات الرقمية

آخر تحديث:

محتويات الموضوع (١٩)

شرح الموضوع

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

نتاجات التعلُّم :

  • أمثّل الخوارزميات المُركّبة باستخدام مُخطّطات سير العمليات ⁦(Flow Charts)⁩.
  • أمثّل الخوارزميات المُركّبة باستخدام الخوارزمية شبه الرمزية ⁦(Pseudocode)⁩.
  • أطبّق الخوارزميات المُقترحة على مجموعة مُتنوّعة من المُدخَلات؛ لاختبار أدائها، وتحليل نتائجها.
  • أعدّل الخوارزميات؛ لتحسين أدائها، وضمان تحقيقها للأهداف المنشودة بناءً على نتائج اختبارها وتحليلها.
  • أقيّم الخوارزميات بناءً على معايير مُحدّدة بدقّة.
  • أختار أنسب خوارزمية لحلّ مشكلة مُحدّدة بناءً على وضوحها ودقّتها وفاعليتها في التوصّل إلى الحلّ المطلوب.

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

تعرّفتُ سابقًا أنّ برنامج الحاسوب هو مجموعة من الأوامر التي تُكتب بإحدى لغات البرمجة؛ بُغية حلّ مشكلة ما، أو أداء مهمة مُحدّدة باستخدام جهاز الحاسوب. تعرّفتُ أيضًا أنّ مجموعة الخطوات المتسلسلة والمنطقية التي توصل إلى حلّ المسألة تُسمّى الخوارزمية، وأنّه يُمكن وصفها عن طريق الخوارزمية شبه الرمزية ⁦(Pseudocode)⁩، أو مُخطّط سير العمليات ⁦(Flowchart)⁩.

في ما يأتي مجموعة من العمليات، أرسم الرمز المناسب لكلّ منها باستخدام برنامج حاسوبي:

تمثيل عملية المعالجة.

تمثيل قرار أو شرط.

تمثيل نقطة البداية أو نقطة النهاية في المُخطّط.

نقطة اتصال أو نقطة مرجعية داخل المُخطّط.

حلّ المسألة

المسألة البرمجية: خمس خطوات متتابعة

  • لا شكّ أنّه يُمكن التوصّل إلى الناتج بأكثر من طريقة صحيحة، لكنّ بعض هذه الطرائق تُعدّ أفضل من غيرها بناءً على الوقت المُستغرَق في عملية الحلّ، واستخدام الحدّ الأدنى من الموارد.
  • وهذا كله يعتمد على كفاءة الشخص الذي يتولّى حلّ المسألة، ومدى فهمه لها.
الشكل (2-1): خطوات حلّ المسألة البرمجية.
الشكل (2-1): خطوات حلّ المسألة البرمجية.
  • فهم المسألة وتحليلها (تحديد المُتطلّبات والمُدخَلات والمُخرَجات).
  • تصميم الحلّ (كتابة خوارزمية، أو إنشاء مُخطّط سير العمليات).
  • كتابة البرنامج (اختيار لغة البرمجة المناسبة، وترجمة الخوارزمية إلى كود).
  • تنفيذ البرنامج واختباره (تجربة البرنامج على سيناريوهات مُتعدّدة للتأكّد من صحّته).
  • التوثيق (توضيح العملية والكود لضمان سهولة الفهم والصيانة مستقبلًا).

الخطوة الأولى: فهم المسألة وتحليلها.

أولًا: نفهم المسألة قبل أن نكتب شيئًا

تحليل المسألة

أحلّل - بالتعاون مع أفراد مجموعتي - كل مسألة من المسائل الآتية:

إيجاد المُتوسّط الحسابي لثلاثة أعداد.

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

إيجاد ناتج قسمة خمسة أعداد على العدد 3.

الخطوة الثانية: كتابة الخوارزمية.

ثانيًا: نرتّب الحلّ خطوات واضحة

  • يمكن في هذه الحالة استخدام خوارزمية شبه رمزية ⁦(Pseudocode)⁩، أو مخطط سير العمليات ⁦(Flowchart)⁩.
الشكل (2-2): مخطط سير العمليات لمسألة حاصل ضرب عددين.
الشكل (2-2): مخطط سير العمليات لمسألة حاصل ضرب عددين.

أناقش

أتعاون مع أفراد مجموعتي على الإجابة عن الأسئلة الآتية:

أيهما أسهل: كتابة الخوارزمية شبه الرمزية أم رسم مخطط سير العمليات؟ أبرر إجابتي.

هل يمكن إجراء تعديلات على الخوارزمية السابقة؟

إذا كانت إجابة السؤال السابق بالإيجاب، فما هذه التعديلات؟

ما تأثير هذه التعديلات في حل المسألة؟

إثراء

  • التعليق: يُستخدم هذا الرمز في كتابة ملاحظات أو تعليقات لتوضيح إحدى العمليات أو شيء ما.
  • مستند إدخال/ إخراج: يُستخدم هذا الرمز عند الحاجة إلى استيراد مدخلات من أحد الملفات أو تصدير مخرجات إلى ملف ما.

الخطوة الثالثة: كتابة البرنامج باستخدام لغات البرمجة.

ثالثًا: نترجم الخوارزمية إلى كود

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

رابعًا: نجرّب البرنامج بقيم مختلفة

  • يتمثل الهدف الأساسي من ذلك في اكتشاف أيّة أخطاء أو تحسين الأداء؛ لضمان تحقيق الأهداف المنشودة من البرنامج.

الخطوة الخامسة: التوثيق.

خامسًا: نوثّق حتى يفهم غيرنا الكود

  • وتشمل هذه الخطوة كتابة تقرير يُبيّن تفاصيل البرنامج، ومبدأ عمله، وكيفية تشغيله، إضافةً إلى جمل التعليقات داخل الكود، والتوثيق الخارجي (مثل دليل المستخدم).
الشكل (2-5): مخطط سير عمليات تفرعي.
الشكل (2-5): مخطط سير عمليات تفرعي.

الخوارزمية للجمل الشرطية

الشرط: ماذا نفعل إذا تحقّق؟

  • تُستخدم الجمل الشرطية في تحديد إذا كان العدد المُدخل موجباً أم سالباً، أو تحديد إذا كان العدد يقع ضمن فئة مُعيّنة من القيم وغيرها.
  • يُستخدم شكل المعين في مخططات سير العمليات لتمثيل الشرط كما هو مُبيّن في الشكل (2-5)
  • يستقبل مُدخلاً مُعيّناً من المرحلة التي تسبقه، ثم يخرج منه مساران
  • أحدهما يُنفذ إذا كان جواب الشرط صحيحاً (نعم)، والآخر يُنفذ إذا كان جواب الشرط غير صحيح (لا)
  • ويُطلق على هذه المخططات - كما تعرّفنا سابقاً - اسم المخططات التفرّعية.

اعتماداً على خطوات حل المسألة، أحلّ - بالتعاون مع أفراد مجموعتي - المسألة الآتية:

أدخل العدد ⁦X⁩ والعدد ⁦Y⁩، ثم أطبع العبارة الآتية: "⁦X is greater than Y⁩" إذا كانت قيمة ⁦X⁩ أكبر من قيمة ⁦Y⁩، وأطبع العبارة الآتية: "⁦Y is greater than X⁩" إذا كانت قيمة ⁦Y⁩ هي القيمة الكبرى.

بعد ذلك أعدّل على خطواتي لإضافة خيار: في حال كان العددان متساويين، فإنني أطبع العبارة الآتية: "⁦They are equal⁩"، ثم أطبع العددين.

  • قد يتضمّن البرنامج جملاً شرطية متداخلة، بحيث تُنفذ الجملة الشرطية الداخلية بناءً على صحة الشرط أو عدم صحته في الجملة الشرطية الخارجية.

المُخرجات: عبارة مُحدّدة تعتمد على قيمة

الشكل (2-6): مُخطط سير العمليات للتحقق من قابلية قسمة عدد على العدد 6.
الشكل (2-6): مُخطط سير العمليات للتحقق من قابلية قسمة عدد على العدد 6.

إضاءة

أنفذ - بالتعاون مع أفراد مجموعتي - البرنامج الوارد في الشكل (2-7) باستخدام مُحرّر بايثون للتحقق من صحة النتائج، فضلاً عن فحص المُخرجات لضمان دقتها، وإضافة جمل التعليقات والملاحظات المناسبة داخل الكود لتوثيقه، بما يُسهّل فهم الخطوات، ويساعد على توضيح الوظائف.

نتتبّع خوارزمية خصومات المتجر

نتتبّع مخطط علامات الطلبة

  • تُحسب علامة الطالب النهائية في إحدى الجامعات بناءً على مجموع ثلاث قِيَم، هي: علامة منتصف الفصل ⁦(Mid Grade)⁩، وعلامة المشروع ⁦(Project's Grade)⁩، وعلامة الامتحان النهائي ⁦(Final Grade)⁩. إذا كان المجموع النهائي ⁦(Total)⁩:
(Total)الرمز
85 أو أكثر(A)
75 أو أكثر، وأقلَّ من 85(B)
65 أو أكثر، وأقلَّ من 75(C)
50 أو أكثر، وأقلَّ من 65(D)
أقلَّ من 50(F)
  • يُبيّن مُخطَّط سير العمليات في الشكل (2-9) الخطوات التفصيلية لحساب الرمز بناءً على المجموع.
الشكل (2-9): مُخطَّط سير العمليات لحساب علامات الطلبة في إحدى الجامعات.
الشكل (2-9): مُخطَّط سير العمليات لحساب علامات الطلبة في إحدى الجامعات.
Mid GradeProject's GradeFinal GradeTotal
252835
152030
202525

بناءً على مُخطَّط سير العمليات المُبيَّن في الشكل (2-9)، أتتبَّع الخطوات الواردة في المُخطَّط لإيجاد الناتج لكلِّ من الحالات الآتية، ثمَّ أملأ الفراغ في الجدول بما هو مناسب الجدول (2-2): تتبع النتائج بناءً على مخطط سير العمليات في الشكل (2-9)

أكتب خوارزمية شبه رمزية للتعبير عن مُخطَّط سير العمليات السابق.

هل يُمكن اختصار الخطوات الواردة في الخوارزمية؟ أُوضِّح إجابتي، وأُعدِّل الخوارزمية لتحقيق ذلك.

أُحوِّل - بالتعاون مع أفراد مجموعتي - مُخطَّط سَيْر العمليات السابق إلى برنامج مكتوب بلغة البرمجة بايثون، ثمَّ نُجرِّبه معًا باستخدام مُحرِّر بايثون للتحقق من صحَّته، ثمَّ نعرض البرنامج المكتوب أمام أفراد المجموعات الأخرى، ونُقارنه بالبرامج التي كتبوها.

الخوارزمية لجمل التكرار

التكرار: نعيد الأوامر عدة مرّات

  • تَعَرَّفتُ سابقًا الحلقات (أي جمل التكرار)، واستخدمتها في برمجية سكراتش ⁦(Scratch)⁩، وفي لغة البرمجة بايثون ⁦(Python)⁩.
الشكل (2-10): مُخطَّط سَيْر العمليات لجملة التكرار.
الشكل (2-10): مُخطَّط سَيْر العمليات لجملة التكرار.

أُحلِّل المسألة الآتية باستخدام خطوات حَلَّ المسألة

الشكل (2-11): مُخطَّط سَيْر العمليات لإدخال مجموعة أعداد، وتصنيفها إلى موجبة وسالبة.
الشكل (2-11): مُخطَّط سَيْر العمليات لإدخال مجموعة أعداد، وتصنيفها إلى موجبة وسالبة.
  • يُمكن تحويل المُخطَّط - كما تعلَّمتُ سابقًا كيفية كتابة جمل الدوران أو التكرار - باستخدام لغة البرمجة بايثون ⁦(Python)⁩، أو باستخدام برمجية سكراتش ⁦(Scratch)⁩.

أُفكِّر في التعديل الذي يجب إجراؤه على المُخطَّط السابق إذا بلغت الأعداد المُدخَلة (20) عددًا، ثمَّ أُشارك الزملاء/ الزميلات بالصف في ما أتوصل إليه من نتائج.

أتعاون مع أفراد مجموعتي على ترجمة مخطط سير العمليات الوارد في الشكل (2-11) إلى برنامج باستخدام لغة بايثون، ثمَّ نُنفذ البرنامج معًا للتحقق من صحَّة النتائج، فضلًا عن فحص المُخرجات لضمان دقتها، وإضافة جمل التعليقات والملاحظات المناسبة داخل الكود لتوثيقه، بما يُسهِّل فهم الخطوات، ويساعد على توضيح الوظائف. أُشارك أفراد المجموعات الأخرى في ما توصَّلتُ إليه من خلال مجموعتي، ونتبادل معًا الأفكار والتغذية الراجعة لتحسين الحَلَّ.

أُفكِّر في المثال السابق، ثمَّ أُحدِّد خطوة واحدة أو مجموعة خطوات يُمكن اختصارها، ثمَّ أُعدِّل على مُخطَّط سَيْر العمليات.

إضاءة

كيف نقارن بين خوارزميتين؟

  • عند مقارنة الخوارزميات بعضها ببعض، لا بُدَّ من مراعاة العوامل الآتية:
  • عدد العمليات التي يُراد تنفيذها: يعتمد ذلك على لغة البرمجة المُستخدَمة، وطريقة المُبرمج في تحويل الخوارزمية إلى برنامج.
  • حجم الذاكرة المُستخدَم: كلَّما قلَّ استهلاك حجم الذاكرة كانت الخوارزمية أفضل من غيرها.

استكشاف الأخطاء وتصحيحها

نصطاد الأخطاء في مخطط التكرار

الشكل (2-12): مُخطَّط سَيْر العمليات لحساب مجموع أوّل (10) أرقام زوجية باستخدام حلقة تكرار.
الشكل (2-12): مُخطَّط سَيْر العمليات لحساب مجموع أوّل (10) أرقام زوجية باستخدام حلقة تكرار.

أُحلّل - بالتعاون مع أفراد مجموعتي - مُخطَّط سَيْر العمليات الذي يُبيّنه الشكل (2-12)، والذي يُمثّل إيجاد مجموع الأعداد الزوجية المحصورة بين (1) و(20)، ثمَّ أعمل مع أفراد مجموعتي على اكتشاف الأخطاء وتصحيحها، ثمَّ نُناقش أفراد المجموعات الأخرى في هذه الأخطاء، ونتَبادل معًا التغذية الراجعة.

المواطنة الرقمية

خوارزميات آمنة ومسؤولة

أُقيّم تعلّمي

أقيّم تعلّمي: أكتب وأتتبّع

أستخدم ما تعلَّمته من معارف في هذا الدرس للإجابة عن السؤالين الآتيين:

السؤال الأوّل: أكتب خوارزمية شبه رمزية للتعبير عن كل مسألة من المسائل الآتية:

إدخال علامات طالب في (7) مواد، وطباعة مُعدَّلها والعلامة الكبرى من بينها.

حساب مضروب العدد ⁦n⁩.

إدخال مُكوّنات بريد إلكتروني؛ كلّ على حدة، ثمَّ طباعتها في صورة بريد إلكتروني صحيح.

المهارات: أُوظّف مهارات التفكير الناقد والبحث الرقمي والتواصل في الإجابة عن الأسئلة الآتية:

السؤال الأوّل: أُقارن الخوارزمية التي كتبتها في السؤال الأوّل (من بند المعرفة) بالخوارزميات التي كتبها أفراد مجموعتي، ثمَّ نُحدّد معًا الخوارزمية التي يُمكن كتابتها بأقلَّ عدد مُمكن من الخطوات وفي أقصر وقت.

السؤال الثاني: تدفع إدارة أحد المصانع رواتب أساسية للعمّال بناءً على فئاتهم، إضافةً إلى أجر عن ساعات العمل الإضافي وفق المعايير الآتية:

العمّال من الفئة ⁦(A)⁩: الراتب الأساسي (500) دينار، و(7) دنانير عن كل ساعة عمل إضافية.

العمّال من الفئة ⁦(B)⁩: الراتب الأساسي (400) دينار، و(5) دنانير عن كل ساعة عمل إضافية.

العمّال من الفئة ⁦(C)⁩: الراتب الأساسي (300) دينار، و(3) دنانير عن كل ساعة عمل إضافية.

شرط ألّا يتجاوز عدد ساعات العمل الإضافي لكل عامل (30) ساعة في الشهر.

أُحلّل المسألة وفقًا لخطوات حلّ المسألة التي تعلَّمتها.

أرسم مُخطَّط سَيْر العمليات لحساب إجمالي ما ستدفعه إدارة المصنع من رواتب في نهاية كل شهر، علمًا بأنَّ العمّال في المصنع مُوزَّعين على النحو الآتي: (15) عاملاً من الفئة ⁦(A)⁩، و(17) عاملاً من الفئة ⁦(B)⁩، و(10) عمّال من الفئة ⁦(C)⁩.

السؤال الثالث: أكتب خوارزمية شبه رمزية لطباعة جداول الضرب للأعداد من (3) إلى (9)؛ على أن تتضمَّن حاصل ضرب كل عدد في الأرقام من (1) إلى (10) على شكل جدول مُنظَّم، ثمَّ أرسم مُخطَّط سَيْر العمليات الذي يُمثّل هذه المسألة.

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

تعريفات أساسية

برنامج الحاسوب

مجموعة من الأوامر التي تُكتب بإحدى لغات البرمجة؛ بُغية حلّ مشكلة ما، أو أداء مهمة مُحدّدة باستخدام جهاز الحاسوب

الخوارزمية

مجموعة الخطوات المتسلسلة والمنطقية التي توصل إلى حلّ المسألة

المسألة (المشكلة)

الناتج أو الهدف الذي يُراد الوصول إليه باتّباع مجموعة من الخطوات التي قد تتطلّب إجراء عمليات حسابية أو عمليات منطقية

فهم المسألة وتحليلها

تحديد المسألة، وتحديد المُدخَلات والمُخرَجات وطرائق المعالجة المختلفة لها

كتابة الخوارزمية

تمثيل المسألة بطريقة منظمة ومنطقية باستخدام الخوارزمية

كتابة البرنامج باستخدام لغات البرمجة

بعد تمثيل الخوارزمية، تُترجم خطواتها إلى جمل برمجية حقيقية باستخدام لغات البرمجة المختلفة

تنفيذ البرنامج واختبار صحته

تنفيذ البرنامج باستخدام جهاز الحاسوب؛ بُغية اختباره، والتحقق من صحته

التوثيق

كتابة تقرير يُبيّن تفاصيل البرنامج، ومبدأ عمله، وكيفية تشغيله، إضافةً إلى جمل التعليقات داخل الكود، والتوثيق الخارجي

الجمل الشرطية

تؤدي الجمل الشرطية دوراً مهماً في عملية اتخاذ القرار؛ إذ يتطلب تنفيذ أمر مُعيّن أو مجموعة من الأوامر تحقق بعض الشروط

جمل التكرار

تُستخدم جمل التكرار في كتابة البرامج التي تتطلَّب تنفيذ مجموعة من الأوامر والتعليمات عددًا من المرَّات

وقت التنفيذ

الوقت اللازم لتنفيذ البرنامج المُعتمد على إحدى الخوارزميات

الحل المثالي

أفضل حَلَّ يُمكن تقديمه للمسألة

أسئلة محلولة

أيٌّ ممّا يأتي يُقصد به: الناتج أو الهدف الذي يُراد الوصول إليه باتّباع مجموعة من الخطوات التي قد تتطلّب إجراء عمليات حسابية أو عمليات منطقية؟

اعرض الحل

المسألة (المشكلة)

أيٌّ ممّا يأتي يُقصد به: مجموعة الخطوات المتسلسلة والمنطقية التي توصل إلى حلّ المسألة؟

اعرض الحل

الخوارزمية

أيٌّ ممّا يأتي يُقصد به: الوقت اللازم لتنفيذ البرنامج المُعتمد على إحدى الخوارزميات؟

اعرض الحل

وقت التنفيذ

أيٌّ ممّا يأتي يُقصد به: استيراد مدخلات من أحد الملفات أو تصدير مخرجات إلى ملف ما؟

اعرض الحل

مستند إدخال/ إخراج

أيٌّ ممّا يأتي يُقصد به: أفضل حَلَّ يُمكن تقديمه للمسألة؟

اعرض الحل

الحل المثالي

معاينة موضوع «الخوارزميات» من وحدة «الخوارزميات والبرمجة» في مادة المهارات الرقمية. أقسام الشرح: ١٩، التعريفات: ١٢، الأسئلة المحلولة: ٥.

المصدر: المركز الوطني لتطوير المناهج، الخوارزميات (ص ٢٦–٤٦)

موضوعات أخرى في الوحدة

تابع الدراسة