آموزش رایگان ++C از صفر
784 subscribers
57 photos
4 videos
3 files
12 links
ترجمه رایگان C++ سایت W3schools.com
کانال پایتون 🐍🐍🐍🐍
@pyfaw3schools
Download Telegram
مثال تابع بازگشتی : جمع اعداد از یک تا یک عدد دلخواه
نوشتن یک تابع که جمع دو عدد دلخواه رو حساب کنه کار بسیار ساده ایه کافیه که یک تابع بنویسیم که دو تا عدد رو به عنوان پارامتر بگیره و حاصل جمع رو در قسمت return برگردونه


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

در پست بعدی نشون میدیم که بازگشت در این مثال چطور اجرا می شود؟

#برنامه_نویسی
4👍2
آموزش شی گرایی
c++
یک زبان برنامه نویسی شی گراست. همه چیز در ++C با اشیا و کلاس در ارتباط است. مثلا در زندگی واقعی یک ماشین یک شیء است. ماشین ویژگی‌هایی یا attribute هایی مانند وزن و رنگ دارد و متدهایی مانند رانندگی و ترمز دارد

ویژگی‌ها و متدها در واقع متغیرها و توابعی هستند که به کلاس تعلق دارند. این موارد اغلب به عنوان "اعضای کلاس" (Class Members) نامیده می‌شوند.

یک کلاس نوع داده‌ای است که توسط کاربر تعریف می‌شود و می‌توانیم از آن در برنامه خود استفاده کنیم. کلاس به عنوان یک سازنده شیء یا یک "نقشه" برای ایجاد اشیاء عمل می‌کند


توضیح کد :
🏅 کلیدواژه class برای ایجاد کلاسی به نام MyClass استفاده می‌شود.

🏅کلیدواژه public یک مشخص‌کننده دسترسی است که تعیین می‌کند اعضای (ویژگی‌ها و متدهای) کلاس از خارج از کلاس قابل دسترسی هستند. در ادامه بیشتر با مشخص‌کننده‌های دسترسی آشنا خواهید شد.

🏅داخل کلاس، یک متغیر صحیح به نام myNum و یک متغیر رشته‌ای به نام myString وجود دارد. وقتی متغیرها درون یک کلاس تعریف می‌شوند، به آن‌ها ویژگی‌ها گفته می‌شود.

در نهایت، تعریف کلاس با یک سمی‌کالن ; به پایان می‌رسد.
6
در ++C، یک شیء از یک کلاس ایجاد می‌شود. ما قبلاً کلاسی به نام MyClass ایجاد کرده‌ایم، بنابراین اکنون می‌توانیم از این کلاس برای ایجاد اشیاء استفاده کنیم.

🔔 برای ایجاد یک شیء از کلاس MyClass، نام کلاس را مشخص کرده و سپس نام شیء را بنویسید.

🔔 برای دسترسی به ویژگی‌های کلاس (myNum و myString)، از نقطه‌ (.) بعد از نام شیء مورد نظر استفاده کنید.


#برنامه_نویسی
5
متدها توابعی هستند که به کلاس تعلق دارند.📚

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

🎯🎯 داخل تعریف کلاس
🎯🎯خارج از تعریف کلاس

در این مثال ، ما یک تابع را در داخل کلاس تعریف می‌کنیم و نام آن را "myMethod" می‌گذاریم.

نکته: برای دسترسی به متدها، همان‌طور که به ویژگی‌ها دسترسی پیدا می‌کنید، عمل کنید؛ یعنی با ایجاد یک شیء از کلاس و استفاده از نقطه (.).

#سی_پلاس_پلاس
#برنامه_نویسی
3
تعریف متد خارج از کلاس

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

class MyClass {        // کلاس
public: // مشخص کننده دسترسی
void myMethod(); // اعلام تابع
};

// تعریف تابع خارج از کلاس
void MyClass::myMethod() {
cout << "Hello World!";
}

int main() {
MyClass myObj; // ایجاد یک شیء از کلاس MyClass
myObj.myMethod(); // فراخوانی تابع
return 0;
}
5👍1
توابع سازنده در کلاس ها
توابع سازنده نوعی متد کلاس هستند که زمانی که یک شی از کلاس ایجاد شد، به طور خودکار فراخوانی می شوند.

