Skip to content

Commit c45fa57

Browse files
committed
Lesson 12
1 parent cfb6b0c commit c45fa57

File tree

3 files changed

+154
-0
lines changed

3 files changed

+154
-0
lines changed

CSharpCourse.sln

+6
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lesson_010", "Lesson_010\Le
2727
EndProject
2828
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lesson_011", "Lesson_011\Lesson_011.csproj", "{9461A915-F2A7-4E78-ABE3-E9FA9A7282A1}"
2929
EndProject
30+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lesson_012", "Lesson_012\Lesson_012.csproj", "{95A449DE-3591-40E4-BFA8-D7A98DD2CC22}"
31+
EndProject
3032
Global
3133
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3234
Debug|Any CPU = Debug|Any CPU
@@ -81,6 +83,10 @@ Global
8183
{9461A915-F2A7-4E78-ABE3-E9FA9A7282A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
8284
{9461A915-F2A7-4E78-ABE3-E9FA9A7282A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
8385
{9461A915-F2A7-4E78-ABE3-E9FA9A7282A1}.Release|Any CPU.Build.0 = Release|Any CPU
86+
{95A449DE-3591-40E4-BFA8-D7A98DD2CC22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
87+
{95A449DE-3591-40E4-BFA8-D7A98DD2CC22}.Debug|Any CPU.Build.0 = Debug|Any CPU
88+
{95A449DE-3591-40E4-BFA8-D7A98DD2CC22}.Release|Any CPU.ActiveCfg = Release|Any CPU
89+
{95A449DE-3591-40E4-BFA8-D7A98DD2CC22}.Release|Any CPU.Build.0 = Release|Any CPU
8490
EndGlobalSection
8591
GlobalSection(SolutionProperties) = preSolution
8692
HideSolutionNode = FALSE

Lesson_012/Lesson_012.csproj

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
</PropertyGroup>
8+
9+
</Project>

Lesson_012/Program.cs

+139
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
Console.WriteLine("\n------------Boolean type------------");
2+
3+
bool no = false;
4+
bool yes = true;
5+
6+
Console.WriteLine(no); // False
7+
Console.WriteLine(yes); // True
8+
9+
bool a = 10 > 5; // true
10+
bool b = 2 == 3; // false
11+
12+
Console.WriteLine(a); // True
13+
Console.WriteLine(b); // False
14+
15+
16+
Console.WriteLine("\n------------Comparison operators------------");
17+
18+
// ==
19+
Console.WriteLine(10 == 10); // True
20+
Console.WriteLine(7 == 8); // False
21+
22+
// !=
23+
Console.WriteLine(10 != 10); // False
24+
Console.WriteLine(7 != 8); // True
25+
26+
// <, >, <=, >=
27+
Console.WriteLine(10 < 8); // False
28+
Console.WriteLine(8 < 8); // False
29+
Console.WriteLine(8 <= 8); // True
30+
31+
int age = 17;
32+
if (age >= 18)
33+
{
34+
Console.WriteLine("Allow voting");
35+
}
36+
else
37+
{
38+
Console.WriteLine("Forbid voting");
39+
}
40+
41+
42+
Console.WriteLine("\n------------Logical operators------------");
43+
44+
Console.WriteLine("\nAND (& / &&)");
45+
46+
Console.WriteLine(no && no); // False
47+
Console.WriteLine(no && yes); // False
48+
Console.WriteLine(yes && no); // False
49+
Console.WriteLine(yes && yes); // True
50+
51+
52+
Console.WriteLine("\nOR (| / ||)");
53+
54+
Console.WriteLine(no || no); // False
55+
Console.WriteLine(no || yes); // True
56+
Console.WriteLine(yes || no); // True
57+
Console.WriteLine(yes || yes); // True
58+
59+
60+
Console.WriteLine("\nNOT (!)");
61+
62+
Console.WriteLine(!no); // True
63+
Console.WriteLine(!yes); // False
64+
65+
66+
Console.WriteLine("\nXOR (^)");
67+
68+
Console.WriteLine(no ^ no); // False
69+
Console.WriteLine(no ^ yes); // True
70+
Console.WriteLine(yes ^ no); // True
71+
Console.WriteLine(yes ^ yes); // False
72+
73+
bool hasPassport = true;
74+
age = 25;
75+
if (age >= 18 && hasPassport) // Проверка сразу двух условий, используя логическое "И"
76+
{
77+
Console.WriteLine("Allow voting");
78+
}
79+
else
80+
{
81+
Console.WriteLine("Forbid voting");
82+
}
83+
84+
85+
Console.WriteLine("\n------------Difference between full and short-circuit operators------------");
86+
87+
bool result = False() & True(); // Полная версия оператора - всегда будут вычисляться оба операнда.
88+
Console.WriteLine(result); // False
89+
90+
result = False() && True(); // Short-circuit версия оператора - второй операнд вычисляться не будет, так как первый операнд равен "false", а значит результат уже не зависит от значения второго операнда и тоже будет равен "false".
91+
Console.WriteLine(result); // False
92+
93+
result = True() && False(); // Short-circuit версия оператора - второй операнд всё равно будет вычисляться, так как первый операнд равен "true", и одного данного значения не достаточно для определения конечного результата.
94+
Console.WriteLine(result); // False
95+
96+
result = True() | False(); // Полная версия оператора - всегда будут вычисляться оба операнда.
97+
Console.WriteLine(result); // True
98+
99+
result = True() || False(); // Short-circuit версия оператора - второй операнд вычисляться не будет, так как первый операнд равен "true", а значит результат уже не зависит от значения второго операнда и тоже будет равен "true".
100+
Console.WriteLine(result); // True
101+
102+
bool False()
103+
{
104+
Console.WriteLine("False has been called");
105+
return false;
106+
}
107+
108+
bool True()
109+
{
110+
Console.WriteLine("True has been called");
111+
return true;
112+
}
113+
114+
115+
Console.WriteLine("\n------------Operators priorities------------");
116+
117+
result = 2 < 3 == 10 > 6;
118+
Console.WriteLine(result); // True
119+
120+
result = 5 < 8 && 7 == 7;
121+
Console.WriteLine(result); // True
122+
123+
result = (5 < 8) || (7 == 7); // Скобки необязательны, но улучшают читаемость
124+
Console.WriteLine(result); // True
125+
126+
result = !true || true;
127+
Console.WriteLine(result); // True
128+
129+
result = false || (true && false); // Скобки необязательны, но улучшают читаемость
130+
Console.WriteLine(result); // False
131+
132+
result = (true && !true) || false; // Скобки необязательны, но улучшают читаемость
133+
Console.WriteLine(result); // False
134+
135+
result = true ^ false && false; // (true ^ false) && false, так как полные операторы имеют приоритет над short-circuit операторами
136+
Console.WriteLine(result); // False
137+
138+
result = true | false && false; // (true | false) && false, так как полные операторы имеют приоритет над short-circuit операторами
139+
Console.WriteLine(result); // False

0 commit comments

Comments
 (0)