بخشی از پاورپوینت
اسلاید 2 :
توابع
اسلاید 3 :
دليل استفاده از تابع
اجتناب از نوشتن تكراري خطوط يكسان در يك برنامه
ساختار برنامه بهتر و قابل فهم ميشود
استقلال زير روالها از تابع main كه باعث ميشود بتوانيم از افراد مختلف براي پياده سازي بخشهاي مختلف استفاده كنيم
اسلاید 4 :
تابع چيست؟(ادامه)
مفهوم تابع در زبان C مشابهت زيادي با مفهوم تابع در رياضيات دارد و در واقع مدل کننده تابع در رياضيات است.
اسلاید 5 :
مثال
int summation(int a, int b)
{
return(a+b);
}
اسلاید 6 :
مثال: تابعي بنويسيد كه يك عدد را گرفته و قدرمطلق آنرا برگرداند
float Absolute(float num)
{
float result;
if (num < 0)
result = -num;
else
result = num;
return result ;
}
اسلاید 7 :
محل قرار گرفتن توابع
هرتابع قبل از استفاده شدن بايد توسط كامپايلر شناخته شده باشد
بنابراين بايد قبل از فراخواني توابع آنها را به سيستم معرفي نمود
از آنجا كه در برنامه نويسي معمول است كه پياده سازي توابع بعد از تابع main انجام شود لذا قبل از تابع main تنها يك معرفي از توابع انجام ميشود
در معرفي تابع تنها نوع خروجي، نام تابع و نوع آرگومانها معرفي ميشوند كه به آن نمونه اوليه (prototype) ميگويند
اسلاید 8 :
نمونه اوليه توابع Function Prototypes
نمونه اوليه تابع به کامپايلر مي گويد که شکل تابع به چه صورت است.
لذا مي توان تابع را استفاده کرد حتي اگر کامپايلر هنوز پياده سازي تابع را نديده باشد.
نمونه اوليه تابع موارد زير مشخص مي کند:
اسم تابع
تعداد و نوع آرگومانها
نوع مقدار بازگشتي
اسلاید 9 :
مثال:
float Absolute(float num)
{
if (num < 0)
return -num;
else
return num;
}
void main()
{
float x1,x2;
printf( "\nEnter a number");
scanf( "%f" , &x1);
x2 = Absolute(x1);
printf( "\nAbsolute=%f", x2 );
}
float Absolute(float num);
void main()
{
float x1,x2;
printf( "\nEnter a number");
scanf( "%f" , &x1);
x2 = Absolute(x1);
printf( "\nAbsolute=%f", x2 );
}
float Absolute(float num)
{
if (num < 0)
return -num;
else
return num;
}
اسلاید 10 :
مثال: با استفاده از تابع برنامهاي بنويسيد كه دو عدد گرفته و ماكسيمم آنرا نمايش دهد
int Max( int a , int b )
{
if (a > b )
return a;
else
return b;
}
void main()
{
int x1,x2;
printf( "\nEnter two numbers ");
scanf( "%d %d" , &x1 , &x2);
printf( "\nMax(%d,%d)=%d", x1, x2, Max(x1, x2) );
}
Enter two numbers 5 8
Max(5,8)=8
اسلاید 11 :
پارامترهاي تابع
پارامترهای تابع در داخل بدنه آن متغیر محلی محسوب میشوند.
وقتی که تابع صدا زده می شود، فراخواننده تابع مقدار پارامترها را به تابع می فرستد.
تابع یک کپی از مقدار پارامترها را دریافت می کند.
لذا تغييراتي که در مقدار متغيرها، درون تابع اعمال ميشود تاثيري در مقدار آنها در تابع فراخواننده ندارد.
اسلاید 12 :
مثال: تابعي بنويسيد كه دو عدد گرفته و حاصل جمع آنها را برگرداند
int add2nums( int firstnum, int secondnum )
{
int sum;
sum = firstnum + secondnum;
// just to make a point
firstnum = 0;
secondnum = 0;
return sum;
}
اسلاید 13 :
مثال: تست برنامه جمع
void main()
{
int y , a , b ;
printf( "\nEnter two numbers ");
scanf( "%d %d" , &a , &b);
y = add2nums( a , b );
printf( "\na is: %d " , a );
printf( "\nb is: %d " , b );
printf( "\ny is: %d " , y );
}
Enter two numbers 5 9
a is: 5
b is: 9
y is: 14
اسلاید 14 :
int add2nums( int a, int b)
{
int sum;
sum = a+ b;
// just to make a point
a= 0;
b= 0;
return sum;
}
void main()
{
int y , a , b ;
printf( "\nEnter two numbers ");
scanf( "%d %d" , &a , &b);
y = add2nums( a , b );
printf( "\na is: %d " , a );
printf( "\nb is: %d " , b );
printf( "\ny is: %d " , y );
}
اسلاید 15 :
متغيرهاي محلي (Local Variables)
پارامترها و متغیرهایی که داخل بدنه تابع و در قسمت تعریف تابع اعلان می شوند از نوع محلی هستند.
متغیرهای محلی فقط در محدوده تابع با معنی هستند.
بعد از پایان تابع، این متغیرها دیگر وجود ندارند.
پس از بازگشت از تابع تمامي فضاي اختصاص يافته به متغيرهاي محلي آن، به سيستم بازپس داده ميشود.
اسلاید 16 :
متغيرهاي بلاكي (Block Variables)
اگر متغیری در داخل یک بلاک از کد (بین } و {) تعریف شده باشد، این متغیر از نوع بلاکی است و فقط در محدوده آن بلاک معتبر است و خارج از آن قابل شناسایی و استفاده نیست.
{
int var;
…
…
}
اسلاید 17 :
متغيرهاي عمومي(Global Variables)
شما می توانید متغیرها را خارج از محدوده توابع و بلاکها تعریف کنید این متغیرها از نوع عمومی هستند.
متغیرهای عمومی از همه جای برنامه قابل استفاده هستند و همه بلاکها و توابع می توانند از آنها استفاده کنند.
اسلاید 18 :
محدوده یک متغیر(Scope)
محدوده یک متغیر قسمتی از برنامه است که متغیر در آن دارای معنی و قابل استفاده است (در واقع، در این محدوده متغیر وجود دارد).
اسلاید 19 :
مثال:
void main()
{
int y;
{
int a = y;
printf( “%d\n” , a);
}
printf( “%d\n” , a);
}
اسلاید 20 :
متغيرهاي بلوكي تودرتو
void func1()
{
for (int j=0;j<10;j++)
{
int k = j*10;
printf(“%d,%d\n”, j , k );
{
int m = j+k;
printf(“%d,%d\n”, m,j);
}
}
}