هنر برنامه نویسی با پایتون ، بخش نهم: تابع (Function)

گاهی ‌‌‌‌‌نیاز ‌‌‌‌‌است ‌‌‌‌‌تا ‌‌‌‌‌قطعه ‌‌‌‌‌کدی ‌‌‌‌‌که ‌‌‌‌‌یک ‌‌‌‌‌وظیفه ‌‌‌‌‌مشخص ‌‌‌‌‌را ‌‌‌‌‌انجام ‌‌‌‌‌می ‌‌‌‌‌دهد ‌‌‌‌‌در ‌‌‌‌‌بخشهای ‌‌‌‌‌مختلف ‌‌‌‌‌یک ‌‌‌‌‌برنامه ‌‌‌‌‌، ‌‌‌‌‌بارها ‌‌‌‌‌اجرا ‌‌‌‌‌شود. ‌‌‌‌‌برای ‌‌‌‌‌مثال ‌‌‌‌‌در ‌‌‌‌‌سامانه ‌‌‌‌‌مدیریت ‌‌‌‌‌تحصیلی ‌‌‌‌‌دانشگاه ‌‌‌‌‌، ‌‌‌‌‌قطعه ‌‌‌‌‌برنامه ‌‌‌‌‌محاسبه ‌‌‌‌‌میانگین ‌‌‌‌‌نمرات ‌‌‌‌‌‌دانشجویان ‌‌‌‌‌به ‌‌‌‌‌هنگام ‌‌‌‌‌‌پردازش ‌‌‌‌‌کارنامه ‌‌‌‌‌پایان ‌‌‌‌‌ترم ‌‌‌‌‌، ‌‌‌‌‌محاسبه ‌‌‌‌‌میزان ‌‌‌‌‌تخفیف ‌‌‌‌‌شهریه ‌‌‌‌‌ویا ‌‌‌‌‌تعیین ‌‌‌‌‌تعداد ‌‌‌‌‌واحدهایی ‌‌‌‌‌که ‌‌‌‌‌دانشجویان ‌‌‌‌‌می ‌‌‌‌‌توانند ‌‌‌‌‌در ‌‌‌‌‌آخرین ‌‌‌‌‌نیم ‌‌‌‌‌سال ‌‌‌‌‌تحصیلی ‌‌‌‌‌بردارند ‌‌‌‌‌اجرا ‌‌‌‌‌می ‌‌‌‌‌شود. ‌‌‌‌‌نیاز ‌‌‌‌‌به ‌‌‌‌‌اجرای ‌‌‌‌‌چند ‌‌‌‌‌باره ‌‌‌‌‌یک ‌‌‌‌‌قطعه ‌‌‌‌‌کد ‌‌‌‌‌واحد ‌‌‌‌‌در ‌‌‌‌‌بسیاری ‌‌‌‌‌از ‌‌‌‌‌برنامه ‌‌‌‌‌های ‌‌‌‌‌بزرگ ‌‌‌‌‌که ‌‌‌‌‌برای ‌‌‌‌‌حل ‌‌‌‌‌مسائل ‌‌‌‌‌دنیای ‌‌‌‌‌واقعی ‌‌‌‌‌نوشته ‌‌‌‌‌می ‌‌‌‌‌شوند ‌‌‌‌‌وجود ‌‌‌‌‌دارد. ‌‌‌‌‌و ‌‌‌‌‌باید ‌‌‌‌‌به ‌‌‌‌‌خوبی ‌‌‌‌‌تدبیر ‌‌‌‌‌گردد. ‌‌‌‌‌از ‌‌‌‌‌دیگرسو ‌‌‌‌‌برای ‌‌‌‌‌نوشتن ‌‌‌‌‌یک ‌‌‌‌‌برنامه ‌‌‌‌‌بزرگ ‌‌‌‌‌و ‌‌‌‌‌پیچیده ‌‌‌‌‌با ‌‌‌‌‌چندین ‌‌‌‌‌وظیفه ‌‌‌‌‌مختلف ‌‌‌‌‌می ‌‌‌‌‌توان ‌‌‌‌‌آن ‌‌‌‌‌را ‌‌‌‌‌به ‌‌‌‌‌چند ‌‌‌‌‌زیر ‌‌‌‌‌برنامه ‌‌‌‌‌کوچک ‌‌‌‌‌که ‌‌‌‌‌هریک ‌‌‌‌‌وظیفه ‌‌‌‌‌مشخصی ‌‌‌‌‌را ‌‌‌‌‌انجام ‌‌‌‌‌می ‌‌‌‌‌دهند ‌‌‌‌‌شکست ‌‌‌‌‌و ‌‌‌‌‌هر ‌‌‌‌‌وظیفه ‌‌‌‌‌را ‌‌‌‌‌جداگانه ‌‌‌‌‌کد ‌‌‌‌‌نویسی ‌‌‌‌‌و ‌‌‌‌‌پیاده ‌‌‌‌‌سازی ‌‌‌‌‌کرد. ‌‌‌‌‌این ‌‌‌‌‌روش ‌‌‌‌‌، ‌‌‌‌‌اشکال ‌‌‌‌‌زدایی ‌‌‌‌‌نرم ‌‌‌‌‌افزار ‌‌‌‌‌و ‌‌‌‌‌آزمون ‌‌‌‌‌درستی ‌‌‌‌‌کارکرد ‌‌‌‌‌آن ‌‌‌‌‌را ‌‌‌‌‌ساده ‌‌‌‌‌تر ‌‌‌‌‌می ‌‌‌‌‌کند. ‌‌‌‌‌برای ‌‌‌‌‌مثال ‌‌‌‌‌سامانه ‌‌‌‌‌بانکداری ‌‌‌‌‌، ‌‌‌‌‌یک ‌‌‌‌‌نرم ‌‌‌‌‌افزار ‌‌‌‌‌بزرگ ‌‌‌‌‌و ‌‌‌‌‌پیچیده ‌‌‌‌‌است ‌‌‌‌‌که ‌‌‌‌‌می ‌‌‌‌‌تواند ‌‌‌‌‌به ‌‌‌‌‌بخش ‌‌‌‌‌های ‌‌‌‌‌کوچکتری ‌‌‌‌‌چون ‌‌‌‌‌: ‌‌‌‌‌افتتاح ‌‌‌‌‌حساب ‌‌‌‌‌، ‌‌‌‌‌واریز ‌‌‌‌‌، ‌‌‌‌‌برداشت ‌‌‌‌‌، ‌‌‌‌‌انتقال ‌‌‌‌‌، ‌‌‌‌‌حواله ‌‌‌‌‌، ‌‌‌‌‌‌بستن ‌‌‌‌‌حساب ‌‌‌‌‌و ‌‌‌‌‌دیگر ‌‌‌‌‌وظایف ‌‌‌‌‌موجود ‌‌‌‌‌در ‌‌‌‌‌حوزه ‌‌‌‌‌بانکداری ‌‌‌‌‌شکسته ‌‌‌‌‌شود.بنا ‌‌‌‌‌بر ‌‌‌‌‌آنچه ‌‌‌‌‌گفته ‌‌‌‌‌شد ‌‌‌‌‌در ‌‌‌‌‌زبان ‌‌‌‌‌های ‌‌‌‌‌برنامه ‌‌‌‌‌نویسی ‌‌‌‌‌باید ‌‌‌‌‌راهی ‌‌‌‌‌برای ‌‌‌‌‌دوری ‌‌‌‌‌گزیدن ‌‌‌‌‌از ‌‌‌‌‌نوشتن ‌‌‌‌‌کدهای ‌‌‌‌‌تکراری ‌‌‌‌‌و ‌‌‌‌‌نیزامکان ‌‌‌‌‌تجزیه ‌‌‌‌‌یک ‌‌‌‌‌مسئله ‌‌‌‌‌بزرگ ‌‌‌‌‌و ‌‌‌‌‌پیچیده ‌‌‌‌‌به ‌‌‌‌‌‌چندین ‌‌‌‌‌مسئله ‌‌‌‌‌کوچک ‌‌‌‌‌و ‌‌‌‌‌ساده ‌‌‌‌‌تر ‌‌‌‌‌وجود ‌‌‌‌‌داشته ‌‌‌‌‌باشد ‌‌‌‌، ‌‌‌‌‌بایستگی ‌‌‌‌‌برآوردن ‌‌‌‌‌این ‌‌‌‌‌دو ‌‌‌‌‌نیاز، ‌‌‌‌‌سرآغاز ‌‌‌‌‌برآمدن ‌‌‌‌‌‌یک ‌‌‌‌‌مفهوم ‌‌‌‌‌بسیار ‌‌‌‌‌مهم ‌‌‌‌‌و ‌‌‌‌‌اساسی ‌‌‌‌‌در ‌‌‌‌‌زبانهای ‌‌‌‌‌‌برنامه ‌‌‌‌‌نویسی ‌‌‌‌‌است ‌‌‌‌‌که ‌‌‌‌‌از ‌‌‌‌‌آن ‌‌‌‌‌با ‌‌‌‌‌نام ‌‌‌‌‌‌تابع ‌‌‌‌‌(function) ‌‌‌‌‌یاد ‌‌‌‌‌می ‌‌‌‌‌شود. 

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

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

