آکس کیددنیای برنامه‌نویسی نوجوانان
فصل ۴ · شروع یادگیری

تابع‌ها و استفادهٔ دوباره از کد

یک کار مشخص را نام‌گذاری کن، ورودی بده و نتیجه را تحویل بگیر.

۳۵ دقیقهٔ پیشنهادی مطالعه و تمرین۴ بخشتمرین عملی و خودآزمایی

بعد از این فصل می‌توانی…

  • تعریف تابع را از فراخوانی آن تشخیص بدهی.
  • تفاوت پارامتر، آرگومان و مقدار بازگشتی را توضیح بدهی.
  • محاسبهٔ تکراری را به تابع تبدیل کنی.

پیشنهاد برای پیش‌نیاز: شرط‌ها و مدیریت خطا

ویدیوی این فصل

تابع‌ها و استفادهٔ دوباره از کد

ویدیوی این فصل هنوز اضافه نشده است. می‌توانی همین حالا آموزش متنی و تمرین‌ها را شروع کنی.

بخش 1

تابع آماده و تابع خودمان

تابع قطعه‌ای از کد برای انجام یک کار است. print، input، int، float، min و max از تابع‌های آماده‌اند. مثلاً max(3, 8) مقدار ۸ را برمی‌گرداند.

نام تابع‌های آماده را برای متغیرها انتخاب نکن. اگر sum = 5 بنویسی، دیگر sum(...) در همان برنامه به تابع جمع اشاره نمی‌کند.

بخش 2

تعریف با def و اجرای تابع

def تابع را تعریف می‌کند. بدنهٔ دارای تورفتگی در لحظهٔ تعریف اجرا نمی‌شود؛ باید نام تابع را همراه پرانتز فراخوانی کنی.

تابع را پیش از اولین فراخوانی تعریف کن. هر بار فراخوانی، دستورهای بدنه دوباره اجرا می‌شوند.

یک پیام چند بار

def greet():
    print("سلام!")

print("شروع")
greet()
greet()
خروجی مورد انتظار
شروع
سلام!
سلام!
بخش 3

پارامتر و آرگومان

پارامتر نام ورودی در تعریف تابع است؛ آرگومان مقدار واقعی هنگام فراخوانی است. در greet(name)، name پارامتر است و در greet("Sara")، متن Sara آرگومان است.

اگر تابع دو پارامتر دارد، در فراخوانی معمول باید دو مقدار با ترتیب درست بدهی. از نام‌های گویا استفاده کن تا معنی هر ورودی روشن باشد.

محاسبهٔ مساحت

def area(width, height):
    return width * height

print(area(4, 6))
print(area(3, 5))
خروجی مورد انتظار
24
15
بخش 4

return با print فرق دارد

print نتیجه را نمایش می‌دهد. return نتیجه را به محل فراخوانی می‌فرستد تا بتوانی آن را ذخیره کنی یا در محاسبهٔ دیگری به کار ببری. اجرای تابع با رسیدن به return تمام می‌شود.

اگر تابع return نداشته باشد، مقدار بازگشتی آن None است. تابعی که فقط چاپ می‌کند الزاماً نتیجهٔ عددی برای محاسبه برنمی‌گرداند.

استفاده از نتیجه

def double(number):
    return number * 2

result = double(7)
print(result + 1)
خروجی مورد انتظار
15
حالا نوبت توست

تابع محاسبهٔ دستمزد

تمرین فصل قبل را به تابع computepay(hours, rate) تبدیل کن. تابع باید عدد برگرداند. نتیجهٔ computepay(45, 10) را چاپ کن.

یک راهنمای کوچک

منطق اضافه‌کاری داخل تابع باشد؛ print را بیرون تابع نگه دار.

پاسخ پیشنهادی و خروجی
def computepay(hours, rate):
    if hours > 40:
        return 40 * rate + (hours - 40) * rate * 1.5
    return hours * rate

print(computepay(45, 10))

خروجی نمونه

475.0

خودآزمایی

پاسخ را انتخاب کن و دلیل آن را بخوان. این بخش برای تمرین است و نمرهٔ رسمی ثبت نمی‌کند.

1. بدنهٔ تابع چه زمانی اجرا می‌شود؟
2. تابع بدون return چه برمی‌گرداند؟