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 يفحص إن كان المتحول أصغر تماما يطبع ناتج الجمع
وإلا يطبع ناتج الجداء ونكتب في العبارة مربع العدد كذا هو كذا وذلك لأنه في هذه الحالة العددان متساويان وكأننا ضربنا العدد بنفسه
دمتم بخير
التعليقات