برای ایجاد تابع سازنده کافی است فقط نام کلاس را به همراه پرانتز استفاده کنید:

#include <iostream>
using namespace std;

class MyClass {
public:
MyClass() {
cout << "Hello World!";
}
};

int main() {
MyClass myObj;
return 0;
}

در مثال بالا ما یک تابع سازنده تعریف کردیم که مقدار
"Hello World"
را در خروجی نمایش می دهد. وقتی شی myObjectآیجاد شد مقدار بالا در خروجی نمایش داده می شود


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

https://www.w3schools.com/cpp/trycpp.asp?filename=demo_constructor
8
3 نکته مهم در ارتباط با سازنده ها:

🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟

نام یکسان با کلاس دارند
نحوه دسترسی همیشه public است
مقداری را برنمیگردانند یعنی return ندارند
7
مشخص‌کننده‌های دسترسی(Access specifiers) تعیین می‌کنند که اعضای یک کلاس (ویژگی‌ها و متدها) چگونه قابل دسترسی باشند. در مثال های قبل ، اعضا به صورت عمومی (public) تعریف شده‌اند که به این معنی است که می‌توانند از خارج کلاس دسترسی پیدا کرده و تغییر داده شوند.

اما اگر بخواهیم اعضا خصوصی (private) باشند و از دنیای بیرون مخفی بمانند چه؟

در زبان C++، سه مشخص‌کننده دسترسی وجود دارد:
1⃣🥇عمومی(public) : اعضا از خارج کلاس قابل دسترسی هستند.

2⃣🥈خصوصی (private) : اعضا از خارج کلاس قابل دسترسی نیستند (و یا نمی‌توان آنها را مشاهده کرد).

3⃣🥉حفاظت شده(protected): اعضا فقط از طریق کلاس های فرزند(inherited)
قابل دسترسی هستند در آینده راجع به وراثت پست خواهیم گذاشت
مثال زیر تفاوت public و private را نشان می دهد:
#include <iostream>
using namespace std;

class MyClass {
public:
int publicNum; // public member
private:
int privateNum; // private member
};

int main() {
MyClass myObj;
myObj.publicNum = 10; // قابل دسترسی از خارج کلاس
// myObj.privateNum = 20; // خطا: نمی‌توان به عضو خصوصی دسترسی پیدا کرد
cout << "Public number: " << myObj.publicNum << endl;
return 0;
}

در این مثال، publicNum از خارج کلاس قابل دسترسی است، اما تلاش برای دسترسی به privateNum باعث ایجاد خطا خواهد شد.
1
نکته ⭐️⭐️⭐️⭐️

به صورت پیش‌فرض، اگر مشخص‌کننده دسترسی را تعیین نکنید، تمام اعضای کلاس خصوصی (private) خواهند بود.

مانند مثال زیر که هم x و هم y خصوصی یا private هستند :

class MyClass {
int x; // Private
int y; // Private
};
1
کپسوله‌سازی یا Encapsulation یعنی مخفی کردن داده‌های "حساس" از کاربران. برای این کار، باید متغیرهای کلاس را خصوصی (private) تعریف کنید تا از بیرون کلاس به آنها دسترسی نباشد. اگر می‌خواهید دیگران بتوانند مقدار یک متغیر خصوصی را ببینند یا تغییر دهند، می‌توانید متدهای عمومی برای خواندن و تنظیم آن بسازید.
3
برای دسترسی به یک عضو خصوصی از متدهای get و set مانند مثال زیر استفاده نمایید :

#include <iostream>
using namespace std;

class Employee {
private:
int salary;

public:
void setSalary(int s) {
salary = s;
}
int getSalary() {
return salary;
}
};

int main() {
Employee myObj;
myObj.setSalary(50000);
cout << myObj.getSalary();
return 0;
}

در مثال بالا ویژگی salary خصوصی می باشد که دسترسی به آن محدود است.

متد setSalary پارامتر s را دریافت کرده و به مقدار salary اختصاص می دهند.

