جود ثيمز

الأحد، 28 يوليو 2013

المعاملات الرياضية والمنطقية في فيجوال بيسك .نت

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

ماهي المعاملات أو Operators :

المعاملات أو Operators بشكل عام هي تلك الرموز (مثل '+') أو الكلمات (مثل 'New') التي نستخدمها لاداء عملية معينة سواء كانت عملية رياضية كالجمع والطرح أو عملية منطقية وغيرها , ولها أيضاً أغراض أخرى .

أولاً : المعاملات الحسابية Arithmetic Operators

تمكننا لغة فيجوال بيسك .نت من أداء بعض العمليات الحسابية بشكل مباشر وهي : الجمع (+) والطرح (-) والضرب (*) والقسمة (/) وإيجاد الأس (^) وإيجاد باقي القسمة (Mod) .
وهناك معامل آخر للقسمة (\) وهو يقوم بحساب ناتج القسمة الصحيح فقط ولا يعطينا قيمة كسرية .
الجدول التالي يوضع المعاملات الحسابية في لغة فيجوال بيسك .نت :

ثانياً : معاملات المقارنة Comparison Operators

تستطيع بسهولة اجراء عمليات المقارنة بشكل مباشر مع معاملات المقارنة التي عرفتها أيام المدرسة الابتدائية !! وهناك فرق بسيط هو أننا في البرمجة نقرأ الجمل من اليسار إلى اليمين مثلاً الجملة "x>5" نقرأها : هل x أكبر من 5 ؟ وقد تكون صائبة True أو خاطئة False .
معاملات المقارنة الأساسية المعرفة في فيجوال بيسك .نت هي : أكبر من (<) , و أصغر من (>) , و أكبرمن أو يساوي (=<) , و أصغر من أو يساوي (=>) , و يساوي (=) , و لايساوي (<>) .
لا ننسى أيضاً المعامل (Like)  المستخدم في مقارنة السلاسل الحرفية (String) - مع استخدامات اخرى - وهو يقارن بينها من ناحية عدد الأحرف وحتى حالة الأحرف فمثلاً السلسلة "khalid" تعتبر مختلفة عن "KHALID" , انظر للمثال :
Dim result As Boolean
result = "Ahmed" Like "Ahmed"
Console.WriteLine(result)    'True
مثال آخر :
Dim result As String
result = "khalid" Like "KHALID"
Console.WriteLine(result)   'False
هناك أيضاً المعاملين (Is) و (IsNot) ولكن لن اتناولهما الآن لأنهما خاصان بالكائنات Objects (كل شي في وقته زين) .

ثالثاً : المعاملات المنطقية Logical Operators

تساعدنا المعاملات المنطقية مع معاملات المقارنة بشكل كبير في التحكم بسير البرنامج حسب شروط تضعها أنت عبر جمل التحكم مثل جملة If ... Else وجمل التكرار مثل جملة For , وهذه المعاملات هي :

المعامل Not

