المشغلات الرئيسية في لغة البرمجة Python




المشغلات هي التراكيب التي يمكنها التحكم بقيمةالمعاملات.

عند النظر في التعبير 4+5= 9 هنا 4 و5 تسمى المعاملات وإشارة (+) هي المشغل.


أنماط المشغلات


تتضمن المشغلات في لغة البرمجة 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

ليست هناك تعليقات:

إرسال تعليق