روش های ارسال پارامتر به توابع:

روش فراخوانی با مقدار:در روش فراخوانی با مقدار ,هنگام فراخوانی ,مقادیر آرگومان ها در پارامترها کپی می شوند و هر گونه تغییری در پارامترها ,تاثیری در آرگومان ها ندارد.

روش فراخوانی با ارجاع:در روش فراخوانی با ارجاع ,آدرس آرگومان ها به پارامترها متنقل می شود.بنابر این پارامترها باید قابلیت نگه داری آدرس را داشته باشند.این بحث مربوط به اشاره گرها بوده و در بخش مربوطه مطرح خواهد شد.

انواع توابع:

توابع از نظر تعداد مقادیری که بر می گردانند به سه دسته تقسیم می شوند.

  1. توابعی که هیچ مقدار برنمی گردانند.(نوع void بر می گردانند)             ; (….)  void f1
  2. توابعی که یک مقدار بر می گردانند.
  3. توابعی که چند مقدار بر می گردانند(با استفاده از اشاره گر ها)

توابعی که هیچ مقدار را بر نمی گردانند

توابعی هستند که عملیاتی را انجام داده و خروجی های مورد نظر را چاپ کرده و هیچ مقداری را به تابع فراخوان تحویل نمی دهد. همچنین ممکن است متغیر های عمومی را تغییر دهند.

توابعی که یک مقدار را برمی گردانند:

بسیاری از توابعی که مورد استفاده قرار می گیرند بعد از انجام محاسباتی خاص,مقداری را به عنوان نتیجه باز می گردانند. مثلا تابعی مانند ()sin اندازه زاویه را برمی گرداند.برای نوشتن اینگونه توابع ,نوع آن ها را باید در الگوی تابع و عنوان تابع مشخص کرد.برای برگرداندن مقداری توسط تابع از دستور return به صورت رو به رو استفاده می شود. ;(<عبارت>) return

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

متغیر های عمومی و محلی :


  1. متغیرهایی که در داخل یک تابع تعریف می شوند, متغیرهای محلی می نامیم و تنها در داخل همان تلبع قابل استفاده اند .یعنی اصطلاحا حوزه (scope) این متغیر ها فقط در همان تابعی است که در آن تعریف می شوند.
  2. اگر متغیرها در خارج از توابع و در بالای تابع ()main تعریف شوند,در تمامی توابع موجود در برنامه قابل استفاده اند و متغیرهای عمومی نامیده می شوند.

نکته:

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

توابع بازگشتی:

توابعی که خود را فراخوانی می کنند توابع بازگشتی می نامند.توابع به صورت مستقیم و غیر مستقیم می توانند خودشان را فراخوانی کنند.در روش مستقیم تابع در یکی از دستوراتش خودش را فراخوانی می کند.در روش غیرمستقیم تابع ()f2 تابع ()f3 را فراخوانی می کند و تابع ()f3 تابع ()f2 را فراخوانی می کند.

برای ایجاد تابع بازگشتی الگوریتمی که توسط تابع پیاده سازی می شود باید دارای خاصیت بازگشتی باشد.طرح کلی بازگشتی به صورت زیر می باشد:

  • یک یا چند حالت که در آن ,تابع, وظیفه اش را به صورت بازگشتی انجام می دهد.یعنی این حالت ها خاصیت بازگشتی دارند.
  • یک یا چند حالت که در آن تابع وظیفه خودش را بدون فراخوانی بازگشتی انجام می دهد.این حالت را حالت توقف گویند.

اغلب با استفاده از یک دستور if مشخص می شود که گدام یک از حالت ها باید انجام شوند.برای اینکه فراخوانی های بازگشتی به اتمام برسند باید حالت توقف اتفاق بیافتد.یعنی هر فراخوانی تابع,سرانجام باید به حالت توقف ختم شود.در غیر این صورت فراخوانی تابع خاتمه نمی یابد.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

پاسخ دهید

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