الدرس الرابع .. الشـــرط من سلسلة ” تعلم بايثون “
مقدمة
حياة بلا قيود
يقول مالك بن نبى “ إن المجتمع الذي يعمل فيه كل فرد ما يحلو له ليس مجتمعاً ولكنه إما مجتمع في بداية تكونه وإما مجتمع بدأ حركة الانسحاب من التاريخ فهو بقية مجتمع “
فليست الحضارة بالحرية المطلقة التى ليس لها قيود . إن الدولة التى ليست له قوانين صارمة تحيى حياة متدهوة , ما بين قانون لا يردع المجرم و لا قانون يحمى المواطن . فالحياة لا بد لها من قوانين تحميها كى تستمر على الطريق المستقيم . فلابد لكل شئ من شروط و قيود و هذه هى سنن و قوانين أودعها الله سبحانه و تعالى فى هذا الكون و لا أفضل و لا أعظم من قوانين لهذه الدنيا إلا قوانين خالقها سبحانه و تعالى ألا و هى إتباع السراج المنير صلى الله عليه و سلم .
الشرط و المنطق
البرمجة أيضا لابد من وجود عمليات شرطية و منطقية فيها كى تصبح سليمة , ففى مثال حساب حجم الإسطوانة فى المقال السابق قد يكون فيه خطأ , تخيل لو أن المدخل كان بإشارة سالبة ؟ فسيعطيك الحجم بالإشارة السالبة و هذا خطأ , و لنفترض أن بالمسألة حساب للوغاريتمات و كان المدخل سالب القيمة ؟ فسيعطيك ناتج خطأ . فكيف نحل هذه المشكلة ؟ بالطبع نحتاج إلى عمل شرط يرفض المدخل السالب و يقبل المدخلات الموجبة و لهذا نستخدم الجمل الشرطية .
الجمل الشرطية
فالجمل الشرطية يقوم فيها المفسر بعمل مقارنة مثلا أو يكون مقيد بشرط منطقى معين و سنضرب أمثلة عديدة يتضح منها المعنى بكل وضوح و يسر .
نستخدم للجمل الشرطية فى لغة البايثون كلمة if و تستخدم هكذا :
if x > 0: print “x is positive”
نبدأ السطر بالكلمة المفتاحية if و تضع العملية المنطقية التى سنتطرق إليها الآن و بعد العملية تضع النقتطين ثم نبدأ السطر الجديد بعد أربع مسافات كالدوال ثم الجملة أو البيان .
العمليات المنطقية
العملية الأولى هى عملية مقارنة المساواة وهى عبارة عن علامة يساوى مكررة مرتين جرب تكتب فى المفسر التفاعلى للغة البايثون 2 ==2 و أنظر الناتج
>>> 2 == 2 True >>> 2 == 3 False
الناتج يكون إما Flase أو True و هذه نواتج العمليات المنطقية أما أن يخبرك بأن العملية حقيقية أو مزيفة .
و لاحظ أن True تبدأ بحرف كبير و ليست true .
و باقى العمليات المنطقية كالآتى
x != y أى أن x لا تساوى y
x>y أكبر من و عكسها x<y أصغر من
و أكبر من أو يساوى x >= y و أيضا أصغر من أويساوى
باقى القسمة
علمية باقى القسمة هى الحصول على باقى قسمة عددين غير قابلين للقسمة كقسمة 10 على 3 و ناتجها أنها تساوى 3 و الباقى واحد . و هى العلامة % و هى تعطيك الباقى فقط و ليس ناتج عملية القسمة جرب فى المفسر التفاعلى :
خصائص الجمل الشرطية
if x > 0: print “x is positive”
هذه هى الجملة المشروطة و معناها إذا كان قيمة x أكبر من الصفر فقم بطباعة أن x موجب و بهكذا تنتهى هذه الجملة و إن لم يكن الشرط متحقق فلا تتحقق الجملة و لا يطبع شئ و لا يعطيك نتيجة . لا حظ أنك تكتب الحرف الشرطى if متبوعا بالشرط ثم تليه بسطر فيه أمر او جملة تبدأ بعد أربعة مسافات ..المسافات ميزة تختص بها بايثون و لا بد من أن تكون مظبوطة دائما .
لو أردنا أن نرى نتيجة لو كان الشرط غير متحقق , أنظر إلى هذا المثال :
حاول إستخدام محرر مثل Geany
سيعطيك الشكل بهذا التنسيق
و فى هذا المثال يقوم حساب هل باقى القسمة للجملة ” 2 % x “ يساوى صفر أم لا ؟ فإن كان مساويا للصفر فيكون قابل للقسمة على الرقم 2 و يكون عدد زوجى ” even “ و بعد ذلك إن لم يكن متحقق فيه الشرط قم بطباعة أن الرقم فردى ” odd “ , و أستخدمنا جملة else و هذه معناها غير ذلك .
الجملة الشرطية تتكون من أفرع فالجزء الأول هو فرع و المقطع الثانى فرع و الذى يحوى else مثلا :
else: print x, “is odd”الجمل الشرطية المتداخلة
يمكن إستخدام جملة if داخل نفسها فمثلا :
هذه جملة شرطية تتكون من فرعين أساسيين و الفرع الثانى مكون من فرعين أساسيين آخرين .
يمكن للجملة الشرطية أن تكون بهذا الشكل
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 من الدالة و أنظر للنتائج . المراجع




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