عملگرهای ریاضی در سی شارپ

Ratings
(0)

 

پنج عملگر ریاضی ساده وجود دارند، دو تای آنها (یعنی - و +) هم به شکل باینری و هم به شکل یونری(unary) وجود دارند. جدول 3.6 لیست هریک از این عملگرها را به همراه یک مثال کوتاه از کاربرد آن و نتیجه را وقتی که این عملگر با انواع عددی به کار می رود نشان می دهد(اعداد صحیح و ممیز شناور).

(جدول 3.6 : عملگرهای ساده ی ریاضی در سی شارپ)

 


نکته: عملگر یونریِ + کمی عجیب است؛ زیرا در نتیجه تاثیری ندارد. این عملگر مقادیر را مجبور نمی کند تا مثبت باشند- مثلا اگر var2 برابر با 1- باشد، آنگاه مقدار var2+ نیز برابر با 1- است. اما این یک عملگر شناخته شده جهانی است و از این رو اضافه شده است. مفید ترین حقیقت در مورد این عملگر، بعداً، توضیح داده خواهد شد.


این مثال از نوع های عددی ساده استفاده می کند، زیرا (در غیر این صورت) وقتی که داریم از دیگر نوع های ساده استفاده می کنیم، نتیجه می تواند نامفهوم باشد.

بعنوان مثال، چه خواهد شد اگر دو مقدار بولین را با هم جمع کنیم؟ در این مورد هیچ کاری نخواهد شد؛ زیرا اگر ما سعی کنیم از علامت + (یا هر عملگر ریاضی دیگری) به همراه متغیرهای بولی استفاده کنیم، کامپایلر به ما هشدار می دهد. اضافه کردن متغیرها از نوع char نیز کمی گیج کننده است. به یاد داشته باشید که متغیرهای char در حقیقت به صوت اعداد ذخیره می شوند، بنابراین اضافه کردن دو متغیر char منجر به ایجاد یک عدد(به طور دقیق تر یک عدد از نوع int) می شود.

 این یک مثال از تبدیل ضمنی(implicit conversion) است؛ که شما به زودی چیزهای بسیار بیشتری در مورد آن (به همراه تبدیل صریح یا explicit conversion) خواهید آموخت؛ زیرا آن تنها در مواردی اعمال خواهد شد که var1 و var2 و var3 از نوع های ترکیبی باشند. عملگر باینری + وقتی معنا دارد که با متغیرهای نوع رشته(string) مورد استفاده قرار گیرد. در این مورد، باید با این عملگر، مانند جدول 3.7 برخورد کرد.

(جدول 3.7 : عملگر الحاق رشته)

اما هیچ یک از دیگر عملگرهای ریاضی، با رشته ها کار نمی کنند. دو عملگر دیگری که شما باید در اینجا نگاهی به آنها بیندازید، عملگرهای افزایشی(increment) و کاهشی(decrement) هستند. هردوی اینها عملگرهای یونری(unary) هستند که می توانند به دو طریق مورد استفاده قرار گیرند: بلافاصله قبل یا بلافاصله بعد از عملوند. نتایج به دست آمده در مثال های ساده ای در جدول 3.8 نشان داده شده اند.

(جدول 3.8 : عملگرهای افزایشی و کاهشی)

(جدول 3.8 : عملگرهای افزایشی و کاهشی)

این عملگرها همواره منجر به یک تغییر در مقدار ذخیره شده در عملوند خود می شوند:

  • عملگر ++ همواره باعث می شود به عملوند آن یک واحد اضافه شود.
  • عملگر −− همواره باعث می شود از عملوند آن یک واحد کم شود.

 اختلاف بین نتایج ذخیره شده در var1 به خاطر مکان قرار گیری عملگرها می باشد. قرار دادن یکی از این عملگرها قبل از عملوند، یعنی اینکه این عملوند، قبل از اینکه محاسبه ی دیگری انجام شود، انجام می شود. اما اگر این عملگر را پس از عملوند قرار دهیم، یعنی این عملگر پس از انجام تمام محاسبات در عبارت مورد نظر انجام می شود. بعنوان یک مثال دیگر، کد زیر را در نظر بگیرید:

int var1, var2 = 5, var3 = 6;
var1 = var2++ * --var3;

به نظرتان پس از محاسبه، چه مقداری در متغیر var1 قرار میگیرد؟ ابتدا عملگر −− که قبل از var3 قرار دارد، مقدار آن را از 6 به 5 تغییر می دهد. ما می تونایم عملگر ++ را که پس از var2 قرار دارد، نادیده بگیریم، زیرا این عملگر تا زمانی که محاسبات کامل شود، نتیجه ای دربر نخواهد داشت. بنابراین var1 برابر با حاصلضرب 5 در 5 یعنی 25 خواهد بود.

 این عملگرهای یونری ساده در موقعیت های زیادی بسیار به ما کمک می کنند. آنها، خلاصه ای برای عباراتی مثل زیر هستند:

var1 = var1 + 1;

این نوع بیان کاربردهای زیادی دارد؛ به خصوص وقتی که به حلقه ها مربوط باشد. این موضوع در فصل بعد نشان داده خواهد شد. در خودتان امتحان کنید بعدی، یک مثال را ارائه می دهیم که نشان می دهد چگونه از عملگرهای ریاضی استفاده کنیم و چند مفهوم مفید دیگر را نیز معرفی می کند. این کد از ما می خواهد یک رشته و دو عدد را تایپ کنیم و سپس جمع آنها را به ما می دهد.


 خودتان امتحان کنید: دستکاری متغیرها با عملگرهای ریاضی

1. یک اپلیکیشن کنسول جدید به نام Ch03Ex02 ایجاد کنید و آن را در آدرس C:\BeginningCSharp7\Chapter03  ذخیره کنید. 