يقوم المعامل Not بمهمة نفي القضايا المنطقية ( ' ) وكما تعلم فإن نفي القضية يحولها من صائبة إلى خاطئة ومن خاطئة إلى صائبة , والمثال التالي يريك طريقة استخدامه :
Dim result As Boolean
result = Not 3 > 2
Console.WriteLine(result)   'False
مثال آخر :
Dim result As Boolean
result = Not 4 < 2
Console.WriteLine(result)   'True

المعامل And

يستخدم المعامل And لتمثيل الرابط AND المستخدم في القضايا المنطقية , والقضية المستخدم فيها الرابط AND تكون صائبة اذا وفقط اذا كان الطرفان صائبان , مثال بسيط :
Dim result As Boolean
result = 3 > 2 And 5 > 1
Console.WriteLine(result)    'True
مثال آخر :
Dim result As Boolean
result = 3 = 2 And 5 > 1
Console.WriteLine(result)    'False

المعامل Or

يستخدم المعامل Or لتمثيل الرابط OR المستخدم في القضايا المنطقية , والقضية المستخدم فيها الرابط OR تكون صائبة اذا كان أحد الطرفين صائب أو كلاهما صائبان , سنعدل على المثال السابق :
Dim result As Boolean
result = 3 > 2 Or 5 > 1
Console.WriteLine(result)    'True
مثال آخر :
Dim result As Boolean
result = 3 = 2 Or 5 > 1
Console.WriteLine(result)    'True

المعامل Xor

يقوم المعامل Xor بمهمة الرابط XOR , والقضية المستخدم فيها الرابط XOR تكون صائبة اذا كان أحد الطرفين صائب والآخر خاطئ , نفس المثال السابق بعد التعديل :
Dim result As Boolean
result = 3 > 2 Xor 5 > 1
Console.WriteLine(result)    'False
مثال آخر :
Dim result As Boolean
result = 3 = 2 Xor 5 > 1
Console.WriteLine(result)    'True

المعامل AndAlso

يقوم المعامل AndAlso بنفس وظيفة المعامل And ولكن مع اختلاف بسيط , فالمعامل AndAlso يفحص الشرط الأول فاذا كان صائب يفحص الشرط الثاني ولكن اذا كان الشرط الأول خاطئ فإنه يتوقف مباشرة ولا يفحص الشرط الثاني لأن النتيجة معروفة وهي False فلا داعي لفحص الشرط الثاني , مثال :
Dim result As Boolean
result = 3 > 7 AndAlso 2 < 5
Console.WriteLine(result)   'False

المعامل OrElse

يقوم المعامل OrElse بنفس وظيفة المعامل Or ولكن مع اختلاف بسيط , فالمعامل OrElse يفحص الشرط الأول فاذا كان صائب فإنه يتوقف ولا يفحص الشرط الثاني لأن النتيجة معروفة وهي True فلا داعي لفحص الشرط الثاني , ولكن اذا كان الشرط الأول خاطئ فإنه يفحص الشرط الثاني , مثال :
Dim result As Boolean
result = 3 > 7 OrElse 2 < 5
Console.WriteLine(result)   'True

رابعاً : معاملات الإسناد Assignment Operators :

أول هذه المعاملات هو المعامل المعروف ( = ) والذي نستخدمه لاسناد القيم للمتغيرات بأنواعها وهو غني عن التعريف .
هناك نوع آخر من معاملات الاسناد وهي معاملات تمكنك من القيام بعملية حسابية مع اسناد القيمة في نفس الوقت وهي : معامل الجمع مع الاسناد (=+) ومعامل الطرح مع الاسناد (=-) ومعامل الضرب مع الاسناد (=*) ومعامل القسمة مع الاسناد بنوعيها الاثنين (=/) و (=\) , وأيضاً معامل القوة أو الأس (=^)  , وإليك مثال للتوضيح :
Dim x As Integer = 5
x += 3   'x = x + 3
Console.WriteLine(x)   '8
مثال آخر :
Dim y As Integer = 4
y ^= 2   'y = y ^ 2
Console.WriteLine(y)   ' 16

هناك معامل آخر من معاملات الاسناد وهو المعامل (=&) ويستخدم مع السلاسل الحرفية (String) ووظيفته أنه يقوم باضافة سلسلة حرفية إلى سلسلة حرفية أخرى , مثال :
Dim str1 As String = "Hello"
Dim str2 As String = " World"
str1 &= str2   'str1 = str1 & str2
Console.WriteLine(str1)   'Hello World
مثال آخر :
Dim str1 As String = "Welcome"
str1 &= " to my program"
Console.WriteLine(str1)   'Welcome to my program

هناك معاملات اخرى قد لا نحتاج إليها في الوقت الحالي مثل (=<<) و (=>>)  وهي خاصة بالازاحة Arethmatic Shift وسنتطرق لها في وقت آخر بإذن الله .