أنماط المشغلات
تتضمن المشغلات في لغة البرمجة Python مايلي:
المشغلات الحسابية
مشغلات المقارنة (العلائقية)
- مشغلات الإدخال
- المشغلات المنطقية
- المشغل أحادي المعامل
- مشغلات العضوية
- مشغلات الهوية
- مشغلات الأفضلية
المشغلات الحسابية
بفرض المتحول a يحمل القيمة 10 والمتحول b يحمل القيمة 20 عندها :
#!/usr/bin/python
a = 21
b = 10
c = 0
c = a + b
print "Line 1 - Value of c is ", c
c = a - b
print "Line 2 - Value of c is ", c
c = a * b
print "Line 3 - Value of c is ", c
c = a / b
print "Line 4 - Value of c is ", c
c = a % b
print "Line 5 - Value of c is ", c
a = 2
b = 3
c = a**b
print "Line 6 - Value of c is ", c
a = 10
b = 5
c = a//b
print "Line 7 - Value of c is ", c
وعند تنفيذ البرنامج السابق تظهر النتيجة التالية
Line 1 - Value of c is 31
Line 2 - Value of c is 11
Line 3 - Value of c is 210
Line 4 - Value of c is 2
Line 5 - Value of c is 1
Line 6 - Value of c is 8
Line 7 - Value of c is 2
المشغل | الوصف | المثال |
(+) | تستخدم لجمع القيمتين على جانبي المشغل | a + b = 30 |
(-) | تستخدم لطرح القيمة اليمنى من اليسرى | a – b = -10 |
(*) | تستخدم لضرب القميتين على جانبي المشغل | a * b = 200 |
(/) القسمة | تستخدم لقسمة الطرف اليميني على الطرف اليساري | b / a = 2 |
(%) النسبة المئوية | تستخدم لقسمة الطرف اليميني على الطرف اليساري واسترجاع الباقي | b % a = 0 |
(**) المفسّر | يستخدم لحسابات تفسيرية(القوة) | a**b =10 to the power 20 |
// | تستخدم للقسمة حيث إن نتيجة القسمة هي الناتج الذي تحذف منه الأرقام بعد الفاصلة العشرية | 9//2 = 4 and 9.0//2.0 = 4.0 |
مشغلات المقارنة (العلائقية)
تستخدم هذه المشغلات للمقارنة بين القيم الواقعة على جانبي المشغل وتعطي العلاقة بينهما.
بفرض المتحول a يحمل القيمة 10 والمتحول b يحمل القيمة 20 عندها :
#!/usr/bin/python
a =21
b =10
c =0
if( a == b ):
print"Line 1 - a is equal to b"
else:
print"Line 1 - a is not equal to b"
if( a != b ):
print"Line 2 - a is not equal to b"
else:
print"Line 2 - a is equal to b"
if( a <> b ):
print"Line 3 - a is not equal to b"
else:
print"Line 3 - a is equal to b"
if( a < b ):
print"Line 4 - a is less than b"
else:
print"Line 4 - a is not less than b"
if( a > b ):
print"Line 5 - a is greater than b"
else:
print"Line 5 - a is not greater than b"
a =5;
b =20;
if( a <= b ):
print"Line 6 - a is either less than or equal to b"
else:
print"Line 6 - a is neither less than nor equal to b"
if( b >= a ):
print"Line 7 - b is either greater than or equal to b"
else:
print"Line 7 - b is neither greater than nor equal to b"
عند تطبيق هذا البرنامج تظهر النتيجة التالية:
Line 1 - a is not equal to b
Line 2 - a is not equal to b
Line 3 - a is not equal to b
Line 4 - a is not less than b
Line 5 - a is greater than b
Line 6 - a is either less than or equal to b
Line 7 - b is either greater than or equal to b
المشغل | الوصف | مثال |
== | إذا كان المعاملان لهما القيمة نفسها عندها يتحقق الشرط | (a == b) غير صحيحة |
!= | إذا كان المعاملان مختلفان بالقيمة عندها يتحقق الشرط | (a <> b) صحيحة وهذا يشبه عمل المشغل != |
<> | إذا كان المعاملان مختلفان بالقيمة فإن الشرط صحيح | (a <> b) صحيحة وهذا يشبه عمل المشغل != |
> | إذا كانت قيمة المعامل على يسار المشغل أكبر من قيمة المعامل على يمينه عندها يتحقق الشرط | (a > b) غير صحيح |
< | إذا كانت قيمة المعامل على يسار المشغل أصغر من قيمة المعامل على يمينه عندها يتحقق الشرط | (a < b) is true صحيحة |
>= | إذا كانت قيمة المعامل على يسار المشغل أكبر أو تساوي من قيمة المعامل على يمينه عندها يتحقق الشرط | (a >= b) غير صحيحة |
<= | إذا كانت قيمة المعامل على يسار المشغل أصغر أو تساوي من قيمة المعامل على يمينه عندها يتحقق الشرط | (a <= b) صحيحة |
مشغلات الإدخال
بفرض المتحول a يحمل القيمة 10 والمتحول b يحمل القيمة 20 عندها:
#!/usr/bin/python
a = 21
b = 10
c = 0
c = a + b
print "Line 1 - Value of c is ", c
c += a
print "Line 2 - Value of c is ", c
c *= a
print "Line 3 - Value of c is ", c
c /= a
print "Line 4 - Value of c is ", c
c = 2
c %= a
print "Line 5 - Value of c is ", c
c **= a
print "Line 6 - Value of c is ", c
c //= a
print "Line 7 - Value of c is ", c
فتظهر النتيجة التالية:
#!/usr/bin/python
a = 21
b = 10
c = 0
c = a + b
print "Line 1 - Value of c is ", c
c += a
print "Line 2 - Value of c is ", c
c *= a
print "Line 3 - Value of c is ", c
c /= a
print "Line 4 - Value of c is ", c
c = 2
c %= a
print "Line 5 - Value of c is ", c
c **= a
print "Line 6 - Value of c is ", c
c //= a
print "Line 7 - Value of c is ", c
المشغل | الوصف | مثال |
= | إسناد قيمة المعامل على الطرف اليميني إلى المعامل الواقع على الطرف اليساري | c = a + b تعني إسناد القيمة a + b إلى c |
+= AddAND | تستخدم لإضافة المعامل اليميني إلى المعامل اليساري وإسناد القيمة الناتجة إلى المعامل اليساري. | c += a تكافئ c = c + a |
-= SubtractAND | تستخدم لطرح المعامل اليميني من المعامل اليساري وإسناد القيمة الناتجة إلى المعامل اليساري. | c -= تكافئ c = c – a |
*= MultiplyAND | تستخدم لصرب المعامل اليمينيبالمعامل اليساري وإسناد القيمة الناتجة إلى المعامل اليساري. | c *= a تكافئ c = c * a |
/= DivideAND | تستخدم لقسمة المعامل اليميني على المعامل اليساري وإسناد القيمة الناتجة إلى المعامل اليساري. | c /= a تكافئ c = c / a c /= a تكافئ c = c / a |
%= ModulusAND | تستخدم لحساب النسبة المئوية لمعاملين وإسناد القيمة إلى المعامل اليساري. | c %= a تكافئ c = c % |
**= ExponentAND | تستخدم لحساب القوة (الأس) وإسناد القيمة الناتجة إلى المعامل اليساري | c **= تكافئ c = c ** a |
//= FloorDivision | تستخدم لقسمة الكلمة على المشغلات وإسناد القيمة الناتجة إلى المعامل اليساري | c //= a تكافئ c = c // a |
المشغلات أحادية المعامل
تعمل هذه المشغلات على مستوى البتات وتنجز العمل واحداً تلو الآخر. بفرض a=60 و b=13عندها يكتبان بالصيغة الثنائية على الشكل التالي:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
مثال
#!/usr/bin/python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b; # 12 = 0000 1100
print "Line 1 - Value of c is ", c
c = a | b; # 61 = 0011 1101
print "Line 2 - Value of c is ", c
c = a ^ b; # 49 = 0011 0001
print "Line 3 - Value of c is ", c
c = ~a; # -61 = 1100 0011
print "Line 4 - Value of c is ", c
c = a << 2; # 240 = 1111 0000
print "Line 5 - Value of c is ", c
c = a >> 2; # 15 = 0000 1111
print "Line 6 - Value of c is ", c
فتظهر النتيجة التالية:
Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is 49
Line 4 - Value of c is -61
Line 5 - Value of c is 240
Line 6 - Value of c is 15
يبين الجدول التالي المشغلات أحادية المعامل المستخدمة في لغة البرمجة Python
المشغل | الوصف | مثال |
& Binary AND | يستخدم لنسخ بت إلى النتيجة إذا كان موجوداً في المعاملين | (a & b) تعني 0000 1100)) |
| Binary OR | يستخدم لنسخ البت إذا كان موجوداً في أي من المعاملين | (a | b) =61 يعني (0011 1101) |
^ Binary XOR | يستخدم لنسخ البت إذا كان موجوداً في أحد المعاملين وغير موجود في الآخر | (a ^ b) = 49 (means 0011 0001) |
~ Binary Ones Complement | مشغل أحادي وله تأثير على بتات القلاب | (~a ) = -61 (means 1100 0011 in 2’s complement form due to a signed binary number. |
<< Binary Left Shift | يستخدم لإزاحة قيمة المعامل اليساري إلى اليسار بعدد بتات تحدد بالمعامل اليميني | a << = 240 (means 1111 0000) |
>> Binary Right Shift | يستخدم لإزاحة قيمة المعامل اليساري إلى اليمين بعدد بتات تحدد بالمعامل اليميني | a >> = 15 (means 0000 1111) |
المشغلات المنطقية
يبين الجدول التالي المشغلات المنطقية في لغة البرمجة Python
المشغل | الوصف | المثال |
and Logical AND | عندما يكون المعاملان صحيحان عندها الشرط محقق | a and b) ) صحيحة |
or Logical OR | عندما يكون أحد المعاملين لا يساوي الصفر عندها الشرط محقق | (a or b) صحيحة |
not Logical NOT | تستخدم لعكس الحالة المنطقية للمعامل | Not(a and b) خاطئة |
معاملات العضوية
تستخدم معاملات العضوية لاختبار عضوية المكونات في تتالي معين مثل سلسلة او قائمة أو وحدات. هناك نوعان من مشغلات العضوية كما في التالي:
المشغل | الوصف | مثال |
in | تشير إلى أن النتيجة صحيحة عند وجود متحول في تتالي معين وتشير إلى النتيجة خطأ عند غير ذلك. | x هو y هنا تكون النتيجة 1 عندماid(x) تساوي id(y) |
not in | تشير إلى أن النتيجة صحيحة عند عدم وجود متحول في تتالي معين وتشير إلى النتيجة خطأ عند غير ذلك. | x ليس y هنا تكون النتيجة 1 عندماid(x)لا تساوي id(y) |
مثال :
#!/usr/bin/python
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
print "Line 1 - a is available in the given list"
else:
print "Line 1 - a is not available in the given list"
if ( b not in list ):
print "Line 2 - b is not available in the given list"
else:
print "Line 2 - b is available in the given list"
a = 2
if ( a in list ):
print "Line 3 - a is available in the given list"
else:
print "Line 3 - a is not available in the given list"
فتظهر النتيجة التالية:
Line 1 - a is not available in the given list
Line 2 - b is not available in the given list
Line 3 - a is available in the given list
مشغلات الهوية
تستخدم هذه المشغلات للمقارنة بين مواقع الذاكرة لغرضين. يوجد مشغلان للهوية كما هو مبين في الجدول التالي:
المشغل | الوصف | المثال |
is | يشير إلى صحة النتيجة إذا كانت المتحولات على احد جانبي المعامل تشير إلى الغرض نفسه وتشير إلى خطأ النتيجة عند غير ذلك | x هو y هنا تكون النتيجة 1 عندماid(x) تساوي id(y) |
is not | يشير إلى خطأ النتيجة إذا كانت المتحولات على احد جانبي المعامل تشير إلى الغرض نفسه وتشير إلى صحة النتيجة عند غير ذلك | x ليس y هنا تكون النتيجة 1 عندماid(x) لا تساوي id(y) |
مشغلات الأسبقية (الأفضلية)
يبين الجدول التالي مشغلات الأسبقية مرتبة من الأسبقية الأعلى إلى الأدنى:
المشغل | الوصف |
** | الأسية (الرفع إلى قوة) |
~ + – | التكملة ولها طريقتان للتسمية (+ أحادية) أو (+@) و (- أحادية) أو (-@) |
* / % // | الضرب والقسمة والنسبة المئوية والقسمة مع إظهار الباقي |
+ – | الجمع والطرح |
>><< | الإزاحة نحو اليمين واليسار بمقدار بتات |
& | جمع البتات |
^ | | تستخدم حصريا لأحادي المعامل وللمعامل OR المعروف |
<= <>>= | مشغلات المقارنة |
<> == != | مشغلات المعادلة |
= %= /= //= -= += *= **= | مشغلات الإدخال |
is is not | مشغلات الهوية |
in not in | مشغلات العضوية |
not or and | المشغلات المنطقية |
يتأثر مشغل الأسبقية بطريقة تقييم التعبير (التركيب المستخدم).
مثال:
بفرض x = 7 + 3 * 2 حيث أسندت القيمة 13 للمتحول x وليس 20 لأن المشغل * له الأسبقية على المشغل + لذلك تتم أولاً عملية الضرب 3*2 ومن ثم يجمع الناتج الى 7.
مثال:
#!/usr/bin/python
a = 20
b = 10
c = 15
d = 5
e = 0
e = (a + b) * c / d #( 30 * 15 ) / 5
print "Value of (a + b) * c / d is ", e
e = ((a + b) * c) / d # (30 * 15 ) / 5
print "Value of ((a + b) * c) / d is ", e
e = (a + b) * (c / d); # (30) * (15/5)
print "Value of (a + b) * (c / d) is ", e
e = a + (b * c) / d; # 20 + (150/5)
print "Value of a + (b * c) / d is ", e
فتظهر النتيجة التالية:
Value of (a + b) * c / d is 90
Value of ((a + b) * c) / d is 90
Value of (a + b) * (c / d) is 90
Value of a + (b * c) / d is 50