حاصل عبارت ساده ای چون 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) گفته می شود.  مفهوم حلقه پایان پذیر در محاسبه حقوق و دستمزد کارکنان در تصویر زیر نمایش داده شده است : 

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

هنر برنامه نویسی با پایتون ، بخش ششم : آشنایی با دستور range ، عملگرهای عضویت ، تبدیل نوع و گرفتن ورودی از کاربر

یک دنباله عددی ، رشته ای از اعداد است که در آن  هر عدد با افزودن یک عدد ثابت مخالف با صفر به عدد پیش از خود بدست می آید. برای نمونه رشته اعداد 3, 6, 9, 12, 15  یک دنباله عددی است که با عدد 3 آغاز شده و با گامهای افزایشی 3 واحدی رشد کرده است. یعنی هر عدد با افزودن عدد 3 به عدد قبلی بدست آمده است. آخرین عدد این دنباله یعنی عددی که دنباله در آن پایان یافته است. عدد 15 است. در زبان برنامه نویسی پایتون ، برای ساخت دنباله ای از اعداد دلخواه از دستور range() استفاده می شود. واژه درست تر برای اشاره به این دستور ، تابع range()  است که پیش از آشنایی با مفهوم تابع در زبان های برنامه نویسی ما همچنان از واژه دستور استفاده خواهیم کرد. 

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

