در قسمت قبل با نرم افزارهایی که برای شروع کار برنامه نویسی مورد نیاز هستند آشنا شدیم. در این بخش آشنایی اولیه با توابع در پایتون را به دست خواهیم آورد و در روزهای آینده به صورت جدی تر توابع را بررسی می کینم.
در دنیای برنامه نویسی یک تابع را می توان دنباله از دستورات دانست که با یک اسم خاص مشخص می شود و محاسبه ای را انجام میدهد. زمانی که یک تابع را تعریف می کنیم ابتدا باید آن را مشخص نماییم و سپس دستوراتی که قصد اجرای آنها را داریم مشخص خواهیم کرد. اگر بخواهیم کمی ساده تر به مفهوم تابع بپردازیم باید با مثالی ساده کار را پیش ببریم. فرض کنید قصد دارید اعداد 1 تا 100 را در یک معادله جاگذاری کرده و عددی که پاسخ معادله است (یعنی در معادله صدق می کند) را پیدا کنید. در حالت عادی باید ابتدا معادله را نوشته هر بار یک عدد را وارد آن کرده و صحت معادله را بررسی کنید تا پاسخ صحیح را پیدا کنید. اما با استفاده از توابع می توانید یک بار روش حل معادله را به صورت یک تابع نوشته و بعد با فراخوانی تابع دستور امتحان کردن اعداد 1 تا 100 را بر روی آن اعمال کنید. بر خلاف روش اول که نیازمند 100 بار وارد کردن یک خط دستور است در روش دوم تنها با یک خط دستور به هدف خود خواهید رسید. البته این ساده ترین مثال ممکن از کاربرد یک تابع است و در آینده با مثال های کاربردی تری از توابع آشنا خواهیم شد. پیش از این نوع عملکرد یک تابع را دیده ایم:
type (32) <<<
<‘type ’32>
در اینجا نام تابع type است و عبارتی که درون پرانتزها قرار می گیرد “آرگومان” نام دارد. در این مثال خاص، جواب تابع نوع آرگومان خوهد بود. به عبارت ساده، تابع آرگومان را دریافت کرده و یک نتیجه مشخص که وظیفه تابع است را باز می گرداند. این نتیجه در پایتون مقدار بازگشتی یا return value نامیده می شود.
توابع تبدیل نوع
پایتون به صورت پیش فرض توابعی دارد که می توانند یک مقدار را از نوعی به نوع دیگر تبدیل کنند. برای مثال تابع int می توانند اعداد اعشاری یا رشته هایی که به صورت عدد نوشته شده اند را دریافت کرده و همه را به عدد صحیح تبدیل کند. البته در مورد اعداد اعشاری عمل گرد کردن صورت نمی گیرد و اعداد بعد از ممیز حذف می شوند. همین مورد درباره دو تابع float و str هم صادق است. این دو تابع هم آرگومان دریافتی خود را به ترتیب به یک عدد اعشاری و یک رشته تبدیل می کنند:
int(3.99999) <<<
3
int(-2.3) <<<
2-
توابع ریاضی
پایتون به یک ماژول ریاضی به نام math مجهز است که تقریبا تمامی توابع ریاضی آشنا و کاربردی را در خود جا داده. ماژول فایلی است که شامل مجموعه ای از توابع مرتبط با هم است. برای استفاده از ماژول ابتدا باید آن را فراخوانی کنید. این کار معمولا در ابتدای کد برنامه صورت می گیرد. هر چند می توانید هر زمان که نیاز داشتید یک ماژول را فراخوانی کنید. فراخوانی ماژول به سادگی با دستور import انجام می شود:
import math <<<
نحوه استفاده از ماژول ها به صورت زیر است:
radians = 0.7 <<<
height = math.sin(radians) <<<
در این مثال سینوس یک زاویه بر حسب رادیان توسط برنامه محاسبه شده. همان طور که مشاهده می کنید ابتدا اندازه زاویه با متغیر رادیان تعریف شده و در خط بعدی، سینوس آن در متغیر H ذخیره شده است. برای به دست آوردن سینوس زاویه هم عبارت math.sin(radian) به کار رفته است. به این معنی که ابتدا ماژول math فراخوانی شده و سپس از درون این ماژول از ابزار sin که همان محاسبه گر سینوس است استفاده شده است. بین نام ماژول و نام ابزاری که قصد استفاده از آن را داریم هم یک نقطه قرار می گیرد. به این نوع کد نویسی در اصطلاح dot notation گفته می شود. در مثال زیر هم برنامه ای برای تبدیل اندازه یک زاویه بر حسب درجه به رادیان و سپس محاسبه سینوس آن نوشته شده که می توانید استفاده از ابزارهای pi (عدد پی در ریاضی که در ماژول پایتون تا 15 رقم اعشار در نظر گرفته می شود) و sin از ماژول math را در مخرج کسر مشاهده کنید.
degrees = 45 <<<
radians = degrees / 360.0 * 2 * math.pi <<<
math.sin(radians) <<<
0.707106781187
از توابع و ماژول ها در هر جایی می توان استفاده کرد. البته باید این نکته را به یاد داشته باشید که سمت چپ تعاریف همیشه باید شامل یک متغیر باشد و نمی توانید تابع یا دستوری را در سمت چپ تایپ کنید. به جز این مورد استثنا همه جا می توان از توابع استفاده کرد و حتی می توانید یک متغیر را به صورت یک معادله که درون آن یک ماژول وجود دارد تعریف کنید:
x = math.sin(degrees / 360.0 * 2 * math.pi)
در جلسه آینده با نحوه تعریف کردن توابع جدید و به کارگیری از آنها آشنا خواهیم شد.
بهتره در کامنت ها بپرسید تا بقیه دوستان هم استفاده کنند شاید سوال شما سوال کاربرای دیگر هم باشه
برای تبدیل درجه به رادیان بهتر از دستور [quote]math.radians(x)[/quote] استفاده کنید
درود بر همه
اول تشکر از آقای یوسفی زاده
دوم: شما تلگرام هم داری تا اونجا همه سوالاتم رو مطرح کنم و چپ و راست مزاحم بشم تا کچل بشی ؟ =smile :smiley3