-
1 ضمیمه
معرفی و آموزش C++ به صورت گام به گام
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
فصل اول : مقدمه برنامه نویسی C++
برنامه چیست و وظیفه زبان برنامه نویسی در این میان چیست؟
به طور کلی برنامه به چه چیزی گفته می شود و زبان های برنامه نویسی چه وظیفه ای در تولید یک برنامه دارند برای این سوال باید اینگونه توضیح دهیم که به مجموعه دستوراتی که برای اجرا در اختیار کامپیوتر گذاشته می شود یک برنامه می گویند حال خود برنامه با زبان برنامه نویسی نوشته می شود که در این میان ما به تعریف و توضیح در رابطه با قدرتمند ترین زبان برنامه نویسی یعنی C++ می پردازیم.
- عنوان و آوای این زبان : زبان برنامه نویسی C++ با آوای (سی پلاس پلاس) یکی از جدیدترین و قدرتمند ترین زبان های برنامه نویسی ساخت بشر تا به امروز می باشد که هدف نوشتن برنامه کارا و ساخت یافته و همچنین موضوعی یا (شیء گرا) را برای برنامه نویسان فراهم می کند.
- برخی از قابلیت ها : این زبان دارای قابلیتهای انواع داده ایستا، نوشتار آزاد، چندمدلی، معمولاً زبان ترجمه شده با پشتیبانی از برنامهنویسی ساختیافته، برنامهنویسی شیءگرا، برنامهنویسی جنریک است. ++C به همراه جد خود C از پرطرفدارترین زبانهای برنامهنویسی تجاری هستند.
- سطح این زبان : زبان ++C یک زبان سطح میانی در نظر گرفته میشود. این زبان دارای قابلیت زبانهای سطح بالا و پایین بهصورت همزمان است. زبان ++C توسط بییارنه استراستروپ دانمارکی در سال ۱۹۷۹ درآزمایشگاههای بل (Bell Labs)، برای بهبود زبان سی و بر مبنای آن ساخته شد و آن را “C با کلاس” (C With Classes) نامگذاری نمودند. در سال ۱۹۸۳ به ++c تغییر نام داد. توسعه با اضافه نمودن کلاسها و ویژگیهای دیگری مانند توابع مجازی، سربارگزاری عملگرها، وراثت چندگانه، قالب توابع، و پردازش استثنا انجام شد. این زبان برنامهنویسی در سال ۱۹۹۸ تحت نام ISO/IEC ۱۴۸۸۲:۱۹۹۸ استاندارد شد.
- ساختار برنامه در این زبان چگونه است ؟ هر برنامه معمولاً از تعداد زیادی فایل تشکیل میشود که به هم الحاق میگردند (با دستور include) و به این فایلهای الحاقی سرآیند (Header) میگوییم. فایلهای الحاقی حاوی کدها یا نسخههای اجرایی کلاسها (مجموعه متغیرها و توابع) میباشند که در بدنه اصلی برنامه از آنها استفاده میشود.معمولاً هر کلاس (که تعریف یک نوع دادهای با متدهای مربوط به آن است) را در یک سرآیند مینویسند. هر سرآیند که معمولاً تنها تعاریف (معرفی) کلاس را در خود دارد به همراه فایلهای پیاده سازی به زبان ++C یا پیاده سازیهای کامپایل شده (به صورت فایل اشیا مانند dll یا so یا … ) میتواند به کار برده شود. به مجموعههای یکپارچهای از کلاسهای پیاده سازی شده (به صورت فایلهای سرآیند با پیاده سازیهای کد یا اشیای زبان ماشین) که برای برنامه نویسی به کار میروند، یک کتابخانه ++C گفته میشود و قدرت اصلی این زبان در امکان به کارگیری کتابخانههای آماده میباشد.
- کتابخانه ها در این زبان چگونه است ؟ کتابخانههای بزرگ ++C مانند STL ، MFC ، Qt ، wxWidgets ، Boost و … مجموعه قدرتمندی برای تولید برنامه در این زبان ایجاد کردهاند.
- فرق بين سي C با ++C چيست؟ زبان C زبان برنامه نویسی Structured (ساخت یافته) است اما ++C زبان برنامه نویسی Object Oriented ( شی ء گرا ) می باشد و از لحاظ دستوری فرق زیادی با هم ندارند، اماتفاوت عمده این است که ++C از شی گرایی پشتیبانی می کند که سی C این قابلیت رو ندارد…
امروزه دیگر بدون شی گرایی اصلا نمي توان نرم افزار های بزرگ نوشت.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : مقدمه برنامه نویسی C++ / تعریف ساختار برنامه های نوشته شده توسط C++
در رابطه با ساختار برنامه های نوشته شده توسط C++ باید یه توضیحاتی بدم منظور از ساختار در اینجا انواع فایل های موجود در زبان C++ است.
در این رابطه باید اینگونه اشاره کنیم که در این زبان ما می توانیم از فایل های زیر برای برنامه نویسی استفاده کنیم.
فایل با پسوند (c.) در این زبان : این فایل منبعی برای کد هایی از نوع زبان C هستند.
فایل با پسوند (cpp.) در این زبان : این فایل منبعی برای کد هایی از نوع زبان C و C++ هستند یعنی در هر دو نیز قابل استفاده می باشند.
فایل با پسوند (cxx.) در این زبان : این فایل منبعی برای کد هایی از نوع زبان C و C++ هستند یعنی در هر دو نیز قابل استفاده می باشند.
فایل با پسوند (hpp.) در این زبان : این نوع فایل ها معمولا فایل با عنوان (هدر / سر صفحه) یاد می شوند و و معمولا فقط حاوی اعلان ها می باشند.
فایل با پسوند (h.) در این زبان : این نوع فایل ها معمولا فایل با عنوان (هدر / سر صفحه) یاد می شوند و و معمولا فقط حاوی اعلان ها می باشند.
فایل با پسوند (hxx.) در این زبان : این نوع فایل ها معمولا فایل با عنوان (هدر / سر صفحه) یاد می شوند و و معمولا فقط حاوی اعلان ها می باشند.
فایل با پسوند (hh.) در این زبان : این نوع فایل ها معمولا فایل با عنوان (هدر / سر صفحه) یاد می شوند و و معمولا فقط حاوی اعلان ها می باشند.
فایل با پسوند (++h.) در این زبان : این نوع فایل ها معمولا فایل با عنوان (هدر / سر صفحه) یاد می شوند و و معمولا فقط حاوی اعلان ها می باشند.
انواع فایل هایی که به آنها اشاره شد بسیار است ولی متناسب با محبویت و پشتیبانی کامپایلر ها از این فایل ها در این زبان برای انتخاب آنها مهم است بنا بر این در طی آموزش و تمامی مراحل ما فقط از فایل های h. برای هدر و فایل های cpp. برای منابع استفاده خواهیم کرد.
چرا و چه زمانی باید از فایل های h. و چه زمانی از فایل های cpp. استفاده کنیم ؟ برای پاسخ اینگونه توضیح می دهیم در زبان C++ برای راحتی کار به خاطر پیچیده بودن کد نویسی امکان این وجود دارد که ما توابع ، کلاس ها و تعاریف رو در فایل جدا گانه ای مثل هدر فایل یا همان .h بنویسیم و برای اجرا عملیات و صدا زدن از فایل های cpp.استفاده کنیم البته این اجبار نیست ! شما می توانید در فایل h. و یا فایل cpp.به تنهایی برنامه رو اجرا کنید که معمولا در مثال های کوچک و کوتاه از یک نوع فایل استفاده می شود ولی بسته به نیاز و پیچیدپی در پروژه بهتر است استفاده از امکاناتی که این زبان در اختیار ما می گذارد به حد اکثر برسانیم.
-
1 ضمیمه
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : ساده ترین برنامه توسط این زبان
همانطور که می دانید در هر زبان برنامه نویسی می توان ساده ترین برنامه را در چند خط کوتاه ایجاد و نتیجه رو نمایش داد برای اینکه بهتر و از مراحل ابتدائی ساختار تولید برنامه در C++ رو مشاهده کنیم به صورت زیر ساده ترین کد نویسی به زبان C++ و البته در نسخه 11 رو توضیح می دهم.
به صورت زیر :
و کد زیر :
//Author : Kambiz Asadzadeh
#include <iostream>
// This program prints Welcome to C++ 11 Programming language!
using namespace std;
int main()
{
std::cout << "Welcome to C++ 11 Programming language!\n";
return 0;
}
این یک برنامه ساده که فقط عمل نمایش یک متن را در خروجی نمایش داده است که به صورت زیر به تجزیه و تحلیل خط به خط آن می پردازیم.
در ابتدای کد اصولا توضیحاتی در رابطه با فایل ، پروژه ، کد و یا قوانین کپی رایت و ... رو توسط کاراکتر های // می دهند.
دستور include در سطر اول برای برنامه هایی که دارای خروجی هستند ضروری است که در این کد این دستور یک فایل خارجی به نام iostream را که خودش یک هدر به صورت iostream.h می باشد وارد کرده که حاوی اطلاعاتی در مورد شیء cout می باشد.
شکل کلی include به صورت زیر است البته دقت کنید در C++ 11 نیازی به نوشتن پسوند فایل برای کتابخانه و فایل های اصلی نیست و پارانتز ای زاویه ای <> بخشی از نام فایل نمی باشند و تنها وظیفه آنها این است که مشخص میکند این فایل کتابخانه استاندارد C++ است.
#include <نام فایل>
در سطر دوم توضیحی در رابطه با خروجی دادیم که توسط کاراکتر های // مشخص شده و معمولا برای آگاهی بیشتر برنامه نویس و یا توسعه دهندگان در دفعات بعدی برای درک و یاد آوری دوباره می توان استفاده کرد.
// This program prints Welcome to C++ 11 Programming language!
در این مکان استفاده از namespace یعنی فضای نام برای برخی از کلاس ها و توابع از پیش تعریف شده مهم است برای مثال در نسخه های جدید C++ این مهم است که برای هرچه بهتر عمل کردن انواع کتابخانه ها مانند Boost و std که در بعضی از کامپایلر ها بدون تعریف فضای نام امکان دسترسی به جزئیات و اشاء موجود در کلاس ها موجود نیست بنابر این با تعریف به صورت زیر ما میتوانیم از شیئ cout بدون فراخوانی std استفاده کنیم.
cout << "Welcome to C++ 11 Programming language!\n";
در صورتی که اگر از فضای نام استفاده نکرده اید باید در کد خود به صورت زیر شیئ cout رو صدا بزنید مانند نمونه مثال زیر :
std::cout << "Welcome to C++ 11 Programming language!\n";
در سطر سوم سر آمد تابع اصلی یعنی main قرار گرفته و تنها تابعی در C++ است که مکان شروع برنامه را به کامپایلر اطلاع می دهد. و همچنین حضور () پرانتز ها در مقابل تابع ضروری می باشد.
int main()
حال در سطر بعدی نماد های { و } وجود دارد که این نماد ها بدنه تابع main را دربر میگیرند و در تمامی برنامه های C++ بکار گرفته می شود.
در رابطه با داخل بدنه تابع دستور زیر قرار دارد :
cout << "Welcome to C++ 11 Programming language!\n";
این دستور به سیستم اطلاع می دهد که پیام Welcome to C++ 11 Programming language! را به شیء cout به آوای (سی - اُوت) ارسال نماید.
نام cout برگرفته شده از Console output می باشد.
و همچنین عملگر >> عملگر درج نام دارد و وظیفه آن درج پیام در مجرای خروجی می باشد و در نهایت آن نماد های نقطه ویرگول ; به آن دستور خاتمه میدهد و همچنین باید در نظر داشته باشید در C++ تمام دستورات توسط این نماد خاتمه میابند.
مجرای خروجی cout دقیقا مثل یک گذرگاه عمل میکند که خروجی را به صورت بایت به بایت از برنامه به صفحه نمایش یا سایر وسایل خروجی انتقال می دهد.
نماد n\ معرف کاراکتر newline همان سطر جدید می باشد که متشکل از کاراکتر n و \ است در صورتی که شما در آخر رشته این نماد را وارد نمایید به سیستم اعلام میکند که بعد از رسیدن به این خط یک سطر جدیدی را آغاز کند و این به معنی این است که این سطر به پایان رسیده است ! در غیر این صورت اگر شما موارد دیگری را چاپ کنید پشت سر هم چاپ خواهند شد به صورت زیر ...
Welcome to C++ 11 Programming language!Welcome to C++ 11 Programming language!
ولی در صورت استفاده از نماد n\ این مشکل رفع می شود.
که در نهایت خروجی برنامه به صورت زیر خواهد بود :
Welcome to C++ 11 Programming language!
و در نهایت دستور return 0 برنامه را خاتمه داده و کنترل را به سیستم عاملی که روی سیستم کامپیوتری موجود است انتقال میدهد که در اینجا عدد 0 به منظور پایان موفقیت آمیز برنامه مشخص شده است.
پس در نتیجه بعد از این عمل برنامه خروجی را نمایش و خارج خواهد شد.
در کل کوتاه ترین برنامه در C++ به صورت زیر است :
int main(){}
که شامل نام تابع و نوع تابع و در نهایت بدنه تابع می باشد که هیچ عملیاتی را انجام نمیدهد ولی به سادگی خود پیکر اصلی برنامه های C++ را تشکیل می دهد.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی عملگر خروجی
در C++ برای چاب لازم است توسط عملگر >> که عملگر درج یا خروجی نام دارد اشاء را به مجرای خروجی درج کنیم که به عنوان مثال شیئ cout یک مجرای خروجی است و برای هدایت موارد لازم برای این مجرا باید از علامت >> را استفاده کنیم تا اشیاء را یه سمت چپ خود ارسال کند به عنوان مثال در سمت راست این علامت اشاء مورد نظر برای چاپ قرار میگیرند که آن ها را دریافت از سمت چپ خود به شیء مجرا یعنی cout وارد میکند تا شیء cout خروجی را به صفحه نمایش هدایت کنند.
در ضمن مجرای cout که وظیفه انتقال اشیاء برای نمایش دادن در صفحه خروجی را دارد قابلیت دریافت چندگانه اشایء رو نیز دارد مثلا در صورتی که چندین بار از علامت خروجی یا درج استفاده کنید آنگاه به ترتیب تمام اشیاء به cout وارد شده و در نهایت چاپ می شوند.
برای درک بیشتر این موضوع به مثال های زیر توجه کنید :
بنابراین اگر ما عدد 100 رو به این مجرا ارسال کنیم در نمایشگر یا سیستم خروجی عدد 100 نمایش داده خواهد شد.
//Author : Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
cout << "Hello ," << " world." << "\n";
return 0;
}
به این کد توجه کنید یکجا من متن رو نوشتم و در نهایت چاپ می شود به صورت زیر :
cout << "Hello , world.\n";
حالا به این کد توجه کنید در این قسمت من برای هر بخش یک بار از جدا کننده استفاده کردم و ترتیب وارد کردن شی ء که در اینجا رشته هست به ترتیب وارد cout شده و در نهایت همانند کد بالا نتیجه رو نمایش خواهد داد.
cout << "Hello ," << " world." << "\n";
در اینجا من چون نخواستم به صورت یکجا توسط یک درج کننده رشته Hello , world. رو به cout وارد کنم از نماد مجدد برای درج استفاده کردم ولی باید دقت کنید که قوانین جدا کننده رو نیز رعایت کنید.
و همچنین باید دقت کنید اولویت بندی در این حالت به سه قسمت تقسیم شده که شامل Hello و world و n\ هستش و به ترتیب به اولویت چپ به راست یعنی اول Hello بعد world. و در نهایت سطر جدید توسط n\ مشخص و به خروجی ارسال می شود که نتیجه در خروجی به صورت زیر خواهد بود :
.Hello , world
شکل کلی مجرای خروجی cout به صورت زیر خواهد بود و منظور از expression همان عبارت و یا بیانیه می باشد.
cout << expression << expression << expression << ...... << expression;
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی کاراکتر ها و الفاظ رشته ای
در رابطه با literal یا همان الفاظ رشته ای توضیح به صورت زیر است :
برای مثل همان کلمه Hello که در اینجا توسط علامت های نقل قول از هر دو طرف محدود شده است به صورت زیر :
"Hello"
در رابطه با کاراکتر باید بگوییم یک کاراکتر عضوی است از مجموعه ای از کاراکتر ها یا یکی از حروف الفبا که کامپیوتر کاراکتر ها را به صورت کاراکتر های اسکی ASCII استفاده می کند.
حال برای مثال کاراکتر 'n/' یک کاراکتر غیر قابل چاپ است که متشکل از حرف n و \ بک اسلش می باشد کاراکتر های زیادی در C++ وجود دارند که به این شیوه ساخته شده اند مانند 't/' که وظیفه ستون بندی را دارد.
پس به طور واضح بخوام بگم تمامی کاراکتر هایی که ما بین دو علامت '....' کوتیشن قرار می گیرند به عنوان کاراکتر های غیر قابل چاپ شمای می آیند ولی در صورت استفاده از علامت "...." دابل کوتیشن مقدار موجود در آن را از نوع الفاظ رشته ای در نظر گرفته ایم.
یعنی بهترین روش برای استفاده از کاراکتر های غیر قابل چاپ که وظیفه آنها انجام عملی است بهتر است از کوتیشن '....' استفاده کنیم مانند 'n/' که وظیفه آن خاتمه دادن به سطر جاری و ارسال به سطر جدید است.
به عنوان مثال به کد زیر توجه کنید :
cout << "Hello, " << 'w' << 'o' << 'r' << "l" << 'd' << '.' << "\n";
این دستور مشخص است که هفت شیء را به مجرای cout ارسال می کند که دو تای آن ها از نوع لفظ رشته ای یعنی Hello و l هستند و 5 تای دیگر از نوع کاراکتر های ثابت یعنی 'w' , 'o' , 'r' , '.' و 'n/' هستند.
و یا میتوان دستور بالا را با دستور زیر جایگزین کرد :
cout << "Hello, " << "w" << "o" << "r" << "l" << "d" << "." << "\n";
در این دستور 7 رشته لفظی به cout ارسال می شود.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : طول رشته
همانطور که می دانید طول یک رشته را بر اساس تعداد کاراکتر های موجود در آن مشخص می کنند برای مثال طول حرف (لفظ) رشته "HELLO" دقیقا 5 می باشد.
حالا برای مشخص کردن طول رشته در C++ تابعی از پیش تعریف شده داریم به نام strlen() که میتوان از آن برای تعیین طول رشته استفاده کرد به صورت زیر :
//Author : Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
cout << strlen("Hello, world.") << "\n";
return 0;
}
اینجا یک مورد جالبی هستش که باید ریز بین باشید تا اینجور موارد رو تشخیص بدهید.
در این خط :
cout << strlen("Hello, world.") << "\n";
من چرا از n\ در ادامه همان world. استفاده نکردم و ترجیح دادم خارج از بدنه strlen توسط یک عملگر درج جداگانه آن را ارسال کنم ؟! دلیلش این هستش که در داخل strlen خود n/ شامل کاراکتر ها می باشد و به جای طول رشته 13 طول رشته 14 را نمایش می داد.
حالا کد زیر را مشاهده نمایید آیا خالی بودن هم به عنوان داشتن مقدار و طول رشته محسوب می شود ؟
cout << strlen("") << "\n";
در جواب باید بگیم خیر ! خروجی 0 را نمایش خواهد داد زیرا رشته تهی (خالی) همیشه صفر (0) است.
لازم بذکر است تابع از پیش تعریف شده strlen در فایل جدا گانه ای به نام string.h تعریف شده است که در ویرایش های قبلی C++ باید این هدر رو فراخوانی نمایید ولی در نسخه 11 چنین نیازی نیست که برای فراخوانی توابع از پیش تعریف شده C++ مجددا اقدام به وارد کردن ان نمایید.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی نحوه توضیحات نویسی در کد ها
در برنامه نویسی C دو نوع توضیح وجود داره که یک روش توضیح استاندارد هستش و با (اسلش / ستاره) */ آغاز میشه و با نماد (ستاره / اسلش) /* خاتمه میابه و هر چیزی که در بین این تو نماد نوشته می شود توسط کامپایلر نادیده گرفته می شود مانند مثال زیر :
1. /*This is C standard comment*/
و همچنین در روش دوم استاندارد C++ هستش که با دوبار اسلش // آغاز شده و تا پایان سطر ادامه داره همانند توضیح زیر :
2. //This is C++ standard comment line 2
3. //This is C++ standard comment line 3
در رابطه با استفاده از دو روش توضیح نویسی در برنامه نویسی اجباری در انتخاب و یا استفاده از آنها نیست ولی در رابطه با چگونه و چه زمانی استفاده کردن از این دو روش به صورت زیر براتون مثال میزنم :
/************************************************\
* This is a free program *
* Write by : Kambiz Asadzadeh *
* Create date : 2014 – 01 - 27 *
* Version : 1.0 *
\************************************************/
#include <iostream> // We need this library to use cout
// This print message: “Hello, world.”
و یا به صورت زیر :
1. //------------------------------------------------------------------------------------------------------------------------------
2. // This is a free program
3. // Write by : Kambiz Asadzadeh
4. // Create date : 2014 – 01 - 27
5. // Version : 1.0
6. //------------------------------------------------------------------------------------------------------------------------------
7. #include <iostream> // We need this library to use cout
8. // This print message: “Hello, world.”
استفاده از هر دو حالت امکان هستش حالا این وسط برنامه نویس انتخاب میکنه که از چه روشی برای توضیح نوشتن استفاده کنه.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : متغیر ها و اشیاء و معرفی آن ها
برای شروع برنامه نویسی مهمترین و ابتدائی ترین قسمتی که یک برنامه نویس باید با اون آشنایی کامل داشته باشه متغیر ها و اشیاء و همچنین نحوه تعریف اینهاست ؛ همانطور که مشخص است در برنامه نویسی برای استفاده از حافظه کامپیوتر و ذخیره اطلاعات و مقادیر لازم در آن باید قبل از هرچیزی نوع و نام آن را مشخص نماییم تا بر اساس آن مکانی برای متغیر ما در نظر گرفته شود و در کل مکانی را که برای اطلاعات در آن ذخیره میشود متغیر میگوییم.
در برنامه نویسی قوانین و اصول خاصی وجود دارد که باید بر اساس آن متغیر را تعریف کرد که متداول ترین نوع تعریف متغیر شیوه انتساب می باشد به صورت زیر :
یعنی در اینجا type یکی از انواع داده ها در C++ است و variable عبارتی است که ما به عنوان نوع تعریف شده در نظر خواهیم گرفت.
type variable;
variable = value;
این شکل در ابتدا بخش expression را ارزیابی نموده و سپس مقدار آن را به variable نسبت می دهد به این معنی که مقدار expression هر چیزی باشد از نوع variable تعیین شده خواهد بود.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : متغیر ها و اشیاء و معرفی آن ها
در اینجا بر اساس type برای کامپایلر مشخص می کنیم که نوع آن از چه نوعی خواهد بود و عنوان متغیر چه چیزی خواهد بود ؛ برای مثال در سطر اول متغیر زیر با نام X از نوع int تعریف شده است و در سطر دوم مقدار 65 برای متغیر از نوع صحیح داده شده است که بازه آن بین 32,768- تا 32,767 است.
int X;
X = 65;
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : متغیر ها و اشیاء و معرفی آن ها
زبان برنامه نویسی C++ یک زبان قدرتمند از نوع موضوعی یا شیئ گرا است به این صورت که می توان توسط این زبان هر گونه سیستمی را شبیه سازی کرد زیرا شما می توانید با در نظر گرفتن هر قسمت از محصول را در آن تعریف و به صورت انتساب مقادیر و انواع را مشخص کنید.
حال بررسی خواهیم کرد که چگونه میتوان متغیر را در C++ تعریف کنیم.
در این مثال خواهیم دید که میتوان متغیر را در یک خط از دستور در چندین حالت و عناوین مختلف تعریف کرد ما متغیر های x و y را از نوع int عدد صحیح در نظر میگیریم به صورت زیر :
int x , y;
این یعنی بدون دوباره نویسی دستور type (نوع متغیر) می توانیم تعداد دلخواه متغیر را از نوع مورد نظر در نظر بگیریم به طور کلی شکل آن به صورت زیر است :
type var1, var2, var3, …, varN;
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : متغیر ها و اشیاء و معرفی آن ها
به طور کلی متغیر ها بعد از نوع خود یعنی (type) قرار میگیرند و با استفاده از جدا کننده کاما (,) از هم جدا می شوند در مثال زیر چندین متغیر در حالت ها مختلف تعریف شده است.
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x, y;
int total;
x = 128; y = 128;
total = x + y;
cout << "Total is:" << total << "\n";
return 0;
}
خروجی برنامه زیر در نهایت به صورت زیر نمایش داده خواهد شد :
Total is: 256
همانطور که مشاهده می کنید در سطر 11 و 12 متغیر ها را از نوع صحیح تعریف کردیم و در خط 13 مقداری را برای هر کدام به صورت جدا گانه مشخص نمودیم حال در سطر 15 در متغیر از قبل تعریف شده مجموع مقادیر موجود در x و y را وارد میکنیم و در نهایت با ارسال مقدار به مجرای خروجی آن را نمایش می دهیم.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انواع واژه های کلیدی و شناسه های C++
در برنامه نویسی شکل آن را میتوان گفت از مجموعه ای نشانه ها ساخته شده است برای مثال اسامی متغیر ها , ثوابت , واژه های کلیدی , عملگر ها و علائم نقطه گذاری و ... همگی نشانه هستند.
برای مثال :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x = 65;
cout << x << endl;
return 0;
}
در کد نمونه ما 15 نشانه داریم ابتدا سطر اول و دوم که شامل توضیح و پیش پردازنده می باشند و جزئی از کد به حساب نمی آیند ولی main , ) , ( , { , } , int , x , = , 65 , ; , cout , << , endl , return , 0 و { می باشند ؛ که در اینجا نشانه x یک متغیر است نشانه های 65 , 0 و endl ثابت هستند نشانه های int , return عضوی از مجموعه واژه های کلیدی می باشند ؛ نشانه های = و << عملگر هستند و نشانه های ) و ( و {} و ; از علائم نقطه گذاری می باشند.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انواع واژه های کلیدی و شناسه های C++
واژه های کلیدی چیست ؟ واژه کلیدی واژه حفاضت شده نیز نامیده می شود ؛ این واژه ها قبلا توسط زبان برنامه نویسی برای اهداف ویژه و خاصی حفاظت شده اند و برنامه نویس هرگز نمی تواند آنها را به عنوان متغیر یا اهداف دیگری استفاده نمایند.
همچنین به طور کلی می توان گفت : شناسه رشته ای از کاراکتر های الفبایی , عددی است که با کاراکتر های الفبایی آغاز می شود که تعداد آن ها 53 تا می باشد که یکی از آنها کاراکتر زیر خطی ( _ ) و بقیه آنها حروف الفبا می باشند و کاراکتر های الفبایی عددی افزون بر 53 کاراکتر الفبایی , 10 کاراکتر رقمی (0 , 1 , 2 , … , 9) را نیز دربر دارند. بنابراین main() , int , x , cout و endl و حتی واژه هایی چون Stack , x1,y1 , FirstName و یا the_lord_of_programmers شناسه می باشند همچنین باید توجه کنید در C++ نسبت به حروف کوچک و بزرگ کاملا حساس است و آنها را از هم به صورت جدا تشخیص می دهد بنابر این شناسه memory با شناسه Memory شناسه های متفاوتی هستند.
همچنین باید توجه داشته باشید شناسه ها برای نام گذاری متغیر ها , توابع , کلاس ها و نام گذاری ساختار بکار می رود و باید توجه داشته باشید شناسه های مانند endl نوعی شناسه ثابت هستند و شناس های int یک نوع واژگان کلیدی در C++ می باشد و درواقع بخشی از خود زبان برنامه نویسی هستند.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انواع واژه های کلیدی و شناسه های C++
در C++ واژه های کلیدی از پیش تعریف شده وجود دارد که قبلا در زبان C وجود داشت به صورت زیر :
auto const double float int short struct unsigned
break continue else for long signed switch void
case default enum goto register sizeof typedef volatile
char do extern if return static union while
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انواع واژه های کلیدی و شناسه های C++
و همچنین واژه هایی که فقط در زبان C++ وجود دارد به صورت زیر آمده است :
asm dynamic_cast namespace reinterpret_cast try
bool explicit new static_cast typeid
catch false operator template typename
class friend private this using
const_cast inline public throw virtual
delete mutable protected true wchar_t
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انواع واژه های کلیدی و شناسه های C++
و در نهایت جدیدترین واژه های کلیدی که در ویرایش 11 آمده است به صورت زیر می باشد :
alignas constexpr static_assert
alignof decltype thread_local
char16_t noexcept override
char32_t nullptr final
در رابطه هرکدام از این ها توضیحات کامل ارائه خواهد شد.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی نسبت دادن مقادیر و ارزش در زمان اعلان
مقدار دهی اولیه به یک متغیر انتساب یک مقدار (ارزش) به متغیر در زمان اعلان ان می باشد و مشابه عمل انتساب از نماب تساوی استفاده می شود بدین معنی که عبارت ابتدا ارزیابی می شود و سپس مقدار آن شیء سمت چپ عملگر انتساب منسوب می شود.
توجه : بهترین زمان برای مقدار دهی به متغیر هنگام اعلان متغیر می باشد.
در مثال زیر به مقدار دهی متغیر ها توجه کنید :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x = 65;
int y;
y = 255;
int max;
max = x + y;
cout << max << "\n" << endl;
return 0;
}
در این کد مقدار x, y و max بر اساس نوع آن یعنی عدد صحیح داده شده است و در زمان اعلان مقدار دهی شده اند و در نهایت مقدار دو متغیر x و y جمع و به متغیر max نسبت داده شده است.
به این نوع تعریف متغیر دقت کنید :
int x1, x2, x3 = 65, x4, x5, x6 = 255;
در این روش متغیر های x1 تا x6 از نوع int تعریف شده اند ولی در زمان اعلان فقط دو متغیر x3 و x6 مقدار دهی می شوند !این یعنی علاوه بر اینکه متغیر ها تعریف می شوند بلکه در موقع تعریف آن ها می توان مقدار دهی را نیز انجام داد با این تفاوت که مقدار داده شده فقط به متغیر سمت چپ آن مقدار نسبت داده می شود.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
با سلام ؛ همونطور که میدونید بنده هم این تاپیک رو قصد دارم ببرم جولو و همچنین تاپیک C++ همراه با Qt ...
خیلی دوست داشتم ادامه مطالب رو دقیقا مثل کتابم ادامه بدم ولی اینطور ادامه بدم 100 سال دیگه هم تموم نمیشه به خاطر کمبود وقت و همچنین مشغول بودن روی چندین پروژه از این پست به بعد همه مطالب رو تا حدی که لازم هست توضیح و خواهم نوشت همراه با مثال ها...
امروز نوبته معرفی انتساب های زنجیره ای / درونی هستش به صورت زیر میریم سر اصل مطلب...
ادامه فصل اول : معرفی انتساب های زنجیره ای و درونی
انتساب به چه چیزی گفته می شود و چگونه میتوان از آن استفاده کرد : در کل انتساب به عبارتی گفته می شود که در هر صورتی شامل یک عبارت باشد.
به عنوان مثال من متغیری در نظر میگیرم با نام x و مقدارش برابر 64 حالا یک متغیری ایجادد میکنم با نام y و مایلم بدون تعریف مستقیم مقدار به y مقدارش رو از x بگیریم به صورت زیر :
int x, y;
x = 128;
y = (x = 128);
اینجا من چکار کردم ابتدا متغیر ها تعریف شده و سپس مقدار دهی به x و در خط بعدی مقدار y رو برابر کردم یا مقدار موجود در x...
این بدین معنی است که مقدار y دقیقا برابر مقداری است که به x داده شده است ؛ این نوع روش مقدار دهی را انتساب زنجیره ای می گویند این بدین معنی است که مقدار y دقیقا برابر مقداری است که به xاین نوع روش مقدار دهی را انتساب زنجیره ای می گویند.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انتساب های درونی
این نوع انتساب هارو معمولا بدون پرانتز () و یا به صورت مرکب می نویسند.
برای مثال به صورت زیر :
y = x = 128;
در این مثال من سعی کردم یک مقدار رو به دو متغیر x و y به صورت همزمان تخصیص بدم که به این روش میگیم انتساب مرکب یا درونی.
و یک مثال جامعتر از این بخش :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x1, x2, x3 = 65, x4, x5, x6 = 255;
int x, y;
y = (x = 128) + 64;
cout << " Y = (" << y << ") X = (" << x << ")\n" << endl;
return 0;
}
میبینید من در یک خط مقادیر x1 تا x6 رو یکجا 255 قرار دادم و در خط بعدش...
در این به روش انتساب مرکب ابتدا مقدار 128 به x دادم و سپس مقدار x یعنی 128 در خارج از پرانتز به علاوه مقدار 64 میکنم و مقدار 192 رو نهایت به y نسبت میدم.
خروجی میشه به صورت زیر :
Y = (192) X = (128)
حالا به جای این روش ها روش زیر هم هستش :
int x = 128;
int y = x + 65;
ابتدا x رو برابر 128 کردم و بعد y رو برابر مقدار x به علاوه 65 قرار دادم.
مزیت استفاده از انتساب های درونی در خوانا تر شدن آن ها کمک میکند برای مثال بیشتر مواقع بهتر است مقدار را به صورت زیر بدیم :
int x1, x2, x3 = 65, x4, x5, x6;
x1 = x2 = x3 = x4 = x5 = x6 = 1024;
چکار کردم ابتدا x1 تا x6 رو از نوع int در نظر گرفتم و سپس هر یک رو به روش تو درتو یا همون درونی برابر 1024 قرار دادم.
به همین راحتی...
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انتساب های درونی
بزارید یک مثال به صورت خطا بزنم ...
در مثال قبلی به مقدار زیر توجه کنید :
int x1, x2, x3 = 65, x4, x5, x6;
x1 = x2 = x3 = x4 = x5 = x6 = 1024;
حالا به صورت زیر...
int x1 = x2 = x3 = x4 = x5 = x6 = 1024; // Error
در کد دوم ما به صورت صحیح مقادیر رو تعریف و برای هر کدام مقدار دهی نکرده ایم پس مسلما خطا خواهد بود !
حالا علت خطا برای این روش این است که مقدار دهی اولیه همان انتساب نیست و این دو عمل مشابه هم هستند بنابر این کامپایلر به شیوه های متفاوتی با آنها رفتار میکنه که شکل صحیح این عبارت به صورت زیر هستش...
int x1 = 1024, int x2 = 1024, int x3 = 1024, int x4 = 1024, int x5 = 1024, int x6 = 1024; // OK
البته این روش های درونی رو خیلی ها به خاطر خوانا نبودنش استفاده نمیکنن ولی خب این ها روش هایی هستند که در C++ استفاده میشه.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی کاراکتر خاتمه دهنده (نقطه , ویرگول و سیمیکالون)
در برنامه نویسی C++ نقطه ویرگول (;) نقش پایان دهنده دستور را بر عهده دارد یعنی در این زبان تمام دستورات باید با نقطه ویرگول خاتمه یابند ولی این قانون شامل همه قسمت ها نخواهد شد برای مثال مواردی مانند کد زیر که با علامت شارپ(#) آغاز شده اند شامل نمیشوند.
مثلا کد زیر :
#include <ios>
در این قسمت ما از علامت های خاتمه دهنده استفاده نمیکنیم که به طور کلی انواع حالت های کد نویسی در C++ همشون شامل خاتمه دهنده نمیشوند مثلا #define ها و یا #include ها این ها نیستند پیش پردازنده هستند و فقط وظیفه این ها راهنما برای پیش پردازنده / Preprocessor را دارد.
به مثال زیر توجه کنید :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x;
cout << x << "\n" << endl;
return 0;
}
کاملا مشخصه که در هر قسمتی از کد ها و دستورات که از نقطه ویرگول استفاده شده دستور خاتمه پیدا کرده و موارد دیگر مانند توضیحات و راهنماهای پیش پردازنده شامل دستورات برنامه نویسی نیستند و نیازی به نقطه ویرگول ندارند.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی سبک و روش برنامه نویسی در C++
خب یکی از مهمترین موارد که خیلی مشتاقم توضیح درست حسابی در رابطه باهاش بدم همین قسمته که خیلی ها با این قسمت روشن خواهند شد...
در برنامه نویسی با زبان C++ برنامه نویس کاملا آزاد هستش بدین صورت که هیچ ضرورتی در مورد مکان جایگذاری عناصر در یک خط یا صفحه وجود ندارد و برنامه نویس در رابطه با این مورد کاملا آزاد است ولی با این وجود برنامه نویسان خبره میدانند که اعمالی چون نوشتن, اشکال زدایی و پشتیبانی موفق برنامه با بکار گیری پیوسته یک شیوه برنامه نویسی خوانا, بسیار آسانتر می شود.افزون بر اینکه چنانچه برنامه نوشته شده شما با قوانین و شیوه استاندارد برنامه نویسی مطابقت داشته باشد خواندن آن برای دیگر برنامه نویسان و توسعه دهندگان آسانتر خواهد بود زیرا در بعضی از موارد نیاز به توسعه همه جانبه برنامه توسط برنامه نویس اصلی و دیگر توسعه دهندگان وجود دارد که در این حالت منابع را به صورت سورس باز (Open source) به اشتراک می گذارند که در این حالت داشتن یک شیوه هماهنگ بسیار مناسب برای درک کد های نوشته شده می باشد و در سرعت توسعه برنامه تاثیر مفیدی خواهد داشت.
برخی از قوانینی که اکثر برنامه نویس های C++ آنها را رعایت می کنند به صورت زیر است :
• در ابتدای فایل های خود توضیحاتی را در رابطه با وظیفه فایل در نظر می گیرند.
• تمام دستورات پیش پردازنده مانند #include را در ابتدای برنامه خود قرار می دهند.
• هر دستور را در یک خط جدید می نویسند.
• برای تمامی دستورات یک بلوک تو رفتگی ایجاد می کنند.
• در دو سوی هر عملگر یک فاصله قرار می دهند مانند : x = 128.
• توضیحات مربوط به هر تابع یا کلاس را در رابطه با نوع کار آن می نویسند.
تمامی این قوانین در برنامه های اکثر برنامه نویسان خبره قابل مشاهده است و همچنین این قوانین در همین کتاب رعایت شده است.
البته شاید این موارد رو در بیشتر زبان های مشابه مثلا PHP که شباهت زیادی به C++ داره ببینید ولی توجه کنید که برای هر زبانی مثلا استفاده از علامت های خاتمه دهنده ضرورتی نداره.
پس به غیر از این قوانین در برنامه نویسی بهتر است قوانین نام گذاری و شیوه نوشتاری را رعایت کنیم به عنوان مثال بهتر است عنوان و نام های متغیر ها را به صورت درست انتخاب کنیم و همچنین آن ها را با اسامی کوتاه در نظر بگیریم تا امکان بروز خطا در هنگام تایپ آن ها به حد اقل برسد.اما در عین حال از اسامی استفاده کنید که بیانگر عملکرد متغیر باشد همچنین این قوانین را نه تنها در متغیر بلکه در نام گذاری توابع, ساختار ها و کلاس های خود رعایت کنید به این سبک نام گذاری و کد نویسی "خود استنادی" / Self-citation می گویند.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی سبک و روش برنامه نویسی در C++
در رابطه با نام گذاری های خاص هم می توان گفت به جز نام گذاری های عمومی که تقریبا آن ها را با حروف کوچکتر می نویسند در بعضی مواقع که عنوان ترکیبی از چند کلمه باشد لازم است حروف اول آن ها را بزرگ انتخاب کنیم مانند مثال های زیر :
int initial;
int maxSum;
int maxUploadSize;
خواندن اسامی بالا از maxsum و maxuploadsize آسانتر است و همچنین برای خواناتر کردن اسامی طولانی میتوانیم با استفاده از زیر خطی(Underscore) استفاده نماییم به صورت زیر :
int initial;
int max_Sum;
int max_Upload_Size;
در این روش ما توسط علامت های زیر خطی Underscore نام متغیر رو خواناتر کردیم.
همانطور که میدونید زبان C++ کاملا به کاراکتر های کوچک و بزرگ نیز حساس هستش پس بنابراین int x با in X کاملا متفاوت است البته از نظر نوع هر دو یکی هستند ولی از لحاظ نام خیر !!!
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انواع اعداد صحیح (Integer)
در رابطه با integer باید گفت که یک عدد صحیح و کامل بین عدد - 0, 1, -1, 2, -2, 3, -3, … می باشد یک عدد صحیح بدون علامت, یک عدد صحیح نام منفی – از بین اعداد - 0, 1, 2, 3, 4, … است که در زبان C++ تعداد اعداد صحیح 9 تا می باشد به صورت زیر :
char short int unsigned short int
signed char int unsigned int
unsigned char long int unsigned long int
همچنین می توانید با فرا خوانیcstdint به انواع صحیح در نسخه 11 که توسعه یافته اند دسترسی داشته باشید.
به صورت زیر :
#include <cstdint>
int8_t int_fast8_t int_least8_t intmax_t
int16_t int_fast16_t int_least16_t intptr_t
int32_t int_fast32_t int_least32_t
int64_t int_fast64_t int_least64_t
uint8_t uint_fast8_t uint_least8_t unitmax_t
uint16_t uint_fast16_t uint_least16_t uintptr_t
uint32_t uint_fast32_t uint_least32_t
uint64_t uint_fast64_t uint_least64_t
معمولا تفاوت این انواع در بازه مقادیر هستش این بازه ها معمولا به نوع سیستم مورد استفاده قرار میگیرند برای مثال در سیستم های Dos PC ها بازه int بین 32, 768 - تا 32, 768 است ولی در ایستگاه های کاری Unix به مقادیر 2, 147, 483, 648 - تا 2, 147, 483, 648 محدود می شوند؛ پس وقتی ما در ویندوز مینویسیم int x بازه در نظر گرفته شده این در لینوکس که بر پایه یونیکس هستش کاملا متفاوت هست.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انواع اعداد صحیح (Integer)
خب من در نظر دارم در یک مثال بازه انواع داده هارو چاپ کنم به صورت زیر...
از دستور پیش پردازنده زیر کمک میگیرم..
#include <limits>
//Author: Kambiz Asadzadeh
#include <iostream>
#include <cstdint>
#include <limits>
using namespace std;
int main()
{
cout << "Minimum char = " << CHAR_MIN << endl;
cout << "Maximum char = " << CHAR_MAX << endl;
cout << "Minimum short = " << SHRT_MIN << endl;
cout << "Maximum short = " << SHRT_MAX << endl;
cout << "Minimum int = " << INT_MIN << endl;
cout << "Maximum int = " << INT_MAX << endl;
cout << "Minimum long = " << LONG_MIN << endl;
cout << "Maximum long = " << LONG_MAX << endl;
cout << "Minimum signed char = " << SCHAR_MIN << endl;
cout << "Maximum signed char = " << SCHAR_MAX << endl;
cout << "Minimum unsigned char = " << UCHAR_MAX << endl;
cout << "Maximum unsigned short = " << USHRT_MAX << endl;
cout << "Minimum unsigned = " << UINT_MAX << endl;
cout << "Maximum unsigned long = " << ULONG_MAX << endl;
return 0;
}
نتیجه در خروجی به صورت زیر خواهد بود :
البته چون من از سیستم ویندوز استفاده کردم خروجی فرق میکنه.
Minimum char = -128
Maximum char = 127
Minimum short = -32768
Maximum short = 32767
Minimum int = -214748364
Maximum int = 2147483647
Minimum long = -214748364
Maximum long = 2147483647
Minimum signed char = -128
Maximum signed char = 127
Minimum unsigned char = 255
Maximum unsigned short = 65535
Minimum unsigned = 4294967295
Maximum unsigned long = 4294967295
خب اینم ویرایشش که روی سیستم لینوکس خروجیشو گرفتم :
Minimum char = -128
Maximum char = 127
Minimum short = -32768
Maximum short = 32767
Minimum int = -2147483648
Maximum int = 2147483647
Minimum long = -9223372036854775808
Maximum long = 9223372036854775807
Minimum signed char = -128
Maximum signed char = 127
Minimum unsigned char = 255
Maximum unsigned short = 65535
Minimum unsigned = 4294967295
Maximum unsigned long = 18446744073709551615
اگه دقت کنید متفاوت هست بازه ای که روی سیستم های لینوکس و ویندوز در نظر گرفته میشه.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انواع اعداد صحیح (Integer)
همچنین انواع توسعه یافته که در زبان های C++ 11 / 14 فراهم شده اند به صورت زیر می باشد که البته گفتم برای استفاده از انواع توسعه یافته در C++ 11 به بعد باید از پیش پردازنده زیر استفاده کنید :
#include <cstdint>
//Author: Kambiz Asadzadeh
#include <iostream>
#include <cstdint>
#include <limits>
using namespace std;
int main()
{
cout << "Minimum INT8 = " << INT8_MIN << endl;
cout << "Maximum INT8 = " << INT8_MAX << endl;
cout << "Minimum INT16 = " << INT16_MIN << endl;
cout << "Maximum INT16 = " << INT16_MAX << endl;
cout << "Minimum INT32 = " << INT32_MIN << endl;
cout << "Maximum INT32 = " << INT32_MAX << endl;
cout << "Minimum INT64 = " << INT64_MIN << endl;
cout << "Maximum INT64 = " << INT64_MAX << endl;
cout << "Minimum INT_FAST8 = " << INT_FAST8_MIN << endl;
cout << "Maximum INT_FAST8 = " << INT_FAST8_MAX << endl;
cout << "Minimum INT_FAST16 = " << INT_FAST16_MIN << endl;
cout << "Maximum INT_FAST16 = " << INT_FAST16_MAX << endl;
cout << "Minimum INT_FAST32 = " << INT_FAST32_MIN << endl;
cout << "Maximum INT_FAST32 = " << INT_FAST32_MAX << endl;
cout << "Minimum INT_FAST64 = " << INT_FAST64_MIN << endl;
cout << "Maximum INT_FAST64 = " << INT_FAST64_MAX << endl;
cout << "Minimum INT_LEAST8 = " << INT_LEAST8_MIN << endl;
cout << "Maximum INT_LEAST8 = " << INT_LEAST8_MAX << endl;
cout << "Minimum INT_LEAST16 = " << INT_LEAST16_MIN << endl;
cout << "Maximum INT_LEAST16 = " << INT_LEAST16_MAX << endl;
cout << "Minimum INT_LEAST32 = " << INT_LEAST32_MIN << endl;
cout << "Maximum INT_LEAST32 = " << INT_LEAST32_MAX << endl;
cout << "Minimum INT_LEAST64 = " << INT_LEAST64_MIN << endl;
cout << "Maximum INT_LEAST64 = " << INT_LEAST64_MAX << endl;
cout << "Minimum INTPTR = " << INTPTR_MIN << endl;
cout << "Maximum INTPTR = " << INTPTR_MAX << endl;
cout << "Maximum UINT8 = " << UINT8_MAX << endl;
cout << "Maximum UINT16 = " << UINT16_MAX << endl;
cout << "Maximum UINT32 = " << UINT32_MAX << endl;
cout << "Maximum UINT64 = " << UINT64_MAX << endl;
cout << "Maximum UINT_FAST8 = " << UINT_FAST8_MAX << endl;
cout << "Maximum UINT_FAST16 = " << UINT_FAST16_MAX << endl;
cout << "Maximum UINT_FAST32 = " << UINT_FAST32_MAX << endl;
cout << "Maximum UINT_FAST64 = " << UINT_FAST64_MAX << endl;
cout << "Maximum UINT_LEAST8 = " << UINT_LEAST8_MAX << endl;
cout << "Maximum UINT_LEAST16 = " << UINT_LEAST16_MAX << endl;
cout << "Maximum UINT_LEAST32 = " << UINT_LEAST32_MAX << endl;
cout << "Maximum UINT_LEAST64 = " << UINT_LEAST64_MAX << endl;
cout << "Minimum UINTPTR = " << UINTPTR_MAX << endl;
cout << "Maximum UINT = " << UINT_MAX << endl;
return 0;
}
خروجی به صورت زیر خواهد بود :
Minimum INT8 = -128
Maximum INT8 = ⌂
Minimum INT16 = -32768
Maximum INT16 = 32767
Minimum INT32 = -2147483648
Maximum INT32 = 2147483647
Minimum INT64 = -9223372036854775808
Maximum INT64 = 9223372036854775807
Minimum INT_FAST8 = -128
Maximum INT_FAST8 = ⌂
Minimum INT_FAST16 = -2147483648
Maximum INT_FAST16 = 2147483647
Minimum INT_FAST32 = -2147483648
Maximum INT_FAST32 = 2147483647
Minimum INT_FAST64 = -9223372036854775808
Maximum INT_FAST64 = 9223372036854775807
Minimum INT_LEAST8 = -128
Maximum INT_LEAST8 = ⌂
Minimum INT_LEAST16 = -32768
Maximum INT_LEAST16 = 32767
Minimum INT_LEAST32 = -2147483648
Maximum INT_LEAST32 = 2147483647
Minimum INT_LEAST64 = -9223372036854775808
Maximum INT_LEAST64 = 9223372036854775807
Minimum INTPTR = -2147483648
Maximum INTPTR = 2147483647
Maximum UINT8 =
Maximum UINT16 = 65535
Maximum UINT32 = 4294967295
Maximum UINT64 = 18446744073709551615
Maximum UINT_FAST8 =
Maximum UINT_FAST16 = 4294967295
Maximum UINT_FAST32 = 4294967295
Maximum UINT_FAST64 = 18446744073709551615
Maximum UINT_LEAST8 =
Maximum UINT_LEAST16 = 65535
Maximum UINT_LEAST32 = 4294967295
Maximum UINT_LEAST64 = 18446744073709551615
Minimum UINTPTR = 4294967295
Maximum UINT = 4294967295
اینم از انواع با نتیجه بازه های آن ها...
و اینم ویرایش این پست برای نتیجه خروجی این مثال در سیستم لینوس...
Minimum INT8 = -128
Maximum INT8 = 127
Minimum INT16 = -32768
Maximum INT16 = 32767
Minimum INT32 = -2147483648
Maximum INT32 = 2147483647
Minimum INT64 = -9223372036854775808
Maximum INT64 = 9223372036854775807
Minimum INT_FAST8 = -128
Maximum INT_FAST8 = 127
Minimum INT_FAST16 = -9223372036854775808
Maximum INT_FAST16 = 9223372036854775807
Minimum INT_FAST32 = -9223372036854775808
Maximum INT_FAST32 = 9223372036854775807
Minimum INT_FAST64 = -9223372036854775808
Maximum INT_FAST64 = 9223372036854775807
Minimum INT_LEAST8 = -128
Maximum INT_LEAST8 = 127
Minimum INT_LEAST16 = -32768
Maximum INT_LEAST16 = 32767
Minimum INT_LEAST32 = -2147483648
Maximum INT_LEAST32 = 2147483647
Minimum INT_LEAST64 = -9223372036854775808
Maximum INT_LEAST64 = 9223372036854775807
Minimum INTPTR = -9223372036854775808
Maximum INTPTR = 9223372036854775807
Maximum UINT8 = 255
Maximum UINT16 = 65535
Maximum UINT32 = 4294967295
Maximum UINT64 = 18446744073709551615
Maximum UINT_FAST8 = 255
Maximum UINT_FAST16 = 18446744073709551615
Maximum UINT_FAST32 = 18446744073709551615
Maximum UINT_FAST64 = 18446744073709551615
Maximum UINT_LEAST8 = 255
Maximum UINT_LEAST16 = 65535
Maximum UINT_LEAST32 = 4294967295
Maximum UINT_LEAST64 = 18446744073709551615
Minimum UINTPTR = 18446744073709551615
Maximum UINT = 4294967295
خروجی های گرفته شده با Qt گرفته شده که روی سیستم Ubuntu ازش تست گرفتم نتیجه روی هر IDE و با هر سیستم عامل بر پایه یونیکس مثل Mac , Linux , Android و حتی iOS به همین صورت خواهد بود امیدوارم مفید باشه...
-
2 ضمیمه
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی عملگر ها
عملگر ها نماد هایی هستند که بر روی یک یا چند عبارت عمل می کنند و مقدار حاصل آن را می توان به یک متغیر نسبت داد. که تاحالا با عملگر های خروجی << و عملگر های انتساب آشنا شدیم.
برخی از ساده ترین عملگر ها مانند + , - , * , / و % عملگر هایی هستند که عملیات حسابی را انجام می دهند.
این عملگر های بر روی انواع integer ها عمل کرده و یک نوع integer دیگر را بوجود می آورد مانند : x + y مجموع x و y همچنین x – y تفاضل x و y , x * y حاصلضرب x در y , x/y خارج قسمت تقسیم صحیح x بر y و x%y باقیمانده تقسیم صحیح x بر y را تولید میکنند ؛ در جدول زیر فهرست تمامی عملگر ها در C++ را که بر اساس تقدم گروه بندی شده اند مشاهده می کنیم.
و ادامه لیست...
و یک نکته مهم که عملگر های دارای حق تقدم بالاتر پیش از عملگر های دارای تقدم پایینتر ارزیابی می شوند.
- نکته : لیست همه عملگر ها بر اساس حق تقدم گروه بندی شده است. مثال : (x - y*z) در اینجا عملگر * ضرب در ابتدا و عملگر - منها بعد از آن ارزیابی خواهد گردید که طبق این جدول حق تقدم * برابر است با 13 و حق تقدم - برابر است با 12
- ستون شرکت پذیری مشخصه این هستش که هر عملگر دارای شرکت پذیری چپ یا شرکت پذیری راست است. مثال : عبارت (x-y-z) به صورت (x-y)-z)) ارزیابی خواهد شد به دلیلی اینکه عملگر - شرکت پذیری چپ میباشد.
- ستون عملوند : مشخص میکند که عملگر بر روی یک یا دو یا سه عملوند عمل میکند یعنی همان حالت یکتایی , تو تایی , سه تاییی.
- ستون اضافه بار : نشان دهنده این است که عملگر قابلیت بارگذاری اضافی را دارد یا خیر.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی عملگر های افزایشی و کاهشی
یکی از مفیدترین عملگر ها در C++ عملگر های افزایشی و کاهشی هستش که این عملگر ها یک عملگر را به عبارت دستوری تبدیل می کند عبارتی که اختصار شکل خاصی از عمل انتساب هستش.
به مثال زیر توجه کنید :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x = 128, y = 64;
cout << "X = " << x << endl;
cout << "Y = " << y << endl;
++x;
--y;
cout << "X = " << x << endl;
cout << "Y = " << y << endl;
x++;
y--;
cout << "X = " << x << endl;
cout << "Y = " << y << endl;
return 0;
}
در اینجا هر دو عملگر پیش افزایشی ++x و پس افزایشی x++ نتیجه یکسانی دارن آن ها عدد 1 را به مقدار x افزوده و به همین ترتیب دو عملگر پیش کاهش --y و پس کاهش y-- نیز در اینجا به یک روش عمل می کنند آنها عدد 1 را از y می کاهند.
حال هنگامی که ++x و x++ به عنوان دستورهای عبارتی مستقل به کار برده می شود هر دو هم ارز هستند یعنی مقدار x را یک واحد افزایش می دهند همچنین به طور مشابه دستور های عبارتی --yو y--نیز هم ارز هستند یعنی مقدار y را یک واحد کاهش می دهند.
فرق بین عملگر پیش افزایش ++x و پس افزایش x++ در داخل عبارت متفاوت است به صورت زیر :
پیش افزایش در ابتدا مقدار متغیر را افزایش می دهد پیش از آنکه متغیر در عبارت بزرگتر بکار رود در حالی که پس افزایش مقدار متغیر را تنها پس از بکار گیری مقدار پیشین متغیر در عبارت بزرگتر افزایش می دهد.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی عملگر های افزایشی و کاهشی
عملگر های افزایشی و کاهشی انواع معینی از انتساب ها را کوتاه میکند و در C++ امکان ترکیب انتساب و سایر عملگر ها وجود دارد که دستور کلی این نوع انتساب ها به صورت زیر میباشد :
variable op = expression
در عبارت فوق op یک عملگر دوتایی می باشدکه نتیجه انتساب مرکب و انتساب زیر یکی می باشد.
variable = variable op expression
برای مثال انتساب مرکب به صورت زیر است :
x += 16;
و اینهم مثال ساده از انتساب :
x = x + 16;
که در هر دو روش انتساب مقدار 16 به متغیر اضافه می شود.
یک مثال جامع به صورت زیر میزنم :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x = 128;
x += 16;
cout << "X = " << x << endl;
x -= 5;
cout << "X = " << x << endl;
x *= 2;
cout << "X = " << x << endl;
return 0;
}
در این مثال دستور العمل x+=16 مقدار 16 را به x می افزاید , دستور x -=5 مقدار 5 واحد را از x می کاهد و دستور x *=2 مقدار x را به 2 ضرب می کند. نتیجه در خروجی به صورت زیر خواهد بود :
X = 144
X = 139
X = 278
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی انواع حالت های سرریز و پا ریز شدن در اعداد صحیح
این بحث یکی از بحث هایی هستش که من دوست دارم یکمی مفصل در رابطه با این توضیحات رو بدم چون در بسیاری از مواقع این اتفاق خواهد افتاد که به صورت کلی باید بگم که برخلاف اعداد صحیح (integer) در ریاضیات محض , اشیاء integer موجود در کامپیوتر , محدود هستند زیرا هر نوع integer یک مقدار پیشینه (Maximum) و یک مقدار کمینه (Minimum) دارد. اگر مقدار یک متغیر از محدوده ی مجاز آن فراتر رود حالت سر ریز بوجود می آید.
یه مثالی به صورت زیر در نظر میگیرم...
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
short x = SHRT_MAX - 1;
cout << "X ++ = " << x++ << endl;
cout << "X ++ = " << x++ << endl;
cout << "X ++ = " << x++ << endl;
return 0;
}
در این مثال شیء (x) ما از نوع short در نظر گرفته شده که با افزودن عدد 1 به 32766 مقدار آن به 32766- تغییر می کند که این یک اشتباه است ! این یک نوع شیوه رفتار کامپیوتر در مقابله با این نوع سر ریز یا همان Overflow می باشد مقدار به صورت چرخه در نظر گرفته می شود و در نتیجه پس از بیشترین مقداری که می اید کمترین مقدار است. این نوع خطا در کامپیوتر در نوع خود یکی از بدترین خطاها محسوب می شود زیرا هنگام وقوع آن هیچ نشانه ظاهری وجود ندارد پس در نتیجه خروجی به صورت زیر می باشد :
X ++ = 32766
X ++ = 32767
X ++ = -32768
به طور کلی سرریز (Overflow) شدن یکی از انواع خطاهای زمان اجرا می باشد همچنین نمونه دیگر این خطاها تقسیم بر صفر است که مشکل آنچنان بزرگی محسوب نمی شود زیرا هنگام وقوع برنامه از کار می افتد و به این ترتیب برنامه نویسان از وجود آن آگاه می شوند ولی در رابطه با سرریز عددی چنین نیست سرریز عددی در نوع خود یکی از خطرناک ترین خطاهاست که همانند خونریزی داخلی بشمار می اید و نشانه ظاهری ندارد پس برای جلوگیری از این موارد C++ می تواند با این مسائل برخورد کند که مثال زده خواهد شد.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی نوع char یا همان کاراکتر
نوع کاراکتری char در C++ یکی از انواع integer است بدین معناست که در کلیه عبارات integer میتوان از نوع char همانند سایر انواع صحیح استفاده کرد مانند مثال زیر :
char x = 64;
char y = 4 * x - 5;
x += y % 3;
واژه char کوتاه شده واژه کاراکتر (character) است. از آنجایی که متغیر های این نوع در ورودی و خروجی به عنوان کاراکتر شناخته می شوند از این واژه استفاده می شود لذا اگر کاراکتری ورودی باشد سیستم خود به خود کد اَسکی آن را به عنوان مقدار نوع صحیح char ذخیره می کند و چنانچه متغیری از نوع char یک خروجی باشد سیستم کاراکتر را خود به خود به مجرای خروجی می فرستد.
به طور کلی در C++ سه نوع integer هشت بیتی تعریف شده است char,signed char , unsigned char اما در واقع این سه نوع دو نوع مجزا هستند که نوع char بسته به کامپیوتر signed char , unsigned char است که در کل برای کاراکتر های معمولی از نوع char استفاده می کنند و نوع unsigned char برای رشته های بیتی بسیار کوتاه می باشد. و نوع signed char استفاده چندانی ندارد تنها زمانی میتوان مناسب برای استفاده باید که نیاز به ذخیره کمیت بزرگی از اعداد صحیح بسیار کوتاه به وسیله عملگر خروجی استاندادر << داشته باشیم در این صورت این نوع یعنی (signed char) انتخاب مناسبی خواهد بود.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی نوع char یا همان کاراکتر
خب در رابطه با نوع کاراکتر به مثال زیر توجه کنید : خروجی به صورت (@ , A , B , ` , a , b) خواهد بود.
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
char c = 64;
cout << "C++ = " << C++ << endl;
cout << "C++ = " << C++ << endl;
cout << "C++ = " << C++ << endl;
c = 96;
cout << "C++ = " << C++ << endl;
cout << "C++ = " << C++ << endl;
cout << "C++ = " << C++ << endl;
return 0;
}
در این کد ابتدا دستور خروجی متغیر کاراکتری c را در رشته خروجی درج می کند. از آنجایی که این متغیر مقدار صحیح 64 را داراست بنابراین به صورت "@" خارج خواهد شد یعنی کد اسکی نماد "@" 64 است سپس مقدار c یک واحد افزایش پیدا میکند و خروجی A می شود و این ترتیب تا آخر افزایش و کاراکتر های مربوط به کد اسکی چاپ می شوند.
خروجی گرفته شده به صورت زیر خواهد بود :
C++ = @
C++ = A
C++ = B
C++ = `
C++ = a
C++ = b
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل اول : معرفی نوع char یا همان کاراکتر
مثالی از کد اسکی بزنم که قصدم نمایش کد هر یک از حروف اسکی هستش به صورت زیر کد رو مینویسم...
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
char A = 'A'; char B = 'B'; char C = 'C'; char D = 'D'; char E = 'E';
char F = 'F'; char G = 'G'; char H = 'H'; char I = 'I'; char J = 'J';
char K = 'K'; char L = 'L'; char M = 'M'; char N = 'N'; char O = 'O';
char P = 'P'; char Q = 'Q'; char R = 'R'; char S = 'S'; char T = 'T';
char U = 'U'; char V = 'V'; char W = 'W'; char X = 'X'; char Y = 'Y';
char Z = 'Z';
cout << "ASCII Code A = " << int(A) << endl;
cout << "ASCII Code B = " << int(B) << endl;
cout << "ASCII Code C = " << int(C) << endl;
cout << "ASCII Code D = " << int(D) << endl;
cout << "ASCII Code E = " << int(E) << endl;
cout << "ASCII Code F = " << int(F) << endl;
cout << "ASCII Code G = " << int(G) << endl;
cout << "ASCII Code H = " << int(H) << endl;
cout << "ASCII Code I = " << int(I) << endl;
cout << "ASCII Code J = " << int(J) << endl;
cout << "ASCII Code K = " << int(K) << endl;
cout << "ASCII Code L = " << int(L) << endl;
cout << "ASCII Code M = " << int(M) << endl;
cout << "ASCII Code N = " << int(N) << endl;
cout << "ASCII Code O = " << int(O) << endl;
cout << "ASCII Code U = " << int(U) << endl;
cout << "ASCII Code V = " << int(V) << endl;
cout << "ASCII Code W = " << int(W) << endl;
cout << "ASCII Code X = " << int(X) << endl;
cout << "ASCII Code Y = " << int(Y) << endl;
cout << "ASCII Code Z = " << int(Z) << endl;
return 0;
}
در اینجا بر اساس انواع متغیر ها که برای هر یک از کاراکتر های A تا Z تعریف شده برنامه مقادیر هر یک از آن ها را به دست می آورد اما از آنجایی که متغیر های کاراکتری چاپ می شوند نخستین موردی که در هر سطر چاپ می شود کاراکتریست که کد اَسکی آن ها را در متغیر ها ذخیره شده است. حال برای چاپ کردن عدد یا همان کد اسکی با استفاده از int(…) این کار صورت میگیرد.
و خروجی به صورت زیر خواهد بود :
ASCII Code A = 65
ASCII Code B = 66
ASCII Code C = 67
ASCII Code D = 68
ASCII Code E = 69
ASCII Code F = 70
ASCII Code G = 71
ASCII Code H = 72
ASCII Code I = 73
ASCII Code J = 74
ASCII Code K = 75
ASCII Code L = 76
ASCII Code M = 77
ASCII Code N = 78
ASCII Code O = 79
ASCII Code U = 85
ASCII Code V = 86
ASCII Code W = 87
ASCII Code X = 88
ASCII Code Y = 89
ASCII Code Z = 90
و اما پایان فصل دوم... امیدوارم مفید واقع شده باشه.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
فصل دوم (دستورات شرطی و انواع اعداد صحیح)
خب بریم سراغ بخش دوم... تمامی مباحث و کد هار نوشته شده در فصل (1) به صورت ترتیبی اجرا می شوند به طوری که هر دستورالعمل یک بار و آن هم به ترتیب نوشته شده اجرا می شود؛ حال برای انعطاف پذیری بیشتر در برنامه ما نیاز به دستورات شرطی داریم به گونه ای که برنامه برای انعطاف پذیر شدن نیاز به چندین دستور پیچیده بر اساس شرایط مورد نیاز در طول برنامه تغییر نماید داریم لذا در این فصل شیوه استفاده از دستورات شرطی if , if…else , switch را خواهیم آموخت.
ورودی در زبان C++ و قابلیت مقایسه آن با خروجی : در رابطه با ورودی همانند خروجی و مجرای خروجی در C++ که توسط شیء cout توضیح داده شد در این بخش در رابطه با مجرای ورودی با شیء cin توضیح خواهیم داد که این شیء به عنوان مجرای ورودی برای دریافت اطلاعات در رابط کنسول در نظر گرفته می شود که مخفف console output است.
برای استفاده و انتقال اطلاعات به ورودی و ارسال توسط شیء cin تقریبا شبیه به عملیات با cout عمل خواهیم کرد که در این میان نماد >> عملگر استخراج است که عملگر ورودی نامیده می شود با استفاده از این عملگر اطلاعات وارد شده توسط صفحه کلید از طرف کاربر را می توان برای مجرای cin دریافت کرد بنابراین با اجرای دستوری مانند دستور زیر سیستم توقف کرده و در انتظار ورودی باقی می ماند به محض آنکه عدد صحیحیوارد شود به متغیر x منسوب داده می شود و سپس برنامه ادامه می یابد.
cin >> x;
در رابطه با شیء ورودی می توان همانند شیء خروجی cout از نوع کاراکتر و صحیح استفاده کرد به صورت زیر :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
char name[10], family[10];
cout << "Please enter your name:";
cin >> name;
cout << "Please enter your family:";
cin >> family;
cout << "Your name is: " << name << ", " << family << ".\n";
return 0;
}
در دستور بالا دو نوع کاراکتری برای نام و نام خانوادگی با طول کاراکتر حداکثر 10 تعریف شده است که در ابتدای هر کدام توسط شیء cout متن مورد نظر یا همان پیغام های مربوطه برای کاربر چاپ می شود و سپس توسط شیء cin با عملگر ورودی >> مقدار متغیر های مربوط به هر کدام به مجرای ورودی ارسال می شود و در نهایت با دستور cout چاپ مقادیر موجود در هر کدام میسر خواهد شد که نتیجه با ورود اطلاعات کاربر به صورت زیر خواهد آمد :
Please enter your name: Kambiz
Please enter your family: Asadzadeh
Your name is: Kambiz, Asadzadeh
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل دوم : انواع صحیح
در مواقعی لازم است از انواع صحیح استفاده شود همانند انواع کاراکتری به صورت زیر :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x, y;
cout << "Please enter your integers:\n";
cin >> x;
cin >> y;
cout << "Your integers: " << x << ", " << y << ".\n";
return 0;
}
خروجی به صورت زیر خواهد بود...
Please enter your integer’s پیغام برای ورودی / :
ورودی مقدار اول / 256
ورودی مقدار دوم / 128
Your integers : 256, 128 خروجی / .
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل دوم : دستورات شرطی و انواع اعداد صحیح
ساختار دستورات شرطی چگونه است؟ در C++ برای بررسی انواع شرط ها و مقایس های محاسباتی بر اساس احتمالات و شرایط دیگر توسط دستورات شرطی صورت میگیرد به طوری که در این زبان برنامه نویس قادر است در ابتدا یا در داخل بدنه و یا در خروجی برنامه شرایط لازم برای مقایسه را طبق خواسته خودبکار بگیرد برای این منظور هرچقدر برنامه از پیچیدگی بیشتری برخوردار باشد در آن برنامه دستورات شرطی بسیار است که احتمالا در توابع و کلاس های برنامه دستورات متفاوتی را برای مقایس و بررسی شرایط استفاده کرده اند.
حال در این زبان هر دستوری که به صورت شرطی نوشته شود طی کامپایل دستورات هر لحظه ای که کامپایلر به دستور شرطی برسد آن را بر اساس نوع شرط و دستورات داخلی آن بررسی خواهد کرد که در نهایت دارای یک خروجی برای ارسال به مجرا و یا حافظه خواهد داشت. دستورات شرطی معمولا دارای خروجی هستند که بر اساس بررسی انجام شده در کد نتیجه ای را بازگشت میدهد برای مثال اگر ما مثالی بزنیم که اگر ارزش متغیر x برابر باشد با ارزش متغیر y آنگاه نتیجه بازگشتی مورد نظر را نمایش خواهد داد در این صورت دستور شرطی بعد از مقایسه مقادیر هر دو متغیر بعد از خود مقدار یا تابع یا هر چیز دیگری را میتواند اجرا کند که آن بستگی به خواسته برنامه نویس بعد از بررسی آن شرط می باشد.
نکته : همیشه دستورات شرطی به عنوان بازگشت دهنده بعد از یک بررسی بکار می روند ولی باید توجه کرد که گاهأ از دستورات شرطی برای برگشت به نقطه ای استفاده می شود برای مثال اگر در بین دستورات نیاز باشد در صورت برابر نبودن مقدار یا نتیجه خاصی همان لحظه به بررسی مجدد شرط با ورودی جدیدی نیاز باشد در این حالت دستور شرطی می تواند بعد از بررسی شرط اشاره ای به یک نقطه از کد داشته باشد که آن می تواند طبق خواسته برنامه نویس یک تابع یا هر چیز دیگری باشد.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل دوم : دستور شرطی if
دستور شرطی (اگر/ if) چیست و چگونه عمل می کند؟ دستور if , امکان اجرای شرط را فراهم می سازد که ترکیب نحوی آن به شکل زیر است :
اگر (عبارت مقایسه ای) عبارت اجرایی
if(condition)statement
در شکل بالا condition به عنوان یک عبارتیست که برای مقایسه و بررسی در نظر گرفته می شود و در بین دو پرانتز قرار می گیرد و statement یک عبارتی است که برای اجرا در نظر گرفته شده است , تنها در صورتی statement اجرا خواهد شد که ارزش condition غیر صفر باشد زیرا در این نوع ساختار هرگاه مقدار غیرصفر باشد به معنی (درست) و صفر به معنی (نادرست) می باشد.
خب به مثال شرطی زیر توجه کنید :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x, y;
x = 64;
y = 128;
if (x < y)
cout << "X is smaller than y. \n" << endl;
return 0;
}
در این دستور مقدار (ارزش) موجود در دو متغیر x و y توسط دستور if بررسی شده است که با عملگر < کوچکتر از مقایسه بین دو متغیر را انجام داده ایم حال با اجرای دستور بالا مقدار 64 موجود در متغیر x با مقدار 128 موجود در متغیر y بررسی و در صورت کوچکتر بودن مقدار x از y پیغام "X is smaller than y." نمایش داده می شود.
در این شکل از دستور یک یک مشکلی وجود دارد , مشکل این است که اگر مقدار x کوچکتر از y نباشد هیچ عملی را انجام نخواهد داد در واقع برای رفع این مشکل ما نیاز به دستور دیگری برای استفاده در هنگام صفر بودن شرط داریم که آن else است.
-
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل دوم : دستور شرطی if ...else
این دستور یکی از دو دستورالعمل موجود را اجرا می کند و این بستگی به مقدار ارزش شرط معین شده دارد که به صورت زیر آمده است:
اگر (عبارت مقایسه ای) عبارت اجرایی1
عبارت اجرایی 2 و اگرنا
if (condition) statement1
else statement2
در شکل بالا condition به عنوان یک عبارتیست که برای مقایسه و بررسی در نظر گرفته می شود و در بین دو پرانتز قرار می گیرد و statement1 و statement2 عبارت هایی هستند که در صورت صفر بودن عبارت statement2 و در صورت غیر صفر بودن عبارت statement1 که برای اجرا در نظر گرفته شده است.
به مثال زیر توجه کنید :
if (x < y)
cout << "X is smaller than y. \n" << endl;
else
cout << "Y is smaller than x. \n" << endl;
در این مثال در صورتی که مقدار x کوچکتر از مقدار y باشد پیغام اول و در صورت کوچکتر نبودن آن پیغام دوم نمایش داده می شود.
-
1 ضمیمه
نقل قول: معرفی و آموزش C++ به صورت گام به گام
ادامه فصل دوم : معرفی عملگر های رابطه ای
خب در رابطه با عملگر های رابطه ای باید گفت که به طور کلی عملگر های رابطه ای عملگر هایی هستند که وضعیت عبارت دو طرف یک رابطه را ارزیابی می کنند برای مثال رابطه 65 < 128 نادرست است که در اینجا عملگر کوچکتر است از ( < ) یک عملگر رابطه ای می باشد زیرا پس از ترکیب با عبارت مقداری را تولید می کند. برای مثال , وقتی علامت < با 128 و 64 ترکیب می شود به صورت 64 < 128 مقدار صحیح صفر (0) را بوجود می آورد که به معنای "نادرست" است.
همانطور که قبلا در فصل (1) اشاره شد شش عملگر رابطه ای به صورت زیر وجود دارد :
در برنامه نویسی زبان C++ برای ارزیابی تساوی عبارات باید از نماد تساوی مضاعف ( == ) استفاده شود یعنی از نوع عملوند های دوتایی که در جدول هم اشاره شده است چرا که معمولا برنامه نویسان مبتدی مرتکب آن می شوند در دستورات شرطی برای مقایسه دو عبارات از تساوی تک ( = ) استفاده می کنند. به مثال زیر توجه نمایید :
//Author: Kambiz Asadzadeh
#include <iostream>
using namespace std;
int main()
{
int x, y;
x = 128;
y = 128;
if (x == y)
cout << "True" << endl;
else
cout << "False" << endl;
return 0;
}
در این مثال دو متغیر x و y با ارزش یکسان یعنی مقدار 128 با عملگر تساوی مضاعف در دستور شرطی ارزیابی می شوند و به دلیل برابر بودن ارزش هر دو متغیر نتیجه در خروجی چاپ پیغام True خواهد بود.