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

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

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

الخوارزمية للجمل الشرطية
الشرط: ماذا نفعل إذا تحقّق؟
- تُستخدم الجمل الشرطية في تحديد إذا كان العدد المُدخل موجباً أم سالباً، أو تحديد إذا كان العدد يقع ضمن فئة مُعيّنة من القيم وغيرها.
- يُستخدم شكل المعين في مخططات سير العمليات لتمثيل الشرط كما هو مُبيّن في الشكل (2-5)
- يستقبل مُدخلاً مُعيّناً من المرحلة التي تسبقه، ثم يخرج منه مساران
- أحدهما يُنفذ إذا كان جواب الشرط صحيحاً (نعم)، والآخر يُنفذ إذا كان جواب الشرط غير صحيح (لا)
- ويُطلق على هذه المخططات - كما تعرّفنا سابقاً - اسم المخططات التفرّعية.
اعتماداً على خطوات حل المسألة، أحلّ - بالتعاون مع أفراد مجموعتي - المسألة الآتية:
أدخل العدد X والعدد Y، ثم أطبع العبارة الآتية: "X is greater than Y" إذا كانت قيمة X أكبر من قيمة Y، وأطبع العبارة الآتية: "Y is greater than X" إذا كانت قيمة Y هي القيمة الكبرى.
بعد ذلك أعدّل على خطواتي لإضافة خيار: في حال كان العددان متساويين، فإنني أطبع العبارة الآتية: "They are equal"، ثم أطبع العددين.
- قد يتضمّن البرنامج جملاً شرطية متداخلة، بحيث تُنفذ الجملة الشرطية الداخلية بناءً على صحة الشرط أو عدم صحته في الجملة الشرطية الخارجية.
المُخرجات: عبارة مُحدّدة تعتمد على قيمة

إضاءة
أنفذ - بالتعاون مع أفراد مجموعتي - البرنامج الوارد في الشكل (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) الخطوات التفصيلية لحساب الرمز بناءً على المجموع.

| Mid Grade | Project's Grade | Final Grade | Total |
|---|---|---|---|
| 25 | 28 | 35 | |
| 15 | 20 | 30 | |
| 20 | 25 | 25 |
بناءً على مُخطَّط سير العمليات المُبيَّن في الشكل (2-9)، أتتبَّع الخطوات الواردة في المُخطَّط لإيجاد الناتج لكلِّ من الحالات الآتية، ثمَّ أملأ الفراغ في الجدول بما هو مناسب الجدول (2-2): تتبع النتائج بناءً على مخطط سير العمليات في الشكل (2-9)
أكتب خوارزمية شبه رمزية للتعبير عن مُخطَّط سير العمليات السابق.
هل يُمكن اختصار الخطوات الواردة في الخوارزمية؟ أُوضِّح إجابتي، وأُعدِّل الخوارزمية لتحقيق ذلك.
أُحوِّل - بالتعاون مع أفراد مجموعتي - مُخطَّط سَيْر العمليات السابق إلى برنامج مكتوب بلغة البرمجة بايثون، ثمَّ نُجرِّبه معًا باستخدام مُحرِّر بايثون للتحقق من صحَّته، ثمَّ نعرض البرنامج المكتوب أمام أفراد المجموعات الأخرى، ونُقارنه بالبرامج التي كتبوها.
الخوارزمية لجمل التكرار
التكرار: نعيد الأوامر عدة مرّات
- تَعَرَّفتُ سابقًا الحلقات (أي جمل التكرار)، واستخدمتها في برمجية سكراتش (Scratch)، وفي لغة البرمجة بايثون (Python).

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

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

أُحلّل - بالتعاون مع أفراد مجموعتي - مُخطَّط سَيْر العمليات الذي يُبيّنه الشكل (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) على شكل جدول مُنظَّم، ثمَّ أرسم مُخطَّط سَيْر العمليات الذي يُمثّل هذه المسألة.
بعد ذلك أُقارن بين الخوارزمية شبه الرمزية ومُخطَّط سَيْر العمليات الذي رسمته، وأُوضّح إذا كانت هذه الخوارزمية مُتطابقة مع مُخطَّط سَيْر العمليات أم لا، وأُبرّر إجابتي.