اذهب إلى المحتوى

السؤال

نشر

ما هو المنطق في استخدام Not في الجمل الشرطية و ال Loops  وما هي الفائدة منها ومتى استخدم منطق العكس في كتابة الكود البرمجي؟

مثال 1 :

Private Sub btnCheck_Click(sender As Object, e As EventArgs) Handles btnCheck.Click
    Dim userInput As Integer

    ' محاولة تحويل الإدخال النصي إلى رقم
    If Not Integer.TryParse(txtInput.Text, userInput) Then
        lblMessage.Text = "الرجاء إدخال رقم صحيح!"
        Exit Sub  ' الخروج إذا لم يكن الإدخال رقمًا
    End If

    lblMessage.Text = "لقد أدخلت الرقم: " & userInput
End Sub

 

مثال 2 :

Private Sub btnValidate_Click(sender As Object, e As EventArgs) Handles btnValidate.Click
    Dim userInput As Integer
    Dim inputValid As Boolean = False

    Do While Not inputValid
        If Integer.TryParse(txtInput.Text, userInput) Then
            lblMessage.Text = "تم إدخال رقم صحيح: " & userInput
            inputValid = True
        Else
            lblMessage.Text = "الرجاء إدخال رقم صحيح فقط!"
            txtInput.Clear() ' تفريغ النص للمحاولة مرة أخرى
            txtInput.Focus() ' إعادة التركيز على مربع النص
            Exit Do ' الخروج للسماح بإعادة المحاولة
        End If
    Loop
End Sub

 

ارجو الإفادة.

ولكم التحية 

Recommended Posts

  • 0
نشر

العامل Not في البرمجة نستخدمه لعكس المنطق المنطقي Boolean Logic أي القيم البوليانية لتحويل True إلى False والعكس.

If Not Integer.TryParse(txtInput.Text, userInput) Then
    ' ... إظهار رسالة خطأ
End If

الدالة Integer.TryParse تُعيد القيمة True وإن نجح التحويل إلى رقم، وFalse إن فشل، وباستخدام Not، نعكس النتيجة حيث الشرط يصبح إن فشل التحويل إلى رقم.

وذلك للتحقق من الحالات السلبية مثل الأخطاء بشكل مباشر، بدلًا من استخدام Else، بالتالي يقلل من التعقيد عند التعامل مع شروط متعددة وتسهيل قراءة الكود.

 

  • 0
نشر

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

فهنا يمكننا تنفيذ هذا الجزء بكود ما بطريقتين . 

  1. طريقة النفي Not :
    price = 1500
    
    If Not price > 1000 Then
            lblMessage.Text = "قم بالشراء"
      End If
    فمثلا هنا إستخدمنا النفي وهو إذا لم يكن السعر أكبر من 1000 قم بشراءه
  2. الطريقة الأخرى بدون Not :
    price = 1500
    
    If  price < 1000 Then
            lblMessage.Text = "قم بالشراء"
      End If

    فمثلا هنا لم نستخدم النفي والشرط هو إذا كان السعر أقل من 1000 قم بشراءه.

فهكذا في البرمجة يمكنك إستخدام النفي لشرط ما وتنفيذ أمر معين . أو يمكنك عدم إستخدام النفي ولكن عكس هذا الشرط .

ففي المثال المرفق لديك 

بتاريخ 15 دقائق مضت قال Team Work3:
 ' محاولة تحويل الإدخال النصي إلى رقم
    If Not Integer.TryParse(txtInput.Text, userInput) Then
        lblMessage.Text = "الرجاء إدخال رقم صحيح!"
        Exit Sub  ' الخروج إذا لم يكن الإدخال رقمًا
    End If

هنا نحن نتحقق إذا لم يكن النص الذي تم إدخاله ليس رقما صحيحا نقوم بإظهار الخطأ وإذا لم ترد إستخدام النفي Not يمكنك عكس الشرط هكذا :

Private Sub btnCheck_Click(sender As Object, e As EventArgs) Handles btnCheck.Click
    Dim userInput As Integer

    ' محاولة تحويل الإدخال النصي إلى رقم
    If Integer.TryParse(txtInput.Text, userInput) Then
  	lblMessage.Text = "لقد أدخلت الرقم: " & userInput
  	Exit Sub  ' الخروج إذا لم يكن الإدخال رقمًا
    End If

	lblMessage.Text = "الرجاء إدخال رقم صحيح!"

End Sub

فلاحظ كيف قمنا بعكس الكود عندما لم نستخدم Not فقمنا بعكس طريقة عمل الكود حيث إذا تحقق الشرط نظهر رسالة أن الرقم الذي تم إدخاله صحيح . أما إذا لم يكن رقم الذي تم إدخاله لا يتحقق الشرط ويتم إظهار رسالة الخطأ.

إذا Not هي تقوم بعكس قيمة الشرط فلو الشرط تحقق أي True فإن Not تقوم بعكسه إلى False . والعكس صحيح فلو كان الشرط هو False فإن Not تقوم بعكسه إلى True

  • 0
نشر
بتاريخ 14 دقائق مضت قال محمد عاطف17:

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

فهنا يمكننا تنفيذ هذا الجزء بكود ما بطريقتين . 

  1. طريقة النفي Not :
    price = 1500
    
    If Not price > 1000 Then
            lblMessage.Text = "قم بالشراء"
      End If
    فمثلا هنا إستخدمنا النفي وهو إذا لم يكن السعر أكبر من 1000 قم بشراءه
  2. الطريقة الأخرى بدون Not :
    price = 1500
    
    If  price < 1000 Then
            lblMessage.Text = "قم بالشراء"
      End If

    فمثلا هنا لم نستخدم النفي والشرط هو إذا كان السعر أقل من 1000 قم بشراءه.