2. کد زیر را در Program.cs قرار دهید:

static void Main(string[] args)
{
    double firstNumber, secondNumber;
    string userName;
    Console.WriteLine("Enter your name:");
    userName = Console.ReadLine();
    Console.WriteLine($"Welcome {userName}!");
    Console.WriteLine("Now give me a number:");
    firstNumber = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine("Now give me another number:");
    secondNumber = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine($"The sum of {firstNumber} and {secondNumber} is " + $"{firstNumber + secondNumber}.");
    Console.WriteLine($"The result of subtracting {secondNumber} from " + $"{firstNumber} is {firstNumber - secondNumber}.");
    Console.WriteLine($"The product of {firstNumber} and {secondNumber} " + $"is {firstNumber * secondNumber}.");
    Console.WriteLine($"The result of dividing {firstNumber} by " + $"{secondNumber} is {firstNumber / secondNumber}.");
    Console.WriteLine($"The remainder after dividing {firstNumber} by " + $"{secondNumber} is {firstNumber % secondNumber}.");
    Console.ReadKey();
}

3. کد را اجرا کنید. اکنون صفحه نمایشگر باید مثل تصویر 3.2 باشد:

(تصویر 3.2)

4. نام خود را وارد کنید و کلید Enter را فشار دهید. به تصویر 3.3 توجه کنید:

(تصویر 3.3)

5. یک عدد را وارد کنید و کلید Enter را فشار دهید و سپس یک عدد دیگر نیز وارد کنید و دوباره کلید Enter را فشار دهید. تصویر 3.4 این موضوع را نشان می دهد.

(تصویر 3.4)


این کدها چگونه کار می کند؟

این کد، علاوه بر نشان دادن عملگرهای ریاضی، دو مفهوم مهم که اغلب با آنها مواجه می شویم را معرفی می کند:

  1. مفهوم ورودی کاربر(User input)
  2. مفهوم تبدیل نوع(Type conversion)

مفهوم ورودی کاربر، از یک قاعده نوشتاری مشابه با فرمان Console.WriteLine() که قبلا آن را در استفاده از فرمان Console.ReadLine() دیده اید، استفاده می کند. این فرمان(ورودی کاربر)، از کاربر می خواهد که یک ورودی را وارد کند؛ که در یک متغیر رشته ای ذخیره می شود.

string userName;
Console.WriteLine("Enter your name:");
userName = Console.ReadLine();
Console.WriteLine($"Welcome {userName}!");

این کد محتوای متغیر userName را در صفحه نشان می دهد. همچنین ما دو عدد را در این مثال دریافت و قرائت می کنیم. این کمی دردسر ایجاد می کند؛ زیرا فرمان کنسول ReadLine() یک رشته تولید می کند اما ما به یک عدد نیاز داریم. برای انجام این کار، به مبحث تبدیل نوع(type conversion) نیاز داریم که در فصل 5 در بخش "اطلاعات بیشتر در مورد متغیرها" با جزیات بیشتر توضیح داده شده است. اما اجازه دهید نگاهی به کدهای به کار رفته در این مثال بیندازیم. ابتدا ما متغیرهایی که می خواهیم ورودی های عددی در آنها ذخیره شوند را تعریف می کنیم:

double firstNumber, secondNumber;

سپس یک پیغام را در خط فرمان نشان می دهیم و با استفاده از فرمان Convert.ToDouble() یک رشته که توسط فرمان Console.ReadLine() به دست آمده است، را به نوع double تبدیل می کنیم. سپس این عدد را در داخل متغیر firstNumber که قبلا آن را تعریف کرده ایم قرار می دهیم.

Console.WriteLine("Now give me a number:");
firstNumber = Convert.ToDouble(Console.ReadLine());

این سینتکس بسیار ساده است و تبدیلات بسیار بیشتری را می توانیم به همین روش انجام دهیم؛ در بقیه ی کدها، به همین روش، عدد دوم را به دست می آوریم:

Console.WriteLine("Now give me another number:");
secondNumber = Convert.ToDouble(Console.ReadLine());

در ادامه، نتایجی از جمع، تفریق، ضرب و تقسیم این دو عدد در خروجی نشان داده می شود؛ همچنین باقی مانده ی تقسیم دو عدد، با استفاده از عملگر % نشان داده می شود:

Console.WriteLine($"The sum of {firstNumber} and {secondNumber} is " + $"{firstNumber + secondNumber}.");
    Console.WriteLine($"The result of subtracting {secondNumber} from " + $"{firstNumber} is {firstNumber - secondNumber}.");
    Console.WriteLine($"The product of {firstNumber} and {secondNumber} " + $"is {firstNumber * secondNumber}.");
    Console.WriteLine($"The result of dividing {firstNumber} by " + $"{secondNumber} is {firstNumber / secondNumber}.");
    Console.WriteLine($"The remainder after dividing {firstNumber} by " + $"{secondNumber} is {firstNumber % secondNumber}.");

توجه کنید که ما داریم عبارت هایی به صورت firstNumber + secondNumber و غیره را به صورت یک پارامتر در دستور Console.WriteLine() ایجاد می کنیم؛ بدون اینکه یک متغیر واسطه را به کار ببریم.

Console.WriteLine($"The sum of {firstNumber} and {secondNumber} is " + $"{firstNumber + secondNumber}.");

این سینتکس یا قاعده ی نوشتاری، می تواند باعث خواناتر شدن کدها شود و تعداد خط کدها را کاهش دهد. 

 

کتاب آموزش سی شارپ, آموزش برنامه نویسی, آموزش سی شارپ

  • بازدید: 527

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال