توابع و کلاسهای حافظه
در مورد برنامه های طولانی و پیچیده که شامل چندین قسمت منطقی تقریبا” مستقلی
هستند بهتر است برای هر قسمت منطقی ، برنامه ای نوشته و سپس آنها را به یکدیگر
متصل (Link) کرد . هر یک از این قسمتها یک زیر برنامه نام دارند . استفاده از
زیر برنامه جهت طراحی برنامه ها ، دارای مزایای زیادی است که بر اهل کامپیوتر
پوشیده نیست . در زبانهای برنامه سازی مختلف معمولا”دو نوع زیربرنامه وجود دارند
و عبارتند از : ( الف ) زیر برنامه های تابع ( ب ) زیر برنامه های زیر روال ، در
زبان C فقط زیربرنامه تابع مورد استفاده قرار میگیرد. کاری را که زیربرنامه های
زیر روال در سایر زبان های برنامه سازی انجام می دهند ، در زبان C توسط زیر
برنامه های تابع صورت می گیرد . در اینجا منظور از زیر برنامه ، توابع هستند .
توابع در زبان C دارای ساختمان خاصی هستند که شکل (۱) آن را نشان می دهد .
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ |
<نوع تابع > <نام تابع > ( اسامی پارامترها ) | |
تعریف پارامترها | | { |
|
بدنه تابع | | } |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
شکل (۱) . ساختمان توابع
در شکل (۱) منظور از نوع تابع ، یکی از انواع معتبر در زبان C است که نوع
مقدار برگردانده شده توسط تابع را مشخص می کند . تعیین نوع توابع ، اختیاری
است . اگر تابعی تعیین نوع نگردد کامپایلر زبان C فرض می کند مقداری که توسط
تابع برگردانده می شود از نوع ” صحیح ” است . نام تابع از قانون نامگذاری برای
متغیرهای تبعیت می کند . اسامی پارامترها شامل متغیرهایی است که باید به تابع
منتقل کردند . اگر تعداد پارامترها بیش از یکی باشد یا کاما از یکدیگر جدا
می شوند . تعریف پارامترها مجموعه دستوراتی است که نوع پارامترها را تعیین
می نماید . تعیین نوع پارامترها در حین تعریف تابع نیز امکان پذیر است . بدنه
تابع شامل دستورالعمل هایی است که عمل تابع را مشخص می کند .
نکاتی را که باید در مورد توابع در نظر داشت عبارتند از : ۱
کلیه توابع فرعی بعد از تابع اصلی (()main) تعریف می شوند . ۲
اگر نوع تابعی غیراز نوع ” صحیح ” باشد، نوع آن باید در تابع فراخواننده
به کامپایلر اعلان شود . ۳
برای اجرای تابع باید آنها را فراخوانی نمود ( فراخوانی توابع توسط نام
آنها انجام می شود ) . ۴
همانطور که متغیرهای قابل استفاده در تابع اصلی باید در ابتدای این تابع
تعریف شوند ، متغیرهای مورد نیاز هر تابع فرعی نیز باید در ابتدای آنها تعریف
کردند . ۵
تعریف یک تابع در داخل تابع دیگر امکان پذیر نیست . ولی فراخوانی سطوح
مختلف توابع ، ممکن است . ۶
توابع از نظر تعداد مقادیری که به تابع فراخواننده برمی گردانند ، به سه
دسته تقسیم می شوند .
الف ) توابعی که هیچ مقداری را برنمی گردانند .
ب ) توابعی که فقط یک مقدار را برمی گردانند .
ج ) توابعی که چند مقدار را به عنوان نتیجه عمل برمی گردانند . ۷
درموقع فراخوانی توابع باید دقت داشت که تعداد و نوع آرگومانها با تعداد
ونوع پارامترها یکسان باشند. برای پی بردن به تفاوت بین آرگومانها و پارامترها
می توانند به شکل (۲) مراجعه نمایید .
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ | main )(|
| { |
|
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ | |
آرگومان ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ | | |
< فراخوانی تابع ؤؤؤؤؤؤ;(a/b)out | | |
| } |
| |
|
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ | |
پارامتر تابع ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ | | |
(< تعریف تابع ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤk/i)out | | int k/i; |
| { |
| |
| printf(“k=%d/i=%d”/k/i); |
| |
| } |
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
شکل (۲) . تفاوت آرگومان و پارامتر
در شکل (۲) aو bو را که در فراخوانی تابع out آمده اند ، آرگومان تابع و I و K
را که در تعریف تابع out آمده اند پارامتر تابع می گوییم . همانطور که ملاحظه وانند هم نام نباشند .
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن