تابع در برنامه نویسی چیست؟ — به زبان ساده

۵۲۱۲ بازدید
آخرین به‌روزرسانی: ۰۶ اردیبهشت ۱۴۰۲
زمان مطالعه: ۲۰ دقیقه
تابع در برنامه نویسی چیست؟ — به زبان ساده

توابع ماژول‌های «مستقل» از کدها هستند که یک وظیفه خاصی را انجام می‌دهند. تابع در برنامه نویسی معمولاً داده‌ها را «دریافت» می‌کند، روی آن‌ها پردازش انجام می‌دهد و نتیجه را «باز می‌گرداند». زمانی که تابع به وسیله یک زبان برنامه نویسی نوشته می‌شود، می‌تواند بارها و بارها مورد استفاده قرار بگیرد. توابع می‌توانند در داخل توابع دیگر «فراخوانی» شوند. تابع در برنامه نویسی باعث خوانایی بیش‌تر کدها و سادگی آن‌ها می‌شود. در این مقاله به طور کامل و جامع به این سوال که تابع در برنامه نویسی چیست پاسخ داده شده است و به علاقه‌مندان برنامه نویسی، مطالعه این مقاله پیشنهاد می‌شود.

فهرست مطالب این نوشته

تابع در برنامه نویسی چیست ؟

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

برای مثال، محاسبه ریشه دوم یک عدد می‌تواند یک تابع در برنامه نویسی باشد و در کدهای برنامه اصلی فراخوانی شود. به طور کلی می‌توان گفت که برای کاربر اهمیتی ندارد که یک تابع چه کاری را انجام می‌دهد و فقط انجام شدن آن کار، اهمیت دارد.

فرآیند اجرای تابع در برنامه نویسی چگونه انجام می‌شود؟

هنگامی که یک تابع در برنامه‌ای «فراخوانی» می‌شود، برنامه در حال اجرا بخش فعلی کد را «ترک» می‌کند و شروع به اجرای اولین خط از تابع می‌کند و پس از اتمام اجرای کدهای داخل تابع، مجدداً به برنامه بازمی‌گردد و خط بعدی برنامه اصلی را اجرا می‌کند. در ادامه جریان کار تابع در برنامه نویسی به ترتیب ارائه شده است:

  1. اجرای برنامه وارد خطی از برنامه می‌شود که شامل «فراخوانی تابع» است.
  2. برنامه وارد تابع می‌شود و کدهای تابع را از خط اول شروع به خواندن و پیاده‌سازی می‌کند.
  3. همه دستورالعمل‌های داخل تابع از بالا تا پایین اجرا می‌شوند.
  4. پس از اتمام اجرای همه دستورات تابع، برنامه تابع را ترک می‌کند و بازمی‌گردد به قسمتی از کدهای اصلی برنامه که از آن‌جا وارد تابع شده بود.
  5. هر داده‌ای که به وسیله تابع محاسبه و برگردانده می‌شود، به جای تابع در خط اصلی کدهای برنامه مورد استفاده قرار می‌گیرد.
    لوگو برنامه نویسی

در بخش نخستین به این سوال اساسی که تابع در برنامه نویسی چیست پاسخ داده شد و بخش بعدی به این موضوع که چرا توابع در برنامه نویسی نوشته می‌شوند اختصاص داده شده است.

چرا از توابع در برنامه نویسی استفاده می‌شود؟

دلایل متعددی برای دلیل استفاده از توابع در برنامه نویسی وجود دارد؛ از جمله این دلایل می‌توان به ای مسئله اشاره کرد که با استفاده از توابع در برنامه نویسی می‌توان از نوشتن کدهای تکراری اجتناب کرد و همچنین امکان استفاده از متغیرهای محلی در توابع کار مدیریت فضای نام را آسان‌تر می‌کند. در ادامه، هر یک از دلایل چرایی استفاده از تابع در برنامه نویسی فهرست شده است:

  • توابع این امکان را به برنامه نویسان می‌دهند که برنامه نوشته شده را به عنوان یک گروه از زیر توابع (Sub-Step) در نظر بگیریم. هر زیر تابع، توابع مخصوص به خودش را دارد. زمانی که یک برنامه به نظر سخت و طولانی می‌آید، می‌توان آن را به چند زیر تابع تقسیم کرد.
  • تابع به برنامه نویسان این امکان را می‌دهد که به جای دوباره نویسی کدها، مجدداً از همان کدهای قبلی استفاده کنند.
  • برنامه نویسان به کمک توابع می‌توانند فضای نام متغیر (Variable Namespace) را خالی نگه دارند. متغیرهای محلی فقط تا زمانی وجود دارند که تابع در حال کار کردن است. به عبارت دیگر، تابع شماره یک از متغیری به نام «i» و تابع دو نیز از همین متغیر استفاده می‌کنند و هیچ مشکلی ایجاد نمی‌شود. هر متغیر «i» فقط تا زمانی وجود دارد که تابع آن در حال اجراست و پس از اتمام اجرای تابع، متغیرها از بین می‌روند.
  • توابع این امکان را به برنامه نویسان می‌دهند که قسمت‌های کوچکی از برنامه را به صورت جدا پیاده‌سازی و تست کنند. این مسئله در زبان‌های تفسیری مانند زبان برنامه نویسی «Matlab» کاربرد دارد. همچنین، استفاده از توابع برای زبان‌های برنامه نویسی دیگری مانند جاوا (Java)، اکشن اسکریپت (ActionScript)، سی (C) و سایر موارد نیز کاربردی است. زبان برنامه نویسی تفسیری به زبانی گفته می‌شود که در زمان اجرای برنامه، کدها را خط به خط به ترتیب می‌خواند و پیش می‌رود.
    در مقابل آن، زبان‌های برنامه نویسی کامپایلی وجود دارند که قبل از اجرا، تمام عبارت‌های برنامه را به یک باره ترجمه می‌کنند و سپس اجرا می‌شوند. حال در ادامه بحث چیستی توابع در برنامه نویسی به مراحل نوشتن توابع پرداخته شده است.

