C++ یک زبان برنامهنویسی عمومی از خانواده زبان C محسوب میشود که برای کدنویسی و ایجاد نرمافزارها مورد استفاده قرار میگیرد. این زبان در حدود ۴ دهه پیش توسط آقای «بیارنه استراس تروپ» بهصورت شیگرا و در راستای بهبود و افزودن ویژگیهایی به زبان C ایجاد شد. سیپلاسپلاس را نه تنها برای برنامهنویسی انواع اپلیکیشنها بلکه برای آموزش برنامهنویسی شیگرا به افراد مبتدی نیز به کار میبرند. در این مطلب از مجله فرادرس، به زبانی ساده و تا حد ممکن به طور کامل به شما میگوییم که زبان برنامه نویسی ++C چیست و چه خصوصیاتی دارد. همچنین، موارد استفاده، مزایا و معایب این زبان قدرتمند را نیز با هم بررسی میکنیم.
زبان C++، خصوصیات برنامهنویسی شیگرا نظیر Class-ها را به زبان C اضافه میکند به همین دلیل به آن «سی با کلاس» نیز گفته میشود. البته هنوز هم میتوانیم از دیگر روشهای برنامهنویسی نظیر برنامهنویسی «رویهای» (Procedural) و «تابعی» (Functional) نیز در کنار برنامهنویسی شیگرا برای نوشتن برنامههای خود در این زبان استفاده کنیم. بهعنوان یک برنامهنویس نرمافزار میتوانیم، انواع گوناگونی از برنامههای کاربردی، نرمافزارهای سیستمی، رابطهای کاربری و بازیها را بهکمک این زبان بنویسیم. زیرا سیپلاسپلاس در این مورد بسیار انعطافپذیر است.
زبان برنامه نویسی ++C چیست؟
زبان برنامه نویسی ++C یکی از پرکاربردترین زبانهای برنامهنویسی چندمنظوره در دنیا است که پیدایش آن به سال ۱۹۸۵ میلادی بر میگردد. بهدلیل چندمنظوره بودن این زبان، میتوان از آن برای توسعه انواع گوناگونی از نرمافزارها استفاده کرد. C++ توسط آقای «Bjarne Stroustrup» و با این هدف طراحی شده تا برنامهنویس، کنترل بیشتری روی حافظه و دیگر منابع سیستم داشته باشد و آنها را بهتر مدیریت کند.
++C که بهصورت CPP نیز نوشته میشود، جزو بهترین زبانهای برنامهنویسی دنیا بهشمار میرود و همچنین یک «زبان برنامهنویسی شیگرا» (Object-Oriented Language) محسوب میشود. به زبان سادهتر، بهجای استفاده از توابع و ساختارهای اینچنینی، از فیلدهای دادهای که خصوصیاتی منحصر به فرد دارند یا همان «اشیا | Objects» استفاده میکند. برای درک بهتر، آخرین حساب کاربری که در یک وبسایت ساختهاید را بهیاد بیاورید، این حساب کاربری را میتوان مثال خوبی از یک شی در نظر گرفت. به این دلیل که، یک حساب کاربری میتواند دادههای مرتبط و بههم نزدیکی مانند «نام»، «نام خانوادگی» و «آدرس ایمیل» را داشته باشد. اکنون، اگر این اطلاعات را در قالب یک شی بستهبندی کنیم، فرایند ایجاد یک حساب جدید سادهتر میشود.
شما میتوانید با استفاده از زبان برنامهنویسی C++ برنامههایی بنویسید که قابلیت اجرا روی سیستمعاملها یا پلتفرمهای گوناگون را داشته باشند. این قابلیت حمل در C++ آن را به زبان ارزشمندی تبدیل میکند. گفتیم که C++ یک زبان سطح بالا است اما با این حال بهخاطر رابطه نزدیک آن با زبان ماشین میتوان آن را برای برنامههای سطح پایین هم استفاده کرد و بهطور کلی رابطه نزدیکی با زبان ماشین دارد.
دلیل آنکه C++ را یک زبان سطح میانی میگویند این است که میتوان بهکمک آن برنامههای سطح پایین مانند درایورها و هسته سیستمعاملها را نیز توسعه داد و از طرف دیگر، برای ساخت برنامههای سطح بالا، بازیهای کامپیوتری، برنامههای کاربردی و غیره نیز قابل استفاده است.
تاریخچه زبان برنامه نویسی ++C چیست؟
هدف از کار روی توسعه زبان سیپلاسپلاس این بود که ویژگیهای برتر چندین زبان برنامهنویسی مختلف به زبان C اضافه شده و آن را به اصطلاح گسترش و بهبود دهد. بههمین دلیل در اوایل دهه ۸۰ میلادی خصوصیاتی نظیر سرعت زبان برنامهنویسی «بی سی پی ال» (Basic Combined Programming Language | BCPL)، ویژگی «سطح بالا» بودن از «سیمولا» (Simula) و عمومیت زبان برنامهنویسی C مورد توجه قرار گرفت و زبان C++ با هدف تلفیق این نقاط قوت توسط آقای «Stroustrup» در آزمایشگاههای بِل توسعه داده شد. البته خوب است بدانید که زبانهای دیگری هم در رابطه مدنظر قرار گرفتند که Ada ،Meta Language و ALGOL 68 جزوی از این زبانها بودند. در نهایت زبان همهمنظورهای ساخته شد که میتوانست برنامههای زبان C را بههمان شکلی که هستند کامپایل کند.
آیا یادگیری زبان برنامه نویسی ++C سخت است؟
افرادی که میخواهند مهارت برنامهنویسی به زبان C++ را کسب کنند میبایست آمادگی رو به رو شدن با سینتکس و کدهای پیچیدهتر C++ نسبت به زبانهای آسانتر همچون پایتون را داشته باشند. اگر پیش از این با زبانهایی مانند سی یا جاوا برنامهنویسی کرده باشید، به احتمال قوی، روند یادگیری C++ برای شما آسانتر میشود. همچنین باید بگوییم کسانی که مهارت کدنویسی با C++ را دارند خیلی راحتتر میتوانند دیگر زبانهای برنامهنویسی را بیاموزند. یعنی آموختن سیپلاسپلاس به عنوان اولین زبان، پایه شما را برای یادگیری سایر زبانها تقویت میکند. بههمین دلیل، C++ جزو نخستین زبانهایی است در دانشگاهها به دانشجویان آموزش داده میشود.
نحوه یادگیری زبان برنامه نویسی ++C چیست؟
برای شروع یادگیری زبان برنامهنویسی C++ بهطور معمول مفاهیمی مانند دریافت دادهها از کاربر و دستورات ورودی و خروجی، ذخیره دادهها، تکرار برخی عملیات بهوسیله حلقهها و غیره را یاد میگیرید. در ادامه، برخی از مهمترین مفاهیم مورد نیاز برای افراد مبتدی در C++ که میبایست یاد بگیرند را آوردهایم.
- عبارات شرطی جز مفاهیم پر استفاده در کدنویسی هستند و به زبان ساده، به ما کمک میکنند تا نحوه کار برنامه در شرایط خاص را تعیین کنیم. بهعنوان مثال فرض کنید قرار است برنامهای بنویسیم که نمره درس ریاضی کاربر را دریافت کرده و اگر نمره وارد شده بالای ۱۲ باشد برای کاربر چاپ کند که «شما این درس را با موفقیت پاس کردهاید». اینکار با یک دستور شرطی ساده قابل انجام است و مواردی نظیر «دستور if
»، «دستور if else
» و «دستور switch case
» برای این منظور استفاده میشوند که به کامپیوتر میگویند تا در شرایط معین چه کاری را باید انجام دهند.
- یادگیری کلمات کلیدی و نحوه کدنویسی با دستورات، علائم و بهطور کلی سینتکس C++ نیز جزو مواردی است که هنگام شروع یادگیری با آنها آشنا میشوید.
- همچنین میبایست نحوه کامپایل و Link کردن فایل C++ را یاد بگیرید تا از این طریق، برنامه خود را اجرا کنید.
البته نگران نباشید، با تهیه یک منبع آموزشی مناسب، میتوانید مفاهیم مختلف C++ و مهارت برنامهنویسی در این زبان را بیاموزید.
یادگیری زبان برنامه نویسی ++C چقدر طول می کشد؟
در پاسخ به این پرسش که برای یادگیری زبان برنامه نویسی ++C چه مدتزمانی نیاز دارید، باید بگوییم که نمیتوان مقدار دقیقی تعیین کرد. به این دلیل که عوامل گوناگونی در روند یادگیری مهارت C++ توسط شما، مؤثر خواهند بود. بهطور مثال، میزان آشنایی و تجربه شما با زبانهای برنامهنویسی، فیلم آموزشی یا دیگر منابعی که برای یادگیری انتخاب کردهاید و مدتزمانی که بهطور منظم برای یادگیری و تمرین اختصاص میدهید جزو عواملی هستند که به بر مبنای آن میتوان مدتزمان لازم برای یادگیری و تسلط در زبان برنامه نویسی ++C را تخمین زد.
اگر فردی مبتدی هستید احتمالاً میبایست در حدود ۲ یا ۳ ماه برای یادگیری مبانی و ۶ تا ۱۲ ماه برای آموختن حل مسائل پیچیده برنامهنویسی وقت بگذارید. همچین میتوانید با بررسی سرفصلهای دورههای آموزشی مختلف برای مبتدیان و همچنین برنامهریزی برای وقت آزاد خود، مدتزمان لازم برای یادگیری زبان برنامه نویسی ++C را تخمین بزنید.
توکن ها و کلمات کلیدی در زبان برنامه نویسی ++C چیست؟
ما میتوانیم بهکمک زبان برنامه نویسی ++C و قابلیتهایی که فراهم کرده برنامههای ساختارمند بنویسیم. در ادامه این قسمت به توضیح توکنها و کلمات کلیدی در C++ پرداختهایم.
توکن در زبان برنامه نویسی ++C چیست؟
هنگامیکه کامپایلر C++، سورسکدهای ما را برای تبدیل آنها به زبان ماشین میخواند، کلمات یا گروه کاراکترهایی که با فاصله هم از جدا شدهاند را یک توکن در نظر میگیرد. توکنها کوچکترین واحد در کدهای نوشته شده تلقی میشوند و ترکیب آنها برنامه ما را تشکیل میدهند. در ادامه، برخی از انواع توکنها را نام بردهایم.
- کلمات کلیدی
- شناسهها
- ثابتها
- رشتهها
- عملگرها
کلمات کلیدی زبان برنامه نویسی ++C چیست؟
کلمات کلیدی در زبانهای برنامهنویسی در واقع، کلماتی هستند که برای کامپایلر آن زبان معنای خاصی دارند و برای اهداف خاصی استفاده میشوند. این کلمات در زبان C++ با حروف کوچک نوشته میشوند و با توجه به حساس بودن این زبان به حروف بزرگ و کوچک، در صورت رعایت نکردن این مورد، ممکن است با خطا رو به رو شویم.
همچنین میتوان گفت که کلمات کلیدی C++ برای این زبان رزور شدهاند و نمیتوانیم این واژهها را برای شناسههای مختلف مانند نام متغیر و غیره استفاده کنیم. در ادامه، برخی از رایجترین کلمات کلیدی سیپلاسپلاس را توضیح دادهایم.
برخی از این کلمات کلیدی برای تعیین نوع داده بهکار میروند. مانند آنچه که در ادامه آوردهایم.
- int: نوع داده برای تعریف عدد صحیح.
- char: نوع داده برای تعریف کاراکتر.
- double: نوع داده برای تعریف عدد اعشاری.
بعضی از کلمات کلیدی برای تعیین نوع دسترسی بهکار میروند و به زبان ساده، مشخص میکنند که به ویژگیها و متدهای یک کلاس گونه می توان دسترسی پیدا کرد. در ادامه، این موارد را بیان کردهایم.
- public: اعضای کلاسهایی که با این کلمه کلیدی تعریف میشوند از بیرون نیز قابل دسترسی هستند.
- private: اگر از این کلمه کلیدی استفاده کنیم دیگر نمیتوانیم به اعضای یک کلاس، از بیرون آن دسترسی داشته باشیم.
- protected: اعضای این نوع کلاسها نیز خصوصی هستند اما در کلاسهای مشتق شده از آن قابل دسترسی اند.
برخی دیگر از کلمات کلیدی را در ادامه آوردهایم.
- friend: این کلمه کلیدی برای تعریف یک کلاس دوست بهکار میرود. این کلاس میتواند به اعضای protected
و private
کلاسهای دیگری که در آنها بهعنوان دوست تعریف شده است، دسترسی داشته باشد.
- const: برای تعریف اشیایی استفاده میشود که مقدار آنها در طول اجرای برنامه تغییر نمیکند.
- for: شروع دستور حلقه for را نشان میدهد.
- continue: ادامه اجرای برنامه را به ابتدای یک حلقه منتقل میکند.
- new: از این عملگر برای تخصیص حافظه پویا استفاده میشود.
- delete: حافظه پویای اختصاص داده شده را با این عملگر آزاد میکنیم.
- while: در شروع یک حلقه while و همچنین پایان عبارت do-while بهکار میرود.
- break: با این کلمه کلیدی، حلقه یادستور Switch را خاتمه میدهیم.
- goto: با این کلمه کلیدی، ادامه اجرا به برچسب یا «لِیبل» مشخص شده منتقل میشود.
- return: برای بازگرداندن یک شی به فراخوانی کننده یک تابع از این کلمه کلیدی استفاده میشود.
- sizeof: این کلمه کلیدی اندازه یک شی را بر حسب بایت بر میگرداند.
جدول آورده شده در ادامه، عناوین کلمات کلیدی C++ را نشان میدهد.
asm | double | new | switch |
auto | else | operator | template |
break | enum | private | this |
case | extern | protected | throw |
catch | float | public | try |
char | for | register | typedef |
class | friend | return | union |
const | goto | short | unsigned |
continue | if | signed | virtual |
default | inline | sizeof | void |
delete | int | static | volatile |
do | long | struct | while |
ابزار های زبان برنامه نویسی ++C چیست؟
با استفاده از ابزارها و فریمورکهای متعددی که برای زبان برنامه نویسی ++C موجود است میتوانید بهرهوری خود را در ایجاد اپلیکیشنهای گوناگون با این زبان افزایش دهید. این ابزارها میتوانند در موارد گوناگونی مانند دیباگ برنامهها، تست نرمافزار، سازماندهی کدها و غیره به شما کمک کنند. برخی از این ابزارها را به منظور آشنایی شما، در ادامه معرفی کردهایم.
- محیطهای توسعه یکپارچه یا IDE: همانطور که پیشتر نیز گفته شد، این دسته از نرمافزارها محیطی را برای کدنوسی و ادیت کدها برای شما فراهم میکنند. همچنین دارای قابلیت دیباگ و غیره نیز هستند. IDE-های مختلفی برای C++ دارد که برخی از آنها را در ادامع معرفی کردهایم.
- مایکروسافت ویژوال استودیو: این نرمافزار، ابزارهای متعددی را برای دیباگ و مدیریت پروژه شما در اختیارتان قرار میدهد.
- JetBrains CLion: یک IDE چندپلتفرمی است که در رابطه با بهبود کدها و ساختار آن، امکانات ارزشمندی را فراهم کرده است.
- Eclipse CDT: این IDE نیز علاوه بر اینکه اپن سورس است، مانند خیلی از IDE-های دیگر، ابزارهای مدیریت پروژه و همچنین بررسی و پیمایش کد را ارائه میدهد.
- Build system-ها: این ابزارها، کدهایی که نوشتهاید را به زبانی که توسط کامپیوترها قابل درک و اجرا باشد تبدیل میکنند. از CMake و GNU Make میتوان بهعنوان اپلیکیشنهای اپن سورس در این زمینه نام برد.
- فریمورکهای تست یا آزمایش: بهکمک این فریمورکها میتوانیم عملکرد مناسب برنامه خود را تست و بررسی کنیم. در ادامه، برخی نمونههای آن را آوردهایم.
- Google Test: فریمورکی برای تست و آزمایش نرمافزار است که ابزارهای مفید و ماکروهای Assertion را فراهم میکند.
- Catch2: این فریمورک، امکان تعریف Test Case-ها، Assertion-ها و Test Fixture-ها را در اختیار برنامهنویس قرار میدهد.
- Boost.Test: این ابزار بخشی از کتابخانههای Boost C++ محسوب میشود که Assertion-ها مختلفی را برای تست فراهم میکند.
- ابزارهای پروفایل: با استفاده از ابزارهای Profiling میتوانید عملکرد برنامههای خود را به لحاظ پیچیدگی زمانی و فضایی بررسی کنید. بهطور مثال، ابزار اپن سورس Valgrind یکی از همین موارد است که در این زمینه میتوانید از آن استفاده کنید.
- ابزارهای مستندسازی: با توجه به اهمیت مستندسازی در درک عملکرد و هدف برنامهها برای برنامهنویسان، میتوان با استفاده از این ابزارها، روند مستندسازی را آسان کرد. Doxygen یکی از همین ابزارها است که با استفاده از کامنتهای موجود در سورس کد، مستنداتی را در قالبهای PDF، HTML و غیره تولید میکند.
- مدیر بسته: با استفاده از Package Manager-ها میتوان کتابخانهها و وابستگیهای یک پروژه را مدیریت کرد که امکاناتی مانند جستجوی بستهها را برای برنامهنویسان فراهم میکند. با استفاده از این ابزارها امکان نصب، بهروزرسانی و حذف بسته نیز وجود دارد. از برنامههای مدیر بسته میتوان به JFrog’s Conan و vcpkg اشاره کرد.
یادگیری زبان برنامه نویسی C++ با فرادرس چگونه است؟
زبان برنامهنویسی سیپلاسپلاس بهطور معمول یکی از زبانهایی است که با یادگیری آن میتوانید نحوه کار کامپیوتر را نیز درک کنید. ممکن است هنگام یادگیری این زبان با چالشهای مختلفی رو به رو شوید اما با اینحال، گزینه خوبی برای برنامهنویسان تازهکار محسوب میشود. با داشتن مهارت برنامهنویسی با C++، یادگیری و کدنویسی به زبانهای دیگری نظیر پایتون یا جاوا اسکریپت به مراتب راحتتر خواهد بود.
یکی از بهترین روشهای یادگیری زبانهای برنامهنویسی بهویژه زبان برنامه نویسی C++، استفاده از ویدیوهای آموزشی است. فرادرس این زمینه فیلمهای آموزشی متعددی را ارائه کرده که سطوح مقدماتی تا پیشرفته زبان برنامه نویسی C++ را در بر میگیرند. بیشتر این آموزشها پروژهمحور هستند و در قالب پروژههای متنوع، این مهارت را در شما تقویت میکنند. در ادامه، برخی از فیلمهای آموزشی برنامهنویسی سی پلاس پلاس، مقدماتی تا پیشرفته در فرادرس را مشاهده میکنید.
از مهمترین فیلمهای آموزشی ارائه شده در این مجموعه برای یادگیری زبان برنامه نویسی C++ میتوان به موارد فهرست شده در ادامه اشاره کنیم.
برای آموختن نکات پیشرفتهتر از C++ نیز میتوانید از فیلمهای آموزشی آورده شده در زیر استفاده کنید.
شما میتوانید زبان برنامه نویسی C++ را بدون کمک یک منتور یا مربی نیز بیاموزید. با اینکه تجربه یک فرد متخصص میتواند شما را در مسیر مناسبتری برای یادگیری قرار دهد اما با استفاده از فیلمهای آموزشی، دورهها، و مقالات آنلاین مناسب نیز میتوانید مفاهیم گوناگون این زبان را یاد گرفته و با تمرینهای عملی و کدنویسی، مهارت زبان C++ را در خود تقویت کنید. همچنین در صورت رویارویی با مشکلات و چالشهای برنامه نویسی میتوانید به انجمنهای آنلاین C++ ملحق شده و سوالهای خود را بپرسید.
خصوصیات زبان برنامه نویسی ++C چیست؟
همانطور که گفتیم، C++ با این هدف ایجاد شد تا خصوصیات ارزشمندی نظیر برنامهنویسی شیگرا را به زبان C اضافه کند. در ادامه، میخواهیم برخی از خصوصیات این زبان را با هم مرور کنیم.
- زبانی همهمنظوره است: با استفاده از C++ میتوانیم انواع مختلفی از اپلیکیشنها را نوشته یا به اصطلاح توسعه دهیم و این درست برخلاف روال برخی دیگر از زبانها است که تنها برای انجام خاصی طراحی شدهاند.
- «دستوری» (Imperative) است: C++ یک زبان دستوری است. یعنی در آن بهطور دقیق و صریح، گامها و مراحل اجرای برنامه را بیان میکنیم. برای درک بهتر یک مثال میزنیم. فرض کنید از فردی میخواهیم تا یک لپتاپ را برایمان روشن کند. اگر با دید برنامهنویسی دستوری به این کار نگاه کنیم میبایست مراحل انجام کار را بیان کنیم. یعنی گامهایی مانند «بلند شو»، «به سمت لپتاپ حرکت کن»، «لپتاپ را باز کن»، «دکمه پاور آن را فشار بده» و غیره.
- کامپایلری است: C++ یک زبان برنامهنویسی کامپایلری محسوب میشود. یعنی برنامههای نوشته شده به این زبان، پیش از اجرا میبایست توسط کامپایلر مربوطه، کامپایل شوند. یا به زبان ساده، سورس کد برنامه ما به کدهای ماشین تبدیل شوند.
- کاربرد گسترده: یکی از مهمترین خصوصیات زبان برنامه نویسی C++ قابلیت آن در ساخت برنامههای سیستمی مانند درایور سختافزارها، دستگاههای نهفته، سیستمعاملها و غیره است. جدای از این، بهکمک کتابخانههای قدرتمندی که دارد میتوان سایر اپلیکیشنهای سطح بالا مانند موتورهای بازیسازی، برنامههایی نظیر فتوشاپ، پخشکنندههای صوتی و تصویری و غیره را نیز توسعه داد.
- کتابخانهای ارزشمند: با کتابخانه STL زبان سیپلاسپلاس، به الگوریتمها و ساختمان دادههای پیشرفته برای نوشتن بهتر برنامهها، دسترسی خواهیم داشت. همچنین، کتابخانههای Boost آن که توسط افراد شخص ثالث ساخته شدهاند میتوانند سرعت ساخت برنامهها را افزایش دهند.
- کامیونیتی: زبان برنامه نویسی C++، جامعه یا کامیونیتی بزرگ و فعالی دارد که میتواند برای یادگیری این زبان مورد استفاده قرار گیرد.
- قابلیت مدیریت استثنا: با این ویژگی از زبان برنامهنویسی C++ میتوانید خطاها و شرایط خاص برنامه را بهتر مدیریت کنید.
- مستقل از ماشین و وابسته به پلتفرم: برنامههایی که با C++ توسعه میدهید به پلتفرم مورد استفاده وابسته هستند یعنی اگر برنامهای را روی لینوکس کامپایل کنید، این برنامه در ویندوز اجرا نمیشود. همچنین گفتیم که مستقل از ماشین است یعنی برنامههای آن میتواند روی سیستمهای کامپیوتری گوناگون اجرا شود.
- سرعت اجرا: با توجه به اینکه برنامههای این زبان کامپایل میشوند، بنابراین، سرعت خوبی خواهند داشت. زبانهای جدیدتر که امکانات بیشتری مانند «بازیافت حافظه» (Garbage-Collection)، «نوعدهی پویا» (Dynamic Typing) و غیره را ارائه میدهند ممکن است بهخاطر این نوع پردازشهای اضافی سرعت اجرای برنامه ما را کمی کاهش دهند.
- اشارهگر و دسترسی مستقیم به حافظه: به زبان ساده، پوینتر یا «اشارهگر» (Pointer)، شیئی است که یک آدرس حافظه را در خود نگه میدارد. با توجه به اینکه C++ از مفهوم اشارهگرها پشتیبانی میکند میتوانیم به کمک آن کنترل بیشتری روی آدرس ذخیرهسازی متغیرها داشته باشیم. البته در یکی از مطالب پیشین مجله فرادرس به توضیح اشارهگرهای ++C پرداختهایم و برای اطلاعات بیشتر میتوانید مطلب مرتبط را مطالعه کنید.
- شیگرایی: یکی از برجستهترین ویژگیهایی که در زبان C++ وجود دارد، شیگرایی آن است که ارتقای این زبان نسبت به C را نشان میدهد. با استفاده از اصول شیگرایی و نوشتن کدهای خود به این روش، برنامههای ما نسبت به شیوه کدنویسی رویهای سریعتر اجرا میشوند. شیگرایی کدهای ما را منظمتر کرده و انجام اصلاحات، تغییرات، نگهداری و دیباگ آن را آسانتر میکند. همچنین باعث میشود امکان استفاده مجدد از کدهایمان را داشته باشیم.
- حساسیت به حروف کوچک و بزرگ: در هنگام کدنویسی به زبان C++ میبایست به کوچک و بزرگ بودن حروف دقت کنیم. به این دلیل که زبان برنامهنویسی C++ بین حروف کوچک و بزرگ تفاوت قائل میشود یا به اصطلاح «Case-Sensitive» است. بهطور مثال، دستور cin
را در نظر بگیرید که برای دریافت ورودی – مثلاً از طریق کیبرد – بهکار میرود. حال اگر به اشتباه آن را بهصورت Cin
بنویسیم دیگر کار نخواهد کرد. همچنین، ۲ شناسه varr
و Varr
میتوانند به عنوان ۲ متغیر مختلف در نظر گرفته شوند.
چندنخی در زبان برنامه نویسی ++C چیست؟
یکی از قابلیتهای زبان برنامهنویسی C++، مالتیتردینگ یا «چندنخی» (Multi-threading) است که از نسخه C++11 به بعد قابل استفاده است. در این روش، چندین قسمت از یک برنامه که به هر یک از آنها یک «نخ» (Thread) میگویند بهصورت همزمان در CPU اجرا میشوند. چندنخی را میتوان نوع خاصی از چند وظیفهای در نظر گرفت.
در چندوظیفهای تعدادی برنامه با هم در CPU اجرا میشوند و میتوانیم آن را به ۲ صورت آوردهشده در زیر تقسیم کنیم.
- «فرایندمحور» (Process-Based): چندین اپلیکیشن یا فرایند، بهطور همزمان اجرا میشوند.
«نخمحور» (Thread-Based): چندین نخ از یک فرایند یا اپلیکیشن، بهطور همزمان اجرا میشوند. البته برای بهرهمندی از این خصوصیات به پردازندههای چندهستهای نیاز داریم.
مدیریت حافظه در زبان برنامه نویسی ++C چیست؟
فرایند اختصاص حافظه کامپیوتر به برنامهها، متغیرها و غیره را مدیریت حافظه میگویند و میبایست به شکلی انجام شود که هدر رفتن حافظه به کمترین میزان خود برسد و همچنین کارایی آن افزایش پیدا کند. حافظهای که برنامه C++ ما هنگام اجرا استفاده میکند به بخشهای مختلفی تقسیم میشود که در ادامه، دو مورد Stack و Heap را بیان کردهایم.
- Stack: اطلاعات مربوط به تابع، بهطور مثال، همه متغیرهایی که درون تابع تعریف شدهاند را نگه میدارد.
- Heap نیز در واقع حافظهای است که در هنگام اجرای برنامه بهطور پویا اختصاص داده میشود.
فرض کنید که میخواهیم آرایهای را درون برنامه خود تعریف کنیم و نمیدانیم که اندازه واقعی آن بعد از اجرا به چه صورتی است. در این هنگام بهطور معمول، بیشترین مقداری که برای آن متصوریم را در نظر میگیریم. بهطور مثال آرایهای با اندازه ۳۰ تعریف میکنیم. پس از آن، متوجه میشویم که آرایهای به اندازه ۱۰ برای ما کافی بود و مقدار استفاده نشده به نوعی هدر رفته است. روش بهتر برای پیشگیری از این مشکل این است که از «تخصیص حافظه» کمک بگیریم و حافظه را در زمان اجرا از قسمت Heap به آن اختصاص دهیم. برای تخصیص و آزادسازی حافظه در C++ از عملگرهای new
و delete
استفاده میکنیم.
نصب زبان برنامه نویسی C++
در این قسمت میخواهیم نصب C++ را به شما آموزش دهیم تا بتوانید کدها و برنامههای خود را به این زبان، نوشته و اجرا کنید. برای کدنویسی به زبان C++ دو راه پیش رو دارید. اول اینکه از محیطهای آنلاین برای این منظور استفاده کنید و راه دوم نیز ،نصب ابزارهای لازم برای برنامهنویسی و اجرای برنامههای C++ روی سیستم خود است. در ادامه هریک از این موارد را شرح دادهایم.
استفاده از محیط آنلاین برای برنامه نویسی به زبان C++
این روش در واقع، سادهترین راهی است که برای اجرای کدهای C++ خود میتوانید امتحان کنید. با یک سرچ ساده میتوانید به تعداد زیادی از این نوع ابزارها و کامپایلرهای آنلاین دسترسی داشته باشید. برای نمونه، میتوانید از کامپایلر آنلاین وبسایت «Programiz» استفاده کنید.
- لینک کامپایلر آنلاین سیپلاسپلاس Programiz: «+»
کار با محیط این کامپایلر بسیار ساده است. کافی است تا کدهای C++ خود را در ادیتور آن بنویسید و سپس روی دکمه «Run» کلیک کنید. پس از چند ثانیه خروجی برنامه در تب «Output» قابل مشاهده است.
نصب محیط C++ روی کامپیوتر خود
بههر دلیل اگر بخواهید برنامههای C++ را روی سیتم خود نصب کنید به ۲ ابزاری که در ادامه آورده شده، نیاز پیدا میکنید.
کامپایلرهای معروفی برای زبان C++ وجود دارد که اسامی برخی از آنها را در ادامه آوردهایم. این کامپایلرها، سورس کدهای برنامه شما را به کدهای ماشین تبدیل میکنند.
- GCC (مجموعه کامپایلر GNU)
- Clang
- مایکروسافت ویژوال C++
کد ادیتورها
کد ادیتورها، نرمافزارهایی هستند که محلی را برای نوشتن کدهای شما فراهم میکنند بهطوریکه میتوانید کدهای C++ خود را درون آن نوشته و ادیت کنید. البته ممکن است با توجه به نوع کد ایدتور لازم باشد تا افزونههای مناسبی را نصب کنید. اسامی برخی از این کد ادیتورها را در ادامه آوردهایم.
- ویژوال استودیو کد یا VSCode
- Brackets
- Sublime Text
IDE ها
همانطور که گفتیم، شما میتوانید کدهای C++ خود را درون ادیتورهای متنی بنویسید. با این وجود، دسته دیگری از نرمافزارها هستند که به آنها IDEیا همان «محیط توسعه یکپارچه گفته میشود و بهطور معمول، علاوه بر کد ادیتور، ابزارهای مفید دیگری مانند تکمیل خودکار کد، رنگی کردن سینتکس کد برای خوانایی بهتر، ابزارهای دیباگ و بسیاری امکانات ارزشمند دیگر را در اختیار شما قرار میدهند. استفاده از ابزارهای این چنینی باعث میشود تا راندمان شما بیشتر شود.
اسامی برخی از معروفترین IDE-های موجود برای برنامهنویسی C++ را در ادامه فهرست کردهایم.
- ویژوال استودیو
- Code::Blocks
- Eclipse
اینکه کدام یک از این موارد را انتخاب کنید به خودتان بستگی دارد اما به دلیل محبوبیت، قابلیتها و سادگی در استفاده، ما VS Code را به شما پیشنهاد میکنیم و در ادامه، نحوه راهاندازی محیط C++ در این برنامه را به شما توضیح میدهیم.
محیط توسعه C++ در ویژوال استودیو کد
با طی کردن مراحلی که در ادامه آوردهایم میتوانید ويژوال استودیو کد را روی کامپیوتر خود نصب و راهاندازی کنید.
- فایل نصبی ویژوال استودیو کد را با توجه به سیستم عامل خود، از سایت رسمی آن در «+» دانلود کنید.
- نحوه نصب این برنامه آسان است. فایل دانلود شده را اجرا کرده و مراحل نصب را طی کنید.
- پس از تکمیل نصب VS Code، آن را باز کرده و به پنل افزونههای آن بروید. برای این کار از کلیدهای کنترلی Ctrl + Shift + X
استفاده کنید.
- سپس در زبانه Extensions، عبارت C++
را جست و جو کرده و با کلیک روی install آن را نصب کنید.
اکنون میتوانید کدهای برنامه خود را در فایلی متنی با فرمت .cpp
ذخیره کرده و آن را بیلد یا اجرا کنید.
کامپایلرهای C++ بهطور معمول روی بیشتر سیستمعاملها نصب هستند. بهطور مثال GCC روی سیستم عامل Linux و کامپایلر Clang روی macOS از قبل نصب شده است.
نوشتن برنامه Hello World در زبان برنامه نویسی C++
یکی از اولین برنامههایی که هنگام یادگیری یک زبان برنامهنویسی مینویسند، برنامه Hello, World!
است که عملکرد خیلی سادهای دارد و پیغام «Hello, World!» را به کاربر نمایش میدهد. بهعنوان یک برنامهنویس مبتدی، با کدنویسی این برنامه بسیار ساده و اجرای آن، با سینتکس و شکل کلی برنامههای C++ آشنا خواهید شد.
در ادامه، کدهای مربوط به برنامه Hello, World!
به زبان C++ را ملاحضه میکنید.
1// Your First C++ Program
2
3#include <iostream>
4
5int main() {
6 std::cout << "Hello World!";
7 return 0;
8}
در صورتی که مشکلی وجود نداشته باشد، خروجی این برنامه پس از اجرا میبایست بهصورت زیر به شما نمایش داده شود.
Hello World!
نحوه کار برنامه Hello World در زبان برنامه نویسی ++C
در ادامه، کدهای برنامه Hello, World!
را خط به خط توضیح دادهایم.
خط شماره ۱: در زبان برنامه نویسی ++C، هر خطی که با //
شروع شود یک کامنت در نظر گرفته میشود. لازم به یادآوری است که کامنتها در زبانهای برنامهنویسی در واقع توضیحاتی اختیاری هستند که توسط توسعهدهنده برای افزایش خوانایی کدها و توضیح نحوه عملکرد آن نوشته میشوند. این خطوط توسط کامپایلر زبان برنامه نویسی ++C نادیده گرفته میشوند و در روند اجرای برنامه تأثیری ندارند. اما راهنمای خوبی برای مخاطبین کدهای برنامه ما خواهند بود. در این برنامه هم، خط شامل // Your First C++ Program
یک توضیح است که توسط کامپایلر نادیده گرفته میشود.
خط شماره ۳: دستور پیشپردازنده #include
در C++ برای «ایمپورت | وارد کردن» فایلها و کتابخانههای مشخص در کدهای برنامه بهکار میرود. بنابراین، خط شامل #include <iostream>
در کدهای ما محتوای فایل iostream
را به برنامه ما اضافه میکند. این فایل، امکان استفاده از قابلیتهای ورودی و خروجی را برای برنامه ما فراهم میکند. بدینترتیب میتوانیم از دستور cout
در کدهای خود با هدف چاپ خروجی روی صفحه نمایش استفاده کنیم.
به یاد داشته باشید که برای چاپ خروجی روی صفحه از cout
استفاده میکنیم که خود نیز مستلزم نوشتن #include <iostream>
است.
خط شماره ۵: برنامههایی که به زبان برنامه نویسی ++C مینویسیم دارای تابع main()
هستند. براکتهای باز و بسته آن نیز بدنه این تابع را نشان میدهند. اجرای کدهای برنامه از همین تابع، یعنی int main() {…}
شروع میشود.
خط شماره ۶: دستور std::cout
محتوایی که بین علامتهای نقل قول نوشته شده را چاپ میکند. پس از این دستور، علامت <<
و پس از آن، رشته موردنظر یعنی “Hello World!”
میآید. فراموش نکنید که در انتهای عبارتها میبایست علامت «پایان عبارت» یا ;
را قرار دهید. برنامهها در C++ با دستور return 0;
به پایان میرسند.
فرق C و زبان برنامه نویسی ++C چیست؟
همانطور که میدانیم زبان C یک زبان رویهای محسوب میشد و از روش برنامهنویسی شیگرایی پشتیبانی نمیکرد. بههمین دلیل و با هدف ارتقای آن با مفاهیم مدرن، C++ را توسعه دادند. سیپلاسپلاس همچنین دارای «کتابخانه استاندارد قالب» (Standard Template Library | STL) نیز هست که خیلی از بخشهای کتابخانه استاندارد این زبان که شامل توابع و کلاسهای متعددی است را بهبود داده است و شامل بخشهایی نظیر الگوریتمها، کانتینرها یا ساختمان داده مجموعه، Iterator-ها و توابع را شامل میشوند.
در اوایل توسعه C++ و هنگامیکه یک زبان جدید محسوب میشد، به لحاظ ویژگی و قابلیتها، آن را یک اَبَر مجموعه از زبان C میدانستند. نامگذاری «C-با کلاس» نیز این مورد را نشان میدهد که C++ نه تنها ویژگیهای سی را بههمراه دارد بلکه قابلیت استفاده از شیگرایی نیز در آن فراهم شده است. اما بعدها و با اضافه شدن امکانات بیشتر به این زبانها، قابلیتهایی به زبان C اضافه شد که C++ در آن زمان فاقد آنها بود. با این وجود، بهطور کلی سیپلاسپلاس را زبانی کاملتر از C میدانند که خصوصیات ارزشمندی را ارائه میدهد.
از شباهتهای این ۲ زبان نیز میتوان به شکل کلی نوشتن دستورات و سینتکس مشابه اشاره کرد. ضمن اینکه ساختار یکسانی را در این مورد ارائه میدهند. بهطور مثال کلمات کلیدی و عملگرهای زبان C در C++ هم قابل استفاده هستند. اما با این حال سیپلاسپلاس، کلمات کلیدی و دستورات پیچیده خود را نیز دارد. از نظر مدل مدیریت حافظه هم این ۲ زبان، شباهتهایی بههم دارند.
مزایای زبان برنامه نویسی ++C چیست؟
C++ مزایای متعددی را برای برنامهنویسان خود فراهم کند. بهطور مثال، شیگرایی این زبان، امکان سازماندهی کدها به شکلی بهتر را فراهم میکند و میتوانید از کدهایی که نوشتهاید به دفعات استفاده کنید. با توجه به قابلیتهای این زبان، امکان برنامهنویسی سطح پایین و سختافزار هم وجود دارد که در اینصورت میتوانید کنترل بیشتری روی منابع سیستم خود، مانند حافظه و غیره داشته باشید.
این مزیتها بسیاری از نیازهای شما را رفع میکنند.
- با توجه به اینکه زبان برنامه نویسی ++C امکان مدیریت سطح پایین حافظه و دسترسی مستقیم به سختافزار را فراهم میکند، انتخابی مناسب برای توسعه برنامههایی با مصرف منابع زیاد، محسوب میشود.
- قابلیت مدیریت منابع سختافزاری به برنامهنویس امکان میدهد تا برنامههای خود را بهنحوی بهینهسازی کنند که بهرهوری بالایی داشته باشد.
- C++ با فراهم کردن امکان برنامهنویسی به شیوههای مختلف نظیر تابعی، شیگرا و رویهای، انعطافپذیری بالایی را از خود نشان داده است.
- برنامههایی که با C++ مینویسید میتوانند روی پلتفرمهای گوناگون اجرا شوند.
معایب زبان برنامه نویسی ++C چیست؟
زبان برنامه نویسی ++C نیز مانند C دارای مفاهیمی است که یادگیری آن را سخت میکند. بهطور مثال، مبحث «اشارهگرها» (Pointers) یکی از همین مفاهیم است که درک آن با کمی چالش همراه است و درصورت بهکارگیری نادرست ممکن است باعث مصرف غیرطبیعی حافظه و کرش کردن برنامه یا سیستم شود. نداشتن Garbage Collector یا بازیافت حافظه نیز باعث میشود تا فرایند حذف اطلاعات غیرضروری روی حافظه سخت شود.
- یادگیری بهنسبت سخت: هنگام یادگیری زبان برنامه نویسی ++C بهخصوص اگر فردی مبتدی باشیم، ممکن است با چالشهای متعددی رو به رو شویم. به این دلیل که C++ مفاهیم پیچیده متعددی دارد.
- سینتکس مفصل: دستورات C++ کمی پیچیده و طولانی هستند که این مورد ممکن است علاوه بر افزایش حجم کدها، خواندن و نگهداری از کدهای برنامه را سختتر کند.
- مستعد بروز خطا: با توجه به اینکه با زبان C++ میتوانیم دسترسی سطح پایین به منابع کامپیوتر داشته باشیم، احتمال بروز خطا نیز بیشتر شده و شاید شناسایی و رفع آنها، وقت زیادی از شما بگیرد.
- صرف زمان بیشتر برای کامپایل: کامپایل برنامههای نوشته شده با زبان C++ در مقایسه با زبانهایی که سیستم نوعدهی پویا دارند یا از روش کامپایل درجا استفاده میکنند، بیشتر طول میکشد.
- نداشتن قابلیت بازیافت حافظه یا Garbage Collection: برای جلوگیری از هدررفت حافظه میبایست آن را بهصورت دستی آزاد کنید.
- خطرات امنیتی: در این زبان میتوانیم بهطور مستقیم به حافظه دسترسی داشته باشیم و در نتیجه، ممکن است ریسک نوشتن کدهای نا ایمن و خطرناک بیشتر شود.
- مدیریت دستی حافظه: در صورتی که این مورد بهدرستی مدیریت نشود ممکن است باعث «نشت حافظه» (Memory Leak) و بروز سایر مشکلات مرتبط به حافظه شود.
تمرین های زبان برنامه نویسی ++C
در این قسمت، ۲ برنامه ساده را در قالب تمرین برنامهنویسی به زبان C++ آوردهایم که بررسی آنها میتواند مهارت کدنویسی شما را در این زبان تقویت کند.
تمرین ۱. محاسبه حاصل ضرب ۲ عدد
در این برنامه، ۲ عدد از کاربر دریافت شده و حاصلضرب این اعداد در خروجی به کاربر نشان داده میشود.
1#include <iostream>
2using namespace std;
3
4int main() {
5 double num1, num2, product;
6 cout << "Enter two numbers: ";
7
8 // stores two floating point numbers in num1 and num2 respectively
9 cin >> num1 >> num2;
10
11 // performs multiplication and stores the result in product variable
12 product = num1 * num2;
13
14 cout << "Product = " << product;
15
16 return 0;
17}
خروجی این برنامه بهصورت زیر خواهد بود.
Enter two numbers: 3.4 5.5 Product = 18.7
در ادامه توضیح خط به خط این کد را آوردهایم.
- خط شماره ۱: کتابخانه iostream
را وارد برنامه میکند. با استفاده از این کتابخانه میتوانیم به قابلیتهای ورودی و خروجی دسترسی داشته باشیم.
- خط شماره ۲: فضای نام std
به فضای نام برنامه افزوده میشود.
- خط شماره ۴: تابع اصلی برنامه یعنی main()
شروع میشود.
- خط شماره ۵: ۳ متغیر بهنامهای num1
، num2
و product
تعریف میشود.
- خط شماره ۶: با چاپ یک متن، از کاربر میخواهد تا ۲ عدد را وارد کند.
- خط شماره ۹: ۲ عددی که توسط کاربر وارد میشود را بهترتیب در متغیرهای num1
و num2
قرار میدهد.
- خط شماره ۱۲: ۲ عدد موجود در متغیرهای num1
و num2
را ضرب کرده و حاصل این محاسبه را در متغیر product
قرار میدهد.
- خط شماره ۱۴: مقدار product
را در خروجی چاپ میکند.
- خط شماره ۱۴: عبارت return 0;
بیانگر اجرای موفقیتآمیز برنامه است.
تمرین ۲. محاسبه حاصل جمع ۲ عدد
در این برنامه، ۲ عدد از کاربر دریافت میشود. سپس، مجموعه آنها را محاسبه کرده و به کاربر نشان دهیم.
1#include <iostream>
2using namespace std;
3
4int main() {
5
6 int first_number, second_number, sum;
7
8 cout << "Enter two integers: ";
9 cin >> first_number >> second_number;
10
11 // sum of two numbers in stored in variable sumOfTwoNumbers
12 sum = first_number + second_number;
13
14 // prints sum
15 cout << first_number << " + " << second_number << " = " << sum;
16
17 return 0;
18}
خروجی این کدها بهصورت زیر خواهد بود.
Enter two integers: 4 5 4 + 5 = 9
در ادامه، توضیح خطوط مهم کدهای این برنامه را آوردهایم.
- خط شماره ۶: ۳ متغیر بهنامهای first_number
، second_number
و sum
تعریف میشود.
- خط شماره ۱۲: با استفاده از عملگر +
، مقادیر متغیرهای first_number
و second_number
را جمع کرده و در متغیر sum
قرار میدهد.
- خط شماره ۱۵: مجموع ۲ عدد وارد شده توسط کاربر را چاپ میکند.
تقویت مهارت برنامه نویسی C++ با فرادرس
برای آشنایی با الگوریتمهای مختلف برای حل مسائل در C++ میتوانید فیلم آموزش پروژهمحور C++ و پیادهسازی بازی شطرنج از فرادرس را مشاهده کنید. در این آموزش، برای پیادهسازی حرکت مهرههای شطرنج از توابع و برای ذخیرهسازی، از فایلها استفاده شده است.
همچنین برای تمرین عملی و تقویت مهارتهای خود نیز میتوانید از فیلمهای آموزش پروژهمحور آورده شده در زیر استفاده کنید.
حقایق جالب در مورد زبان برنامه نویسی ++C چیست؟
در ادامه، برخی از نکات جالب در مورد زبان برنامه نویسی ++C را بیان کردهایم.
- همانطور که میدانید ++
، یک عملگر افزایشی در زبان C است و با استفاده از آن میتوان مقادیر عددی را به میزان یک واحد اضافه کرد. بنابراین، علت نامگذاری C++ را میتوان اینگونه برداشت کرد که بیانگر روند تکاملی و پیشرفت آن نسبت به زبان C است.
- برای ایجاد زبانهایی نظیر سیشارپ، جاوا و حتی نسخههای جدیدتر C، از سیپلاسپلاس الهام گرفته شده است.
- این زبان جایگاه مهمی در ساخت انواع نرمافزارهای تخصصی و تجاری دارد.
- C++ یک زبان برنامهنویسی شیگرا است. یعنی، از خصوصیات اصلی OOP نظیر کپسولهسازی، چندریختی، انتزاع و وراثت پشتیبانی میکند.
- C++ خصوصیات شیگرایی خود را را از زبان برنامهنویسی Simula67 بهدست آورده است.
- زبانهای C و C++، هر دو در آزمایشگاههای بِل در امریکا ساخته شدهاند.
- زبان C++ چند پارادایمی است و با آن میتوان به روشهای گوناگون از جمله شیگرایی، رویهای برنامهنویسی کرد.
جمعبندی
در این مطلب از مجله فرادرس سعی بر این بوده تا با مروری کلی به شما بگوییم که زبان برنامه نویسی ++C چیست. همچنین، تمرینات و منابع یادگیری مفیدی را در این بین، به شما معرفی کردهایم.
در این نوشتار همچنین به بیان خصوصیات، کاربردها، نقاط قوت و معایب احتمالی زبان C++ پرداختیم و نحوه نوشتن برنامه Hello World را با هم بررسی کردیم.
source