با سلام خدمت تمامی دوستان عزیز سایت پی وی لرن .و کاربرانی که دوره کامل آموزش زبان C را دنبال می کنند. و کاربرانی که با سری آموزش های زبان C همراهمون هستند. جلسه قبل متغیرها در زبان C را دیدیم. این جلسه را رو با بحث در مورد فراخوانی تابع در C و آرگومانها در C آغاز می کنیم.
همانطور که هر وسیله از اجزایی تشکیل شده است .زبان C هم از اجزایی تشکیل شده که به آن اجزا در زبان سی تابع می گویند.
مثلا کامپیوتری که این مطالب رو با اون دنبال می کنید از سر هم شدن اجزایی تشکیل شده که در نهایت کامپیوتری کارا را تحویل ما میدهد.
زبان سی هم از گروهی از توابع تشکیل شده است.
هر برنامه C دارای حداقل یک تابع است که()main است و تمام برنامه های جزئی,توابع اضافی را تعریف می کنند.
شما می توانید کد را به توابع جداگانه تقسیم کنید.بطوریکه کدت در بین توابع مختلف تقسیم شود.
اما منطقی است که هر تابع کار خاص خودش رو انجام بدهد.
یک تابع اعلانی در مورد نام تابع، نوع بازگشت و پارامترها به کامپایلر اطلاع می دهد که تعریف بدنه اصلی تابع رو فراهم می کند.
در کتابخانه استاندارد C چندین تابع تعبیه شده که برنامه شما می تواند آنها را فرا خوانی کند.برای مثال، ()strcatبرای پیوند دادن دو رشته، () memcpy برای کپی یک مکان حافظه به مکان دیگر و بسیاری از توابع دیگر.یک تابع همچنین می تواند به عنوان یک روش یا یک زیر فرایندو یا یک روند و غیره به کار برود.
شکل کلی تعریف یک تابع در زبان برنامه نویسی سی به شرح زیر است:
1 2 3 | return_type function_name( parameter list ) { body of the function } |
تعریف تابع در برنامه نویسی C شامل هدر و بدنه اصلی تابع می شود. در اینجا تمام بخش های یک تابع را می بینیم.
یک تابع ممکن است مقدار را بازگرداند. تابع با استفاده از دستور return مقادیر تولید شده را به خروجی می دهد. بعضی از توابع عملیات مورد نظررا بدون بازگشت مقدار انجام می دهند. در این حالت، چون این تابع دارای خروجی نیست، در خروجی آن از کلمه void استفاده می شود.
نام واقعی تابع است. توابع با هر نامی که معرفی شوند (حروفهای بزرگ و کوچک) با همان نام باید در برنامه مورداستفاده قرار گیرند.
هنگامی که یک تابع فراخوانی می شود، یک مقدار به پارامتر منتقل می شود. این مقدار به عنوان پارامتر یا آرگومان فعلی است. لیست پارامترها به نوع، دستور و تعداد پارامترهای یک تابع اشاره دارد. پارامترها اختیاری هستند یعنی یک تابع ممکن است هیچ پارامتری نداشته باشد.
بدنه تابع حاوی مجموعه ای از دستورات است که تعریف می کند که تابع چه عملی انجام دهد.
در زیر کد اصلی یک تابع به نام () max است. این تابع دو پارامتر num1 و num2 را دریافت می کند و حداکثر مقدار را برمی گرداند.
1 2 3 4 5 6 7 8 9 10 11 12 13 | /* function returning the max between two numbers */ int max(int num1, int num2) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; } |
یک تابع اعلانی به کامپایلر در مورد نام تابع و نحوه فراخوانی تابع اطلاعاتی می دهد. بدنه واقعی تابع می تواند جداگانه تعریف شود.
یک تابع اعلان شده دارای بخش های زیر است
یک تابع اعلانی را در این قسمت دنبال می کنیم.
1 | return_type function_name( parameter list ); |
برای تابع تعریف شده () max، تابع declaration به صورت زیر است .
1 | int max(int num1, int num2); |
نام پارامتر در تابع اعلانی مهم نیست فقط نوع آنها مورد نیاز است،درقسمت پایین دنبال می کنیم.
1 | int max(int, int); |
وقتی یک تابع را در یک فایل منبع تعریف می کنیدو آن را در یک فایل دیگر فراخوانی میکنید تابع اعلان مورد نیاز است . در این صورت، باید تابع را در بالای فایل فراخوانی شده فراخوانی کنید.
در حین ایجاد یک تابع در C، تعریفی از آنچه را که تابع باید انجام دهد، نیاز داریم. برای استفاده از یک تابع، شما باید این تابع را برای انجام کار مشخص فراخوانی کنید.
هنگامی که برنامه یک تابع را فراخوانی می کند، کنترل برنامه به تابع فراخوانده شده منتقل می شود. تابع فراخوانده شده وظیفه مشخصی را انجام می دهد.هنگامی که دستور return statement اجرا می شودو یا زمانیکه آکولاد بسته می شود، کنترل برنامه به برنامه اصلی بازگردانده می شود.
فراخوانی یا صدا زدن به معنای ارسال آرگومانها در C به تابع و تحویل گرفتن خروجی است.برای فراخوانی یک تابع، به پارامترهایی مورد نیاز است را با نام تابع را منتقل می کنید و اگر تابع مقدار را بازگرداند، می توانید مقدار بازگشتی را ذخیره کنید. به عنوان مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <stdio.h> /* function declaration */ int max(int num1, int num2); int main () { /* local variable definition */ int a = 100; int b = 200; int ret; /* calling a function to get max value */ ret = max(a, b); printf( "Max value is : %d\n", ret ); return 0; } /* function returning the max between two numbers */ int max(int num1, int num2) { /* local variable declaration */ int result; if (num1 > num2) result = num1; else result = num2; return result; } |
ما () max را با() main حفظ و کد منبع را کامپایل کردیم. در اجرا نهایی این نتیجه تولید می شود.
1 | Max value is : 200 |
اگر یک تابع از آرگومان استفاده می کند، باید متغیر هایی را که مقادیر آرگومان را قبول می کنند،اعلام کند. این متغیرها پارامترهای اصلی تابع هستند.پارامترهای اصلی مانند سایر متغیرهای محلی درون تابع رفتار می کنند و به مجرد ورود به تابع ایجاد می شوند و پس از خروج از بین می روند.هنگام فراخوانی تابع در C ، دو راه وجود دارد که آرگومان بتواند به یک تابع منتقل شود:
فراخوانی و توضیحات | |
۱ | فراخوانی تابع با مقدار در فراخوانی تابع با مقدار یک کپی از مقدار آرگومانهای تابع روی پارامترهای آن نوشته میشود، بنابراین تغییر کردن آرگومان تاثیری روی مقدار پارامتر نمیگذارد. |
۲ | فراخوانی با ارجاع در این روش آدرس آرگومان روی پارامتر کپی میشود. در بدنه تابع از آدرس ارسال شده برای دسترسی به آرگومان استفاده میشود، به این ترتیب تغییرات ایجاد شده در متغیر پارامتر، روی آرگومان نیز تاثیر میگذارد. |
به طور پیش فرض، فراخوانی تابع در C با مقدار را استفاده می شود. به طور کلی، به این معنی است که کد در یک تابع نمی تواند آرگومانها در C را که مورد استفاده برای فراخوانی تابع است تغییر دهد.
خوشحالیم ازاینکه در این مجموعه آموزشها همراه ما هستید. فراخوانی تابع در C و آرگومانها در C را در اینجا به پایان می رسانیم. جلسه بعد با ادامه مطالب در حوزه متغیرها در زبان C همراهمون باشید.