مراحل ایجاد تابع در برنامه نویسی به چه صورت است؟

مراحل ایجاد یک تابع در برنامه نویسی را می‌توان به صورت زیر انجام داد:

  1. اولین مرحله، درک هدف و منظور تابع است.
  2. داده‌هایی که از قسمت فراخوانی شده وارد تابع می‌شوند، باید در قالب پارامتر تعریف شوند.
  3. تعریف متغیرهایی که در داخل تابع برای رسیدن به خروجی مورد نظر نیاز هستند.
  4. مجموعه مراحلی که برنامه برای دستیابی به هدف مورد نظر انجام می‌دهد.

در بخش بعدی مقاله «تابع در برنامه نویسی» به بررسی تابع به عنوان یک جعبه سیاه (Black Box) پرداخته می‌شود. جعبه سیاه به برنامه‌ای گفته می‌شود که ساختار داخلی آن مشخص نیست، اما وظیفه مشخصی انجام می‌دهد.

ورودی و خروجی توابع

اجزای مختلف تابع در برنامه نویسی

به تابع در برنامه نویسی می‌توان «جعبه سیاه» (Black Box) گفت، زیرا نیازی نیست همه بدانند که تابع چه کاری را انجام می‌دهد. در تابع فقط ورودی که وارد و خروجی‌ که از آن خارج می‌شود، دارای اهمیت هستند. زمانی که یک تابع به عنوان جعبه سیاه تعریف می‌شود، نیاز است که ویژگی‌های زیر برای توصیف تابع تعریف شوند:

  1. اسم (The Name)، هدف تابع را نشان می‌دهد، این اسم معمولاً می‌تواند یک فعل یا عبارت، مانند «compute_Average» یا «average» باشد.
  2. به ورودی‌ها (The Inputs) پارامتر گفته می‌شود. پارامتر به توصیف مورد نیاز در مورد وظیفه داده‌‌ها در تابع می‌پردازد و به هر قطعه داده یک نام نمادین برای استفاده در تابع می‌دهد.
  3. محاسبات در هر تابع متفاوت است.
  4. خروجی‌ها (The Output) معمولاً یک مقدار هستند، اما می‌توانند گاهی تعدادشان زیاد و گاهی هیچ خروجی وجود نداشته باشد. خروجی‌های توابع در داخل تابع محاسبه می‌شوند و به عنوان متغیرهای خروجی بازگردانده (Returned) می‌شوند.

بخش بعدی این مقاله به بررسی فضای کاری (Workspace) مورد نیاز توابع در برنامه نویسی اختصاص داده شده است.

فضای کاری تابع در برنامه نویسی

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

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

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

بدین ترتیب، تنها راهی که اطلاعات می‌توانند وارد تابع شوند به وسیله استفاده از پارامترها خواهد بود. در برخی از زبان‌های برنامه نویسی شی گرا (Object Oriented Languages) مانند سی پلاس پلاس (++C)، جاوا (Java) و اکشن اسکریپت (ActionScript) یک تابع می‌تواند همه متغیرهای مرتبط با شی درون خود را ببیند. در ادامه مقاله «تابع در برنامه نویسی» به بررسی پارامترهای متعارف و پارامترهای حقیقی در تابع پرداخته شده است.

پارامترهای متعارف و پارامترهای حقیقی در تابع

هنگامی که برنامه نویس یک تابع ایجاد می‌کند، یک عمل عمومی (Generic) را نشان می‌دهد که می‌تواند در بسیاری از موقعیت‌ها از آن استفاده شود. برای مثال، اگر تابعی بخواهد معدل را حساب کند، تفاوتی ندارد که این معدل باید برای یک آزمون، در یک مسابقه، به عنوان تکلیف، نمره میان‌ترم و سایر موارد محاسبه شود و با توجه به هر فهرستی از نمره‌ها، معدل را محاسبه خواهد کرد.

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

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

function average_grade( list_of_grades ) 
.... 
end function