فهكذا في البرمجة يمكنك إستخدام النفي لشرط ما وتنفيذ أمر معين . أو يمكنك عدم إستخدام النفي ولكن عكس هذا الشرط .

ففي المثال المرفق لديك 

هنا نحن نتحقق إذا لم يكن النص الذي تم إدخاله ليس رقما صحيحا نقوم بإظهار الخطأ وإذا لم ترد إستخدام النفي Not يمكنك عكس الشرط هكذا :

Private Sub btnCheck_Click(sender As Object, e As EventArgs) Handles btnCheck.Click
    Dim userInput As Integer

    ' محاولة تحويل الإدخال النصي إلى رقم
    If Integer.TryParse(txtInput.Text, userInput) Then
  	lblMessage.Text = "لقد أدخلت الرقم: " & userInput
  	Exit Sub  ' الخروج إذا لم يكن الإدخال رقمًا
    End If

	lblMessage.Text = "الرجاء إدخال رقم صحيح!"

End Sub

فلاحظ كيف قمنا بعكس الكود عندما لم نستخدم Not فقمنا بعكس طريقة عمل الكود حيث إذا تحقق الشرط نظهر رسالة أن الرقم الذي تم إدخاله صحيح . أما إذا لم يكن رقم الذي تم إدخاله لا يتحقق الشرط ويتم إظهار رسالة الخطأ.

إذا Not هي تقوم بعكس قيمة الشرط فلو الشرط تحقق أي True فإن Not تقوم بعكسه إلى False . والعكس صحيح فلو كان الشرط هو False فإن Not تقوم بعكسه إلى True

لكم كل الشكر الإخوة الأعزاء 

مفهموم عندي منطق الايجاب او عدم النفي باستخدام العامل Not  ولكن اجد قليلا من الصعوبة في استخدام Not ففي المثال الثاني لماذا لم يتم استخدام القيمة True مباشرة بدلا من نفي النفي (Not false) واحاول كيفية فهم البرنامج لترجمة الكود فقيمة المتغير inputValid = false فلماذا اقوم بنفيها وما الفائدة من ذلك، لا اعرف هل وصلت الفكرة ام لا؟

  • 0
نشر
بتاريخ 2 دقائق مضت قال Team Work3:

مفهموم عندي منطق الايجاب او عدم النفي باستخدام العامل Not  ولكن اجد قليلا من الصعوبة في استخدام Not ففي المثال الثاني لماذا لم يتم استخدام القيمة True مباشرة بدلا من نفي النفي (Not false) واحاول كيفية فهم البرنامج لترجمة الكود فقيمة المتغير inputValid = false فلماذا اقوم بنفيها وما الفائدة من ذلك، لا اعرف هل وصلت الفكرة ام لا؟

في المثال الثاني هذه هي الطريقة الأفضل. حيث لاحظ في أننا نستخدم Do While وبعد Do While إذا كان الشرط True يتم تنفيذ حلقة التكرار إلى أن يصبح الشرط بعد Do While ب False .

وهنا نحن نريد التكرار دائما إلى أن يدخل المستخدم رقم صحيح .

ولهذا بدأنا البرنامج بان inputValid ب False أى أنه إلى الآن لم يتم إدخال الرقم . وبهذا فإن Do While Not inputValid هنا يتم أولا إحضار قيمة inputValid ويتم عكسها وبما أنها في بداية البرنامج ب False إذا Not False هي True وذلك يتم تنفيذ حلقة التكرار ويظل يتم تنفيذها .

حتي يصل إلى هنا :

بتاريخ 53 دقائق مضت قال Team Work3:
If Integer.TryParse(txtInput.Text, userInput) Then
            lblMessage.Text = "تم إدخال رقم صحيح: " & userInput
            inputValid = True

هنا لاحظ أن المستخدم أدخل رقم صحيح بالفعل وبذلك نظهر رسالة أن الرقم الصحيح ونقوم بوضع قيمة inputValid تساوي True .

وهكذا حينما نأتي إلى Do While Not inputValid ستكون حينها Not inputValid ب False وهكذا سنخرج من حلقة التكرار ولن يتم تنفيذها مرة أخرى.

  • 0
نشر
بتاريخ 26 دقائق مضت قال محمد عاطف17:

في المثال الثاني هذه هي الطريقة الأفضل. حيث لاحظ في أننا نستخدم Do While وبعد Do While إذا كان الشرط True يتم تنفيذ حلقة التكرار إلى أن يصبح الشرط بعد Do While ب False .

وهنا نحن نريد التكرار دائما إلى أن يدخل المستخدم رقم صحيح .

ولهذا بدأنا البرنامج بان inputValid ب False أى أنه إلى الآن لم يتم إدخال الرقم . وبهذا فإن Do While Not inputValid هنا يتم أولا إحضار قيمة inputValid ويتم عكسها وبما أنها في بداية البرنامج ب False إذا Not False هي True وذلك يتم تنفيذ حلقة التكرار ويظل يتم تنفيذها .

حتي يصل إلى هنا :

هنا لاحظ أن المستخدم أدخل رقم صحيح بالفعل وبذلك نظهر رسالة أن الرقم الصحيح ونقوم بوضع قيمة inputValid تساوي True .

وهكذا حينما نأتي إلى Do While Not inputValid ستكون حينها Not inputValid ب False وهكذا سنخرج من حلقة التكرار ولن يتم تنفيذها مرة أخرى.

كل الشكر اخي محمد عاطف

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...