Learning ©➕➕
4.52K subscribers
81 photos
2 videos
38 files
182 links
ک
Download Telegram
#107
جواب تمرین #106
#include<iostream>

using namespace std;

int main()

{

unsigned int arr[30], j=0;

char txt[30];

cin>>txt;

for(unsigned int i=0;i<strlen(txt);i++)

{

if( txt[i] == '(' )

{

j++;

arr[j]=1;

}

if( txt[i] == ')' )

{

j--;

arr[j]=0;

}

}

if(arr[0] == NULL)

{

cout<<"Correct"<<endl;

}

else

cout<<"Wrong";

return 0;

}

@Learncpp
#Cpp #C #Cplusplus #startcpp
#کتاب #آموزش #سی #شروع_سی

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

فیلم ها فارسی:
فیلم های آقای بازرگان
فیلم های آقای جعفری نژاد
فیلم های آقای بازرگان
فیلم های آقای پرویزی

سایت های فارسی:
http://www.bekaran.com/tutorials/cpp/intro.aspx

کتب غیر فارسی :
c++ prime
Bjarne Stroustrup
Herb Schildt's
Ivor Horon's
Malik
Nicolai M. Josutties

سایت های غیر فارسی:
www.tutorialspoint.com/cplusplus/index.htm
www.tutorialspoint.com/cprogramming/index.htm


کلاس های حضوری:
لایتک دانشگاه صنعتی شریف(تهران)

توجه:تمام ide های سی پلاس پلاس توانایی کامپایل کد های سی رو دارن
محیط های توسعه
( IDE ) :
🔹Code::Blocks
🔺telegram.me/Learncpp/49
🔹Qt creator
🔺telegram.me/Learncpp/55
🔹falcon c++
🔹Clion
🔹Visual Studio
🔺telegram.me/Learncpp/45
🔹eclipse
🔹Dev c++
🔺telegram.me/Learncpp/53
🔹code lite
🔺telegram.me/Learncpp/52
🔹ultimate ++
🔹Borland c++
🔺telegram.me/Learncpp/44
🔹Turbo c++
🔺telegram.me/Learncpp/42
🔹Kdevelop
🔺telegram.me/Learncpp/50

کامپایلر ها:
نکته اکثر
IDE
های معرفی شده در بالا کامپایلر به همراه خود دارند و این لیست برای آشنایی با برنامه های کامپایلر تهیه شده
چنانچه تازه کار هستید بهتر است از محیط توسعه(IDE) استفاده کنید

Code::Blocks
Visual cpp
Borland

کامپایلر های آنلاین:
ideone.com
rextester.com
cpp.sh

سایت های مفید:

cplusplus.com
en.cppreference.com
stackoverflow.com
quera.ir
maktabkoone.org
stroustrup.com
codeproject.com
open-std.org
freebyte.com/programming/cpp


🔹دانلود Visual Studio
visualstudio.com/downloads/download-visual-studio-vs

🔹دانلود Code::Blocks
codeblocks.org/downloads

🔹دانلود Borland ++C
edn.embarcadero.com/article/20633

🔹دانلود Dev ++C
sourceforge.net/projects/orwelldevcpp/

🔹دانلود Qt
download.qt.io/official_releases/qt

🔹دانلود Turbo ++C
turboc.codeplex.com/


🔹سی پلاس پلاس چیست؟
نوعی زبان برنامه نویسی که برای انسان قابل فهم بوده ولی برای کامپیوتر غیر قابل فهم است و کامپیوتر نمیواند از آن استفاده کند. در اصل سی پلاس پلاس نوعی واسطه بین شما و کامپیوتر است. کد های نوشته شده به زبان سی پلاس پلاس توسط نرم افزاری که آن را "کامپایلر(Compiler)" می نامند آن را به کد های قابل فهم برای کامپیوتر تبدیل میکند

🔹چرا سی پلاس پلاس ؟ آیا سی پلاس پلاس بهترین است؟
هیچوقت دنبال چیزی به نام بهترین نباشید.اگر از یک برنامه نویس سی پلاس پلاس بپرسید بهترین کدام است می گوید سی پلاس پلاس

اگر از برنامه نویس جاوا بپرسید می گوید جاوا
اگر از برنامه نویس سی شارپ بپرسید می گوید سی شارپ و ...

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


🔹آیا با یاد گیری سی ، سی پلاس پلاس را هم یاد خواهم گرفت؟
شما تنها قسمتی از قابلیت های سی پلاس پلاس را فراخواهید گرفت

آیا با یاد گیری سی پلاس پلاس ،سی را هم یاد خواهم گرفت؟بله ، سی پلاس پلاس نسخه ی پیشرفته تر سی میباشد

🔸telegram.me/joinchat/ChZ37DybSHKOo67vuleOdw

🔸@Learncpp
#108
#cmd #system
✅ جهت استفاده از دستورات cmd و اجرای آن توسط کد های ++C میتوانید از روش زیر استفاده کنید :
system("instruction");
به جای کلمه instruction ، دستور مورد نظرتان در cmd را بنویسید.
مثال )
#include<iostream> 

#include<cstdlib>

using namespace std;

int main ()

{

system ("ping google.com");

system("pause");

}

🔹با استفاده از کد زیر تعداد فرمان هایی که درون system قابل استفاده هست نمایش داده میشود .
system("help");
🔻تذکر : تابع system در محیط Visual Studio قابل استفاده هست .
@Learncpp
#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