در داخل تابع فوق با نام «average_grade»، پارامتر «list_of_grades» به جای هر متغیری استفاده می‌شود که کاربر نمراتی که هنوز معدل آن‌ها حساب نشده است را در آن ذخیره کرده است. فراخوانی تابع در برنامه اصلی به صورت زیر انجام می‌شود:

 // مثلاً کدهای قبل از فراخوانی تابع در اینجا قرار دارند 

midterm_grades = ... // در اینجا آرایه‌ای از نمرات ایجاد می‌شود 

print "the average of the midterm was" 
print average_grade( midterm_grades )

در کدهای فوق، نمرات در متغیر «midterm_grades» به عنوان متغیر «list_of_grades» تابع ‌ذخیره می‌شوند. در طول اجرای برنامه، هر دو نام به یک چیز مشابه اشاره می‌کنند؛ با این تفاوت که این اتفاق در زمان‌های مختلف رخ می‌دهد. پارامتر  «list_of_grades»، یک پارامتر متعارف (Formal Paramater) نامیده می‌شود و این نام فقط به معنای نام نگهدارنده مکان هر مجموعه‌ای از نمرات است.

متغیر «midterm_grades» یک پارامتر حقیقی (Actual Paramater) به حساب می‌آید، این موضوع بدین معنی است که متغیر در واقع برای چه کاری استفاده شده است. برای مثال، [90, 100, 70] نمونه‌هایی از مقادیر پارامترهای متغیر «midterm_grades» به شمار می‌روند. در ادامه این مقاله، پیش از پرداختن به تو در تویی توابع در برنامه نویسی، مجموعه آموزش‌های برنامه نویسی فرادرس به علاقه‌مندان معرفی شده‌اند.

معرفی فیلم های آموزش برنامه نویسی فرادرس

تصویر مجموعه فیلم های آموزش برنامه نویسی فرادرس

در مجموعه فرادرس فیلم‌های آموزشی بر اساس موضوع در قالب مجموعه‌های آموزشی مختلفی دسته‌بندی می‌شوند. یکی از این مجموعه‌ها مربوط به آموزش برنامه نویسی است. علاقه‌مندان می‌توانند برای یادگیری زبان‌های مختلف برنامه نویسی، نحوه تعریف و استفاده از تابع در زبان‌های گوناگون و سایر مفاهیم برنامه نویسی از این مجموعه آموزشی استفاده کنند. در زمان تدوین این مقاله، مجموعه دوره‌های برنامه نویسی فرادرس حاوی بیش از ۴۳۴ ساعت محتوای ویدیویی است و نزدیک به ۴۸ عنوان آموزشی مختلف را شامل می‌شود. دوره‌های مختلفی در زمینه‌های گوناگون مرتبط با برنامه نویسی در این مجموعه در دسترس قرار دارند. در ادامه، برخی از دوره‌های این مجموعه به طور مختصر معرفی شده‌اند:

  • فیلم آموزش پیشرفته C++‎ (شی گرایی در سی پلاس پلاس) (طول مدت: هشت ساعت، مدرس: دکتر فرشید شیرافکن): در این دوره آموزشی مفاهیم شی گرایی در برنامه نویسی C++‌‎ مانند: کلاس، تابع دوست، کلاس دوست، ارث بری، پلی مورفیسم (Polymorphism)، سر بارگذاری و قالب آموزش داده شده است. از نقاط قوت این آموزش، تدریس مطالب شی گرایی با ساده‌ترین روش و با ذکر مثال است. برای مشاهده فیلم آموزش پیشرفته C++‎ (شی گرایی در سی پلاس پلاس) + کلیک کنید.
  • فیلم آموزش زبان برنامه نویسی پایتون (Python) همراه با مثال های عملی (طول مدت: ۱۳ ساعت و ۲۰ دقیقه، مدرس: دکتر فرشید شیرافکن): در این فرادرس، مخاطب می‌تواند برنامه نویسی با زبان پایتون را بیاموزد. این آموزش با این فرض تهیه شده است که مخاطب هیچ دانش و تجربه قبلی در زمینه برنامه نویسی پایتون نداشته و در طول آموزش با این زبان آشنا می‌شود. مفاهیم این دوره آموزشی با تشریح مبانی نظری و سپس با پیاده‌سازی مثال‌های عملی، تدریس شده‌اند. برای مشاهده فیلم آموزش زبان برنامه نویسی پایتون (Python) همراه با مثال های عملی + کلیک کنید.
  • فیلم آموزش برنامه نویسی پایتون (Python) - مقدماتی (طول مدت: ۱۹ ساعت و ۵۳ دقیقه، مدرس: پژمان اقبالی شمس آبادی): در این دوره آموزشی، برنامه نویسی پایتون از پایه آموزش داده شده است و سعی شده تمام مطالب مقدماتی لازم برای برنامه نویسی با پایتون پوشش داده شوند. برای انجام هر کاری با پایتون، نیاز به آشنایی با دانش مقدماتی و نحوه برنامه نویسی با پایتون وجود دارد. مخاطبان این دوره نیاز به دانش قبلی از برنامه نویسی پایتون ندارند و سعی می‌شود تمام مطالب لازم در همین آموزش بیان شود. برای مشاهده فیلم آموزش برنامه نویسی پایتون (Python) - مقدماتی + کلیک کنید.
  • فیلم آموزش برنامه نویسی متلب برای علوم و مهندسی (طول مدت: ۱۴ ساعت و ۳۰ دقیقه، مدرس: دکتر سید مصطفی کلامی هریس): در این فرادرس، دانشجویان با مباحث مختلفی از دستورات مرتبط با برنامه نویسی متلب (Matlab)، حل انواع معادلات، محاسبات و تحلیل آماری و ایجاد تابع در برنامه نویسی متلب برای علوم و مهندسی آشنا می‌شوند. برای مشاهده فیلم آموزش برنامه نویسی متلب برای علوم و مهندسی + کلیک کنید.
  • فیلم آموزش جاوا اسکریپت (JavaScript) — از مقدماتی تا انجام پروژه عملی (طول مدت: ۹ ساعت و هشت دقیقه، مدرس: محمد عبداللهی): امروزه، روش‌های مناسب و به روز طراحی سایت مورد توجه بسیاری از علاقه‌مندان و کارجویان قرار گرفته است. جاوا اسکریپت زبان برنامه نویسی مفسری در سمت کلاینت است که می‌توان به وسیله آن عناصر «HTML» موجود در صفحه وب و مقادیر «CSS» آن‌ها را تغییر داد و نیز ابزاری برای اعتبارسنجی داده‌ها است که در این فرادرس آموزش داده می‌شود. برای مشاهده فیلم آموزش جاوا اسکریپت (JavaScript) — از مقدماتی تا انجام پروژه عملی + کلیک کنید.
  • فیلم آموزش برنامه نویسی C++‎ (طول مدت: ۲۰ ساعت و ۱۴ دقیقه، مدرس: دکتر فرشید شیرافکن): در این فرادرس آموزش برنامه نویسیC++ ‎ در دو بخش معرفی دستورات و ساختمان داده و بیان مفاهیم شی گرایی ارائه شده است. تمام نرم افزارهایی که به صورت روزمره در ویندوز از آن‌ها استفاده می‌شود، توسط زبان مادر سی و سی پلاس پلاس نوشته شده‌اند و در صنعت خودروسازی، معماری، بانکی، کنسول بازی و سایر موارد کاربرد دارند. برای مشاهده فیلم آموزش برنامه نویسی C++‎ + کلیک کنید.
  • برای مشاهده همه فیلم‌های آموزش برنامه نویسی + کلیک کنید.

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

