فهرست موضوعات





سایت های مرتبط


عضویت | ورود

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

برنامه ذیل از سه تابع تشکیل شده است : ()main() ، myfunc1() ، myfunc2 . پیش از اجرا دقیقا مجسم سازید که این برنامه چه چیزهایی را روی صفحه نمایش نشان خواهد داد .
/*This program contains three functions:
main() , myfunc1() and myfunc2()*/
#include<iostream.h>
void myfunc1();    //myfunc1's prototype
void myfunc2();    //myfunc2's prototype
main()
{
   cout<<"In main() ";
   myfunc1();    //call myfunc1()
   cout<<"Back in main() ";
   return 0;
}

void myfunc1()
{
   cout<<"Inside myfunc1()";
   myfunc2();    //call myfunc2();
   cout<<"Back in myfunc1()";
}

void myfunc2()
{
   cout<<"Inside myfunc2()";
}
توابع myfunc1() و myfunc2() دارای همان شکل کلی تابع main() هستند . نحوه کار این برنامه بدین صورت است که : ابتدا تابع main() شروع شده و اولین دستور cout را اجرا می کند . سپس main() ، تابع myfunc1() را فرا می خواند . در این برنامه ، نام تابع ، myfunc1 ، به همراه پرانتزهایی که دنبال آن آمده باعث فراخوانی تابع myfunc1() می شود . در ++c فراخوانی یک تابع ، یک دستور محسوب می شود و بنابراین باید به یک سمی کالن ختم گردد . سپس myfunc1() اولین دستور cout خود را اجرا کرده و پس از آن myfunc2() را فرا می خواند . داخل myfunc2() ، پیام Inside myfunc2() نمایش داده شده و سپس این تابع به myfunc1() و به خط کدی که بلافاصله پس از فراخوانی آن قرار دارد ، باز می گردد . در این زمان ، myfunc1() پیام Bach in myfunc1() را نمایش می دهد . سپس myfunc1() به main() باز می گردد . در نهایت main() دومین دستور cout خود را اجرا کرده و عاقبت برنامه خاتمه می پذیرد . خروجی برنامه به صورت زیر خواهد بود :
In main() Inside myfunc1() Inside myfunc2() 
Back in myfunc1() Back in main()
در این برنامه با یک ویژگی مهم ++c نیز آشنا شدید که در خط زیر آمده است :
void myfunc1();   //myfunc1's prototype
void myfunc2();   //myfunc2's prototype
اینها پیش الگو (prototype) های توابع myfunc1() و myfunc2() هستند . پیش الگوی یک تابع آن تابع را اپیش از تعریف ، معرفی می سازد . پیش الگو به کامپایلر امکان می دهد که در مورد نوع مقدار بازگشتی و تعداد و انواع پارامترهایی که یک تابع ممکن است داشته باشد ، آگاهی پیدا نماید .قبل از آنکه هر تابعی برای نخستین بار فراخوانی گردد ، لازم است که کامپایلر از این اطلاعات مطلع باشد . علت اینکه پیش الگوها را قبل از main() می آورند همین است .
اگر به توابع myfunc1() و myfunc2() توجه کنید مشاهده می کنید که هیچکدام دستور return ندارند . زیرا نوع خروجی آنها از نوع void تعریف شده است .

 مقالات
 لینکدونی
home | ozviat | gallery | about us | contact us | site map