عملگرهای ریاضی

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

عملگر دسته مثال نتیجه
+ Binary var1 = var2 + var3; Var1 برابر است با حاصل جمع var2 و var3
Binary var1 = var2 – var3; Var1 برابر است با حاصل تفریق var2 و var3
* Binary var1 = var2 * var3; Var1 برابر است با حاصلضرب var2 در var3
/ Binary var1 = var2 / var3; Var1 برابر است با حاصل تقسیم var2 بر var3
% Binary var1 = var2 % var3; Var1 برابر است با باقیمانده تقسیم var2 و var3
+ Unary var1 = +var2; Var1 برابر است با مقدار var2
Unary var1 = -var2 Var1 برابر است با مقدار var2 ضربدر 1-

مثال بالا در از نوع عددی استفاده شده است. اما استفاده از عملگرهای ریاضی برای نوع رشته‌ای نتیجه متفاوتی دارد. همچنین در جمع دو کاراکتر کامپایلر معادل عددی آنها را نشان می‌دهد. اگر از عملگر + برای رشته‌ها استفاده کنیم دو رشته را با هم ترکیب کرده و به هم می‌چسباند. دیگر عملگرهای سی شارپ عملگرهای کاهش و افزایش هستند. این عملگرها مقدار 1 را از متغیرها کم یا به آنها اضافه می‌کنند. از این متغیرها اغلب در حلقه‌ها استفاده می‌شود :

عملگر دسته مثال نتیجه
++ Unary var1 = ++var2; مقدار var1 برابر است با var2 بعلاوه 1
– – Unary var1 = – -var2; مقدار var1 برابر است با var2 منهای 1
++ Unary var1 = var2++; مقدار var1 برابر است با var2
به متغیر var2 یک واحد اضافه می‌شود
Unary var1 = var2–; مقدار var1 برابر است با var2
از متغیر var2 یک واحد کم می‌شود

به این نکته توجه داشته باشید که محل قرار گیری عملگر در نتیجه محاسبات تأثیر دارد. اگر عملگر قبل از متغیر var2 بیاید افزایش یا کاهش var1 اتفاق می افتد. چنانچه عملگرها بعد از متغیر var2 قرار بگیرند ابتدا var1 برابر var2 می‌شود و سپس متغیر var2 افزایش یا کاهش می‌یابد. به مثال‌های زیر توجه کنید :

using System;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 0;
            int y = 1;

            x = ++y;

            Console.WriteLine("x= {0}",x);
            Console.WriteLine("y= {0}", y);
            Console.ReadLine();
        }
    }
}
x=2
y=2
using System;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 0;
            int y = 1;

            x = --y;

            Console.WriteLine("x= {0}",x);
            Console.WriteLine("y= {0}", y);
            Console.ReadLine();
        }
    }
}
x=0
y=0

همانطور که در دو مثال بالا مشاهده می‌کنید، درج عملگرهای — و ++ قبل از عملوند y باعث می‌شود که ابتدا یک واحد از y کم و یا یک واحد به y اضافه شود و سپس نتیجه در عملوند x قرار بگیرد. حال به دو مثال زیر توجه کنید :

using System;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 0;
            int y = 1;

            x = y--;

            Console.WriteLine("x= {0}",x);
            Console.WriteLine("y= {0}", y);
            Console.ReadLine();
        }
    }
}
x=1
y=0
using System;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 0;
            int y = 1;

            x = y++;

            Console.WriteLine("x= {0}",x);
            Console.WriteLine("y= {0}", y);
            Console.ReadLine();
        }
    }
}
x=1
y=2

