Learning ©➕➕
4.52K subscribers
81 photos
2 videos
38 files
182 links
ک
Download Telegram
#142
#default #argument #function #توابع
✅ آرگومان های پیش فرض در ++C

❌ توجه داشته باشیم که به تعداد آرگومان ها (مساوی یا کمتر), آرگومان پیش فرض تعریف کنیم تا با خطایی از طرف کامپایلر مواجه نشیم
❌ توجه داشته باشیم که ترتیب قرارگیری آرگومانهای پیش فرض درون پارامترها از راست به چپ هست دلیل این کار هم به خاطر اینه که آرگومانهای تابع به ترتیب درون پارامتر قرار می گیرند.

برای درک بهتر مطلب تصویر (telegram.me/Learncpp/435) رو نگاه کنید
@Learncpp
#143
#default #argument #function #توابع
✅ آرگومان های پیش فرض در ++C

@Learncpp
#144
#default #argument #function #توابع
✅ آرگومان های پیش فرض در ++C

🔹همانطور که در تصویر (telegram.me/Learncpp/435) می بینید آرگومان اول در پارامتر اول و آرگومان دوم در پارامتر دوم قرار میگیرد و به خاطراینکه به آرگومان سوم مقداری ندادیم, مقداری پیش فرضی که برای پارامترسوم یعنی 3 در نظر گرفتیم در متغییر num3 قرار میگیرد
@Learncpp
#145
#default #argument #function #توابع
✅ آرگومان های پیش فرض در ++C

🔹همانطور که گفته شد ترتیب قرار گیری پارامترها از راست به چپ هست پس اگه آرگومان های پیش فرض تابع test رو مانند تصویر (telegram.me/Learncpp/438) بنویسیم کامپایلر با خطا مواجه می شود
@Learncpp
#146
#default #argument #function #توابع
✅ آرگومان های پیش فرض در ++C

@Learncpp
#147
#Overloading #function #توابع
✅ سربارگذاری توابع در ++C

🔹بعضی مواقع لازم داریم تابعی داشته باشیم که توانایی داشتن چندین آرگومان رو دارا باشه به زبانه ساده یعنی موقع فراخوانی تابع هم بتونیم مثلا یک آرگومان بهش بدیم هم دوتا و هر تعدادی که نیازه مثلا تابعی نیاز داریم که میانگین چند عدد از نوع صحیح رو حساب کنه و یا میانگین چند عدد اعشاری و برای این کار باید دو تابع جدا با اسم متفاوت بنویسیم تا موقع فراخوانی یک بار تابعی که میانگین اعداد صحیح را حساب میکنه رو صدا بزنیم یکبارم تابعی که محاسبه میانگین اعداد اعشاری رو حساب میکنه. اگه دقت کنید برای محاسبه میانگین دو نوع متفاوت دو تابع جدا نوشتیم.

🔹در ++C میتوانیم از سربارگذاری توابع برای رفع مشکل نوشتن چندین تابع جدا از هم استفاده کرد مثلا اگه به تابع strcpy_s دقت کنید زمان صدا زدن اسمِ تابع strcpy_s, به طور خودکار الگوی تابع مانند تصویر (telegram.me/Learncpp/440) به نمایش در خواهد آمد که شامل نوع تابع, اسم تابع و آرگومانهای تابع هست
@Learncpp
#148
#Overloading #function #توابع
✅ سربارگذاری توابع در ++C

@Learncpp
#149
#Overloading #function #توابع
✅ سربارگذاری توابع در ++C

🔹برای سربارگذاری یک توابع باید یا نوع خروجی تابع یا نوع آرگومانها یا تعداد آرگومانها فرق داشته باشند برای مثال کد زیر رو در نظر بگیرید

int ave(int num1,int num2);

double ave(double num1,double num2);


❌دقت کنیم در سربارگذاری توابع اسم تابع یکسانه ولی حتما باید نوع خروجی تابع یا نوع آرگومانها یا تعداد آرگومانها با هم فرق داشته باشد
@Learncpp
#150
#Overloading #function #توابع
✅ سربارگذاری توابع در ++C

مثال) کد زیر سربارگذاری تابع show رو نمایش میدهد
#include <iostream>