هنر برنامه نویسی با پایتون ، بخش پنجم : تصمیم گیری و هدایت جریان برنامه

به عنوان یک برنامه نویس تنها زمانی به ارزش عملگرهای منطقی و مقایسه ای پی خواهید برد که با مفهوم هدایت جریان برنامه یا همان تصمیم گیری در زبانهای برنامه نویسی آشنا شوید. چیزی که موضوع اصلی این فصل است.

تصمیم گیری مفهومی آشنا و پرکاربرد در زندگی شخصی و کاری هر فرد است. و همه ما در لحظه لحظه زندگی خود ناچار به تصمیم گیری و اقدام بر اساس آن هستیم. برای نمونه مدیر کسب و کاری که با توجه به شرایط بازار، دستور پایان دادن به تولید یک محصول قدیمی را می دهد و یا بانوی خانه داری که نوع غذای ناهار خانواده را انتخاب می کند تا کارمندی که مسیر رانندگی تا اداره را با توجه شرایطی چون زمان باقی مانده به ساعت شروع کار، خلوتی خیابانها و ... انتخاب می کند ، همگی در حال تصمیم گیری هستند. هرچند که ممکن است شیوه و سطح تصمیم گیری هر یک از ما با دیگری متفاوت باشد اما بسیاری از تصمیماتی که در دنیای شخصی و یا حتی سازمانی گرفته می شوند را می توان بر مبنای اصل انتخاب بر اساس شرایط تفسیر کرد. به بیان ساده تر فرد تصمیم گیرنده شرایطی را بررسی می کند و در صورت برقراری آن شرایط رفتاری را انتخاب می کند.

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