عملگرهای ریاضی
سی شارپ از عملگرهای ریاضی برای انجام محاسبات استفاده میکند. جدول زیر عملگرهای ریاضی سی شارپ را نشان میدهد :
عملگر | دسته | مثال | نتیجه |
+ | 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” خواهد بود. به فاصلههای خالی بعد از اولین کلمه توجه کنید اگر آنها را حذف کنید از خروجی برنامه نیز حذف میشوند.
byte 1200/2 میخوام خطاش روبگیرم من نمیدونم قسمت پرسش و پاسخ کجاست
با این نمیشه دلیل رو گفت، شما چرا همه ی کدی که نوشتین رو اینجا کپی نمی کنید که نگاه کنم؟ یا نمی گین که هدفتون از نوشتین این کد چیه؟ آیا همه ی کد همینه؟
در ضمن بعید می دونم از این سایت از لحاظ ظاهری، سایتی ساده تر پیدا کنید. اون بالا تو نوار سبز رنگ نوشته ((پرسش و پاسخ))
اینطور بنویسین
; byte 1200/2 مشکلش چیه که خطا میزنه لطفا راهنمایی کنید حرفتون درسته اشتباه تایپی بود ولی این سوال یه مشکلی داره که داخل سی شارپ خطا میزنه میشه بگید مشکلش چیه
از این به بعد ممنون میشم سوالتونو تو بخش پرسش و پاسخ مطرح بفرمایید.
کلا با این کد میخواین چکار کنید؟ کل کدتون رو اینجا بنویسین تا بررسی کنم
; bayte 1200/2 مشکلش چیه که خطا میزنه لطفا راهنمایی کنید
bayte اشتباهه. byte درسته
سلام من طبق کدی که نوشته بودید نوشتم اما این خطاها رو به من داد می خواستم ببینم اشکال کار من از کجاست ممنون میشم اگه سریعتر منو راهنمایی کنید
‘myprogramfirst.exe’ (CLR v4.0.30319: DefaultDomain): Loaded ‘C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll’. Skipped loading symbols. Module is optimized and the debugger option ‘Just My Code’ is enabled.
‘myprogramfirst.exe’ (CLR v4.0.30319: DefaultDomain): Loaded ‘C:\Users\RPH\Desktop\myfirstprogram\myprogramfirst\bin\Debug\myprogramfirst.exe’. Symbols loaded.
The program ‘[2028] myprogramfirst.exe’ has exited with code 0 (0x0).
The program ‘[2028] myprogramfirst.exe: Program Trace’ has exited with code 0 (0x0).
من هم در این مورد اشکال داشتم.چون وقتی نوشته میشه Y++ با توجه به توضیحات جواب باید X=2 & Y=1 باشه در حالیکه هر دو مساویه 2 میشن!
توضیحات رو تکمیل کردم. یه بار دیگه جدول رو مطالعه بفرمایید.
سلام
ممنون از سایت بی نظیرتون
یه سوال:
چرا placeholder ها همه {0} گذاشتین؟
چرا نمی تونیم دو عدد متفاوت بذاریم؟؟؟
سلام و ممنون از لطفتون
قسمت (palceholder) این لینک رو بخونید کامل متوجه می شین
http://www.w3-farsi.com/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7/
منظورم تو نظر قبلی این بود که به جای یه منها دو منها باید باشه…
ممنون
سلام، ،ممنون، فونتش ریز بود، اصلاح شد
سلام خسته نباشید ممنون از آموزشاتون
یه سوال…در جدول دوم به جای – نباید — باشه؟
ممنون از راهنماییتون… اصلاح شد
با سلام
در قسمت توضیح عملگر ++ فرموده اید: مقدار var1 برابر است با var2 بعلاوه 1، متغیر var2 تغییر نمی کند.
اما این نمی تواند صحیح باشد.در واقع ابتدا مقدار var2 بعلاوه 1 می شود و سپس var1 برابر var2 می شود، در حالی که شما اعلام کرده اید متغیر var2 تغییر نمیکند. در مورد — نیز یه همین گونه می باشد.