تو در تویی توابع در برنامه نویسی

در برنامه نویسی، کدهای یک تابع را نمی‌توان به صورت تو در تو (Nested) داخل کدهای تابع دیگر قرار داد. اما می‌توان از توابع دیگر در داخل یک تابع استفاده کرد. یعنی فقط دستورالعمل یک تابع جدید را در داخل تابع دیگر نمی‌توان تعریف کرد به وجود آورد. به این مسئله تو در تویی (Nesting) توابع گفته می‌شود. برای درک بهتر این موضوع، مثالی در ادامه آمده است:

 // در اینجا شبه‌کدهای قالب صحیح دو تابع آمده است 
function1() 
{ 
code; 
code; 
code; 
} 

function2() 
{ 
code; 
code; 
code; 
} 

// اینجا شبه‌کدهای مربوط به تعریف نادرست دو تابع آمده است 
function1() 
{ 
code; 
code; 
code; 
// در اینجا فراموش شده است که تابع به درستی بسته شود و به پایان برسد 
function2() 
{ 
code; 
code; 
code; 
} 
} // اشتباهاً پایان اولین تابع بعد از تعریف دومین تابع انجام شده است

در شبه کدهای فوق ابتدا دو تابع یکی پس از دیگری تعریف شده‌اند که این کار صحیح است و مشکلی ندارد. در حالت بعد، تابع دوم در داخل تابع اول و پیش از بسته شدن آن تعریف شده است که این کار اشتباه است و در برنامه نویسی چنین چیزی امکان‌پذیر نیست. در ادامه مقاله «تابع در برنامه نویسی»، به چند نوع از توابع، همراه با مثال کدهای آن‌ها پرداخته شده است.

انواع تابع در برنامه نویسی

توابع با روش‌های گوناگونی می‌توانند نوشته شوند و نحو (سینتکس) دقیق آن‌ها به زبان برنامه نویسی مربوط می‌شود که قرار است تابع در آن ایجاد شود. در این بخش به بررسی چند نوع تابع به وسیله زبان‌های برنامه نویسی پایتون، جاوا اسکریپت و C++‎ پرداخته شده است.

تابع Void

