آموزش C++ قواعد اصلی
یک برنامه C++ را می توان به عنوان مجموعه ای از اشیا تعریف کرد که از طریق فراخوانی متدهای یکدیگر با هم در ارتباط هستند. به طور خلاصه مفهوم کلاس ،شی، متد و instant variables را در ادامه توضیح می دهیم.
توجه داشته باشید که تعریفات زیر به صورت کلی و جامع هستند و در آینده بیشتر با آنها آشنا خواهیم شد.
شی یا object
شی ها دارای خصوصیات و رفتارهای مختلف هستند. به عنوان مثال یک سگ دارای خصوصیاتی مانند رنگ، نام، نژاد و رفتارهایی مانند حرکت کردن، پارس کردن، خوردن و آشامیدن است. شی در واقع یک نمونه از یک کلاس است.
کلاس یا class
کلاس می تواند به عنوان یک قالب یا یک طرح تعریف شود که رفتار یا حالت های شی از آن پشتیبانی می کند. در مثال بالا سگ خود می تواند به عنوان یک کلاس مطرح گردد.
متد یا method
متد اساساً یک رفتار است و یک کلاس می تواند شامل چندین متد باشد. در واقع در متد ها، منطق ها نوشته می شوند، داده ها دستکاری یا تعییر داده می شوند و تمام اقدامات انجام می شود.
متغیرهای نمونه
هر شی دارای مجموعه منحصر به فردی از متغیرهای نمونه است. حالت شی توسط مقادیر اختصاص داده شده به این متغیرهای نمونه ایجاد می شود. متغیرهای نمونه در داخل کلاس اما در بیرون از بدنه متد تعریف می شوند.
ساختار ++C
به یک کد ساده که کلمات hello world را چاپ میکند نگاه کنید:
#include <iostream>
using namespace std;
// main() is where program execution begins.
int main() {
cout << "Hello World"; // prints Hello World
return 0;
}
حال نگاهی به بخشهای مختلف این کد میاندازیم:
- زبان ++C چندین header که حاوی اطلاعات ضروری و یا غیر ضروری برای برنامه شما هستند را تعریف می کند که header مورد نیاز برای این برنامه <iostream> است.
- خطی که در آن فضای نام std نوشته شده است، به کامپایلر می گوید که ازفضای نام std استفاده کند.
- // main() is where program execution begins. این خط یک توضیح تک خطی است که در++C در دسترس است. کامنت های تک خطی ب // آغاز میشوند.
- خط int main() تابع اصلی است که در آن اجرای برنامه شروع می شود.
- خط بعدی cout << "Hello World"؛ باعث می شود که پیام "Hello World" بر روی صفحه، نمایش داده شود.
- خط بعدی تابع main() را خاتمه می دهد و مقدار صفر را برمی گرداند.
کامپایل و اجرای برنامه C++
بیایید به چگونگی ذخیره فایل، کامپایل و اجرای یک برنامه نگاه بیاندازیم. لطفا مراحل زیر را دنبال کنید:
- یک ویرایشگر متن را باز کنید و کدهای نمونه بالا را به آن اضافه کنید.
- فایل را با نام: hello.cpp ذخیره کنید.
- یک command prompt را باز کنید و به دایرکتوری که فایل را ذخیره کرده اید بروید. (در باکس جستجوی استارت ویندوز عبارت Command Prompt را تایپ کنید و برنامه را اجراکنید)
- g++ hello.cpp را بنویسید وenter را بزنید تا کدهای شما کامپایل شود. اگر خطایی در کدهای شما وجود نداشته باشد، command prompt شما را به خط بعد منتقل می کند و فایل قابل اجرای a.out یا a.exe را در پوشه برنامه تولید می کند.
- حالا، "a.out یت a.exe" را تایپ کنید تا برنامه شما اجرا شود.
- شما قادر خواهید بود که "Hello World" را بر روی پنجره چاپ کنید.
$ g++ hello.cpp
$ ./a.out
Hello World
توجه:
اطمینان حاصل کنید که g++ در path شماست و شما آن را در پوشه حاوی فایل hello.cpp اجرا می کنید.
بلاک ها و semicolon (نقطه ویرگول ها) در C++
علامت نقطه ویرگول یا سمی کالن ";" در ++C بعنوان پایانه دهنده یا خاتمه دهنده دستور استفاده میشود. بدین ترتیب، هر یک از دستورات باید با یک سمی کالن به پایان برسد. این نشان دهنده پایان یک موجودیت منطقی است.
به عنوان مثال، سه دستور مختلف زیر را ببینید:
x = y;
y = y + 1;
add(x, y);
یک بلاک مجموعه ای از دستورات منطقی پیوسته است که توسط براکت ها های باز و بسته "{}" احاطه شده است. مثال:
{
cout << "Hello World"; // prints Hello World
return 0;
}
C++ پایان خط را به عنوان پایان دستورات تشخیص نمی دهد. به همین دلیل مهم نیست در یک خط دستورات را در کجا قرار می دهید. مثال:
x = y;
y = y + 1;
add(x, y);
برابر است با
x = y; y = y + 1; add(x, y);
شناسه ها در C++
- یک شناسه نامی است که برای شناسایی متغیر، تابع، کلاس، ماژول یا هر مورد دیگر تعریف شده و توسط کاربر استفاده می شود.
- یک شناسه با یک حرف از (A تا Z) یا (a تا z) یا underscore (_) به همراه صفر یا چند حرف، underscore و رقم (0 تا 9) شروع می شود.
- ++C از نشانه های خاصی مثل @، $ و % در تعریف شناسه ها پشتیبانی نمی کند و همچنین یک زبان برنامه نویسی حساس به حروف است. برای مثال Manpower با manpower متفاوت است و دو شناسه جدا به حساب می آیند.
در اینجا چند نمونه از شناسه های قابل قبول وجود دارند:
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
کلمات کلیدی (keywords) در C++
لیست زیر لیست کلمات ذخیره شده در C++ را نشان می دهد. این کلمات رزرو شده به عنوان ثابت (constant) یا متغیر (variable) یا شناسه (identifier) نمی توانند استفاده شوند.
asm | else | new | this |
auto | enum | operator | throw |
bool | explicit | private | true |
break | export | protected | try |
case | extern | public | typedef |
catch | false | register | typeid |
char | float | reinterpret_cast | typename |
class | for | return | union |
const | friend | short | unsigned |
const_cast | goto | signed | using |
continue | if | sizeof | virtual |
default | inline | static | void |
delete | int | static_cast | volatile |
do | long | struct | wchar_t |
double | mutable | switch | while |
dynamic_cast | namespace | template |
تریگراف ها یا Trigraphs
Trigraphs کاراکترهای ویژه ترتیبی یا متوالی هستند که در موقع عدم پشتیبانی سیستم از نوع ۷ بیتی اَسکی (ASCII) همانند ایزو 646
استفاه می شوند.برای مثال تریگراف "=??" کاراکتر ویژهای مانند "#" را تولید میکند. چند کاراکتر ویژه دارای جایگزین هستند که دنباله تریگراف نامیده می شوند. یک trigraph یک دنباله سه کاراکتری است که یک کاراکتر ویژه را نشان می دهد که عموما به همراه دو کارکتر"??" شروع می شوند.
Trigraphs ها در هر جایی که باشند بسط داده می شوند. از جمله String literal و دستورات پیش پردازنده در comment ها. پر استفاده ترین دنباله تریگرافها در زیر قرار گرفته است.
Trigraph تریگراف یا | جایگزین |
---|---|
??= | # |
??/ | \ |
??' | ^ |
??( | [ |
??) | ] |
??! | | |
همه کامپایلرها از trigraph ها پشتیبانی نمی کنند و توصیه می شود که به دلیل ماهیت گیج کننده آنها مورد استفاده قرار نگیرد.
فضای خالی یا whitespace در ++ C
فضای خالی در ++C اصطلاحی برای توصیف توضیحات (comments)، خط جدید (new line)، تب ها (Tabs) و فاصله ها است.
کامپایلر C++ خطی را که فقط دارای فضای خالی یا توضیحات (comment) باشد را نادیده می گیرد.
با ایجاد فضای خالی در بین دستورات می توانید بخش های مختلف دستورات را از یکدیگر جدا کرده که به این صورت کامپایلر را قادر می سازید که تشخیص دهد کدام یک از عناصر در یک عبارت، مانند int، به پایان می رسد و عنصر بعدی شروع می شود.
مثال 1
int age;
در مثال بالا باید حداقل یک فضای خالی بین int و age بایتی وجود داشته باشد تا کامپایلر بتواند آن ها را از یکدیگر تشخیص دهد.
مثال 2
fruit = apples + oranges; // Get the total fruit
در مثال شماره 2 فضای خالی بین fruit و =، = و apples الزامی نیست و تنها برای خوانایی بیشتر برنامه اضافه شده است.
نظرات کاربران