آموزش C++ قسمت پنجم

مصطفی دادخواه 1394/11/7 2729

قسمت پنجم آموزش C++

آموزش C++ قسمت پنجم

با سلام خدمت دوستان گرامی . مصطفی دادخواه هستم با پنجمین آموزش سی ++ در کنار شما عزیزان.

جلسه ی قبل در مورد عملگر ها صحبت کردیم . تا اونجا پیش رفتیم که گفتیم عملگر های انتساب به دو دسته تقسیم میشن . یکی یکانی و دیگری دودویی . گفتیم که یکانی مثل پیش افزایش و پس کاهشی و ...

حالا این جلسه میخوام در مورد عملگرهای انتساب دودویی بگم . به جدول زیر لطفا دقت کنید .

آموزش سی پلاس پلاس

خب این بخش تموم شد میریم سراغ عملگر بعدی .

عملگر مقایسه ای

این عملگر ها دو عبارت رو با یکدیگر مقایسه میکنند و نتیجه را بر میگردونند . حالا این نتیجه میتونه درست باشه ( true ) یا میتونه نادرست باشه ( false )

در جدول زیر میتونید انواع عملگرهای مقایسه ای رو مشاهده کنید .

آموزش سی پلاس پلاس

نکته فوق مهم :

دوستان گرامی هیچ وقت عملگر انتساب ( = ) را با عملگر مقایسه ای مساوی ( == ) اشتباه نگیرید . در عملگر انتساب مثلا شما عددی مثل 5 رو به متغیری به اسم 1 نسبت میدهید یعنی میگید 5 رو در a قرار بده که می نویسیم a=5

اما در عملگر مقایسه ای میخواهید ببینید مقدار دو متغیر باهم برابرند یا خیر؟ مثلا اگر خواستید ببینید a با b برابر است باید بنویسید a==b . باز تاکید میکنم برای مقایسه کردن a با b نوشتن عبارت a=b غلط میباشد. این دستور به کامپایلر میگه که مقدار b را به a نسبت بده . یعنی هرچی b بود اون رو در a هم قرار بده .

نکته دوم : موقع نوشتن عملگر های بزرگتر مساوی و کوچکتر مساوی حواستون باشه که اون رو به صورت صحیحش بنویسید . نوشتن به صورت ( >= ) و ( <= ) غلط هست و کامپایلر از شما ایراد خواهد گرفت.

اما عملگر بعدی ، عملگر های منطقی :

این عملگر ها این اجازه رو به ما میدن که شرط های ساده ای رو که با استفاده از عملگر های مقایسه ای ایجاد میکنیم رو با هم دیگه ترکیب کنیم و شرط های پیچیده تری بسازیم .

آموزش سی پلاس پلاس

اولویت عمگرها هم در اینجا به ترتیب جدول بالاست.

اجازه بدید با مثالی کار کرد این عملگر رو براتون بیشتر بیان کنم فرض کنید که a = 5 و B = 6 هست . حالا میخواهیم با مثال های فرضی که مطرح میکنم ببینیم عملگرهای بالا چه مقداری رو به ما برمیگردونن

مثال :

( a >= 5 && b>6 )

خب در قسمت اول که a بزرگتر مساوی از 5 هست پس یک طرف شرط برقراره بعدش میگه و b بزرگتر از 6. حالا ایا b بزرگتر از 6 هست ؟

خیر. b بزرگتر از 6 نیست . پس یک طرف دیگه شرط برقرار نیست . همون طور که گفتیم در عملگر && زمانی مقدار درست رو به ما بر میگردونه که هر دو عملوند درست باشند پس در اینجا مقدار نادرست یا false به ما برگشت داده خواهد شد .

( a >=5 || b>6 )

اینجا به نظرتون جواب چی میشه ؟ true یا false ؟

بگذارید بررسی کنیم . خب a>=5 که هست و درسته.

همین برای or کافیه . اگه یک دونه صحیح باشه مقدار صحیح ( true ) رو به ما برمیگردونه.

!( a !=1) 

جواب این چی میشه ؟

گفتیم که پرانتز در اولویته . پس اول عبارت داخل پرانتز رو حساب میکنیم . خب میگه که a با 1 مساوی نباشه . میبینه آره a که مقدارش 6 هست پس با 1 برابر نیست . بنابر این جواب داخل پرانتط true میشه . اما پشت پرانتز علامت ! یعنی نقیض وجود داره .

نقیض یه چیز درست چی میشه ؟ میشه نادرست . پس جواب حاصل false خواهد بود .

عملگر بعدی که باید بلد باشید عملگر شرطی هست .

بعضی وقتها لازمه که یک شرط رو بررسی کنید سپس بر مبنای نتیجش ( درست یا نادرست بودن ) یکی از دو عبارت ممکن به ما برگشت داده شه . شکل کلیش هم به این صورته :

عبارت 2 : عبارت 1 ? ( شرط )

مثال :

a = ( k<10 ) ? 100 : 50

;یعنی اینکه اگر K کوچکتر از 10 بود a را برابره با 100 قرار بده در غیر این صورت a را برابر با 50 قرار بده .

اما عمگر بعدی عملگر کاما هست :

این عملگر برای به زنجیر در اوردن چندین عملیات مختلف استفاده میشه بدین صورت که ارزش لیستی از عبارتها که به وسیله کاما از هم جدا میشن برای اون عبارتی در نظر گرفته میشه که در سمت راست بقیه قرار داره . بگذارید با مثالی بیان کنم تا متوجه بشید .

a = ( b =3 , b+2 );