اولین نوع و ساده‌ترین نوع تابع در برنامه نویسی که در این قسمت مورد بررسی قرار گرفته‌اند، تابع «Void» یا خالی نام دارد. تابع «Void» برخلاف چیزی که بر اساس اصول تابع در برنامه نویسی گفته شد، مقداری را برنمی‌گرداند. این تابع برای کامل کردن مجموعه‌ای از دستورالعمل‌ها مورد استفاده قرار می‌گیرد. در مثال‌هایی که در ادامه برای تابع Void در زبان‌های مختلف ارائه شده‌اند، تابعی با نام «helloFunction» استفاده شده و هدف این تابع نشان دادن و چاپ کردن عبارت «Hello World» در خروجی است.

تابع Void در برنامه نویسی پایتون

در مثال زیر، تابع Void به نام «helloFunction» با زبان برنامه نویسی پایتون پیاده‌سازی شده است:

1def helloFunction():
2   print("Hello World")
3helloFunction()

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

در مثال فوق، تابع یک خط کد را اجرا می‌کند. کلمه «()print» نیز در کدهای بالا یک تابع به شمار می‌رود، اما با تابع نوشته شده توسط برنامه نویس تفاوت دارد و نوعی از توابع از پیش نوشته شده (پیش‌ساخته) زبان پایتون به حساب می‌آید.

تابع در پایتون

تابع Void در برنامه نویسی جاوا اسکریپت

کدهای زیر مثالی از تابع «Void» در زبان برنامه نویسی جاوا اسکریپت (JavaScript) است:

1function helloFunction(){
2   alert("Hello World!");
3}
4helloFunction();

در این زبان برنامه نویسی، کلمه کلیدی که برای تعریف تابع در جاوا اسکریپت استفاده می‌شود، «function» است و در ادامه آن، نام تابع نوشته می‌شود و پس از آن، بدنه تابع داخل آکولاد قرار می‌گیرد. فضاهای خالی در برنامه نویسی جاوا اسکریپت مهم نیستند و منجر به بروز خطا نمی‌شوند، اما به طور معمول، برای بهبود خوانایی کدها، توابع داخل تو رفتگی قرار می‌گیرند.

تو رفتگی خواندن کدها را آسان‌تر می‌کند و زمانی که برنامه‌ها پیچیده‌تر می‌شوند، وجود این تو رفتگی‌ها بسیار مهم هستند و به خوانایی کدها کمک می‌کنند. کلمه «()alert» که در کدهای فوق مشاهده می‌شود، مانند کلمه «()print» در برنامه نویسی پایتون، یک تابع از پیش نوشته شده و پیش فرض برای برنامه نویسی جاوا اسکریپت است.

جاوا اسکریپت

تابع Void در برنامه نویسی ++C

در نمونه کدهای زیر، مثال تابع «Void» در زبان برنامه نویسی «++C» نشان داده شده است:

1#include <iostream>
2using namespace std;
3void helloFunction(){
4   cout << "Hello World!";
5}
6int main(){
7   helloFunction();
8   return 0;
9}

تابع در برنامه نویسی ++C با روش متفاوتی نسبت به برنامه نویسی‌های پیشین توضیح داده شده در این مقاله، ایجاد می‌شود. به جای کلمه کلیدی که تابع به وسیله آن تعریف می‌شود، کلمه اول نوع داده‌ای را برمی‌گرداند که تابع آن را در خروجی نشان خواهد داد. در تابع «Void» که هیچ داده‌ای را بر نمی‌گرداند، کلمه‌ای که نوع داده خروجی را نشان می‌دهد، کارایی خاصی ندارد. بعد از این کلمه، نام تابع نوشته می‌شود. مانند برنامه نویسی جاوا اسکریپت، همه کدهایی که مابین آکولاد قرار دارند، زمان فراخوانی تابع، اجرا می‌شوند.

فضاهای خالی و تو رفتگی‌های مابین کدها مشکلی ایجاد نمی‌کنند، اما برای خوانایی بیشتر کدها، بهتر است که رعایت شوند. در کدهای فوق، تابع «()main» نیز مشاهده می‌شود. زمانی که، یک برنامه «++C» در حال اجرا است، به طور خودکار تابع «()main» فراخوانی خواهد شد. هنگامی که تابع «()main» با موفقیت اجرا شود، در زمان خروج از برنامه، عدد صفر را برمی‌گرداند. این مسئله نشان می‌دهد که خطایی در اجرای برنامه وجود نداشته است. در ادامه این بخش از مقاله «تابع در برنامه نویسی» به بررسی توابعی پرداخته شده است که به مقدار ورودی نیاز دارند.

++C

توابع دارای مقادیر ورودی

اگر در نوشتن برنامه‌ای نیاز باشد که یک بیت از کدها بارها نوشته شود، توابع Void گزینه خوبی به حساب می‌آیند. اما این توابع ممکن است، محدود کننده نیز باشند چون ثابت هستند، تغییری نمی‌کنند و همیشه از یک ساختار خاص پیروی می‌کنند. یکی از راه‌هایی که می‌توان با استفاده از آن سودمندی تابع در برنامه نویسی را بهبود بخشید، دادن مقادیر گوناگون به عنوان ورودی به تابع است.

