خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


آموزش زبان ++C : عملگرهای ریاضی (Arithmetic operators)

آموزش زبان ++C : عملگرهای ریاضی (Arithmetic operators)
نویسنده : امیر انصاری
عملگرهای ریاضی یگانی (Unary arithmetic operators)

سیستم یکپارچۀ سازمانی راهکار



دو عملگر ریاضی یگانی (Unary arithmetic operator) وجود دارد،عملگر مثبت (+) و عملگر منفی (-). اگر از آموزشهای قبلی یادتان مانده باشد، عملگرهای یگانی (unary)، عملگرهایی هستند که تنها بر روی یک عملوند (operand) به کار می روند.

آموزش زبان ++C : عملگرهای ریاضی (Arithmetic operators)
عملگر یگانی (unary) مثبت (+) مقدار عملوند (operand) را باز می گرداند. به عبارت دیگر :

+5 = 5

و

+x = x

در حالت کلی، شما نیازی به استفاده از این عملگر ندارید، چرا که یک عملگر زائد می باشد. در واقع دلیل وجود عملگر مثبت (+) به خاطر ایجاد تقارن با عملگر یگانی (unary) منفی (-) می باشد.

عملگر یگانی (unary) منفی (-) مقدار عملوند (operand) ضربدر عدد 1- را برمی گرداند. به عبارت دیگر اگر x = 5 باشد، خواهیم داشت :

-x = -5


برای رسیدن به نتیجه موثر لازم است تا هر دوی عملگرهای + و - بلافاصله قبل از عملوند مربوطه شان بیایند و نباید بین آنها فاصله باشد. برای مثال x- صحیح است و نه x - .

توجه داشته باشید که عملگر یگانی (unary) منفی (-) را با عملگر باینری (binary) تفریق (-) اشتباه نگیرید، هر دوی اینها با وجودیکه نماد مشابه دارند امّا کارکرد متفاوتی را دارا می باشند. به عنوان مثال در بیانیه :

x = 5 - -3;

اولین منها (-) عملگر تفریق (subtraction) می باشد و دومین منها (-) عملگر یگانی منفی (minus) می باشد.

عملگرهای ریاضی باینری (Binary arithmetic operators)


تعداد 5 عملگر ریاضی باینری در زبان ++C وجود دارد. عملگرهای باینری (binary)، عملگرهایی هستند که دو عملوند (operand) را در سمت چپ و راستشان می پذیرند.

آموزش زبان ++C : عملگرهای ریاضی (Arithmetic operators)
عملگرهای جمع (+)، تفریق (-) و ضرب (*) درست مشابه آنچیزی که در ریاضی هستند عمل می کنند.

عملگرهای تقسیم (/) و مدولا (%) - مدولا برای محاسبه باقیمانده است - نیاز به مقداری توضیحات اضافی برای درک بهتر آنها دارند.

تقسیم اعداد صحیح (integer division) و تقسیم اعداد با ممیز شناور (floating point division)


ساده تر آنست که به عملگر تقسیم (division) به این چشم نگاه کنید که دارای دو مود مختلف می باشد. اگر هر دو عملوند (operand) اعداد صحیح (integers) باشند، عملگر تقسیم، عملیات تقسیم اعداد صحیح (integer division) را انجام می دهد. تقسیم اعداد صحیح (integer division) بخشهای کسری را از قلم می اندازد و یک مقدار صحیح را بر می گرداند. برای مثال :

7 / 4 = 1

در این مثال با حذف بخش کسری، حاصل تقسیم عدد 7 بر عدد 4 برابر با 1 شده است. توجه داشته باشید که در تقسیم صحیح (integer division) عملیات گِرد کردن (round) صورت نمی پذیرد.

اگر یکی از دو عملوند و یا هر دوی عملوندها اعداد ممیز شناور (floating point) باشند، عملگر تقسیم، عملیات تقسیم با ممیز شناور (floating point division) را انجام می دهد. تقسیم با ممیز شناور، یک مقدار با ممیز شناور را بر می گرداند و بخش های کسری عدد، حین عملیات حفظ خواهند شد. برای مثال :

7.0 / 3 = 2.333

7 / 3.0 = 2.333

7.0 / 3.0 = 2.333


توجه داشته باشید که اگر سعی کنید عددی را بر 0 یا بر 0.0 تقسیم کنید، منجر به کِرش کردن برنامه و ایجاد خطا خواهد شد. نتیجۀ تقسیم بر صفر مقدار undefined (تعریف نشده) می باشد.

استفاده از static_cast برای انجام تقسیم با ممیز شناور بر روی اعداد صحیح


ما می توانیم از static_cast برای تبدیل کردن (convert) یک عدد صحیح به یک عدد با ممیز شناور استفاده کنیم، استفاده از static_cast به ما امکان می دهد تا از تقسیم با ممیز شناور (floating point division) بر روی اعداد صحیح استفاده کنیم. قطعه کد زیر را در نظر بگیرید :

#include "iostream"

int main()
{
int x = 7;
int y = 4;

std::cout << "int / int = " << x / y << "\n";
std::cout << "double / int = " << static_cast<double>(x) / y << "\n";
std::cout << "int / double = " << x / static_cast<double>(y) << "\n";
std::cout << "double / double = " << static_cast<double>(x) / static_cast<double>(y) << "\n";

return 0;
}

خروجی این برنامه به شکل زیر می باشد :

int / int = 1
double / int = 1.75
int / double = 1.75
double / double = 1.75

عملگر مدولا (باقیمانده)


عملگر مدولا (modulus operator) به صورت غیر رسمی با عنوان عملگر باقیمانده (remainder operator) نیز شناخته می شود. عملگر مدولا (modulus operator) فقط بر روی عملوندهای از نوع عدد صحیح (integer operands) کار می کند، و بعد از تقسیم صحیح مقدار باقیمانده را برمیگرداند. برای مثال :
7 / 4 = 1
و باقیمانده تقسیم 7 بر 4 برابر با 3 می باشد. از اینرو داریم:
7 % 4 = 3
به عنوان مثالی دیگر 25 تقسیم بر 7 برابر با 3 می شود و باقیماندۀ آن 4 می باشد. از اینرو داریم:
25 % 7 = 4

عملگر مدولا (modulus operator) در مواقعی که می خواهیم بدانیم آیا یک عدد به صورت مساوی بر عددی دیگر بخش پذیر می باشد یا نه، بسیار مفید می باشد. اگر:
if x % y == 0
پس می توان نتیجه گرفت که مقدار y میتواند به صورت مساوی در داخل x موجود باشد. یعنی باقیمانده تقسیم x بر y عدد 0 می باشد.

برای مثال، فرض کنید می خواهیم برنامه ای بنویسیم که اعداد 1 تا 100 را چاپ کند و هر 20 عدد را در داخل یک خط جداگانه بنویسید. در اینجا با استفاده از عملگر مدولا (modulus operator) می توانیم محل شکستن خط ها در برنامه را شناسایی کنیم. با وجودیکه شاید بخشی از کدهای برنامه زیر هنوز به شما آموزش داده نشده باشند اما کلیت برنامه و کاربرد عملگر مدولا (modulus operator) در آن را قطعاً به درستی درک خواهید کرد.

#include <iostream>

int main()
{
// count holds the current number to print
int count = 1; // start at 1

// Loop continually until we pass number 100
while (count <= 100)
{
std::cout << count << " "; // print the current number

// if count is evenly divisible by 20, print a new line
if (count % 20 == 0)
std::cout << "\n";

count = count + 1; // go to next number
} // end of while

return 0;
} // end of main()

خروجی این برنامه به شکل زیر می باشد:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

در کد بالا بیانیه while مورد استفاده قرار گرفته است که یکی از انواع حلقه ها در ++C می باشد و در درسهای آینده در مورد آن صحبت خواهیم کرد.

عملگرهای انتساب ریاضی (Arithmetic assignment operators)


آموزش زبان ++C : عملگرهای ریاضی (Arithmetic operators)
تا قبل از این اگر نیاز داشتید تا مقدار 5 را به یک متغیر اضافه کنید احتمالاً کدی شبیه کد زیر را می نوشتید:

x = x + 5;

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

x += 5;

عملگر توان (exponent operator) کجاست؟


خوانندگان دقیق ممکن است متوجه شده باشند که از عملگری برای محاسبه توان نام نبردیم. باید بدانید که ما در زبان برنامه نویسی ++C عملگر توان نداریم. در عوض، تایعی با نام pow وجود دارد که با استفاده از آن می توانید توان را محاسبه نمایید. این تابع در کتابخانه cmath وجود دارد. شکل کلی نگارش این تابع به صورت زیر می باشد:
pow(base, exponent)
که در این شکل، base برابر با عددی است که می خواهید آن را به توان برسانید و exponent توان مربوطه می باشد. شایان ذکر است که پارامترهای تابع pow از نوع داده double هستند و می توانند مقادیر غیر integer را هم محاسبه کنند.

#include <cmath> // needed for pow()
#include <iostream>

int main()
{
std::cout << "Enter the base: ";
double base;
std::cin >> base;

std::cout << "Enter the exponent: ";
double exp;
std::cin >> exp;

std::cout << base << "^" << exp << " = " << pow(base, exp) << "\n";

return 0;
}


آموزش قبلی : آموزش زبان ++C : اولویت عملگرها (Operator precedence) و وابستگی (associativity)



نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.