آموزش منطق بولی در سی شارپ
نوع داده ی bool که در فصل قبلی معرفی شد، می تواند یکی از دو مقدار true یا false را در خود نگهداری کند. اغلب از این نوع داده برای ضبط نتیجه ی برخی عملکردها استفاده می شود؛ بنابراین ما می توانیم بر اساس این نتیجه عمل کنیم. از نوع داده های bool به خصوص برای ذخیره ی نتایج مقایسه ها استفاده می شود.
نکته: به عنوان یک جنبه تاریخی، این اثر(یعنی منطق بولی) به ریاضیدان انگلیسی، جورج بول در اواسط قرن نوزدهم مربوط می شود.
برای نمونه، وضعیتی را در نظر بگیرید که ( در مقدمه این فصل ذکر شد ) ما می خواهیم کدهایی را بر اساس اینکه آیا متغیر myVal کمتر از 10 است یا نه اجرا کنیم. برای انجام این کار، ما می خواهیم نشان دهیم که ارزش عبارت" متغیر myVal کمتر از 10 است"، true است یا false. برای این کار، نیاز داریم بدانیم نتیجه ی بولین این مقایسه چیست. در مقایسه های بولین، نیاز داریم تا از عملگرهای مقایسه بولین استفاده کنیم(که بعنوان عملگرهای رابطه ای نیز شناخته می شوند). این موضوع در جدول 4.1 نشان داده شده است.
(جدول 4.1 : عملگرهای مقایسه ای بولین)
| نتیجه | عبارت مثال | دسته | عملگر |
|---|---|---|---|
| اگر var2 برابر با var3 باشد، مقدار true در var1 قرار می گیرد. در غیر این صورت، مقدار false در آن قرار می گیرد. | ;var1 = var2 == var3 | باینری | == |
| اگر var2 با var3 برابر نباشد، مقدار var1 برابر با true می شود؛ در غیر این صورت مقدار آن برابر با false می شود. | ;var1 = var2 != var3 | باینری | =! |
| اگر var2 کوچکتر از var3 باشد، مقدار var1 برابر با true می شود؛ در غیر این صورت مقدار آن برابر با false می شود. | ;var1 = var2 < var3 | باینری | > |
| اگر var2 بزرگتر از var3 باشد، مقدار var1 برابر با true می شود؛ در غیر این صورت مقدار آن برابر با false می شود. | ;var1 = var2 > var3 | باینری | < |
| اگر var2 کوچکتر یا مساوی با var3 باشد، مقدار var1 برابر با true می شود؛ در غیر این صورت مقدار آن برابر با false می شود. | ;var1 = var2 <= var3 | باینری | => |
| اگر var2 بزرگتر یا مساوی با var3 باشد، مقدار var1 برابر با true می شود؛ در غیر این صورت مقدار آن برابر با false می شود. | ;var1 = var2 >= var3 | باینری | =< |
در تمام موردهای جدول 4.1 ، متغیر var1 از نوع داده ی bool می باشد. و متغیرهای var2 و var3 ممکن است متفاوت باشند. ما می توانیم از عملگرهایی مانند این ها، بر روی مقادیر عددی، به صورت کد زیر استفاده کنیم:
bool isLessThan10;
isLessThan10 = myVal < 10;
کد بالا باعث می شود اگر در متغیر myVal عددی کمتر از 10 قرار داشته باشد، مقدار true در متغیر isLessThan10 ذخیره شود و در غیر این صورت مقدار false در آن ذخیره شود. ما همچنین می توانیم از عملگرهای مقایسه ای با نوع های دیگر، نیز استفاده کنیم، مانند رشته ها:
bool isBenjamin;
isBenjamin = myString == "Benjamin";
در کد بالا، تنها اگر متغیر myString حاوی رشته ی Benjamin باشد، مقدار متغیر isBenjamin برابر با true می شود.
ما همچنین می توانیم متغیرهایی که مقادیر بولین دارند را با یکدیگر مقایسه کنیم:
bool isTrue;
isTrue = myBool == true;
اما در اینجا، در استفاده از عملگرهای == و =! محدودیت داریم.
نکته: اگر ما ناخواسته فرض کنیم که چون val1 < val2 ارزش false دارد پس val1 > val2 ارزش true دارد؛ یک خطای ناخواسته رخ خواهد داد. اگر val1 == val2، هردوی این عبارت ها ارزش false دارند.
عملگرهای & و | نیز دو عملگر مشابه هستند که بعنوان عملگرهای بولین شرطی شناخته می شوند. و در جدول 4.2 نشان داده شده اند:
(جدول 4.2 : عملگرهای بولین شرطی)
| نتیجه | عبارت مثال | دسته | عملگر |
|---|---|---|---|
| اگر var2 و var3 هر دو true باشند، مقدار true در داخل متغیر var1 قرار می گیرد، در غیر این صورت، مقدار false در آن قرار می گیرد(AND منطقی) | ;var1 = var2 && var3 | باینری | && |
| اگر var2 یا var3 یا هردو true باشند، مقدار true در داخل متغیر var1 قرار می گیرد، در غیر این صورت، مقدار false در آن قرار می گیرد(OR منطقی) | ;var1 = var2 || var3 | باینری | || |
نتیجه ی این عملگرها دقیقاً مشابه با عملگرهای & و | است اما یک تفاوت مهم در طریقی که این نتیجه حاصل می شود وجود دارد، که می تواند باعث بهبودی کارایی شود. هر دوی این عملگرها به مقدار عملوندهای هایی اول(یعنی var2 در جدول 4.2) توجه می کنند؛ یعنی بسته به مقدار این عملوند عمل می کنند. و ممکن است نیاز نباشد تا عملوند های دوم(یعنی var3 در جدول 4.2) اصلا پردازش شوند.
اگر ارزش اولین عملوند عملگر && برابر با false باشد، آنگاه نیازی نیست مقدار دومین عملوند را در نظر بگیریم، زیرا نتیجه بدون در نظر گرفتن دومین عملوند، false خواهد بود. به طور مشابه، در عملگر || اگر اولین عملوند true باشد، این مقدار true را برمی گرداند، بدون اینکه مقدار دومین عملوند در نظر گرفته شود.
آموزش برنامه نویسی, کتاب آموزش سی شارپ, آموزش سی شارپ
- بازدید: 383
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.