عملگر در سی‌ پلاس پلاس

عملگرهای زیادی توی سی‌پلاس‌پلاس هستند که شما باید یاد بگیرید. من در این پست یک دسته بندی کامل از عملگرهایی که در سی پلاس پلاس داریم رو ارائه میکنم و در ادامه بعضی از این عملگرها رو به شما معرفی میکنم. بقیه عملگرها رو هم در آموزشهای بعدی بهتون میگم. پس با من همراه باشید.

چه عملگرهایی در سی پلاس پلاس داریم؟

از یک جهت عملگرها رو میشه به unary (یکانی)، binary (دوتایی) و ternary (سه تایی) تقسیم کرد. مثلا عملگر جمع یک عملگر دوتاییه. چرا؟ چون وقتی میخواهید 5 + 10 رو محاسبه کنید برای عمل جمع به دو تا عملوند نیاز دارید (پس فهمیدید به 5 و 10 عملوند میگن!) 

اما عمگرها رو میشه در یک دسته بندی دیگه هم قرار داد:

1- Arithmetic یا حسابی
2- Assignment یا انتساب
3- Increment/Decrement یا افزایشی/کاهشی
4- Relational یا رابطه ای
5- Logical یا منطقی
6- Member Access
7- other!

1- عملگر حسابی - Arithmetic

عملگرهای جمع، منها، ضرب، تقسیم و باقیمانده از عملگرهای حسابی در سی پلاس پلاس هستند. 

کد بالا را به ازای اعداد 23 و 7 اجرا کنید خروجی زیر را خواهید داشت:

اگر نمی دونید چرا حاصل تقسیم 23 بر 7 ، عدد 3 می شه (نه 3.28) و یا نمی دونید باقیمانده چه جوری محاسبه میشه این قسمت از آموزش عملگرها در یوتیوب رو ببینید:

نکته!

وقتی از عملگرهای +، – ، * و / استفاده میشه عملوندها میتونند int، float و یا double باشن. اما وقتی دارید از % استفاده میکنید حتما باید عملوندها int باشن

2- عملگر انتساب - Assignment 

وقتی شما مینویسید x=2 در واقع مساوی عملگر انتسابه. چون داره یه مقداری رو به x نسبت میده. در کل میشه به عملگر مساوی اینجوری نگاه کرد که برای عملگر مساوی یه سمت راست داریم (که بهش میگیم RHS و مخفف Right Hand Side) و یه سمت چپ داریم (که بهش میگیم LHS و مخفف Left Hand Side). پس تو مثالی که زدیم x در واقع LHS و 2 ، RHS میشه. حالا با این مقدمه این نکات رو ببینید:

