عملگرهای ریاضی
سی شارپ از عملگرهای ریاضی برای انجام محاسبات استفاده میکند. جدول زیر عملگرهای ریاضی سی شارپ را نشان میدهد :
عملگر | دسته | مثال | نتیجه |
+ | 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; | ابتدا به var2 یک واحد اضافه می شود و سپس این مقدار در داخل var1 قرار می گیرد. |
– – | Unary | var1 = – -var2; | ابتدا از var2 یک واحد کم می شود و سپس این مقدار در داخل var1 قرار می گیرد. |
++ | Unary | var1 = var2++; | ابتدا مقدار var2 در داخل var1 قرار می گیرد و سپس یک واحد به var2 اضافه می شود. |
— | Unary | var1 = var2–; | ابتدا مقدار var2 در داخل var1 قرار می گیرد و سپس یک واحد از 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” خواهد بود. به فاصلههای خالی بعد از اولین کلمه توجه کنید اگر آنها را حذف کنید از خروجی برنامه نیز حذف میشوند.