24 - سلسلة تبسيط البرمجة – برنامج استخدام تعليمة الشرط

السلام عليكم ورحمة الله وبركاته

بسم الله الرحمن الرحيم

سننتقل إلى المثال في الدرس :

08 - سلسلة تبسيط البرمجة - آلية الشرط

وفي الدرس الذي يليه سنكمل بقية المثال في الدرس 07

ورد في الدرس 08 المثال التالي :


بعد أن قامت الأم بتطبيق برنامجها على طفلها لعدة ساعات أصبح شاطر في العمليات الحسابية

الآن أرادت الأم أن تزيد من مستوى التمرين فأفهمت الطفل أنهم سيقومون بالتالي :

الأم تعطيه رقمين فقط فإذا كان الرقم الأول أكبر من الثاني يقوم الطفل بالطرح وإعادة الناتج

وإلا يقوم الطفل بالجمع ثم إعادة الناتج

أي أن الطفل سيقوم بتلقي الرقم الأول ثم ينتظر

ثم يتلقى الرقم الثاني

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

وإلا يقوم بالجمع ثم ينطق بالناتج

بعد أن فهم الطفل ما الذي سيفعله وأنه مستعد للتدريب بدأت الأم :

5 2

فقارن الطفل العددين فوجد 5 < 2 فقام بتطبيق عملية الطرح 5-2 وكان الجواب 3

ثم قالت الأم :

3 6 ففحص الطفل في ذهنه هل (3 < 6) فكان الجواب لا حينها طبق الاحتمال الثاني وهو الجمع فقال 9

ثم قالت الأم :

4 4

هنا فحص الطفل الشرط هل (4 < 4) فكان الجواب خطأ أي أن الشرط الذي وضعته الأم لم يتحقق فانتقل إلى الاحتمال الثاني وهو تطبيق عملية الجمع فقال 8

قد تتساؤلون لماذا لم يتوقف الطفل عن التطبيق حيث أن العددان متساويان أي أن العدد الأول ليس أكبر وكذلك ليس أصغر

وأقول أن الأم أفهمته من البداية أن يتحقق من الشرط، فإن اختل الشرط، ينتقل مباشرة للاحتمال الثاني بغض النظر عما إذا كان هنا تفرع للشرط

لأنها قالت له (وإلاّ) ولم تقل له : أما إذا كان الثاني أكبر فانتقل للاحتمال الثاني

لأنها لو قالت ذلك لكان لدينا احتمال ثالث - وهو احتمال المساواة - لم تحدد له ما هو التصرف في هذه الحالة

لذا فالشرط يكون لدينا احتمالان إما أن يتحقق أو لا


سنقوم بتحويل هذه الخوارزمية إلى برنامج كما يلي :

Module Module1

    Sub Main()
        Dim X1, X2, Result As Integer


        Console.WriteLine("Enter First Number :")
        X1 = Console.ReadLine()

        Console.WriteLine("Enter Second Number :")
        X2 = Console.ReadLine()

        If X1 > X2 Then
            Result = X1 - X2
            Console.WriteLine(String.Format("The subtraction of {1} from {0} is : {2}", X1, X2, Result))
        Else
            Result = X1 + X2
            Console.WriteLine(String.Format("The sum of {0} and {1} is : {2}", X1, X2, Result))
        End If

        Console.ReadLine()
    End Sub

End Module

نلاحظ أن النصف الأول هو ذاته في البرنامج السابق لأن المتغيرات والإدخالات نفسها

أما الاختلاف الآن أنه لدينا شرط وبناء على تحققه نريد من البرنامج أن ينفذ شيء مختلف

لهذا استخدمنا القالب الشرطي المكون من الكلمات المحجوزة If Then Else End If

و هي تعني أن يقوم بالمقارنة في التعبير الذي يأتي بعد كلمة If فإن كانت النتيجة صح فالشرط قد تحقق حينها ينتقل لتنفيذ البلوك الذي بعد كلمة Then

وفي حالة كانت النتيجة خطأ أي أن الشرط لم يتحقق حينها يجب أن يقفز عن بلوك Then و ينتقل التنفيذ مباشرة للبلوك الذي يلي Else

وكترجمة لما سبق

إذا كان X1 أكبر من X2 حينها

نفذ كذا

وإلا

نفذ كذا

وبهذا نستطيع ومن خلال تعليمة الشرط أن نغير مسار التنفيذ بناء على شروط مبنية على الحالة الراهنة للمتغيرات حين وصول التنفيذ إليها

جربوا إدخال مرة القيمة الأولى أكبر من الثانية

ومرة الثانية أكبر من الأولى

ومرة متساويين وراقبوا النتائج

الواجب :

عمل بلوك شرطي جديد داخل بلوك Else يفحص إن كان المتحول أصغر تماما يطبع ناتج الجمع

وإلا يطبع ناتج الجداء ونكتب في العبارة مربع العدد كذا هو كذا وذلك لأنه في هذه الحالة العددان متساويان وكأننا ضربنا العدد بنفسه

دمتم بخير