Learning ©➕➕
4.52K subscribers
81 photos
2 videos
38 files
182 links
ک
Download Telegram
#109
#براکت #Brackets #کلاس #class
✅ استفاده از براکت ها برای ایجاد محدوده

🔹 براکت { } چیست ؟
به زبان ساده براکت یه جفت { } باز و بسته است که محدوده ای رو مشخص میکنه یعنی از جایی که براکت باز میشه تا جایی که براکت بسته میشه و متغییر هایی که داخل اون تعریف شده قابل شناسایی هستن و بیرون اون قابل دسترسی نیستن که ما بیشتر توی تعریف تابع ها بهش بر میخوریم مثلا تابع main یا توابعی که خودمون ایجاد میکنیم.
مثلا )
#include "stdafx.h"

#include <iostream>

using namespace std;

int main()

{

int x=10;

  {

  int x=1;

  cout<<x; //1

  }

cout<<x; //10

cout<<endl;

system("pause");

return 0;

}

اگه دقت کنیم متغییر x که توی براکت داخلی درون main تعریف شده حوزه شناساییش درون همون براکت هست و موقع چاپ x مقدار 1 رو چاپ میکنه.
مثلا )
#include "stdafx.h"

#include <iostream>

using namespace std;

class Brackets

{

public:

Brackets()

{

cout<<"Constructor\n";

}

~Brackets()

{

cout<<"Destructor\n";

}

};

int main()

{

Brackets t1, t2;

  {

  Brackets t3, t4;

  }

Brackets t5;

cout<<endl;

system("pause");

return 0;

}

خروجی بالا به صورت زیر نمایش داده میشود و دلیل نمایش مخرب ها هم به خاطر براکت های داخلی که درون main استفاده شده می باشد , این یعنی اینکه محدوده تمامی متغییر ها یا شی هایی که درون براکت باز و بسته قرار داره فقط درون خودشون قابل شناسایی و وقتی به براکت بسته میرسیم از بین میروند.
🔺صدا زدن تابع مخرب درون کلاس هم به خاطر همین موضوع هست.
Constructor

Constructor

Destructor

Destructor

Constructor

@Learncpp
This media is not supported in your browser
VIEW IN TELEGRAM
مقایسه قدرت زبانها نسبت هم.....
#111
#function #توابع
✅ تابع چیست؟

در این قسمت به بحث در مورد یکی از مفاهیم مهم و اساسی در برنامه نویسی به نام توابع میپردازیم.
وقتی خطوط برنامه ما زیاد می شود درک،پیگیری،خطایابی و دیگر اعمال بروی برنامه دشوار خواهد شد. توابع ابزاری هستند که به ما در بهبود برنامه کمک میکنند و برنامه نویسی ساخت یافته را ارائه میدهند،به این معنی که برنامه اصلی به قسمتهای مستقل و کوچکی تقسیم می شود که توابع نام دارند.
برای استفاده از تابع باید تابع خود را تعریف نماییم تا مشخص کنیم که چه کاری را باید انجام دهد

@learncpp
#112
#function #توابع
✅ چرا در برنامه هامون باید از توابع استفاده کنیم ؟

قبل از اینکه بخوام مزایای استفاده از تابع رو بگم دوست دارم یک مثال غیر برنامه نویسی بزنم که درکتون نسبت به توابع عمیق تر بشه

شما فرض کنید توی یک نشریه کار میکنید که مجبورین هفته ای یکبار مجله ای رو با موضوعات ورزشی و سیاسی و فرهنگی و غیره آماده و چاپ کنید پس برای تهیه مجله ای با موضوعات متفاوت میتونیم از کسایی که سر رشته ای و تخصصی از موضوعات دارند کمک بگیریم مثلا در قسمت ورزشی از آقای فردوسی پور یا در قسمت سیاسی از آقای ظریف استفاده کنبم تا پس از جمع آوری و دسته بندی و تعیین صفحات موضوعات (یعنی هر موضوع از چه صفحه ای شروع و تا چه صفحه ای ادامه دارد) که این باعث میشه تا خیلی سریع موضوعی که علاقه داریم رو پیدا و مطالعه اش کنیم

خب اگه به کارکرد نشریه بالا دقت کرده باشیم دو مورد بیشتر خودنمایی میکنه:

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

کارکرد توایع هم شبیه نشریه بالاست یعنی برای ساخت یک نرم افزار هرکسی به نسبت تخصصش در هر شهری و روستایی که هست به صورت جداگانه قسمتی از نرم افزار رو داخل یک تابع روی سیستم خودش تکمیل و خطایابی میکنه و سپس در پایان پس از تکمیل تمامی توابع نوشته شده توسط هر برنامه نویس درون تابع اصلی (main) قرار گرفته و کامپایل خواهد شد که همین امر باعث کم شدن درصد خطا (به دلیل تمرکز بیشتر هر برنامه نویس روی تابع خودش) و اتمام سریعتر پروژه (به خاطر تقسیم بندی قسمت های مختلف پروژه بین افراد) رو همراه خواهد داشت
@learncpp
❤1
#113
#function #توابع
✅ مزایای استفاده از توابع :

🔹تقسیم بندی برنامه به توابع کوچک تر :
فرض کنید میخوایم یه برنامه "تبدیل فیلم به صوت" بنویسیم که این برنامه قابلیت باز کردن, ویرایش, برچسب گذاری روی فیلم و تبدیل فایل تصویری به صوت را دارد حالا اگه بخوایم همه این کار ها رو توی تابع main انجام بدیم به دلیل زیاد شدن تعداد خطوط کدها باعث میشه هم پیچیده و هم درک برنامه کمتر بشه و ممکنه بعد مدتی ندونیم از کدوم خط تا کدوم خط کار تبدیل "ویدیو به صوت" را انجام میده یا کدوم خط باعث "پخش شدن فیلم" میشه پس برای جلوگیری از این سردرگمی ها میایم هر بخش رو توی یه تابع مشخصی مینویسیم

🔹اشکال زدایی ساده تر :
فرض کنید برنامه "تبدیل فیلم به صوت" حدود 1000 خط هست و درون main هم نوشتیمش و ممکنه موقع کامپایل کردن برنامه یک خطایی در خط 782 بوجود بیاد که مرتبط به تبدیل ویدیو به صوت هست خب الان به نظرتون باید چکار کنیم باید از خط 782 به قبل برسی کنیم ببینیم چه جایی اشتباه کردیم و بریم درستش کنیم که برسی 782 خط وقت گیره پس برای حل این مشکل وظایف برنامه رو جدا جدا توی هر تابعی مینویسیم و سپس اگه تابعی به مشکل داشت خیلی راحت فقط همون تابع رو برسی میکنیم یعنی 1000 خط ممکنه توی 4 تابع قرار بگیره که هر تابع 250 خط کد درونش هست پس برسی 250 خط خیلی آسون تر از 1000 خط هست

🔹صرفه جویی در وقت:
همانطور که در مثال بالا دیدیم 1000 خط رو توی 4 تابع نوشتیم که هر تابع 250 خط کد درونشه پس اگه خطایی توی یکی از توابع پیش بیاد ما فقط 250 خط رو اشکال زدایی میکنیم بجای 1000 خط که این خود باعث صرفه جویی در وقت می شود.
@learncpp
#114
#function #توابع
✅ نوشتن توابع :

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

وقتی فهمیدیم میخوایم چکار کنیم شروع به نوشتن تابع میکنیم
@learncpp
#115
#function #توابع
✅ تعریف توابع در ++C

تا الان هر کدی که مینوشتیم داخل main بوده که اگه دقت کنیم main هم یک تابع هست و تنها تابعی که الزاما توی برنامه نیازه و باید وجود داشته باشه همین تابع main هست که به صورت زیر مورد استفاده قرار میگیره :
#include <iostream>

using namespace std;

int main()

{

//orders

return 0;

}

🔹نحوه تعریف توابع در پست بعدی (telegram.me/Learncpp/406)
@learncpp
#116
#function #توابع
✅ نحوه تعریف تابع :
<data type>  name_function(parameters)
{
//order 1 ;
//order 2 ;
// order 3;
// . . .
// orders n ;
return 0; //return 0;
}

🔹نوع بازگشتی (data type):
نوع بازگشتی باید یکی از انواع داده های موجود در ++C باشد(telegram.me/Learncpp/91)

🔹نام تابع (name_function):
نام تابع از قوانین نامگذاری متغییر ها پیروی میکند (telegram.me/Learncpp/107) و از آنجایی که فراخوانی تابع توسط نام تابع انجام میشه پس بهتره اسمی رو برای تابع انتخاب کنیم که با کاری که قرار انجام بده همخوانی داشته باشه مثلا تابعی که قراره چیزی رو چاپ کنه نامشو show یا print بذاریم

🔹پارامتر ها (parameters):
هر تابع ممکنه تعدادی پارامتر داشته باشه که هر پارامتر رو میتونیم توسط کاما(,) از هم جدا کنیم, عملکرد پارامترها به این صورته که مقداری که هنگام فراخوانی بهش داده میشه رو در خودش نگه میداره و پس از یسری تغییرات روی این پارامترها رو برگشت(return) میکنه

🔹در مورد return 0 در پست (telegram.me/Learncpp/144) توضیح داده شده
@Learncpp
#117
#function #توابع
✅ تعریف توابع در ++C

مثال)
void show(parameters)
{
cout«"15 Aug 2016 / 10:29";
}

استفاده از void در تابع بالا به کامپایلر ++C میگه که تابع show خروجی بر نمی گرداند

❌ مواقعی که تابع نیازی به پارامتر نداره کامپایلر استاندارد ++C توصیه کرده از کلمه کلیدی void داخل پارامتر تابع قرار گیرد تا ورودی تابع خوانایی بهتری داشته باشد

❌ توابع که بازگشتی (return) دارند را میتوانیم با دستور cout چاپ کنیم ولی توابعی که نوع بازگشتی آنها void هست قابل چاپ نیست
@Learncpp
#118
#function #توابع
✅ تعریف توابع در ++C

مثال)
#include <iostream>
#include <string>
using namespace std;

void show(string txt)
{
cout<<txt;
}

int main()
{
string label="@Learncpp";
show(label);
return 0;
}

@learncpp
#119
#function #توابع
✅ تعریف توابع در ++C

مثال)
#include <iostream>
Using namespace std;

int print()
{
int temp;
temp = 20;
return temp;
}

void show()
{
cout << "@Learncpp";
}

int main()
{
cout<<print();
cout<<endl;
cout<<show();
return 0;
}

@learncpp
#120

#function #توابع
✅ نحوه استفاده از الگوی توابع در ++C

توجه کنیم هر کدی که مینویسیم باید بالای main باشه و اگه بخوایم تابع را پایین main بنویسیم تابع قادر به شناسایی داخل main نیست , و کامپایلر خطا میده پس چطوری باید تابع را پایین main بنویسیم که با خطایی مواجهه نشیم ؟!! برای اینکار باید نوع تابع , اسم تابع و پارامترهایش را بالای main بنویسیم (اصطلاحا به این روش الگوی تابع گویند) سپس بدنه تابع را پایین main بنوسیم
@Learncpp
#121
#function #توابع
✅ نحوه استفاده از الگوی توابع در ++C
🔹قطعه کدی که نحوه بکارگیری "الگوی توابع" رو نمایش داده
@Learncpp
#122

#function #توابع
✅ نحوه استفاده از الگوی توابع در ++C

مثال )
#include <iostream>
using namespace std;

<data type> name_function (parameters) ;//الگوی تابع
int main()
{
name_function(argument);
return 0;
}

<data type> name_function(parameters)
{
//order 1 ;
//order 2 ;
// . . .
// order n ;
}

@Learncpp
#123
#function #توابع
✅ نحوه استفاده از الگوی توابع در ++C

مثال )
#include <iostream>

#include <string>

using namespace std;


void show(string txt);


int main()

{

String label=”@Learncpp”;

Show(label);

return 0;

}


void show(string txt)

{

cout<<”learning c++ in channel “<<txt;

}

@Learncpp
#124
#function #توابع
✅ توابع چگونه کار می کنند؟

وقتی کامپایلر به تابعی که توی main فراخوانیش کردیم رسید کنترل برنامه به جایی که تابع تعریف شده پرش می کند و پس از اینکه دستورات داخل تابع رو اجرا و به براکت بسته تابع رسید دوباره کامپایلر به صورت اتوماتیک دستورات بعدی بعد از فراخوانی تابع رو اجرا می کند
@Learncpp
#125
#function #توابع
✅ توابع چگونه کار می کنند
🔹نحوه پرش آرگومانها درون پارامترها
@Learncpp
#126
#function #توابع
✅ نحوه پرش آرگومانها درون پارامترها

در تصویر بالا (telegram.me/Learncpp/415) می بینید که مقداری برای دو متغییر num1 و num2 از ورودی گرفته شده سپس این متغییرها را به عنوان آرگومان تابع max_number قرار دادیم و پس از فراخوانی آرگومانها به ترتیب درون پارامترهای تابع قرار میگیرد یعنی متغییر num1 به جای متغییر a و متغییر num2 بجای متغییر b قرار می گیرد سپس بر اساس تعیین بزرگی یا کوچکی مقدار متغییرها , خروجی درون اسم تابع قرار گرفته و برگشت داده میشود سپس چاپ میشود
@Learncpp
#127
#function #توابع
✅ نحوه فراخوانی چندین تابع درون main

اگر چند تابع درون تابع main داشته باشیم فراخوانی هر تابع به همانند تصویر زیر(telegram.me/Learncpp/418) خواهد بود
@Learncpp