خب همون طور که گفتم ارزش لیستی عبارتها برای سمت راستی خودشون منظور میشن . یعنی ابتدا عبارت b+2 و b=3 مورد پردازش قرار میگرن . پس b میشه 5. حالا مقدار b باید در a که سمت راست خودش محسوب میشه قرار بگیره پس a هم میشه 5.

a = ( b =3 , b+2);

خب همون طور که گفتم ارزش لیستی عبارتها برای سمت راستی خودشون منظور میشن . یعنی ابتدا عبارت b+2 و b=3 مورد پردازش قرار میگرن . پس b میشه 5. حالا مقدار b باید در a که سمت راست خودش محسوب میشه قرار بگیره پس a هم میشه 5.

میشه 5.

اما عملگر بعدی عملگر sizeof هست :

این عملگر طول یک متغیر یا یک نوع داده رو مشخص میکنه . طرز نوشتنش هم به صورت

sizeof متغیر ;

به کد برنامه زیر توجه کنید .

#include

using namespace std;

void main(){

  int number = 100;

  char h = 'h';

  cout << "Size of int is " << sizeof (int) << " Bytes" << endl;

  cout << "Size of number is " << sizeof (number) << " Bytes" << endl;

  cout << "Size of char is " << sizeof (char) << " Bytes" << endl;

  cout << "Size of h is " << sizeof (h) << " bytes" << endl;

  cout << "size of long long is " << sizeof (long long) << " Bytes" << endl;

}

آموزش سی پلاس پلاس

خب همون طور که میبینید شما میتونید با دادن نام متغیر به عمگر sizeof یا نوع متغیر به این عملگر طول اون رو به صورت بایت اندازه گیری میکنه و بهتون برمیگردونه .

اما بحث بعدی که وجود داره عدد نویسی در سی ++ هست :

سی ++ به شما این اجازه رو میده که به جای سیستم عددنویسی در مبنای ده از سیستم های در مبنای 8 ( octal ) یا 16 ( hexa ) استفاده کنیم. برای مشخص کردن عددی در مبنای هگزا دسیمال باید عدد روبا 0x و در مبنای اکتال با 0 شروع کنید.

مثل :

X=0356;

برای عدد در مبنای 8

X=0xAB;

برای عدد در مبنای 16

اما برای دوستانی که در اول راه برنامه نویسی هستند و هنوز مفهوم سیستم ده دهی ، اکتال و هگزا رو نمیدونن یه توضیحی بدم .

ببینید دوستان اعدادی که ما در زندگی روزمره استفاده میکنیم در مبنای 10 هستند .

حالا اگه بخوایم عددی رو در مبنای یه عدد دیگه ای ببریم باید چیکار کنیم ؟

جواب : با تقسیمات متوالی بر روی عددِ در مبنای ده ، عدد مورد نظرمون در اون مبنا تولید میشه.

عدد 36 رو فرض کنید میخوایم ببریمش در مبنای 2 ( به عدد در مبنای 2 باینری هم میگن )

خب گفتیم که باید به صورت متوالی بر 2 ( عددی که میخوایم در اون مبنا ببریم ) تقسیم کنیم.

آموزش سی پلاس پلاس

همیشه تقسیم رو تا جایی ادامه میدیم که خارج قسمت ما برابر با صفر بشه . حالا باقی مانده ها رو از آخر به اول پشت سرهم مینویسمم.

آموزش سی پلاس پلاس

پس عدد 36 در مبنای 2 برابر با 100100 خواهد بود

حالا اگه عددی در مبنای 2 داشته باشیم و بخوایم اون رو در مبنای 10 ببریم باید چیکار کنیم ؟

برای اولین کار رقم های عدد از مبنای 2 رو از سمت راست شماره گذاری میکنیم . شروع عدد ما از صفر خواهد بود

آموزش سی پلاس پلاس

حالا به این صورت تبدیل رو انجام میدهیم . مجموع عدد 2 به توان شماره رقم

آموزش سی پلاس پلاس

برای عدد در مبنای 8 هم به همین صورت هست .

مثال : میخوایم عدد 364 رو در مبنای 8 ببریم .

آموزش سی پلاس پلاس

پس عدد 364 در مبنای 8 برابر با 554 می شود .

حالا میخوام 554 در مبنای 8 رو تبدیل به عدد در مبنای 10 کنیم .

گفتم ابتدا رقم ها رو از سمت راست شماره گذاری میکنیم .

آموزش سی پلاس پلاس

آموزش سی پلاس پلاس

اما میرسیم به مبنای 16 . اونم فرقی نمیکنه باید با تقسیم های متوالی عدد مورد نظرمون رو به اون مبنا ببریم .اما فقط یه تفاوت در سیستم عدد گذاریش هست اونم از عدد 10 به بعده . به جدول زیر دقت کنید .

آموزش سی پلاس پلاس

خب همون طور میبینید که بعد از عدد 9 در مبنای 16 عددی که داریم A هست نه 10 .

حالا میخوایم همین عدد 364 رو در مبنای 16 ببریم . پس این عدد رو اونقدر بر 16 تقسیم میکنیم که خارج قسمت برابر با 0 بشه.

آموزش سی پلاس پلاس

پس عدد 364 در مبنای 16 برابر با 16C خواهد بود .

دیگه تبدیل این عدد رو به مبنای 10 رو نمیگم مثل قبلیاست اون رو به عهده ی خودتون میسپارم . فقط به جای C در ضریب عدد 12 رو قرار بدید .

دانود دانلود PDF قسمت پنجم آموزش C++

قسمت بعدی قسمت ششم آموزش C++

قسمت بعدی قسمت قبلی