الدرس الثالث: خرائط التدفق للتفرع واتخاذ القرار (Branching & Decision-Making) والشروط المركبة
تُمثّل بنية التفرع واتخاذ القرار (Branching & Decision-Making) العقل المفكر والنواة الذكية للبرمجيات. في الواقع الحياتي والتطبيقي، لا تسير المشكلات دائماً في مسار خطي وحيد بسيط، بل تتطلب تقييم شروط منطقية للمقارنة واتخاذ مسارات بديلة بناءً على نتيجة الاختبار (صواب True أو خطأ False). يُستخدم رمز "المعين" (Decision / Rhombus) معيارياً لتمثيل اتخاذ القرار في خرائط التدفق، حيث يدخل إليه خط انسياب واحد ويتفرع منه خطان على الأقل (أحدهما لمسار نعم Yes / True والآخر لمسار لا No / False). يتقن الطالب في هذا الدرس صياغة الشروط المقارنة البسيطة والمركبة مثل تحديد نجاح أو رسوب الطالب (درجة ≥ 50)، والتحقق من نوع العدد (زوجي أو فردي عبر دالة باقي القسمة Mod)، ومقارنة الأعداد لتحديد الأكبر، وتصنيف الأعداد إلى (موجب، سالب، صفر) وفق المعايير الوزارية والامتحانية المعتمدة.
1. رمز اتخاذ القرار (Decision / المعين)
يُستخدم المعين لطرح سؤال منطقي إجابته إما نعم (Yes / True) أو لا (No / False):
- خطوط الانسياب: يدخل إلى المعين خط انسياب واحد، ويخرج منه خطا انسياب على الأقل (مسار نعم ومسار لا).
- معاملات المقارنة المنطقية:
>(أكبر من) ،<(أصغر من) ،>=(أكبر من أو يساوي) ،<=(أصغر من أو يساوي) ،=(يساوي) ،<>(لا يساوي). - التفرع ذو الاتجاهين (IF-THEN-ELSE): مسار ينفذ في حالة تحقق الشرط، ومسار بديل ينفذ في حالة عدم تحققه.
2. أنماط التفرع الشهيرة
| المشكلة | صيغة الشرط في المعين | مسار Yes | مسار No |
|---|---|---|---|
| ناجح أم راسب | Degree ≥ 50 ? |
Print "ناجح" | Print "راسب" |
| زوجي أم فردي | N Mod 2 = 0 ? |
Print "زوجي" | Print "فردي" |
| العدد الأكبر بين اثنين | A > B ? |
Max = A | Max = B |
| موجب أو سالب أو صفر | N = 0 ? ثم N > 0 ? |
Print "صفر" | تفرع ثانٍ |
3. قواعد صحة التفرع وتفادي الأخطاء المنطقية
تسمية مسارات الخروج
يجب وجوباً كتابة كلمتي Yes و No (أو True و False) بوضوح على خطوط الانسياب الخارجة من المعين.
إعادة التجمع للنهاية
تلتقي المسارات المتفرعة مجدداً لتصب في نقطة نهاية واحدة End دون ترك مسارات معلقة.
القسمة على الصفر
استخدام التفرع للتحقق من أن المقام لا يساوي صفراً قبل إجراء القسمة لتفادي الانهيار (Crash).
تمرين 1: خريطة طباعة ناجح
المسألة: صمم خريطة تدفق لطباعة كلمة "ناجح" إذا كانت درجة الطالب X أكبر من أو تساوي 50.
1.
Start.2.
Read X.3.
Is X ≥ 50 ? (معين اتخاذ القرار):• إذا Yes ➔ اطبع
Print "ناجح" ثم انتقل للنهاية.• إذا No ➔ انتقل مباشرة للنهاية.
4.
End.
تمرين 2: خريطة تحديد العدد زوجي أم فردي
المسألة: صمم خريطة تدفق لقراءة عدد N وتحديد ما إذا كان زوجياً أم فردياً.
1.
Start.2.
Read N.3.
Is N Mod 2 = 0 ?:• إذا Yes:
Print "زوجي".• إذا No:
Print "فردي".4.
End.
تمرين 3: تفادي خطأ القسمة على صفر
المسألة: صمم خريطة لحساب ناتج قسمة رقمين A على B، مع التحقق من أن المقام لا يساوي صفراً.
1.
Start ➔ Read A, B.2.
Is B = 0 ?:• Yes:
Print "غير معرف - القسمة على صفر غير جائزة".• No:
R = A / B ➔ Print R.3.
End.
تمرين 4: إيجاد العدد الأكبر بين رقمين
المسألة: صمم خريطة تدفق لطباعة العدد الأكبر بين رقمين مختلفين X و Y.
1.
Start ➔ Read X, Y.2.
Is X > Y ?:• Yes:
Print "الأكبر هو " + X.• No:
Print "الأكبر هو " + Y.3.
End.
تمرين 5: تصنيف العدد (موجب / سالب / صفر)
المسألة: وضح كيف يتم استخدام أكثر من معين اتخاذ قرار لتصنيف عدد N إلى 3 حالات.
• المعين الأول:
Is N = 0 ? ➔ Yes: اطبع "صفر".• مسار No للمعين الأول يدخل لمعين ثانٍ:
Is N > 0 ?.• المعين الثاني: Yes: اطبع "موجب"، No: اطبع "سالب".
• تلتقي المخرجات الثلاثة عند
End.
تمرين 6: تتبع قيمة مخرجات شرطية
المسألة: إذا كانت X = 12، وتفرع الشرط: If X > 10 Then Y = X * 2 Else Y = X + 5، فما قيمة Y؟
• نختبر الشرط:
12 > 10 ⇐ النتيجة True / صواب.• ننفذ مسار Then:
Y = 12 × 2 = 24.• قيمة المتغير Y =
24.
تمرين 7: حساب الخصم التجاري
المسألة: متجر يمنح خصماً 10% إذا كانت قيمة المشتريات Total ≥ 1000، احسب الصافي Net.
•
Is Total ≥ 1000 ?:• Yes:
Discount = Total × 0.10.• No:
Discount = 0.•
Net = Total - Discount ➔ Print Net.
تمرين 8: دالة باقي القسمة Mod
المسألة: ما ناتج التعبيرين: 7 Mod 2 و 12 Mod 5؟ وكيف يفيد ذلك برمجياً؟
•
7 Mod 2 = 1 (باقي قسمة 7 على 2 هو 1 فالعدد فردي).•
12 Mod 5 = 2 (باقي قسمة 12 على 5 هو 2).• تفيد دالة Mod في اكتشاف قابلية القسمة وتحديد الأعداد الزوجية والفردية ومضاعفات الأعداد.
اضغط على أي بطاقة لاكتشاف المعنى الدقيق، واضغط على أيقونة الصوت للاستماع للنطق:
اضغط على الإجابة لتتحقق من فهمك وتكتشف التفسير النموذجي فورياً: