17

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

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 يفحص إن كان المتحول أصغر تماما يطبع ناتج الجمع

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

دمتم بخير

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

انا مبتدى فى ++c واتابع معك هذة السلسلة ولكن الى الان ارى ان ++c اسهل من vb.net ولا يوجد كتابة تعبيرات كثيرة متل vb.net

عموما شكرا جزيلا على مجهودك واتمنى لو تقدر تساعدنى فى ال++c

أهلا وسهلا بك

اللغة ليست هي الغاية فكل شخص يميل إلى لغة برمجة ما ويرتاح لها

المهم هو أن ندرك فلسفة البرمجة إن جاز التعبير

و عندما اخترت الـ VB لسبب أنها من معارفي

والآخر أنها تميل إلى اللغة الحية

ثم أن Basic هي اختصار

Beginner's All-purpose Symbolic Instruction Code

كود التعليمات الرمزية لكافة الأغراض للمبتدئين

أي أنه عندما تم إنشاء اللغة روعي به أن يكون سهلا للمبتدئين

كلام رائع وانا لست من النوع الذى يدخل فى جدل عقيم عن افضلية لغة عن الاخرى

ولكن لكونى احب الرياضيات احب التعامل مباشرة مع الرموز والمتغيرات والمعاملات وباقل كلمات ممكنة

بالنسبة الى ارى ان المنطق البرمجى والقدرة على تحليل المشكلة وتقسيمها الى اجزاء صغيرة ووضع خطوات لحلها هو الجزء الاهم فى عملية البرمجة

ثم بعد ذلك يصبح تحويلها الى الاكواد عمل بسيط

اريد ان اطلب منك بعض المواد التى تساعدنى فى ذلك

مثل كتاب عن algorithms & datastructures

ثم بعض الامثلة لبرامج استطيع تطبيقها لانى انفذ كل جزء على حدة ولا اعرف كيف اجمعهم لانتج شى مفيد

وجزاك الله خيرا

مشاركتى الاولى بواسطة ++c

#include <iostream>

   using namespace std;

  int main()
 {
  int x1,x2,result;
  cout<<"enter first integer number"<<endl;
  cin>>x1;
  cout<<"enter second integer number"<<endl ;
 cin>>x2;
 if (x1>x2)
 cout << "result= "<<x1-x2<<endl;
else
 cout<<"result="<<x1+x2<<endl;
return 0;
}

معذرة على التأخر (كنت مسافرا)

التطبيق:

Module Module1

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

    Console.WriteLine("Entrer the first number: ")
    X1 = Console.ReadLine()

    Console.WriteLine("Entrer the second number: ")
    X2 = Console.ReadLine()

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

        Else
            Result = X1 * X2
            Console.WriteLine(String.Format("the square of {0} and {1} is: {2}", X1, X2, Result))
        End If
    End If

    Console.ReadLine()
End Sub

End Module

على البايثون:

X1=int(input("أدخل الرقم الأول: "))
X2=int(input("أدخل الرقم الثاني: "))


if X1>X2:
    result=X1-X2
    print("ناتج طرح %d و %d هو: %d" %(X1, X2, result))

elif X1<X2:
    result=X1+X2
    print("ناتج جمع %d و %d هو: %d" %(X1, X2, result))

else:
    result=X1*X2
    print("مربع العدد %d هو : %d" %(X1, result))

والحمد لله

الكتابة بالبايثون جميلة ومختصرة وقريبة للفهم البسيط

لهذا هي ذات مقروؤية عالية

وسهلة المراجعة (في حالة وجود أخطاء)

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

ابدعت بحق

مقدمة السلسلة

الدرس السابق 23

الدرس التالي 25