عملگرهای بیتی و انتساب بولی در سی شارپ

Ratings
(0)

با ترکیب عملگرهای بیتی بولی و انتساب می توانیم مقایسه های بولی را با انتساب ها ترکیب کنیم. اینها مانند عملگرهای انتساب ریاضی که در فصل قبل با آنها آشنا شدیم کار می کنند( =+ و =* و غیره). نسخه های بولی این عملگرها در جدول 4.3 نشان داده شده است. وقتی که عبارات، از هردوی عملگر انتساب(=) و عملگرهای بیتی(& و | و ^) استفاده کنند، از نمایش باینری مقادیر مقایسه شده، به جای مقادیر صحیح(instead) یا رشته ای(string) یا مقادیر مشابه، برای مقایسه ی نتیجه استفاده می شود.

(جدول 4.3 : عملگرهای انتساب بولی)

(جدول 4.3 : عملگرهای انتساب بولی)

نتیجه عبارت مثال دسته عملگر
نتیجه ی عبارت var1 & var2 در var1 ذخیره می شود. ;var1 &= var2 باینری =&
نتیجه ی عبارت var1 | var2 در var1 ذخیره می شود. ;var1 |= var2 باینری =|
نتیجه ی عبارت var1 ^ var2 در var1 ذخیره می شود. ;var1 ^= var2 باینری =^

بعنوان مثال معادله ی var1 ^= var2 مشابه با معادله var1 = var1 ^ var2 است؛ به طوری که var1 = true و var2 = false. وقتی که داریم نمایش باینری false که برابر با 0000 است را با چیز دیگری که معمولاً غیر از 0000 است( معمولاً 0001) مقایسه می کنیم، var1 به مقدار true تنظیم می شود.


نکته: توجه کنید که عملگرهای انتساب =& و =| از عملگرهای بولیِ شرطیِ && و || استفاده نمی کنند. به این معنا که تمام عملوندها بدون توجه به مقدار سمت چپ عملگر انتساب پردازش می شوند.


خودتان امتحان کنید زیر، یکی از مواردی است که فرض می کند (در صورت نیاز) عبارات using static System.Console; و using static System.Convert; به بخش using در بالای فایل اضافه شده اند.


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

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

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

static void Main(string[] args)
{
  WriteLine("Enter an integer:");
  int myInt = ToInt32(ReadLine());
  bool isLessThan10 = myInt < 10;
  bool isBetween0And5 = (0 <= myInt) && (myInt <= 5);
  WriteLine($"Integer less than 10? {isLessThan10}");
  WriteLine($"Integer between 0 and 5? {isBetween0And5}");
  WriteLine($"Exactly one of the above is true? " + $"{isLessThan10 ^ isBetween0And5}");
  ReadKey();
}

 3. برنامه را اجرا کنید و وقتی از شما درخواست شد، یک عدد صحیح را وارد کنید. نتیجه در تصویر 4.1 نشان داده شده است.

 (تصویر 4.1) (تصویر 4.1)


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

دو خط اول کد، باعث می شود یک عدد صحیح با استفاده از تکنیک هایی که قبلاً دیده اید درخواست(prompt) شود:

WriteLine("Enter an integer:");
int myInt = ToInt32(ReadLine());

ما از دستور ToInt32() برای به دست آوردن یک عدد صحیح از رشته ی وارد شده استفاده می کنیم؛ این فرمان یک فرمان تبدیل دیگر است که هم خانواده ی فرمان ToDouble() که قبلاً از آن استفاده شد می باشد. هردوی متدهای ToInt32() و ToDouble() بخشی از کلاس استاتیک System.Convert می باشند.

همان طور که در فصل 3 توضیح داده شد، از سی شارپ 6، این امکان وجود دارد تا مستقیماً به متد یک کلاس استاتیک دسترسی پیدا کنیم(در این مثال System.Convert). برای این کار می توانیم کلاس using static System.Convert را به لیست فضای نام ها، اضافه کنیم. همچنین توجه کنید که ما در کدها هیچ بررسی و چک کردن انجام ندادیم تا بفهمیم که کاربر دقیقاً یک عدد صحیح را وارد کرده است یا نه. اگر یک عدد که صحیح(integer) نباشد، مثلا یک رشته را وارد کنیم،  وقتی که داریم سعی می کنیم که تبدیل را انجام دهیم، یک هشدار ایجاد خواهد شد.

برای به کار بردن این روش، می توانیم از یک بلوک try{}...catch{} استفاده کنیم؛ یا اینکه می توانیم قبل از اینکه تبدیل را انجام دهیم، با استفاده از متد GetType() مقدار ورودی را بررسی کنیم. هردو روش، بعداً در فصل های بعدی توضیح داده خواهند شد. سپس، دو متغیر بولین به نام های isLessThan10 و isBetween0And5 تعریف می شوند و مقادیری که مربوط به نام این متغیرها است به آنها انتساب داده می شود:

bool isLessThan10 = myInt < 10;
bool isBetween0And5 = (0 <= myInt) && (myInt <= 5);

از این متغیرها در سه خط کد بعدی استفاده می شود، دو مورد اول مقادیر خود را در خروجی نشان می دهند، در حالی که سومی عملیاتی را روی آنها انجام می دهد و نتیجه را در خروجی نشان می دهد. همان طور که در تصویر 4.1 نشان داده شده است، فرض کرده ایم کاربر مقدار 7 را وارد کرده است. اولین خروجی در نتیجه ی اجرای عبارت myInt < 10 ایجاد می شود.

اگر متغیر  myInt برابر با 6 باشد، که از 10 کوچکتر است، نتیجه true خواهد بود؛ اما اگر مقدار متغیر myInt برابر با 10 یا بیشتر باشد، نتیجه false خواهد بود.

محاسبه خروجی دوم پیچیده تر است: (0 <= myInt) && (myInt <= 5) . در این عبارت، از دو مقایسه برای مشخص کردن اینکه آیا مقدار متغیر myInt بزرگتر یا مساوی 0 است و کوچکتر یا مساوی 5 است، استفاده می شود. و یک AND بولی بین نتیجه های به دست آمده اعمال می شود. اگر از مقدار 6 در عبارت مذکور استفاده کنیم، عبارت (0 <= myInt) مقدار true را برمی گرداند و عبارت (myInt <= 5) مقدار false را برمی گرداند. و نتیجه ی (true) && (false) برابر با false می شود؛ که می توانید در نمایشگر آن را مشاهده کنید. در نهایت، بر روی دو متغیر بولین isLessThan10 و isBetween0And5 یک OR منطقی انجام می دهیم.

اگر یکی از مقادیر true و دیگری false باشد، مقدار true برگردانده می شود.؛ یعنی اگر متغیر  myInt برابر با 6 و 7 و 8 یا 9 باشد، مقدار true برگردانده می شود؛ همان طور که در مثال مذکور مشاهده کردید، اگر از مقدار 6 استفاده کنیم، نتیجه برابر با true می شود.

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

  • بازدید: 440

نوشتن دیدگاه

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

ارسال