#include <string>

using namespace std;


void show(string name)

{

cout<<name<<endl;

}

void show(string name, string family)

{

cout<<name<<"\t"<<family<<endl;

}

void show(string name, string family,const string color)

{

cout<<name<<"\t"<<family<<"\t"<<color<<endl;

}


int main()

{

show("Ahmad");

show("Ali","Kh...");

show("Mohammad","Kh...","red");

return 0;

}

همانطور که مشاهده می کنید پس از نوشتن اسم تابع(show) آرگومان های تابع هم مانند تصویر (telegram.me/Learncpp/448) نمایش داده می شود
@Learncpp
#151
#Overloading #function #توابع
✅ سربارگذاری توابع در ++C
@Learncpp
#152
#Overloading #function #const #توابع
✅ سربارگذاری توابع در ++C

🔹در سربار گذاری توابع به نکات زیر باید توجه داشت

🔻اگر تابع show را به صورت زیر سربارگذاری کنیم با خطا مواجه می شویم دلیل خطا هم اینه که برای کامپایلر, توابعی که پشت تعریف متغییرهای معمولیش const بهست یا نیست به عنوان یک تابع حساب میکنه و نمیتونه تشخیص بده کدوم تابع رو اجرا کنه
مثلا)
void show(int a)

{ … }


void show(const int a)

{ … }


🔻برای پارامترهای از نوع مرجع و یا اشاره گر به متغیر ثابت، const بودن تفاوت ایجاد میکند
مثلا)
Void show(int &a)

{ … }

Void show(const int &a)

{ … }

و
Void show(int *a)

{ … }

Void show(const int *a)

{ … }

دلیل این که وقتی از ارجاع (&) و اشاره گر (*) استفاده می کنیم و به مشکلی نمی خوریم اینه که که مقادیر آرگومان هایش را تغییر می دهد, اگه بخوام واضح تر بگم اینه که آرگومانهایی که پس از ارسال به پارامتر تابعی اگر قابل تغییر نباشند با خطا روبرو می شوند ولی آرگومان هایی که به پارامتر ارسال می شوند و قابل تغییر هستند با خطایی مواجه نمی شوند
@Learncpp
#153
#template #overloaing
✅قالب توابع (Template) چیست

🔹از قالب ها (الکوها) روی مجموعه ای از داده های مشابه استفاده می شود به زبان ساده می توانیم هر نوع داده ای (آدرس پست) را پس از فراخوانی به عنوان آرگومان Template ارسال کنیم

تو مبحث سربارگذاری توابع (telegram.me/Learncpp/439) متوجه شدیم که هنگام فراخوانی آرگومان های هر توابع از قبل مشخص شده بود برای مثال ممکنه تابعی به نام show داشته باشیم که هم آرگومانهای int دارد هم آرگومانهای float و بسته به نیاز ممکنه نوع های دیگه هم داشته باشیم که میبایست برای هر نوعی تابع جدیدی ایجاد کرد مثلا برنامه ای نیاز هست که پارامترهایی از نوع int , float , string , double و char رو چاپ کند, در سربارگذاری توابع برای این کار باید 5 تابع جدا بنویسیم یعنی

void show(int text)

{ 

cout<<text;

}

void show(float text)

{ 

cout<<text;

}

void show(string text)

{ 

cout<<text;

}

void show(double text)

{ 

cout<<text;

}

void show(char text)

{ 

cout<<text;

}


که این نوع تعریف تابع برای هر نوعی هم حجم کد هارو بیشتر میکنه هم از خوانایی برنامه کم میکند پس ++C برای رفع این مشکل template ها رو معرفی کرد
@Learncpp
#163
#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع

🔹همانطور که متغییر ها را می توانیم به عنوان آرگومان برای توابع ارسال کنیم آرایه ها را نیز می توانیم برای توابع ارسال کرد به صورت پیشفرض آرایه ها شبیه متغیر های ارجاع با آدرس به توابع ارسال می شوند

برای ارسال يک آرايه به عنوان آرگومان به يک تابع ، کافيست نام آرايه را بدون علامت براکت ([ ]) به کار ببريد به عنوان مثال اگر آرايه ای با نام x به صورت زير تعريف شده باشد :
int x[24];
برای ارسال آن به تابع test_array کافيست تابع را به صورت زير:
test_array(x,24);
فراخوانی کنيد دستور بالا آرايه و طول آن را به تابع test_array ارسال می کند

❌ در هنگام فراخوانی تابع برای ارسال آرایه تنها اسم آرایه را باید بنویسیم

🔹مزیت ارسال آرایه ها به توابع:

🔺به جای اینکه چندین متغییر هم نوع تعریف و به تابع ارسال کنیم می توانیم از آرایه ها استفاده کنیم
🔺چون ذات آرایه ها همانند اشاره گرهاست پس اگر آرایه ای را برای تابع ارسال کنیم هر تغییری توی عناصر آرایه باعث تغییر در آرایه ای که در هنگام فراخوانی به عنوان آرگومان ارسال شده است می شود

@Learncpp
#164
#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹ارسال آرایه های یک بعدی به آرایه ها

برای ارسال آرایه یک بعدی به توابع به دو نکته باید توجه کرد:

1. اگر تابعی به صورت الگو (telegram.me/Learncpp/410) تعریف کرده باشیم نحوه نوشتن آرایه به صورت زیر هست یعنی ایتدا یکی از نوع داده نوشته می شود سپس از [ ] استفاده میکنیم تا به کامپایلر بفهمونیم که آرگومان از نوع آرایه هست ولی در پایین main برای تابع اسمی مشخص می کنیم
مثال)
#include <iostream>

using namespace std;


void func(int[]);


int main()

{

int arr[10]={1,2,3,4,5,6,7,8,9,10};

func(arr);

return 0;

}


void func(int a[])

{

for(int i=0;i<10;i++)

cout<<a[i]<<" ";

}

2. اگر تابع را به صورت معمولی بالای main تعریف کردیم باید قبل از [ ] اسم تابع را بنویسیم
مثال)
#include <iostream>

using namespace std;


void func(int a[])

{

for(int i=0;i<10;i++)

cout<<a[i]<<" ";

}


int main()

{

int arr[10]={1,2,3,4,5,6,7,8,9,10};

func(arr);

return 0;

}

@Learncpp
❤1
#165
#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹ارسال آرایه های دو بعدی به آرایه ها

❌توضیحات بیشتر در پست (telegram.me/Learncpp/298)

ارسال آرایه دو بعدی شبیه آرایه های یک بعدی است با این تفاوت که از 2 تا [ ] استفاده میکنیم یکی برای سطر و یکی برای ستون
برای درک بهتر مطلب گفته شده به تصویر (telegram.me/Learncpp/480) دقت کنید
@Learncpp
#166
#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹آرایه های دو بعدی به آرایه ها

@Learncpp
#167
#function #array #arg #argumenet
✅ آرایه ها به عنوان آرگومان های توابع
🔹ارسال آرایه های دو بعدی به آرایه ها

مثال) برنامه ای بنویسید که جدول ضرب 8 در 8 را در یک آرایه دو بعدی بریزد و نمایش دهد.
#include <iostream>

using namespace std;


int main()

{

int a[9][9];

for(int i=0;i<9;i++)

{

for(int j=0;j<9;j++)

{

a[i][j]=i*j ;

cout<<a[i][j]<<"\t";

}

cout<<endl;

}

return 0;

}

@Learncpp
#191
#function #exam #call_by_value
☑️ توابع
تمرین)
برنامه ای بنویسید که دو عدد را از ورودی گرفته و دو واحد به آنها اضافه کرده سپس آنها را چاپ کند؟ (از روش call by value استفاده شود)
@Learncpp
#193
#function #exam #call_by_value
☑️ توابع
تمرین)
برنامه ای بنویسید که تابع show را طوری سربارگذاری کند که توانایی دریافت چندین آرگومان را داشته باشد سپس آرگومان های دریافتی را چاپ نماید؟
@Learncpp
#195
#function #exam #call_by_value
☑️ توابع
تمرین)
برنامه ای بنویسید که با استفاده از template ها هر نوع داده ای را از ورودی گرفته و آنها را چاپ کند؟
@Learncpp