همانطور که در دو مثال بالا مشاهده می‌کنید، درج عملگرهای — و ++ بعد از عملوند y باعث می‌شود که ابتدا مقدار y در داخل متغیر x قرار بگیرد و سپس یک واحد از y کم و یا یک واحد به ان اضافه شود. حال می‌توانیم با ایجاد یک برنامه نحوه عملکرد عملگرهای ریاضی در سی شارپ را یاد بگیریم :

   1: using System;                                                                         
   2:                                                                                       
   3: public class Program                                                                  
   4: {                                                                                     
   5:    public static void Main()                                                          
   6:    {                                                                                  
   7:       //Variable declarations                                                         
   8:       int num1, num2;                                                                 
   9:       string msg1, msg2;                                                              
  10:                                                                                       
  11:       //Assign test values                                                            
  12:       num1 = 5;                                                                       
  13:       num2 = 3;                                                                       
  14:                                                                                       
  15:       //Demonstrate use of mathematical operators                                     
  16:       Console.WriteLine("The sum of {0} and {1} is {2}.", num1, num2, (num1 + num2)); 
  17:       Console.WriteLine("The difference of {0} and {1} is {2}.", num1, num2,          
  18:                            (num1 - num2));                                            
  19:       Console.WriteLine("The product of {0} and {1} is {2}.", num1, num2,             
  20:                            (num1 * num2));                                            
  21:       Console.WriteLine("The quotient of {0} and {1} is {2:F2}.", num1, num2,         
  22:                          ((double)num1 / num2));                                      
  23:       Console.WriteLine("The remainder of {0} divided by {1} is {2}", num1, num2,     
  24:                          (num1 % num2));                                              
  25:                                                                                       
  26:       //Demonstrate concatenation on strings using the + operator                     
  27:       msg1 = "Hello ";                                                                
  28:       msg2 = "World!";                                                                
  29:       Console.WriteLine(msg1 + msg2);                                                 
  30:    }                                                                                  
  31: }
The sum of 5 and 3 is 8.
The difference of 5 and 3 is 2.
The product of 5 and 3 is 15.
The quotient of 5 and 3 is 1.67.
The remainder of 5 divided by 3 is 2
Hello World!

برنامه بالا نتیجه هر عبارت را نشان می‌دهد. در این برنامه از متد Writeline() برای نشان دادن نتایج در سطرهای متفاوت استفاده شده است. در این مثال با یک نکته عجیب مواجه می‌شویم و آن حاصل تقسیم دو عدد صحیح است. وقتی که دو عدد صحیح را بر هم تقسیم کنیم حاصل باید یک عدد صحیح و فاقد بخش کسری باشد. اما همانطور که مشاهده می‌کنید اگر فقط یکی از اعداد را به نوع اعشاری double تبدیل کنیم (در مثال می‌بینید) حاصل به صورت اعشار نشان داده می‌شود.
برای اینکه ارقام کسری بعد از عدد حاصل دو رقم باشند از {2:F2} استفاده می‌کنیم. F به معنای تعیین کردن می‌باشد و در این جا بدین معناست که عدد را تا دو رقم اعشار نمایش بده. چون خطوط کد طولانی هستند آنها را در دو خط می‌نویسیم. سی شارپ خط جدید و فاصله و فضای خالی را نادیده می‌گیرد. در خط 29 مشاهده می‌کنید که دو رشته به وسیله عملگر + به هم متصل شده‌اند. نتیجه استفاده از عملگر + برای چسباندن دو کلمه “Hello “ و “!World” رشته “!Hello World” خواهد بود. به فاصله‌های خالی بعد از اولین کلمه توجه کنید اگر آنها را حذف کنید از خروجی برنامه نیز حذف می‌شوند.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر و اگر سوالی دارید در بخش پرسش و پاسخ مطرح بفرمایید.

  1. amir پاسخ دادن

    با سلام
    در قسمت توضیح عملگر ++ فرموده اید: مقدار var1 برابر است با var2 بعلاوه ۱، متغیر var2 تغییر نمی کند.
    اما این نمی تواند صحیح باشد.در واقع ابتدا مقدار var2 بعلاوه ۱ می شود و سپس var1 برابر var2 می شود، در حالی که شما اعلام کرده اید متغیر var2 تغییر نمیکند. در مورد — نیز یه همین گونه می باشد.

  2. یونس ابراهیمی پاسخ دادن

    ممنون از راهنماییتون… اصلاح شد

  3. comett پاسخ دادن

    سلام خسته نباشید ممنون از آموزشاتون
    یه سوال…در جدول دوم به جای – نباید — باشه؟

  4. comett پاسخ دادن

    منظورم تو نظر قبلی این بود که به جای یه منها دو منها باید باشه…
    ممنون

    • یونس ابراهیمی پاسخ دادن

      سلام، ،ممنون، فونتش ریز بود، اصلاح شد

  5. somayeh پاسخ دادن

    سلام
    ممنون از سایت بی نظیرتون
    یه سوال:
    چرا placeholder ها همه {۰} گذاشتین؟
    چرا نمی تونیم دو عدد متفاوت بذاریم؟؟؟