300 likes | 476 Views
Functions. تابع. توابع برای جلوگیری از تکرار دستورات و خوانایی کد برنامه استفاده می شود. نوشتن یک تابع. باید تعیین کنید که تابع شما چکار می کند : نوع بازگشتی اسم نوع و تعداد پارامترها باید بدنه تابع را نیز بنویسید. پارامتر و خروجی. توابع C++ شامل لیستی از پارامترها هستند.
E N D
تابع توابع برای جلوگیری از تکرار دستورات و خوانایی کد برنامه استفاده می شود.
نوشتن یک تابع • باید تعیین کنید که تابع شما چکار می کند: • نوع بازگشتی • اسم • نوع و تعداد پارامترها • باید بدنه تابع را نیز بنویسید.
پارامتر و خروجی • توابع C++ شامل لیستی از پارامترها هستند. • پارامترها چیزهایی هستند که ما به تابع میدهیم تا روی آنها عملیات انجام دهد. • هر پارامتر دارای یک نوع مشخص است. • تابع می تواند هیچ پارامتری نداشته باشد. • توابع C++ همه دارای یک نوع خروجی هستند. • بعضی اوقات، ما نیاز داریم که تابع چیزی بر نگرداند. در این حالت، تابع می تواند از نوع void باشد.
نوع بازگشتی پارامترها اسم تابع بدنه تابع تابع
مثال با استفاده از توابع برنامه ای بنویسید که دو عدد را گرفته و حاصل جمع دو عدد را چاپ کند.
مثال تابعی بنویسید که عنصر iام دنباله ی فیبوناچی را چاپ کند. 1, 1, 2, 3, 5, 8, 13, … , aᵢ
مکان نوشتن توابع • توابع را به دو صورت می توان نوشت. • قبل از تابع main • بعد از تابع main • در این حالت بایستی قبل از تابع main تابع مورد نظر معرفی گردد.
مثال تابعی بنویسید که مقدار فاکتوریل یک عدد را محاسبه کند. سپس با استفاده از این تابع برنامه ای بنویسید که یک عدد را گرفته و فاکتوریل آن را چاپ کند.
کتابخانه توابع ریاضی C++ دارای یک کتابخانه از توابع ریاضی است که می توان از آنها استفاده نمود. شما باید بدانید که چگونه این توابع را فراخوانی کنید. شما باید بدانید که این توابع چه بر می گردانند. اما لازم نیست که بدانید این توابع چگونه کار می کنند!
محدوده ی متغییرها محدوده یک متغییر قسمتی از برنامه است که متغییر در آن دارای معنی و قابل استفاده است (در واقع، در این محدوده متغییر وجود دارد). یک متغییر عمومی در همه جای برنامه قابل استفاده است یا اصطلاحا محدوده عمومی دارد. محدوده یک متغییر محلی، تابعی است که متغییر در آن تعریف شده است. محدوده یک متغییر بلاکی، محدود به بلاکی است که متغییر در آن تعریف شده است.
محدوده ی متغییرها • اگر متغییری در داخل یک بلاک از کد (بین } و {) تعریف شده باشد، این متغییر از نوع بلاکی است و فقط در محدوده آن بلاک معتبر است و خارج از قابل شناسایی و استفاده نیست. { int a ; … … }
محدوده ی متغییرها شما می توانید متغییرها را خارج از محدوده توابع و بلاکها تعریف کنید این متغییرها از نوع عمومی هستند. متغییرهای عمومی از همه جای برنامه قابل استفاده هستند و همه بلاکها و توابع می توانند از آنها استفاده کنند.
محدوده ی متغییرها • پارامترها و متغییرهایی که داخل بدنه تابع و در قسمت تعریف تابع اعلان می شوند از نوع محلی هستند. • متغییرهای محلی فقط در محدوده تابع با معنی هستند. • بعد از پایان تابع، این متغییرها دیگر وجود ندارند. • اشکالی ندارد! چون بعد از اجرای تابع به آنها نیاز نداریم!
محدوده ی متغییرها هر یک از متغییرهای تعریف شده در محدوده و یا به صورت دقیق تر در بلاکی خاص اعتبار دارند و خارج از بلاک نمی توان از آنها استفاده کرد، به عبارتی در خارج از بلاک تعریف نشده هستند.
مثال void foo(void) { for (int j=0;j<10;j++) { intk = j*10; cout << j << “,” << k << endl; { int m = j+k; cout << m << “,” << j << endl; } } } j k m
انواع بازگشتی در توابع توابع می توانند یک مقدار با نوع مشخص شده در تعریف تابع بازگردانند می توان توابعی را تعریف کرد که هیج مقداری بر نمی گرداند. توابع هنگام فراخوانی دستور return دیگر اجرا نشده و مقدار محاسبه شده را برمی گردانند.
سربار گذاري تابع می توان تابعی با شناسه(نام) یکسان تعریف کرد اما بایستی پارامترهای ورودی متفاوت داشته باشند. هنگام فراخوانی با توجه به پارامترهای ارسالی کامپایلر تعیین می کند که چه تابعی فراخوانی شود.
کتابخانه ctsdlib http://www.cplusplus.com
مثال تابعی بنویسید که دو عدد را به عنوان ورودی گرفته و عدد تصادفی بین دو عدد ورودی برگرداند.
توابع بازگشتی F(a)=F(a-1)+F(a-2) F(1)=1 F(2)=1 توابعی که خود را فراخوانی می کنند توابع بازگشتی نامیده می شوند. برای مثال اعداد فیبوناچی به صورت زیر یک تابع بازگشتی است. هر تابع بازگشتی حداقل یک شرط اولیه دارد.
مثال توابع زیر برای x=5 چه خروجی تولید می کنند.
مثال تابعی بنویسید که به صورت بازگشتی فاکتوریل یک عدد را حساب کند.
توابع بازگشتی تابع فیبوناچی به صورت بازگشتی
مثال تابع زیر چه عملی انجام می دهد؟
روش های انتقال پارامتر • دو روش موجود است: • با استفاده از مقادیر • با استفاده از ارجاع در روش انتقال پارامترها با استفاده از مقادیر مقدار متناظر با متغییر برای تابع فرستاده می شود در روش انتقال پارامترها با استفاده از ارجاع آدرس متغییرها برای توابع ارسال می شوند در روش انتقال پارامترها با استفاده از ارجاع بعد از آشنایی با مفاهیم اشاره گرها ارئه خواهد شد.