متد getSalary مقدار مشخصه salary را بر میگرداند.

داخل تابع ()main یک شی از کلاس Employee ایجاد کردیم، با استفاده از متد setSalary مقدار salary که خصوصی است را به 5000 تغییر دادیم.
سپس از متد getSalary در cout استفاده کردیم تا مقدار آن در خروجی مشاهده کنیم
#برنامه_نویسی
#سی_پلاس_پلاس
👍6
چرا Encapsulation مهم است؟
16
آموزش رایگان ++C از صفر
چرا Encapsulation مهم است؟
دوستان عزیزم این پستو بی زحمت به ده تا قلب برسونید میخوام مباحث وراثت هم تقدیم نگاهتون کنم🌷🌷🌷
4
آموزش وراثت (Inheritence)

در ++C ، می‌توان ویژگی‌ها و متدها را از یک کلاس به کلاس دیگر به ارث برد. مفهوم "ارث‌بری" به دو دسته تقسیم می‌شود:

🏅 کلاس مشتق‌شده (فرزند) 👶- کلاسی که از کلاس دیگری ارث می‌برد.

🏅 کلاس پایه (والد)👨‍👩‍👦 - کلاسی که از آن ارث‌بری می‌شود.

برای ارث‌بری از یک کلاس، از نماد : استفاده کنید.

در مثال زیر، کلاس Car (فرزند) ویژگی‌ها و متدهای کلاس Vehicle (والد) را به ارث می‌برد:

#include <iostream>
#include <string>
using namespace std;

// Base class
class Vehicle {
public:
string brand = "Ford";
void honk() {
cout << "Tuut, tuut! \n" ;
}
};

// Derived class
class Car: public Vehicle {
public:
string model = "Mustang";
};

int main() {
Car myCar;
myCar.honk();
cout << myCar.brand + " " + myCar.model;
return 0;
}
9
پولی مورفیسم (Polymorphism) به معنای "چند شکل" است و زمانی رخ می‌دهد که چند کلاس با استفاده از وراثت با هم ارتباط والد فرزندی دارند.

همان‌طور که در پست های قبل گفتیم؛ وراثت به ما امکان می‌دهد که ویژگی‌ها و متدها را از یک کلاس دیگر به ارث ببریم.

پولی مورفیسم از این متدها استفاده می‌کند تا کارهای مختلفی انجام دهد. این ویژگی به ما اجازه می‌دهد تا یک کار را به روش‌های مختلف انجام دهیم.

برای مثال، یک کلاس پایه به نام Animal را در نظر بگیرید که متدی به نام animalSound() دارد. کلاس‌های مشتق‌شده مثل Pig، Cat، Dog و Bird می‌توانند نسخه‌های مخصوص خود از این متد را داشته باشند (مثل اینکه صدای خوک خرخر هست و گربه میومیو و غیره):

//کلاس والد
class Animal {
public:
void animalSound() {
cout << "The animal makes a sound \n";
}
};

// کلاس فرزند1
class Pig : public Animal {
public:
void animalSound() {
cout << "The pig says: wee wee \n";
}
};

// کلاس فرزند2
class Dog : public Animal {
public:
void animalSound() {
cout << "The dog says: bow wow \n";
}
};
7
🌟🌟🌟🌟🌟کاربرد اصلی وراثت و پولی مورفیسم :

🎯استفاده مجدد از کد: با وراثت می‌توانید هنگام ایجاد یک کلاس جدید، ویژگی‌ها و متدهای یک کلاس موجود را دوباره استفاده کنید.

🎯انعطاف‌پذیری در اجرا: با پولی مورفیسم، می‌توان یک متد را به روش‌های مختلف نوشت(یک عمل را به روش های مختلف نوشت) که به برنامه‌نویسی شی‌گرا امکان می‌دهد تا کد تمیزتر و منسجم‌تری داشته باشید.
4😍1
کار کردن با فایل ها در ++C
برای نوشتن یا خواندن فایل ها نظیر فایل های متنی (با پسوند txt.) باید از کتابخانه fstream استفاده نمایید.

داخل این کتابخانه ۳ تا کلاس وجود دارد که در تصویر نام هرکدوم از کلاس ها بهمراه کاربردشان نوشته شده است

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

