مشخصات مقاله
-
0.0
-
1277
-
0
-
0
آموزش توابع در ++C
توابع در زبان C++
در زبان سی پلاس پلاس می توانید گروهی کد را بنویسید که بر اساس ورودی های گرفته شده و اجرای کدها روی ورودی خروجی می دهد و برای این گروه از کد که کار مشخصی انجام می دهند نامی در نظر بگیرید و در کدهای برنامه در صورت نیاز به اجرا، تابعی را که ایجاد نموده اید فراخوانی نمایید. باید بگویم تابع یک بلوک از کد است که فقط زمانی اجرا می شود که فراخوانی گردد.
شما می توانید داده ها را که به عنوان پارامتر شناخته می شوند، به تابع منتقل نمایید. توابع برای انجام اقدامات خاصی استفاده می شوند. (کد را یک بار تعریف و چندین بار از آن استفاده کنید.)
ایجاد تابع
C++ برخی از توابع از پیش تعریف شده مانند ()main را ارائه می دهد که برای اجرای کد استفاده می شود. اما شما همچنین می توانید توابع خود را برای انجام اقدامات خاص ایجاد نمایید. برای ایجاد یک تابع، نام تابع و به دنبال آن پرانتز () را قرار می دهیم:
void myFunction() {
// code to be executed
}
- • ()myFunction نام تابع است.
- • void به این معنی است که تابع مقدار بازگشتی ندارد.
- • در داخل تابع (بدنه)، کدی را اضافه نمایید که مشخص می کند تابع باید چه کاری انجام دهد.
- • تابع را فراخوانی کنید.
- • توابع اعلام شده بلافاصله اجرا نخواهد شد بلکه زمانی که آنها فراخوانی می شوند اجرا می گردند.
برای فراخوانی یک تابع، نام تابع را به همراه دو پرانتز () و نقطه ویرگول می نویسیم. در مثال زیر،myFunction()برای چاپ یک متن استفاده می شود:
#include
using namespace std;
void myFunction() {
cout << "I just got executed!";
}
int main() {
myFunction();
return 0;
}
خروجی :
I just got executed!
یک تابع را می توان چندین بار فراخوانی نمود:
#include
using namespace std;
void myFunction() {
cout << "I just got executed!\n";
}
int main() {
myFunction();
myFunction();
myFunction();
return 0;
}
خروجی :
- I just got executed!
- I just got executed!
- I just got executed!
اعلامیه و تعریف تابع
یک تابع ++C از دو بخش تشکیل شده است:
- • اعلان: نوع بازگشتی، نام تابع و پارامترها (در صورت وجود)
- • تعریف: بدنه تابع (کدی که باید اجرا شود)
void myFunction() { // declaration
// the body of the function (definition)
}
توجه: اگر یک تابع تعریف شده توسط کاربر، مانند myFunction() بعد از تابع main() اعلام شود، یک خطا رخ خواهد داد:
#include
using namespace std;
int main() {
myFunction();
return 0;
}
void myFunction() {
cout << "I just got executed!";
}
خروجی :
In function 'int main()':
In function 'int main()': 5:3: error: 'myFunction' was not declared in this scope
با این حال، امکان جداسازی اعلان و تعریف تابع - برای بهینه سازی کد وجود دارد. شما اغلب برنامه های ++C را می بینید که دارای اعلان تابع در بالای main() و تعریف تابع در زیر main() هستند. این مسئله باعث می شود کد بهتر سازماندهی شده و خواندن آن آسان تر شود:
#include
using namespace std;
// Function declaration
void myFunction();
// The main method
int main() {
myFunction(); // call the function
return 0;
}
// Function definition
void myFunction() {
cout << "I just got executed!";
}
خروجی :
I just got executed!
پارامترها و آرگومان های تابع
اطلاعات را می توان به عنوان یک پارامتر به توابع ارسال کرد. پارامترها به عنوان متغیر در داخل تابع عمل می کنند. پارامترها بعد از نام تابع در داخل پرانتز مشخص می شوند. شما می توانید هر تعداد پارامتر را که می خواهید اضافه و با یک کاما جدا کنید:
void functionName(parameter1, parameter2, parameter3) {
// code to be executed
}
مثال زیر تابعی دارد که رشته ای به نام fname را به عنوان پارامتر می گیرد.
#include
#include
using namespace std;
void myFunction(string fname) {
cout << fname << " Refsnes\n";
}
int main() {
myFunction("Liam");
myFunction("Jenny");
myFunction("Anja");
return 0;
}
خروجی :
Liam Refsnes
Jenny Refsnes
Anja Refsnes
مقدار پارامتر پیش فرض
شما می توانید با استفاده از علامت تساوی (=) از مقدار پارامتر پیش فرض استفاده نمایید. اگر تابع را بدون آرگومان فراخوانی کنیم، از مقدار پیش فرض ("Norway") استفاده خواهد کرد:
#include
#include
using namespace std;
void myFunction(string country = "Norway") {
cout << country << "\n";
}
int main() {
myFunction("Sweden");
myFunction("India");
myFunction();
myFunction("USA");
return 0;
}
خروجی :
- Sweden
- India
- Norway
- USA
در داخل تابع، می توانید هر تعداد پارامتر که می خواهید اضافه نمایید:
#include
#include
using namespace std;
void myFunction(string fname, int age) {
cout << fname << " Refsnes. " << age << " years old. \n";
}
int main() {
myFunction("Liam", 3);
myFunction("Jenny", 14);
myFunction("Anja", 30);
return 0;
}
خروجی :
- Liam Refsnes. 3 years old.
- Jenny Refsnes. 14 years old.
- Anja Refsnes. 30 years old.
مقدار بازگشتی
کلمه کلیدی void که در مثال های قبلی استفاده شد، نشان می دهد که تابع نباید مقداری را برگرداند. اگر می خواهید تابع مقداری را برگرداند، می توانید به جای void از یک نوع داده (مانند int، string و ...) و از کلمه کلیدی return در داخل تابع استفاده کنید:
#include
using namespace std;
int myFunction(int x) {
return 5 + x;
}
int main() {
cout << myFunction(3);
return 0;
}
خروجی :
8
این مثال مجموع یک تابع را با دو پارامتر برمی گرداند:
#include
using namespace std;
int myFunction(int x, int y) {
return x + y;
}
int main() {
cout << myFunction(5, 3);
return 0;
}
خروجی :
8
همچنین می توانید نتیجه را در یک متغیر ذخیره نمایید:
#includeusing namespace std; int myFunction(int x, int y) { return x + y; } int main() { int z = myFunction(5, 3); cout << z; return 0; }
خروجی :
8
استفاده از ارجاع
در مثالهای صفحه قبل، وقتی پارامترها را به یک تابع میفرستیم، از متغیرهای عادی استفاده میکنیم. شما همچنین می توانید یک ارجاع به تابع ارسال نمایید. این روش می تواند زمانی مفید باشد که شما نیاز به تغییر مقدار آرگومان ها دارید:
#include
using namespace std;
void swapNums(int &x, int &y) {
int z = x;
x = y;
y = z;
}
int main() {
int firstNum = 10;
int secondNum = 20;
cout << "Before swap: " << "\n";
cout << firstNum << secondNum << "\n";
swapNums(firstNum, secondNum);
cout << "After swap: " << "\n";
cout << firstNum << secondNum << "\n";
return 0;
}
خروجی :
- Before swap:
- 1020
- After swap:
- 2010