تعریف توابع

   اکثر برنامه های کاربردی ، خيلی بزرگتر از برنامه هايی می باشند که ما تا اکنون در مباحث قبلی نوشته ايم. تجربه نشان داده است که بهترين راه برای گسترش و نگهداری و ارتقاء برنامه های بزرگ، تق سيم کردن آنها به قطعات کوچکتر می باشد. هر کدام از قطعات راحتتر از برنامه اصلی مديريت می  شوند و اعمال تغييرات و خطايابی در آنها نيز ساده تر می باشد. قطعات مورد نظر ما در زبان ++C همان توابع می باشند. اگر بياد داشته باشيد در مباحث قبلی گفتيم که main نيز يک تابع می باشد و اين تابع نقطه ای است که برنامه اجرای دستورات را از آن آغاز می کند. زبان ++C توابع آماده زيادی را در اختيار ما قرار داده که در فايلهای کتابخانه ای اين زبان موجود می باشند، که گوشه ای از آنها را در مبحث قبل ديديد. در برنامه نويسی ممکن است که نياز داشته باشيم مجموعه دستوراتی را عيناً در چند جای برنامه استفاده کنيم، در چنين حالتی بهتر است اين مجموعه دستورات را در تابعی قرار دهيم و تابع را در برنامه چندين باز صدا بزنيم و از تکرار دستورات که تنها حجم برنامه اصلی را زياد می کنند و از خوانايی آن می کاهند خودداری کنيم.

   در زبان ++C توابع به شيوه زير تعريف می شوند :

آرگومانهای تابع)  نام تابع      نوع داده خروجی)
          {
                   تعريف متغيرها
                    دستورات تابع
           }

   نام تابع از قواعد نام گذاری متغيرها پيروی می کند. برای آشنا شدن با نحوه تعريف توابع و شيوه به کار گيری آنها به برنامه زير توجه کنيد:

#include <iostream.h>
 
long int power2 (int x)
{
  long int y;
 
  y=x*x;
 
  return y;
}
 
int main ()
{
  for (int i=1;i<=10;i++)
    cout<<power2(i)<<" ";
 
  return 0;
}
 

  خروجی برنامه مربع اعداد 1 تا 10 می باشد.

1 4 9 16 25 36 49 64 81 100

   تابع power2(x) که در اين برنامه نوشتيم تقريباً شبيه تابع pow(x,2) از توابع کتابخانه ای ++C عمل می کند. ضابطه رياضياتی اين تابع f(x) = x2 می باشد. ورودی اين تابع اعداد صحيح (int) و خروجی آن اعداد بزرگ (long int) می باشد. هنگامی که برنامه به تابع power2(i) می رسد تابع فراخوانی می شود و مقدار آرگومان i را دريافت می کند و در متغيرx قرار می دهد. سپس متغير y تعريف می گردد و مقدار x*x در y قرار می گيرد و سرانجام مقدار y به عنوان خروجی تابع برگردانده می شود و توسط دستور cout چاپ می گردد. توجه داشته باشيد که تابع تغييری در مقدار متغير i ايجاد نمی کند و حلقه for تابع را 10 بار فراخوانی می کند، ضمناً متغيرهای x وy در تابع main قابل استفاده نمی باشند و نيز متغير i در تابع power2 تعريف نشده است.

   نکته : توجه داشده باشيد که توابع داخل يکديگر قابل تعريف نمی باشند و جدا از هم بايد تعريف گردند.

   مثال : تابعی بنويسيد که سه عدد را به عنوان ورودی دريافت کرده و بزرگترين آنها را به عنوان خروجی برگرداند. اين تابع را در برنامه ای به کار ببريد.

#include <iostream.h>
 
int maximum (int x,int y, int z)
{
  int max=x;
 
  if (y>max)
     max=y;
  if (z>max)
     max=z;
 
  return max;
}
 
int main ()
{
  int num1,num2,num3;
 
  cout << "Enter three numbers: ";
  cin >> num1 >> num2 >> num3;
  cout << "Max is :"
       << maximum(num1,num2,num3)<<endl;
  cout << "Max of 5,20,1 is "
       << maximum(5,20,1)<<endl;
 
  return 0;
}
Enter three numbers: -5 20 150
Max is :150
Max of 5,20,1 is 20

   تابع maximum دارای سه آرگومان بود. هنگامی که اعداد num1 و num2 و num3 در برنامه از ورودی دريافت می شوند با فراخوانی تابع maximun(num1,num2,num3) اعداد آرگومانهای num1 و num2 و num3 به ترتيب در متغير های x و y و z قرار می گيرند و مقادير توسط تابع مقايسه می شوند و نهايتاً بزرگترين عدد در متغير max قرار می گيرد که توسط دستور return max; به عنوان خروجی تابع برگردانده می شود. سپس دستور cout خروجی تابع را بر روی صفحه نمايش چاپ می کند.


 

 

 

   معرفی کامپيوتروبرنامه نويسی

   ساختارهای کنترلی

   توابع

   آرايه ها

   اشاره گر ها و رشته ها

   کلاسها

   گرانبار کردن عملگر ها

 
 
 
   
 
 
 

حق کپی رایت محفوظ می باشد