در پرانتز، می‌توان اعلام کرد که برای اجرای تابع، نیاز به متغیر ورودی وجود دارد و باید داده‌ها را هنگام فراخوانی تابع در برنامه اصلی به تابع وارد کرد. همان مثال بخش قبل با این تفاوت که به تابع مقدار داده شده است، در ادامه مشاهده می‌شود. یعنی عبارت «Hello World» به عنوان یک مقدار رشته‌ای (String) در برنامه اصلی به تابع ارجاع داده شده است.

تابع دارای مقدار در برنامه نویسی پایتون

کدهای زیر مثالی برای یک تابع دارای مقدار در برنامه نویسی پایتون است:

1def helloFunction(newPhrase):
2   print(newPhrase)
3helloFunction("Our new phrase")

حال در مثال فوق، پرانتزها نشان دهنده این هستند که تابع برای اجرا شدن به متغیر نیاز دارد. در مثال بالا، این متغیر «newPhrase» نام‌گذاری شده است که در تابع مورد استفاده قرار می‌گیرد. زمانی که تابع در برنامه اصلی فراخوانی می‌شود، باید اطلاعات درخواستی را در داخل پرانتز قرار داد.

تابع دارای مقدار در برنامه نویسی جاوا اسکریپت

در برنامه نویسی جاوا اسکریپت نیز روند کار با مقادیر متغیر، کاملاً مانند برنامه نویسی پایتون است. همان مثال قبلی با برنامه نویسی جاوا اسکریپت به صورت زیر نوشته می‌شود:

1function helloFunction(newPhrase){
2   alert(newPhrase);
3}
4helloFunction("Our new phrase");

تابع دارای مقدار در برنامه نویسی ++C

تابع helloFunction دارای مقدار در برنامه نویسی ++C به صورت زیر نوشته می‌شود:

1#include <iostream>
2using namespace std;
3void helloFunction(string newPhrase){
4   cout << newPhrase;
5}
6int main(){
7   helloFunction("Our new Phrase");
8   return 0;
9}

تابع در برنامه نویسی ++C به اطلاعات بیشتری نیاز دارد. تابع در این مثال نیازمند داده‌ای از نوع رشته‌های ++C است، اما تنها همین اطلاعات برای این زبان برنامه نویسی خوب و کافی نیستند. همان‌طور که پیش‌تر گفته شد، زمانی که یک تابع در برنامه نویسی ++C ایجاد می‌شود، تابع نیاز دارد که نوع داده ورودی را بداند و اگر نوع درست داده به تابع ارسال نگردد، در تابع خطا رخ خواهد داد. در برنامه نویسی ++C، برخلاف دیگر زبان‌های برنامه نویسی، نوشتن توابع ممکن است کمی سخت به نظر برسد، اما معمولاً زبان‌های دشوار در بعضی مواقع کارایی بهتری دارند.

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

تابع دارای مقدار خروجی در برنامه نویسی

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

مثال تابع دارای مقادیر خروجی در برنامه نویسی پایتون

در کدهای زیر، تابع تعریف شده دو مقدار «a» و «b»  را می‌گیرد و جمعشان را باز می‌گرداند.

1def addingFunction(a, b):
2   return a + b
3print(addingFunction(2, 4))

در کدهای فوق، تابع به دو متغیر به جای یک متغیر نیاز دارد و این دو متغیر با ویرگول در پرانتز خط اول با نام‌های «a» و «b» تعریف می‌شوند. کلمه کلیدی «return» دستور باز گرداندن داده‌ها را به تابع اعلام می‌کند. در این مورد از عدد ۲ و ۴ به عنوان مقادیر ورودی متغیرها استفاده شده است و هر عدد صحیح دیگری نیز می‌تواند جایگزین این اعداد شود. تابع نوشته شده درون تابع پیش فرض «()print» به صورت Nested فراخوانی شده است. هنگامی که برنامه اصلی به خطی می‌رسد که در آن تابع فراخوانی شده است، مفسر وارد تابع می‌شود و آن را اجرا می‌کند و سپس طوری ادامه می‌دهد که گویی «addingFunction(2، 4)» فقط مقدار بازگشتی 6 را در برنامه نشان می‌دهد.

مثال تابع دارای مقادیر خروجی در برنامه نویسی جاوا اسکریپت

کدهای تابع برنامه نویسی جاوا اسکریپت بسیار شبیه به کدهای تابع برنامه نویسی پایتون هستند. تفاوت اصلی بین این دو زبان برنامه نویسی این است که تابع در برنامه نویسی جاوا اسکریپت با استفاده از تابع پیش فرض «alert» به جای تابع پیش فرض «()print» در برنامه نویسی پایتون فراخوانی می‌شود. کدهای زیر، مثال همراه با برگرداندن خروجی را در برنامه نویسی جاوا اسکریپت نشان می‌دهد:

1function addingFunction(a, b){
2   return a + b;
3}
4alert(addingFunction(2, 4));

مثال تابع دارای مقادیر خروجی در برنامه نویسی C++‎

کدهای تابعی که مقادیر را برمی‌گرداند در برنامه نویسی C++‎ به صورت زیر نوشته می‌شود:

1#include <iostream>
2using namespace std;
3int addingFunction(int a, int b){
4   return a + b;
5}
6int main(){
7   cout << addingFunction(2, 4) ;
8   return 0;
9}

کدهای تابع برنامه نویسی «++C» مانند دیگر زبان‌های برنامه نویسی اجرا می‌شود؛ اما طبق معمول، برنامه نویسی ++C به اطلاعات بیش‌تری برای تعریف تابع نیاز دارد. ابتدا باید بررسی شود که تابع چه نوع داده‌ای را برمی‌گرداند. در کدهای فوق، نوع مقدار بازگشتی از «Void» به «int» تغییر پیدا کرده است؛ این بدان معناست که به جای اینکه داده‌ای برگردانده نشود، تابع یک عدد صحیح را باز می‌گرداند.

به این ترتیب، در این مقاله سعی شد تا حد امکان به طور جامع به آموزش و چیستی توابع در برنامه نویسی پرداخته و همچنین به مباحث پیرامون آن از جمله انواع تابع در چند زبان برنامه نویسی مطرح روز دنیا نیز پرداخته شود. اکنون در بخش پایانی این مقاله، برای آشنایی بیش‌تر و آموزش تابع در برنامه نویسی، آن دسته از دوره‌های فرادرس که بیش‌ترین ارتباط را با تابع در برنامه نویسی دارند به علاقه‌مندان معرفی شده‌اند.

معرفی فیلم های آموزش زبان های برنامه نویسی

در این بخش انتهایی از مقاله «تابع در برنامه نویسی» با هدف یادگیری بیش‌تر، تعدادی از دوره‌های آموزش برنامه نویسی فرادرس که به علاقه‌مندان معرفی شده‌اند. مفهوم تابع در برنامه نویسی و همچنین نحوه تعریف و فراخوانی آن در تمام این دوره‌های آموزشی شرح داده و تمرین‌های عملی در آن‌ها ارائه شده است.

فیلم آموزش برنامه نویسی جاوا (Java)

فیلم آموزش برنامه نویسی جاوا

در این دوره، زبان برنامه نویسی جاوا و امکانات مختلف آن از جمله تابع در برنامه نویسی جاوا به صورت کامل آموزش شده است. طول مدت این دوره نزدیک به بیست ساعت و مدرس آن دکتر سید مصطفی کلامی هریس است. این دوره آموزشی، ۲۳ درس را در بر می‌گیرد. برخی از سرفصل‌های مهم آن، آشنایی با جاوا و مباحث مقدماتی، ساختارهای کنترل برنامه و انواع عملگرها در جاوا، مبانی برنامه نویسی شی گرا، تعریف متدها و توابع در کلاس‌ها و تولید اعداد تصادفی، مبانی برنامه نویسی گرافیکی در جاوا، طراحی و برنامه نویسی رابط‌های گرافیکی کاربری یا «GUI»، آرایه‌ها و لیست‌های آرایه‌ای جنریک (Generic) و سایر موارد را شامل می‌شوند.

فیلم آموزش برنامه نویسی C

فیلم آموزش برنامه نویسی C

در این دوره آموزشی، مفاهیم برنامه نویسی «C» معرفی شده و آموزش‌های لازم به صورت عملی و گام به گام برای پیاده‌سازی پروژه‌های برنامه نویسی ارائه شده‌اند. از این رو، این دوره آموزشی نه تنها مباحث تئوری، بلکه مباحث عملی را نیز به صورت جامع به مخاطبین و علاقه‌مندان برنامه نویسی C، آموزش می‌دهد. طول مدت این دوره نزدیک به ۱۴ ساعت و مدرس آن دکتر مصطفی کلامی هریس است. این دوره ۱۲ درس را شامل می‌شود که برخی از سرفصل‌های مهم آن عبارتند از: آشنایی با زبان برنامه نویسی C، آشنایی با اجزای سازنده یک برنامه C، پیاده‌سازی و استفاده از توابع در C، آرایه‌ها در C، عملگرهای بیتی، فیلدهای بیتی و ثوابت نام‌دار و شمارشی (Enumeration) و سایر موارد.

فیلم آموزش برنامه نویسی شی گرا در Python (پایتون)

آموزش برنامه نویسی شی گرا در پایتون

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

این دوره آموزشی می‌خواهد مباحث پایه و اساسی مرتبط با مفاهیم شی‌گرایی را به ساده‌ترین حالت ممکن بررسی و نکاتی را مطرح کند که رعایت آن‌ها اثر بسیار زیادی بر روی کیفیت برنامه نویسی خواهد داشت. طول مدت این دوره نزدیک به هشت ساعت و مدرس آن دکتر فرشید شیرافکن است. این دوره هشت درس را شامل می‌شود. سرفصل‌های این دوره، مروری به پایتون، مفاهیم اولیه شی گرایی، متدهای «Dunder» - سربارگذاری، ارث بری (Inheritance) - چند شکلی، کلاس‌های متد و استاتیک - کلاس انتزاعی و سایر موارد هستند.

