الدرس الرابع .. الشـــرط من سلسلة ” تعلم بايثون “

بلندر و بايثون

مـا أجمـل البسـاطـة فى زمـن التعقيد …. تعلم بلندر و بايثون ببساطة

الدرس الرابع .. الشـــرط من سلسلة ” تعلم بايثون “

التكرار - بايثون

مقدمة

حياة بلا قيود

يقول مالك بن نبى إن المجتمع الذي يعمل فيه كل فرد ما يحلو له ليس مجتمعاً ولكنه إما مجتمع في بداية تكونه وإما مجتمع بدأ حركة الانسحاب من التاريخ فهو بقية مجتمع

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

الشرط و المنطق

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

الجمل الشرطية

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

نستخدم للجمل الشرطية فى لغة البايثون كلمة if و تستخدم هكذا :

if x > 0:
print “x is positive”

نبدأ السطر بالكلمة المفتاحية if و تضع العملية المنطقية التى سنتطرق إليها الآن و بعد العملية تضع النقتطين ثم نبدأ السطر الجديد بعد أربع مسافات كالدوال ثم الجملة أو البيان .

العمليات المنطقية

العملية الأولى هى عملية مقارنة المساواة وهى عبارة عن علامة يساوى مكررة مرتين جرب تكتب فى المفسر التفاعلى للغة البايثون 2 ==2 و أنظر الناتج

>>> 2 == 2
True
>>> 2 == 3
False

الناتج يكون إما Flase أو True و هذه نواتج العمليات المنطقية أما أن يخبرك بأن العملية حقيقية أو مزيفة .

>>> type(True)
<type ‘bool’>

و لاحظ أن True تبدأ بحرف كبير و ليست true .

و باقى العمليات المنطقية كالآتى

x != y  أى أن x لا تساوى y

x>y   أكبر من  و عكسها   x<y     أصغر من

و أكبر من أو يساوى x >= y و أيضا أصغر من أويساوى

باقى القسمة

علمية باقى القسمة هى الحصول على باقى قسمة عددين غير قابلين للقسمة كقسمة 10 على 3 و ناتجها أنها تساوى 3 و الباقى واحد . و هى العلامة % و هى تعطيك الباقى فقط و ليس ناتج عملية القسمة جرب فى المفسر التفاعلى :

>>> 10 % 9
1
>>> 10 % 3
1
لاحظ أن الباقى واحد فى نفس الحالتين لإنه يحسب باقى القسمة فقط
>>> 10 % 4
2

خصائص الجمل الشرطية

if x > 0:
print “x is positive”

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

لو أردنا أن نرى نتيجة لو كان الشرط غير متحقق , أنظر إلى هذا المثال :

if x % 2 == 0:
print x, “is even”
else:
print x, “is odd

حاول إستخدام محرر مثل Geany

سيعطيك الشكل بهذا التنسيق

التكرار - بايثون

و فى هذا المثال يقوم حساب هل باقى القسمة للجملة ” 2 % x “ يساوى صفر أم لا ؟ فإن كان مساويا للصفر فيكون قابل للقسمة على الرقم 2 و يكون عدد زوجى ” even “ و بعد ذلك إن لم يكن متحقق فيه الشرط قم بطباعة أن الرقم فردى ” odd “ , و أستخدمنا جملة else و هذه معناها غير ذلك .

الجملة الشرطية تتكون من أفرع فالجزء الأول هو فرع و المقطع الثانى فرع و الذى يحوى else مثلا :

else: print x, “is odd”
يمكن أن نقوم بعمل دالة داخلها شرط فمثلا دالة لحساب إذا كان العدد زوجى أو فردى
def odd_even (x):
if x % 2 == 0:
print x, “is even”
else:
print x, “is odd”
و قد تتعدد الأفرع فى الجمل الشرطية ففى الجملة السابقة وضعنا شرط واحد و لكن قد نحتاج إلى أكثر من شرط : if x < y: print x, “is less than”, y elif x > y: print x, “is greater than”, y else: print x, “and”, y, “are equal” لو كانت x أصغر من y يطبع أن x أصغر من y و لو كان x أكبر من y يطبع أن x أكبر من y و غير ذلك يطبع أن x تساوى y . إستخدمنا شرطان و إن لم يتحققا نستخدم جملة eles و التى تعنى غير ذلك و جملة else لابد أن تكون هى الخاتمة للجملة الشرطية و قد تتعدد الشروط بإستخدام جملة elif و ليس للجملة الشرطية عدد معين من الشروط .

الجمل الشرطية المتداخلة

يمكن إستخدام جملة if داخل نفسها فمثلا :

if x == y:
print x, “and”, y, “are equal”
else:
if x < y:
print x, “is less than”, y
else:
print x, “is greater than”, y

هذه جملة شرطية تتكون من فرعين أساسيين و الفرع الثانى مكون من فرعين أساسيين آخرين .

يمكن للجملة الشرطية أن تكون بهذا الشكل

if 0 < x < 10:     print "x is a positive single digit." و هذه معناها هل الرقم x محصور بين الصفر و الرقم عشرة ؟ فيكون عدد آحادى . جملة return لإيقاف الجملة الشرطية داخل الدوال فقط  قبل إنتهاء الدلة نستخدم جملة return , فمثلا اللوغاريتم لا يقبل أرقام سالبة فلو أردنا عمل دالة هكذا : import math def print_logarithm(x):     if x <= 0:         print "Positive numbers only, please."         return      result = math.log(x)     print "The log of x is", result أستخدمنا جملة return داخل الجملة الشرطية و هذه معناها أنه إن لم يتحقق الشرط قم بطباعة "Positive numbers only, please." يعنى الأرقام الموجبة فقط و بعدها قم بإنهاء الدالة و لا تكمل تنفيذ باقى الدالة . حاول تنفيذ الدالة بقيمة سالبة و حاول أن تحذف جملة return من الدالة و أنظر للنتائج .  المراجع  

How to Think Like a Computer Scientist



تعليق واحد

  1. I think i’ve seen this somewhere before…but it’s not bad at all

اترك تعليقاً :

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