#سی_پلاس_پلاس
3👍1
برای ساخت یک فایل جدید از کلاس ofstream یا fstream استفاده نمایید.

ابتدا باید یک شی از نوع ofstream ایجاد کنیم که در اینجا نام شی MyFIle می باشد و پارامتر این شی نام فایل و فرمت آن است که filename.txt گذاشتیم :

 ofstream MyFile("filename.txt");

برای نوشتن متن داخل این فایل از >> که بعد از نام شی می آید استفاده کرده و متن مورد نظر را تایپ نمایید :

  MyFile << "salam!man matn hastam";


وقتی که متون موردنظر را نوشتید باید متد ()close را فرابخوانید تا فایل بسته شود
هدف بستن فایل پاک کردن فضای اشغال شده در مموری برای نوشتن فایل می باشد که بهتر است بعد از هر عملیات روی فایل این کاررا انجام دهید.

کد کامل
#include <iostream>
#include <fstream>
using namespace std;

int main() {
// Create and open a text file
ofstream MyFile("filename.txt");

// Write to the file
MyFile << "salam!man matn hastam ";

// Close the file
MyFile.close();
}
4
خوندن فایل در ++C
برای خواندن فایل از کلاس ifstream یا fstream در کتابخانه fstream استفاده نمایید.

برای این منظور ابتدا یک شی ifstream ایجاد کرده و در پارامتر این شی نام فایلی که میخواهید بخوانید را بنویسید(در این مثال نام فایل myReadfile )

// ایجاد متغیر رشته myText برای خواندن متون فایل
string myText;

//ایجاد شی برای خواندن فایل
ifstream MyReadFile("filename.txt");


سپس از حلقه whie بهمراه تابع ()getline استفاده کرده تا متون فایل را خط به خط بخوانید پارامتر اول متغیر فایلی که در بالا ایجاد کرده اید و پارامتر دوم متغیر رشته ای که میخواهید متون فایل خط به خط در آن ذخیره شده و خوانده شود:

while (getline (MyReadFile, myText)) {
// Output the text from the file
cout << myText;
}


کد کامل :

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {

ofstream MyWriteFile("filename.txt");


MyWriteFile << "Files can be tricky, but it is fun enough!";


MyWriteFile.close();


string myText;


ifstream MyReadFile("filename.txt");


while (getline (MyReadFile, myText)) {

cout << myText;
}


MyReadFile.close();
}
👍31
آموزش Reference در ++C


یک متغیر Reference به متغیر دیگری ارجاع می‌دهد و با عملگر & ساخته می‌شود:

string food = "Pizza";  
string &meal = food;


در مثال بالا ما یک متغیر ارجاع به نام meal درست کردیم که به متغیر رشته food ارجاع می دهد.


در هر دو حالت می‌توانیم از نام متغیر food یا نام ارجاع meal استفاده کنیم تا به متغیر food دسترسی پیدا کنیم:
string food = "Pizza";
string &meal = food;

cout << food << "\n";
cout << meal << "\n";


در مثال بالا خروجی هر ۲ متغیر pizza هست
4🔥1
آدرس حافظه در++C


همانطور که در پست قبلی مشاهده فرمودید،
از عملگر & برای ایجاد یک متغیر reference استفاده کردیم.

اما این عملگر همچنین می‌تواند برای دریافت آدرس متغیر در حافظه یا مموری کامپیوتر استفاده شود؛

وقتی در ++C یک متغیر ایجاد می‌شود، یک آدرس حافظه به آن اختصاص می‌یابد. و زمانی که به متغیر مقداری می‌دهیم، آن مقدار در این آدرس حافظه ذخیره می‌شود.

برای دسترسی به آدرس حافظه، از عملگر & استفاده کنید و نتیجه نشان می‌دهد که متغیر کجا ذخیره شده است:

string food = "Pizza";

cout << &food;


در مثال بالا خروجی متغیر یک آدرس حافظه را نشان می دهد که به فرمت مشابه
0x6dfed4
می باشد

#سی_پلاس_پلاس
#برنامه_نویسی
👍41🔥1