تمرین های آخر فصل 4 آموزش سی شارپ
تمرین 4.1 : اگر دو عدد صحیح(integer) داشته باشیم که در داخل متغیرهای var1 و var2 ذخیره شده باشند، چه تست بولین ای می توانیم انجام دهیم تا مشخص کنیم که اولی یا دیگری(نه هردو) بزرگتر از 10 هستند؟
جواب:
(var1 > 10) ^ (var2 > 10)
نکته: عملگر ^ نماد بولین منطقی XOR می باشد.
تمرین 4.2: یک برنامه بنویسید که شامل منطق تمرین 1 باشد و دو عدد را از کاربر بگیرد و آنها را نمایش دهد؛ اما هر ورودی(input) که در آن، هر دو عدد بزرگتر از 10 هستند را رد کند و دو عدد جدید را درخواست کند.
پاسخ: توجه کنید که برای اینکه پیام ها با سناریوی وارد شده مطابقت داشته باشند، حداقل یک عدد باید بزرگتر از 10 باشد. همچنین، قبل از تلاش برای تبدیل آن با استفاده از ToDouble()، بررسی کنید که آیا مقداری وارد شده است یا خیر.
using static System.Console;
using static System.Convert;
static void Main(string[] args)
{
bool numbersOK = false;
double var1, var2;
var1 = 0;
var2 = 0;
while (!numbersOK)
{
WriteLine("Enter 2 numbers, both numbers cannot be greater than 10.");
WriteLine("Please enter the first number:");
var1 = ToDouble(ReadLine());
WriteLine("Please enter the second number:");
var2 = ToDouble(ReadLine());
WriteLine($"The first number entered is {var1} " +
$"and the second is {var2}");
if ((var1 > 10) ^ (var2 > 10))
{
numbersOK = true;
}
else if ((var2 > 10) ^ (var1 > 10))
{
numbersOK = true;
}
else
{
WriteLine("Only one number may be greater than 10, " +
"please try again.");
}
}
WriteLine("Press the <ENTER> key to exit.");
ReadLine();
}
تمرین 4.3: در کد زیر چه چیزی اشتباه است؟
int i;
for (i = 1; i <= 10; i++)
{
if ((i % 2) = 0)
continue;
WriteLine(i);
}
پاسخ: کد باید در خط 4 به صورت زیر باشد:
int i;
for (i = 1; i <= 10; i++)
{
if ((i % 2) == 0)
continue;
WriteLine(i);
}
نکته: استفاده از عملگر انتساب = به جای عملگر بولین == یک اشتباه بسیار متداول است.
آنچه در این فصل آموختیم
منطق بولی(Boolean logic): منطق بولی شامل استفاده از مقادیر بولین(یعنی true یا false) برای ارزیابی شرط ها می باشد. از عملگرهای بولی، برای انجام مقایسه بین مقادیر و برگرداندن نتیجه های بولین(Boolean) استفاده می شود. از برخی از عملگرهای بولین، همچنین برای انجام عملیات بیتی(bitwise operations) روی ساختار اساسی بیتی مقادیر(underlying bit structure of values) استفاده می شود؛ و چند عملگر بیتی(bitwise) تخصصی نیز وجود دارند.
انشعاب گذاری(Branching): ما می توانیم از منطق بولین(Boolean logic) برای کنترل گردش برنامه(program flow) استفاده کنیم. ما می توانیم برای اینکه مشخص کنیم، که یک بلوک از کدها اجرا شده است یا نه، از نتیجه ی یک عبارت(result) که با یک مقدار بولین ارزیابی می شود، استفاده کنیم. برای انشعاب گذاری ساده(simple branching) در این کار، می توانیم از دستور if یا عملگر ترنری :? یا از دستور switch برای بررسی چندین شرط به طور همزمان استفاده کنیم.
استفاده از حلقه ها(Looping): حلقه ها به ما امکان می دهند تا بلوک های کدها را بر اساس شرط هایی که ما می گذاریم، چندین بار تکرار کنیم. ما می توانیم از حلقه های do و while برای اجرای کدها، تا هنگامی که ارزش یک عبارت بولین true باشد، استفاده کنیم. و می توانیم از حلقه ی for برای اضافه کردن یک شمارنده(counter) در داخل کدهای خود استفاده کنیم. حلقه ها، می توانند در یک چرخه (با استفاده از دستور continue) قطع شوند؛ و یا اینکه می توانند (با استفاده از دستور break ) کاملاً قطع شوند. برخی حلقه ها، تنها اگر آنها را قطع(interrupt them) کنیم، پایان می یابند؛ به این ها، حلقه های بی پایان(infinite loops) گفته می شود.