1- مقدار RHS در LHS ذخیره می‌شود. (پس حواستون باشه در برنامه نویسی x = y  و y = x با هم فرق دارن

2- نوع داده ای LHS و RHS باید با هم سازگار باشند! (سازگار به این معنی که شما میتونید یک متغیر int رو در double و با برعکسش ذخیره کنید ولی نمیتونید یه مقدار int رو در string ذخیره کنید، نوع داده ای شون سازگار نیستن)

3- LHS باید قابلیت مقداردهی داشته باشد! 

4- در یک دستور میتوانید به چند متغیر مقداری را نسبت دهید. مثلا num1 = num2 = 100

5- عملگرهای =+ ، =- ، =* ، =/ , =% و توضیحشون رو در کد زیر ببینید. در واقع با این عملگرها کد ما کمی کوتاه تر میشه.

 

اگر در نکته هایی که گفتم به توضیحات بیشتری نیاز دارید که متوجه بشید آموزش عملگر انتساب رو اینجا ببین:

3- عملگر افزایشی / کاهشی - Increment / Decrement

کد زیر رو نگاه کنید

کد بالا در واقع یک واحد به x اضافه میکنه. در ادامه این کدها رو هم ببینید:

احتمالا این سوال براتون پیش میاد که فرق دستور اول و دوم چیه؟ چون جفتشون یک واحد به x اضافه میکنند. برای دستور سوم و چهارم هم همینجوریه. پس با دقت این قسمت رو بخون:

اگر ++ (پلاس پلاس بخونید) قبل از متغیر بیاد یعنی اول به متغیر یه واحد اضافه کن بعد برو سراغ اجرای اون دستور اما اگه ++ قبل متغیر بیاد یعنی اول اون دستور رو اجرا کن (بدون در نظر گرفتن ++) و بعدش یکی به متغیر اضافه کن.

در قالب چند مثال این موضوع رو برات روشن میکنم:

 

این کد که نیاز به توضیح خاصی نداره، در خروجی 11 چاپ میشه. اما بریم سراغ مثال 2:

 

این کد هم که احتمالا واضحه! در خروجی 11 چاپ میشه. اما بریم سراغ مثال 3:

 

خروجی این کد عدد 10 است. چرا؟ بیاییم با هم متنی که بالا گفتم با دقت بخونیم رو روی این کد در نظر بگیریم:

در دستور دوم ++ بعد از متغیر اومده، پس اول باید این دستور رو بدون در نظر گرفتن ++ اجرا کنیم (یعنی 10 تو خروجی چاپ میشه) و بعدش یکی به نامبر اضافه میشه پس اگر همچین کدی داشته باشیم:

 

خروجی اول عدد 10 و در خط بعدی عدد 11 چاپ میشه. حالا با این توضیحات انتظار دارم این دو مثال رو خودتون بتونید تحلیل کنید و خروجیش رو بگید:

 

خروجی مثال 4 عدد 10 و خروجی مثال 5 عدد 20 است. اگر دوست داری این قسمت از آموزش رو به صورت ویدیویی ببینی اینجا رو ببین:

 

4- عملگر رابطه ای - Relational

5- عملگر منطقی - Logical

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

== ، =! ، < ، > ، =>  ، =<

همچنین برای ترکیب شرطها به عملگرهای منطقی نیاز داریم. عملگرهای منطقی:

&& و ||  و !

در مورد این عملگرها در آموزش ساختار شرط صحبت شده که اگر دوست دارید میتونید این آموزش رو ببینید:

 

6- دسترسی به اعضا - Member Access

7- other

هنوز هم عملگرهای دیگه ای هستند که در موردشون صحبت نکردید. مثلا عملگرهای مربوط دسترسی مثل آرایه، اشاره گر، کلاسها…

[ ] , * , & , -> , …

و یا عملگرهای زیر 

new, delete, static_cast, …

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

 

تمرین + مینی پروژه

1- خروجی کدهای زیر چیست؟ (ممکن است کدها خطا داشته باشد، باید خطاها را شناسایی کنید)

مینی پروژه دوم:

فرض کنید شما تو یه بقالی کار میکنید. پشت دخل نشستید و میخواهید خریدهای مشتریا رو حساب کنید. یکی از چیزای ساده ای که باید حواستون باشه اینه که وقتی میخواهید بقیه پول مشتری رو برگردونید باید تعداد اسکناسهایی که برمیگردونید حداقل باشه. مثلا اگه میخواهید 23 هزار تومن برگردونید 23 تا اسکناس هزارتومنی بهش ندید! 2 تا اسکناس 10 هزارتومنی، 1 اسکناس 2 هزارتومنی و 1 اسکناس هزارتومنی. ما میخواهیم برنامه این رو بنویسیم. اگه بخوام سر راست تر بهتون بگم صورت سوال اینه:

 

برنامه‌ای بنویسید که یک عدد صحیح از ورودی دریافت و مشخص کند برای خورد کردن چنین مقدار پولی با اسکناسهای هزارتومانی، 2هزارتومانی، 5هزار تومانی، 10 هزار تومانی به حداقل چند اسکناس نیاز دارید(مثلا اگر کاربر 23000 را وارد کرد باید در خروجی بنویسد دو اسکناس ۱۰ هزار تومانی، یک اسکناس 2 هزار تومانی و یک اسکناس هزار تومانی)

 

=> مینی پروژه اول ، قالیشویی مشتاق بود که خیلی ساده بود. دوست داشتید میتونید اینجا ببینید: 

 

این آموزش براتون مفید بود؟ میتونید بقیه آموزشهای من رو هم اینجا ببینید

نمونه سوالات سی پلاس پلاس

کلی سوال برنامه نویسی!

اگه دوست دارید برنامه نویس خوبی بشید باید زیاد کدنویسی کنید و برای اینکار به مساله نیاز دارید. اینجا براتون کلی سوال برنامه نویسی آماده کردم که میتونید این سوالات رو ببینی

ممنون که تا اینجا همراه من بودید. اگر از آموزش این پست خوشتون اومد و یا سوالی داشتید حتما در قسمت نظرات با من درمیون بذارید. اگر هم به یوتیوب و یا اینستاگرام دسترسی دارید من رو در این دو پلتفرم دنبال کنید و با لایک ها و کامنتاتون به من انرژی بدید. در کانال تلگرام هم میتونید بیشتر با من در ارتباط باشید