برنامه نویسی و دیگر هیچ

فضایی برایه یادگیری برنامه نویسی

برنامه نویسی و دیگر هیچ

فضایی برایه یادگیری برنامه نویسی

۱ مطلب با موضوع «درسنامه :: تابع» ثبت شده است

تابع موضوع غیر آشنایی برای ما نیست ، تا به اینجا ما در برنامه های خود بارها و بارها از توابع استفاده کرده ایم.

توابعی مثل:( )sqrt() ,pow(2,3) ,rand

این توابع به صورت آماده در اختیار ما بود تا هر زمان که لازم داشتیم از آنها استفاده کنیم، اما ممکن است ما به یک تابعی احتیاج داشته باشیم که در مجموعه توابع آماده وجود نداشته باشد! پس لازم است که ما هم بتوانیم تابع هایی بر اساس نیاز خود تعریف و پیاده سازی کنیم!

 

اول از مثال های ساده شروع میکنیم:

تابعی بنویسید که 2 برابر یک عدد را حساب کند.

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

 مثلا تابع توان((pow(2,3 )  دو تا عدد میگیره و حاصل اولی به توان دومی را به ما میدهد( در اینجا 2 به توان 3 یعنی 8) ! خب حالا تابع ساده ای که ما  داریم مینویسیم قراره چی بگیره؟

یک عدد میگیره و 2 برابر آنرا برمیگردونه!

به اون چیزی که تابع میگیره میگن ورودی و به اون چیزی که برمیگردونه هم میگن خروجی.

در واقع تابع یه سری عملیات رویه ورودی انجام میده تا به خروجی نهایی برسه!

 

نحوه تعریف تابع ها در زبان++c:

 

(انواع ورودی)    اسم تابع       نوع خروجی    

  دستورات       }

{                         

 

توجه!توجه!توجه: تعریف تابع حتما قبل از main است.

 

نوع خروجی: خروجی یک تابع ممکن است عدد صحی، عدد اعشاری، کارکتر، رشته، پوچ و ... باشد.

انواع ورودی: یک تابع ممکن است یک، دو یا تعداد زیادی ورودی داشته باشد و در مواقعی هم اصن وردی نداشته باشه! اما اگر تابع شما ورودی داره باید نوع اون مشخص باشه که عدد صحیحه ، کاراکتر ، عدد اعشاری و یا ...

 

اسم تابع : همانند اسم متغیرها میتوان اسامی مختلفی برای توابع در نظر گرفت!

 

دستورات: شامل عملیاتی است که بر روی ورودی(ها) مورد نظر انجام میشود!

 

تعریف تابعی که 2 برابر یک عدد را حساب میکند!

 

( double f2 (double a 

}

 ; a= a*2

 ; return a

 {

 

اسم تابع رو به دلخواه f2 انتخاب شده! نوع ورودی رو عدد اعشاری در نظر گرفتم و چون این تابع قراره 2 برابر یک عدد رو حساب کنه و ورودی ما اعداد اعشاری رو هم شامل میشه نوع خروجی رو هم اعشاری انتخاب کردم!

 

دستورات این تابع: ابتدا 2 برابر a را حساب کردم و در a ریختم. سپس مقدار a رو برگردوندیم!

 

return   حاصل عملیاتی که تابع بر روی ورودی ها انجام داده با استفاده از دستور return برگردانده میشود.

 

سوال؟ به کجا برگردونده میشه؟ ما از توابع همانند گذشته در برنامه هامون استفاده خواهیم کرد و برنامه هامون رو هم که مثل قبل داخل main مینویسیم! پس هر جایی از main که ا ز یک تابع استفاده میکنیم اون تابع خروجی خودش رو که حساب کرده به همون نقطه برمیگردونه.

 به برنامه زیر توجه کنید:

 

درون main یک متغییر به اسم s داریم که اون رو برابر مقدار تابع f2 قرار دادیم به ازای عدد 7. در اینجا main که به این تابع مبرسه، از درون این تابع خبر نداره و فقط ازش میخواد مقدار ورودی که در اختیارش قرار داده(7) رو بگیره و یک خروجی به اون بده! که در اینجا خروجی تابع f2 وقتی به درون main برگردونده میشه دورن متغیر s ذخیره میشه! چون در برنامه s برابر با این تابع است.

 

مثال: تابعی بنویسید که 2 عدد بگیرد و مقدار کوچکتر رو برگردونه:

 

 

مثال: تابعی بنویسید که یک عدد گرفته اگر زوج است چاپ کند "zoj" و اگر فرد است "fard" .

 

 

 

 

نوع خروجی در تابع بالاvoid است؟! چرا؟ زمانیکه تابع ما قرار است نهایتا نوعی خروجی به صورت دستور cout و یا رسم شکلی داشته باشد میگوییم خروجی از نوع void یا پوچ است چرا که رسم شکل و یا cout ،خروجی لحظه ای است و یک لحظه قابل رویت است و بعد از آن در ادامه برنامه به آن دسترسی نداریم.

 

در تابعی که نوع خروجی void است از return به هیچ عنوان استفاده نمیشود.

 

 توابع به طور کلی به 4 قسمت تقسیم میشوند:

 

1- با ورودی-با خروجی

2-با ورودی-بدون خروجی

3--بدون ورودی-با خروجی

4-بدون ورودی-بدون خروجی

 

1-با وردی -با خروجی

 

مثال: تابعی بنویسید که یک عدد بگیرد قرینه آنرا حساب کند:

 

 

توجه کنید که این تابع مقدار قرینه را حساب میکند و بعد ما در جایی دیگر از برنامه(main) میتوانیم نتیجه کار تابع مورد نظر را چاپ کنیم.

 

 

2- با ورودی- بدون خروجی

 

مثال: تابعی بنویسید که یک عدد گرفته قرینه آنرا چاپ کند.

 

 

توجه کنید که وقتی قرار است خود تابع کار چاپ را انجام دهد خروجی آن از نوع void  میشود.

 

 

3- بدون ورودی- با خروجی

 

مثال: تابعی بنویسید که عدد 3.14 را برگرداند.

 

 

 

 

 

 

 

 

 

تان

  • علیرضایی