فیلم آموزش برنامه نویسی متلب (MATLAB)

فیلم آموزش برنامه نویسی متلب

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

طول مدت این دوره نزدیک به ۹ ساعت و مدرس آن دکتر سید مصطفی کلامی هریس است. این دوره شش درس را در بر می‌گیرد. از جمله سرفصل‌های مهم این دوره، می‌توان به آشنایی با نرم افزار و زبان برنامه نویسی متلب، ساختارهای کنترل برنامه در متلب، گرافیک و ترسیم نمودار در متلب، مدیریت فایل ها و اطلاعات در متلب و سایر موارد اشاره کرد.

فیلم آموزش مقدماتی برنامه نویسی سی شارپ C#‎)‎)

آموزش مقدماتی برنامه نویسی سی شارپ C#‎)‎)

امروزه زبان برنامه نویسی سی شارپ (C#‎) به دلیل سادگی در یادگیری، بیش از پیش مورد توجه برنامه نویسان و علاقه‌مندان قرار گرفته است. در این فرادرس، قصد بر این است تا آموزش زبان برنامه نویسی سی‌شارپ از ابتدایی‌ترین مفاهیم گرفته تا پیشرفته‌ترین آن‌ها پوشش داده شوند تا اگر شخصی هیچ آشنایی قبلی با این برنامه نویسی نداشته باشد، با دیدن این آموزش، در کوتاه‌ترین زمان ممکن، تبدیل به یک برنامه نویس ماهر سی‌شارپ شود.

طول مدت این دوره نزدیک به ۹ ساعت و مدرس آن وحید اسدزاده است. این دوره دارای ۱۱ درس است که برخی از سرفصل‌های آن شامل، مفاهیم اولیه سی شارپ، متغیرها، ثوابت، کار با محیط فرمی و معرفی کنترل‌ها، عبارت‌ها، عملگرها و دستورات شرطی، حلقه‌ها، آرایه‌ها، متدها و کلاس‌ها، پشتیبان‌گیری و بازیابی اطلاعات در سی‌شارپ و سایر است

فیلم آموزش برنامه نویسی اندروید (Android) - مقدماتی

فیلم آموزش آموزش برنامه نویسی اندروید (Android) - مقدماتی

در بخش مقدماتی دوره آموزشی برنامه نویسی اندروید که در محیط اندروید استودیو (Android Studio) آموزش داده شده است، به اصول برنامه‌سازی در اندروید، اجزای اصلی برنامه‌های اندروید و ترتیب فراخوانی آن‌ها در برنامه‌ها پرداخته می‌شود. در ادامه، علاقه‌مندان با «Activity» در اندروید آشنا خواهند شد و چرخه حیات (Activity Lifecycle) در اندروید استودیو مورد بررسی قرار می‌گیرد. سپس به معرفی ویجت‌های و ابزارهای مختلف پرداخته شده است و برای برنامه نویسی اندروید در هر کدام از ابزارها مثالی ارائه شده است.

طول مدت این دوره نزدیک به ۱۶ ساعت و مدرس آن محمدمهدی علیزاده است. این دوره ۱۹ درس دارد. برخی از سرفصل‌های مهم این دوره، تنظیمات اولیه برنامه «Android Studio»، شبیه‌ساز و اولین پروژه در اندروید، منوها در اندروید، آشنایی با چینش‌های مختلف عناصر در اندروید، لیست‌ها در اندروید، دیالوگ در اندروید، آشنایی کامل با «Toast» و پروژه شخصی‌سازی «Toast» در اندروید و سایر موارد را شامل می‌شوند.

  • برای مشاهده فیلم آموزش برنامه نویسی اندروید (Android) - مقدماتی + اینجا کلیک کنید.

جمع‌بندی

در این مقاله چیستی تابع در زبان برنامه‌نویسی ، ویژگی‌ها، روش‌های گوناگون، کاربردها، انواع توابع و چگونگی استفاده از آن‌ها در سه زبان برنامه نویسی پایتون، جاوا اسکریپت، ++C  شرح داده و مثال‌هایی همراه با کدهای توابع ارائه شدند.

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

بر اساس رای ۱۶ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
cs.utahmakeuseof
۴ دیدگاه برای «تابع در برنامه نویسی چیست؟ — به زبان ساده»

با سلام.تابعی که مقدار hello world را روی صفحه چاپ میکنه این خودش مگه خروجی محسوب نمیشه.چرا میگن void و بدون خروجی هست؟

سلام خسته نباشین ببخشید سوال داشتم متغییر ها هم جزء تابع ها حساب میشن یانه؟

‌با سلام و احترام؛

خیر. «متغیرها» و «توابع» دو مفهوم مختلف در برنامه‌نویسی محسوب می‌شوند. شما می‌توانید با مشاهده آموزش رایگان اصول و مبانی برنامه نویسی، به‌طور کامل مفاهیم پایه‌ای را در این حوزه یاد بگیرید.

از همراهی شما با مجله فرادرس بسیار خوشنودیم.

جامع و کامل,واقعا خسته نباشین

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *