الحاسب الآلي · الصف الثالث الإعدادي · الترم الأول
التفرع واتخاذ القرار Decision في خرائط التدفق
رمز القرار (المعين) في خرائط التدفق، وكيفية استخدام التفرع الشرطي بمساريه (نعم/لا)، مع أمثلة مثل إيجاد الأكبر بين عددين وتحويلها إلى VB.NET.
آخر تحديث: · كيف نراجع المحتوى
معلومات الدرس
- المادة: الحاسب الآلي — حل المشكلات وبرمجة VB.NET
- الترم: الأول
- الفصل: الفصل الأول: حل المشكلات — الموضوع: الخامس
المحتوى الرئيسي
مفهوم التفرع (اتخاذ القرار)
في كثير من المشكلات، لا يكفي تنفيذ الخطوات بالتتابع فقط؛ بل يحتاج الحل إلى اختبار شرط معين، ثم اختيار أحد مسارين مختلفين بناءً على نتيجة هذا الشرط. يسمى هذا التركيب في خرائط التدفق التفرع (Selection/Decision)، ويُستخدم في الحالات التي تتضمن عبارات مثل: “إذا…”، “هل…؟”، “أكبر من”، “يساوي”، إلخ.
رمز القرار (المعين - Rhombus)
يُمثَّل اتخاذ القرار في خريطة التدفق برمز المعين (Diamond/Rhombus)، وله خاصية فريدة بين كل الرموز: هو الرمز الوحيد الذي يخرج منه سهمان (مساران) بدلًا من سهم واحد:
- مسار “نعم” (Yes/True): يُتَّبع إذا كان الشرط المكتوب داخل المعين متحققًا.
- مسار “لا” (No/False): يُتَّبع إذا كان الشرط غير متحقق.
يُكتب داخل رمز المعين عبارة الشرط فقط (مثل: A > B؟)، ولا تُكتب فيه أي عملية حسابية أو طباعة.
أشكال التفرع
- تفرع أحادي (If فقط): يُنفَّذ إجراء معين إذا تحقق الشرط فقط، وإلا يتجاوزه البرنامج مباشرة دون تنفيذ أي شيء.
- تفرع ثنائي (If…Else): يُنفَّذ إجراء إذا تحقق الشرط، وإجراء آخر مختلف إذا لم يتحقق؛ بحيث يُنفَّذ أحد المسارين دائمًا، لا كلاهما.
في الحالتين، يجب أن يلتقي المساران في نهاية التفرع (عند نقطة واحدة) قبل الاستمرار في باقي خطوات الحل، أو ينتهي كل مسار برمز النهاية مباشرة إذا كان التفرع هو آخر خطوة.
مثال 1: إيجاد الأكبر بين عددين
المشكلة: إدخال عددين A و B، وطباعة الأكبر منهما.
خطوات خريطة التدفق:
- Start
- أدخل A, B (Input)
- هل A > B ؟ (Decision)
- نعم → اطبع A (Output)
- لا → اطبع B (Output)
- End
يلاحَظ هنا أن رمز المعين أنتج مسارين منفصلين، كل منهما ينتهي بخطوة إخراج مختلفة، ثم يصل الحل في الحالتين إلى النهاية.
الكود المقابل بلغة VB.NET:
Dim A As Double
Dim B As Double
A = Console.ReadLine()
B = Console.ReadLine()
If A > B Then
Console.WriteLine("الأكبر هو: " & A)
Else
Console.WriteLine("الأكبر هو: " & B)
End If
يلاحَظ التطابق المباشر بين رمز المعين وجملة If...Then...Else...End If في VB.NET: الشرط داخل المعين يقابل الشرط بعد If، ومسار “نعم” يقابل الأسطر بعد Then، ومسار “لا” يقابل الأسطر بعد Else.
مثال 2: تحديد حالة النجاح والرسوب
المشكلة: إدخال درجة طالب، فإذا كانت 50 فأكثر يُطبع “ناجح”، وإلا يُطبع “راسب”.
خطوات خريطة التدفق:
- Start
- أدخل Degree
- هل Degree ≥ 50 ؟
- نعم → اطبع “ناجح”
- لا → اطبع “راسب”
- End
Dim Degree As Double
Degree = Console.ReadLine()
If Degree >= 50 Then
Console.WriteLine("ناجح")
Else
Console.WriteLine("راسب")
End If
ملاحظة: التفرعات المتداخلة
قد تحتاج بعض المشكلات إلى أكثر من قرار متتالٍ (مثل إيجاد الأكبر بين ثلاثة أعداد)، وهذا يتم بوضع رمز معين آخر داخل أحد مساري (نعم/لا) للمعين الأول، وهو ما يُعرف بـالتفرع المتداخل (Nested Decision)، ويقابله في VB.NET استخدام جملة If داخل جملة If أخرى.
النقاط الرئيسية
- التفرع يُستخدم عندما يحتاج الحل إلى اختيار أحد مسارين بناءً على شرط.
- رمز القرار هو المعين، وهو الرمز الوحيد الذي له مساران للخروج: نعم ولا.
- يُكتب داخل المعين عبارة الشرط فقط، دون معالجة أو طباعة.
- في VB.NET، يقابل رمز المعين جملة
If...Then...Else...End If. - يمكن تداخل أكثر من رمز قرار لحل مشكلات تحتاج أكثر من مقارنة (كإيجاد الأكبر بين ثلاثة أعداد).
أسئلة للمراجعة
- ما الرمز المستخدم لاتخاذ القرار في خريطة التدفق؟ وما الذي يميّزه عن باقي الرموز؟
- ما الفرق بين التفرع الأحادي (If فقط) والتفرع الثنائي (If…Else)؟
- صمم خريطة تدفق لتحديد ما إذا كان عدد مُدخَل موجبًا أم سالبًا أم يساوي صفرًا (تلميح: تحتاج قرارين متتاليين).
- حوّل الخريطة التي صممتها في السؤال السابق إلى كود VB.NET.
- ما الخطأ في خريطة تدفق يخرج فيها من رمز المعين مسار واحد فقط؟
- اكتب كود VB.NET يطبع “رقم زوجي” أو “رقم فردي” حسب قيمة متغير صحيح يسمى Num.
الأهداف العامة
- أن يوضّح الطالب مفهوم التفرع (Selection) واتخاذ القرار في خرائط التدفق.
- أن يستخدم الطالب رمز القرار (المعين) بشكل صحيح في تصميم الحلول.
- أن يصمم الطالب خريطة تدفق تحتوي على تفرع لحل مشكلة مقارنة بسيطة.
- أن يحوّل الطالب خريطة تدفق ذات تفرع إلى كود VB.NET باستخدام جملة If.