هنر برنامه نویسی با پایتون ، بخش هشتم: اولویت یا برتری عملگرها

حاصل عبارت ساده ای چون 3*5 و یا   2+3همواره روشن و مشخص است و هرکس بدون هیچ گونه ابهامی می تواند بگوید که نتیجه عبارت اولی عدد 15 و نتیجه دومی عدد 5 است. اما حاصل عبارت  3*2+10 بسته به اینکه ابتدا عملیات ضرب انجام شود و یا عملیات جمع ، می تواند دو مقدار متفاوت باشد. چنانچه ابتدا عملیات جمع انجام  شود( 2+10=12 ) و سپس عملیات ضرب (3*12=36 ) حاصل عبارت 3*2+10 عدد 36 است اما اگر ابتدا عملیات ضرب انجام شود (3*2=6 ) و سپس عملیات جمع (6+10=16) حاصل عبارت عدد 16 است. این مثال ساده به روشنی نشان می دهد که در زبانهای برنامه نویسی  وجود قوانینی که ترتیب پردازش و اجرای عملگرهای مختلف موجود در یک عبارت را به روشنی و بدون هیچ ابهامی بیان کند ضرورتی گریزناپذیر است. در فرهنگ واژگان زبانهای برنامه نویسی به این قوانین ، اولویت یا برتری عملگرها  گفته می شود. به بیان ساده تر برتری عملگرها مجموعه‌ای از قوانین است که مشخص می‌کند هنگام ارزیابی یک عبارت معین ، کدام عملگر باید زودتر از دیگر عملگرها انجام شود. برای پیاده سازی این قوانین ، زبان برنامه نویسی به هر عملگر و یا دسته ای از عملگرها یک برتری و یا اولویت نسبت می دهد و سپس به هنگام ارزیابی یک عبارت ، عملگری که بالاترین اولویت را دارد زودتر از دیگر عملگرها پردازش می کند.  برخی از مهمترین قوانین اولویت عملگرها در زبان پایتون عبارتند از : 

ادامه مطلب ...

هنر برنامه نویسی با پایتون ، بخش هفتم: حلقه ها

برنامه ساده چاپ اعداد طبیعی کوچکتر از 4 را در نظر بگیرید ساده ترین راه نوشتن این برنامه ، تکرار  دستور Print برای هر یک از اعداد 0 تا 4 است تا به ترتیب با چاپ اعداد 3 ، 2 ، 1 ، 0 خواسته برنامه نویس برآورده گردد. اما اگر بخواهید برنامه چاپ اعداد طبیعی کوچکتر از 50 را به شیوه گفته شده بنویسید ، به ناچار باید برای چاپ هر یک از اعداد 0 تا 49 یک دستور  print() جداگانه بنویسید. و ناگفته پیداست که پنجاه بار تکرار دستور print  روشی غیر منطقی است چراکه این سبک از برنامه نویسی حجم برنامه را بی دلیل  افزایش داده و با کاهش خوانایی و سخت تر شدن درک کد ، ویرایش و اصلاح کد در آینده را دشوار می سازد. این دو مثال ساده نیاز به وجود سازوکاری برای برنامه نویسی ساده تر و روان تر کدهایی که باید بارها و بارها اجرا شوند را روشن می سازد.

 ضرورت وجود این سازوکار دوچندان می شود اگر بدانیم که در بسیاری از الگوریتم های حل مسائل دنیای واقعی نیاز به تکرار و اجرای چندباره کد ، گریزناپذیر است .یک مثال عملی از نیاز به تکرار کد ، محاسبه حقوق و دستمزد کارکنان است. چراکه نرم افزار ناچار به تکرار پردازش محاسبه حقوق و دستمزد برای هر یک از کارکنان به صورت جداگانه است. بنابراین با فرض اینکه تعداد کارکنان یک شرکت فرضی 2500 نفر باشد.  نرم افزار مجبور است اجرای سه قطعه کد : واکشی اطلاعات کارمند از فایل ورودی ، محاسبه حقوق و دستمزد و ذخیره نتیجه محاسبه در فایل خروجی را از اولین کارمند شروع و تا رسیدن به آخرین کارمند ادامه دهد. یعنی اجرای سه قطعه کد گفته شده 2500 بار تکرار می شود. این مثال نمونه ای از یک تکرار پایان پذیر است زیرا تکرار اجرای کد پس از تعداد اجرای مشخص و یا برقراری یک شرط پایان می پذیرد . در فرهنگ واژگان زبان های برنامه نویسی به تکرار ، حلقه (loop) گفته می شود.  مفهوم حلقه پایان پذیر در محاسبه حقوق و دستمزد کارکنان در تصویر زیر نمایش داده شده است : 

ادامه مطلب ...