نکات مهم در ++C
مثلاٌ اینکه اصلاٌ چرا میخواد با ++c کار کنه؟! یا فرق های این زبان با زبانی مثل c چیه؟
همه ما میدونیم ++c زبان شی گرا یا به اصطلاح object-oriented هست.
خب این یه فرق اساسی با زبان c بود ولی چرا نیاز بود که یک زبان برنامه نویسی شی گرا بشه ؟ یا شی گرایی چیه؟
زبان ++c شی گراست یعنی در اون اگه میخوایم مثلاٌ درباره یه دستگیره در (!) کد بنویسیم، کاربر استفاده کننده از برنامه ما نباید از مکانیسم داخلی این دستگیره چیزی بفهمه ؛
اینکه به طور مثال یه میله داخل یه حلقه باید بچرخه یا چیزای دیگه و طبیعتاٌ وقتی که اندازه این میله هم تغییر کنه و کوچیک و بزرگ شه هم کاربر از وجود اون مطلع نمیشه.
پس با این کار ما به طریقی داریم دسترسی کاربر رو به برنامه کمتر می کنیم. در مورد کد هایی که میخوان فروخته بشن خب این یه اصله.یعنی در کدهای خیلی مهم پیاده سازی (implement) باید از اطلاعات اصلی کد جدا بشه.
** شی گرایی با کلاس بندی هر موضوع به پیاده سازی راحتتر کد هم کمک میکنه. اگه میخوایید در مورد یه بازی کد بنویسین که اعضای اصلی (!) اون تخته و مهره است، باید چند تا کلاس مثل کلاس تخته، مهره (که در این کلاس میتونیم مهره هایی با رنگ های مختلف داشته باشیم)، نحوه کار بازی و ... داشته باشید.
چرا؟
چون اینجوری اگه یه تغییر در کدتون ایجاد بشه و مثلاٌ بخواین به بازی یه مهره زرد رو هم اضافه کنین دیگه لازم نیست رو کل کد دست ببرین و فقط کافیه به کلاس مربوطه (در اینجا مهره) رنگ زرد رو هم اضافه کنین. این یکی از مزیتهای اصلی شی گرایی بود و c این امکان رو نداشت.![]()
** یکی دیگه از نکاتی که رعایتش خیلی خیلی در زبان های برنامه نویسی مهمه شناختن کلمات کلیدی در زبانهای برنامه نویسیه.
چرا؟
چون حتی برنامه نویس های حرفه ای هم ممکنه روزی یکی از این کلمات رو فراموش کنن! مثل خود کلمه key.
و نتیجه چیه؟
اینکه ممکنه به اشتباه اونها رو به عنوان نام متغیرهاتون بذارید و بقیه کار به شانس شما بستگی داره چون ممکنه برنامتون حتی به کامپایل هم نرسه....
اما خب اگه خوش شانس باشید شاید با اجرای برنامه کد به یکی از کدهای ذخیره شده در کامپایلرتون هدایت بشه و شما متوجه بشید که یه جای کار اشکال داشته
در هر صورت ممکنه الان به این فکر افتاده باشیم که:
چطوری میشه این همه کلمه رو از کتابخونه عظیم ++c حفظ کرد؟
باید گفت بعداٌ در برنامه ها شما قادرید در ابتدای کد کلمات کلیدی که در اون کد استفاده کردید رو مشخص کنید ، اینجوری دیگه کد از همه کتابخونه استفاده نخواهد کرد.
** اساس کار در محیط ++c
1)ویرایش کد
2)پیش پردازش
3)کامپایل
4)ارتباط
5)بار گذاری
6)اجرا
البته شاید زیاد مهم به نظر نرسه که ++c دقیقاٌ چی کار میکنه !
اما خب برای یه برنامه نویس حرفه ای این مهمه
** سیستم IO چیست؟
برنامه نویسا اصطلاحاٌ به سیستم ورودی و خروجی IO میگویند
IO ابتدای کلمات Input و Output است.
و شامل کلمات کلیدی پایین میشه
cin
که جریان ورودی استاندارد است و از طریق کیبورد وارد میشود.
cout جریان استاندارد خروجی است و در صفحه نمایش این جریان را داریم .
cerr جریان استاندارد ارورهاست.
** نکته مهم در مورد فایل های سرآمد (header files) در زبان ++C اینه که فقط دونوع پسوند داریم
یکی cpp و دیگری .h
اما در پیش نویس های جدیدتر ++C پسوند .h کاربردی نداره.
خط using namespace std; در کدها نشون میده برنامه نویس داره از کتابخونه استاندارد ++C استفاده میکنه.
ولی باید یادمون باشه برای اعلان کتابخونه ای که خودمون ساختیم دیگه نمیتونیم از اسم std استفاده کنیم و مثلاٌ میتونیم اسم necessary رو به اون بدیم.
توصیه میشه در کدها یه کتابخونه برای خودتون بسازید تا مجبور نباشید از کل کلمات کلیدی با خبر باشید!
راستی اگه کد به صورت std::cout نوشته بشه دیگه لازم نیس از دستور بالا استفاده کنین یعنی از دستور using.
** تابع Inline:
تابع Inline در زبان c هم وجود داشت. اما کار اون چیه؟
شاید در مقاله ها زیاد دیده باشید که اگه از یک عبارت زیاد استفاده بشه نام مختصری به اون میدیم و در نتیجه از اون به بعد به جای عبارت طولانی این نام رو میاریم.
خب، طرز کار Inline هم همین طوره. کلاٌ Inline یعنی توصیه کردن . پس ما داریم به صورتی به کامپایلر توصیه کاهش کد رو میدیم .
این روش مثل فراخوانی یک تابعه، اما سریعتر از اونه
ولی عیب هایی هم داره که بعداٌ راجبش بیشتر میگم.
class Fred {
public:
void f(int i, char c);
};
حالا با استفاده از inline کد به این صورت درمیاد:
inline
void Fred::f(int i, char c)
{
...
}
درست مثل یه تعریف
** ++C مثل C زبانی حساس به حروفه یعنی همون Case Sensitive
return 0; نشان میدهد برنامه با موفقیت ایجاد شده
در مورد عملگر تقسیم یا / : در اون گرد کردن اتفاق نمی افته پس حاصل 7 تقسیم بر 4 1 خواهد بود.
% باقی مانده تقسیم دو عدد رو بر هم نشون میده
ترتیب ارزیابی عملگرها:
پرانتز-باقی مانده تقسیم دو عدد بر هم-ضرب و تقسیم-جمع و تفریق
در ضمن ترتیب ارزیابی از چپ به راسته ولی مثلاٌ اگه در یه عبارت دوتا پرانتز داشته باشیم پرانتز سمت راستی زودتر از پرانتز سمت چپ زودتر اجرا میشه
و نکته آخر این پست:
در مورد شرطها است و عملگر == که در شرطها و برای ارزیابی دو عبارت به کار میره اینکه عبارت اول مساوی عبارت دوم هست یا نه؟
پس اون رو با عملگر = اشتباه نکنیم
با تشکر از دوست عزیزمون میتا