0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#Руководства</a></p>
1
<p><a>#Руководства</a></p>
2
<ul><li>3 июн 2020</li>
2
<ul><li>3 июн 2020</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Разбираемся, как сделать программу на C++ полезнее, чем обычный калькулятор.</p>
4
</ul><p>Разбираемся, как сделать программу на C++ полезнее, чем обычный калькулятор.</p>
5
<p> vlada_maestro / shutterstock</p>
5
<p> vlada_maestro / shutterstock</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
6
<p>Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.</p>
7
<p>Это третья часть из серии "Глубокое погружение в C++". В <a>прошлый раз</a>мы научились работать с данными: переменными, константами и операциями с ними. Сегодня поговорим о более сложных аспектах языка.</p>
7
<p>Это третья часть из серии "Глубокое погружение в C++". В <a>прошлый раз</a>мы научились работать с данными: переменными, константами и операциями с ними. Сегодня поговорим о более сложных аспектах языка.</p>
8
<p>Полезные программы умеют выполнять различные инструкции в зависимости от обстоятельств. Например, браузер отображает сайт, если всё успешно загрузилось, или сообщает об ошибке, если что-то пошло не так. Это называется ветвлением.</p>
8
<p>Полезные программы умеют выполнять различные инструкции в зависимости от обстоятельств. Например, браузер отображает сайт, если всё успешно загрузилось, или сообщает об ошибке, если что-то пошло не так. Это называется ветвлением.</p>
9
<p>Ветвление в программе может быть таким:</p>
9
<p>Ветвление в программе может быть таким:</p>
10
<p>Нет ни одной IT-сферы, где не нужно проверять какие-то условия, чтобы выполнить определённые действия: от робототехники до игр. Давайте разбираться, что такое условные конструкции, какими они бывают и как ими пользоваться.</p>
10
<p>Нет ни одной IT-сферы, где не нужно проверять какие-то условия, чтобы выполнить определённые действия: от робототехники до игр. Давайте разбираться, что такое условные конструкции, какими они бывают и как ими пользоваться.</p>
11
<p>Есть тип данных<strong>bool</strong><em>(<a>булев</a>тип)</em>, в котором хранится значение либо истина, либо ложь. Благодаря ему и возможно ветвление.</p>
11
<p>Есть тип данных<strong>bool</strong><em>(<a>булев</a>тип)</em>, в котором хранится значение либо истина, либо ложь. Благодаря ему и возможно ветвление.</p>
12
<p>Чтобы поместить в переменную булева типа какое-то значение, мы можем самостоятельно написать его<em>(true или false)</em>или ввести какое-либо логическое утверждение:</p>
12
<p>Чтобы поместить в переменную булева типа какое-то значение, мы можем самостоятельно написать его<em>(true или false)</em>или ввести какое-либо логическое утверждение:</p>
13
<ul><li>число a больше числа b;</li>
13
<ul><li>число a больше числа b;</li>
14
<li>имя пользователя - Игорь;</li>
14
<li>имя пользователя - Игорь;</li>
15
<li>сегодня четверг и так далее.</li>
15
<li>сегодня четверг и так далее.</li>
16
</ul><p>Дальше компьютер проверяет правдивость такого утверждения и возвращает результат.</p>
16
</ul><p>Дальше компьютер проверяет правдивость такого утверждения и возвращает результат.</p>
17
<p>Для написания таких утверждений необходимы логические операторы:</p>
17
<p>Для написания таких утверждений необходимы логические операторы:</p>
18
<ul><li><strong>></strong> - больше;</li>
18
<ul><li><strong>></strong> - больше;</li>
19
<li><strong><</strong> - меньше;</li>
19
<li><strong><</strong> - меньше;</li>
20
<li><strong>==</strong> - равно;</li>
20
<li><strong>==</strong> - равно;</li>
21
<li><strong>! =</strong> - не равно;</li>
21
<li><strong>! =</strong> - не равно;</li>
22
<li>>= - больше или равно;</li>
22
<li>>= - больше или равно;</li>
23
<li><= - меньше или равно.</li>
23
<li><= - меньше или равно.</li>
24
</ul><p>Вот несколько примеров:</p>
24
</ul><p>Вот несколько примеров:</p>
25
bool result = 5 > 6; //false result = 5 < 6; //true result = 5 == 6; //false result = 5 != 6; //true<p>При попытке вывести значение переменной result программа выведет 1 или 0.</p>
25
bool result = 5 > 6; //false result = 5 < 6; //true result = 5 == 6; //false result = 5 != 6; //true<p>При попытке вывести значение переменной result программа выведет 1 или 0.</p>
26
<p>ЗаданиеПопробуйте самостоятельно написать несколько логических утверждений и посмотреть, что покажет программа.</p>
26
<p>ЗаданиеПопробуйте самостоятельно написать несколько логических утверждений и посмотреть, что покажет программа.</p>
27
<p>Условная конструкция<em>if</em>позволяет выполнять инструкции только в том случае, если данное логическое утверждение верно. Записывается эта конструкция так:</p>
27
<p>Условная конструкция<em>if</em>позволяет выполнять инструкции только в том случае, если данное логическое утверждение верно. Записывается эта конструкция так:</p>
28
<p>После того как программа проверит утверждение, она выполнит<em>(или не выполнит)</em>всё, что написано внутри фигурных скобок. Вот пример программы с ветвлением:</p>
28
<p>После того как программа проверит утверждение, она выполнит<em>(или не выполнит)</em>всё, что написано внутри фигурных скобок. Вот пример программы с ветвлением:</p>
29
int a = 5; int b = 6; if (a > b) { std::cout << "a is bigger than b \n"; } if (a < b) { std::cout << "b is bigger than a \n"; } if (a == b) { std::cout << "a equals b \n"; }<p>Программа работает корректно, но такой код сложно читать из-за большого количества условных конструкций. Чтобы упростить запись, можно использовать оператор<em>else</em><em>(иначе)</em>.</p>
29
int a = 5; int b = 6; if (a > b) { std::cout << "a is bigger than b \n"; } if (a < b) { std::cout << "b is bigger than a \n"; } if (a == b) { std::cout << "a equals b \n"; }<p>Программа работает корректно, но такой код сложно читать из-за большого количества условных конструкций. Чтобы упростить запись, можно использовать оператор<em>else</em><em>(иначе)</em>.</p>
30
if (a > b) { std::cout << "a is bigger than b \n"; } else { std::cout << "a is not bigger than b \n"; }<p><em>Else</em>используется, чтобы сказать компьютеру, какие инструкции нужно выполнить, если проверяемое утверждение было ложным.</p>
30
if (a > b) { std::cout << "a is bigger than b \n"; } else { std::cout << "a is not bigger than b \n"; }<p><em>Else</em>используется, чтобы сказать компьютеру, какие инструкции нужно выполнить, если проверяемое утверждение было ложным.</p>
31
<p>Если нужно проверить несколько условий, то воспользуемся оператором<em>else if</em>.</p>
31
<p>Если нужно проверить несколько условий, то воспользуемся оператором<em>else if</em>.</p>
32
<p>Программа сначала проверит первое условие и, если оно ложно, будет проверять следующие за ним<em>else if</em>. Если ни одно из условий не было верным, выполняются инструкции внутри<em>else</em>, поэтому оно всегда должно стоять в конце.</p>
32
<p>Программа сначала проверит первое условие и, если оно ложно, будет проверять следующие за ним<em>else if</em>. Если ни одно из условий не было верным, выполняются инструкции внутри<em>else</em>, поэтому оно всегда должно стоять в конце.</p>
33
<p>Вы можете размещать условные конструкции внутри других условных конструкций:</p>
33
<p>Вы можете размещать условные конструкции внутри других условных конструкций:</p>
34
if(a > b) { if(a > 100) { //Какие-то инструкции } else { //Какие-то инструкции } }<p>Есть и более короткие варианты записи. Например, если должна быть выполнена только одна инструкция, то фигурные скобки лучше опустить:</p>
34
if(a > b) { if(a > 100) { //Какие-то инструкции } else { //Какие-то инструкции } }<p>Есть и более короткие варианты записи. Например, если должна быть выполнена только одна инструкция, то фигурные скобки лучше опустить:</p>
35
if(a == 5) std::cout << "a == 5 \n"; else std::cout << "a != 5 \n";<p>Запись можно сократить ещё сильнее, если вы используете условие, чтобы указать значение для переменной:</p>
35
if(a == 5) std::cout << "a == 5 \n"; else std::cout << "a != 5 \n";<p>Запись можно сократить ещё сильнее, если вы используете условие, чтобы указать значение для переменной:</p>
36
int result = 2 > 1 ? 1 : 0;<p>Получается запись вида:</p>
36
int result = 2 > 1 ? 1 : 0;<p>Получается запись вида:</p>
37
переменная = условие ? значение, если условие истинно : значение, если условие ложно;<p>Задание Попробуйте написать как можно больше условных конструкций, перед тем как продолжать чтение статьи, - эта тема очень важна.</p>
37
переменная = условие ? значение, если условие истинно : значение, если условие ложно;<p>Задание Попробуйте написать как можно больше условных конструкций, перед тем как продолжать чтение статьи, - эта тема очень важна.</p>
38
<p>Иногда нам необходимо проверить сразу несколько условий. Например, чтобы выйти на улицу, нужно убедиться, что нет дождя или у нас есть зонт. Чтобы завести машину, нам нужны ключ и бензин в баке.</p>
38
<p>Иногда нам необходимо проверить сразу несколько условий. Например, чтобы выйти на улицу, нужно убедиться, что нет дождя или у нас есть зонт. Чтобы завести машину, нам нужны ключ и бензин в баке.</p>
39
<p>Такие условия называются сложными, а для их проверки применяется<a>булева алгебра</a>. В C++ для этого есть следующие операторы:</p>
39
<p>Такие условия называются сложными, а для их проверки применяется<a>булева алгебра</a>. В C++ для этого есть следующие операторы:</p>
40
<ul><li><strong>& &</strong> - логическое "И" или логическое умножение<em>(конъюнкция)</em>. Оператор И возвращает истину, если верны оба утверждения.</li>
40
<ul><li><strong>& &</strong> - логическое "И" или логическое умножение<em>(конъюнкция)</em>. Оператор И возвращает истину, если верны оба утверждения.</li>
41
<li><strong>||</strong> - логическое "ИЛИ" или логическое сложение<em>(дизъюнкция)</em>. Оператор ИЛИ возвращает истину, если верно хотя бы одно утверждение.</li>
41
<li><strong>||</strong> - логическое "ИЛИ" или логическое сложение<em>(дизъюнкция)</em>. Оператор ИЛИ возвращает истину, если верно хотя бы одно утверждение.</li>
42
<li><strong>!</strong> - логическое отрицание. Возвращает истину, если утверждение ложно.</li>
42
<li><strong>!</strong> - логическое отрицание. Возвращает истину, если утверждение ложно.</li>
43
</ul><p>Вот простая таблица, в которой показаны вводные данные и результаты их логических умножений и сложений:</p>
43
</ul><p>Вот простая таблица, в которой показаны вводные данные и результаты их логических умножений и сложений:</p>
44
A B<strong>&& (И)</strong><strong>|| (ИЛИ)</strong>0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1<p>С оператором НЕ всё ещё проще:</p>
44
A B<strong>&& (И)</strong><strong>|| (ИЛИ)</strong>0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1<p>С оператором НЕ всё ещё проще:</p>
45
A<strong>!A (НЕ A)</strong>1 0 0 1<p>Вот несколько примеров использования таких операторов:</p>
45
A<strong>!A (НЕ A)</strong>1 0 0 1<p>Вот несколько примеров использования таких операторов:</p>
46
//Проверяем, чтобы денег было больше или равно цене, а также чтобы товар был в наличии bool canBuy = money >= price && goodsLeft > 0; //Чтобы убедиться, что человек может дышать, проверяем, что он не мёртв bool canBreath = !isDead; //Запрещаем доступ к сайту, если человек забанен или если проводятся технические работы bool forbidAccess = isBanned || techWorks;<p>Также вы можете использовать скобки:</p>
46
//Проверяем, чтобы денег было больше или равно цене, а также чтобы товар был в наличии bool canBuy = money >= price && goodsLeft > 0; //Чтобы убедиться, что человек может дышать, проверяем, что он не мёртв bool canBreath = !isDead; //Запрещаем доступ к сайту, если человек забанен или если проводятся технические работы bool forbidAccess = isBanned || techWorks;<p>Также вы можете использовать скобки:</p>
47
bool goodChoice = (a == 1 || a == 2) && b != 3;<p>Если вам нужно проверить какую-то переменную на определённое значение, то лучше использовать конструкцию<em>switch</em>. С её помощью превращаем такой код:</p>
47
bool goodChoice = (a == 1 || a == 2) && b != 3;<p>Если вам нужно проверить какую-то переменную на определённое значение, то лучше использовать конструкцию<em>switch</em>. С её помощью превращаем такой код:</p>
48
if(a == 1) {} else if(a == 2) {} else if(a == 3) {} else if(a == 4) {} else {}<p>В такой:</p>
48
if(a == 1) {} else if(a == 2) {} else if(a == 3) {} else if(a == 4) {} else {}<p>В такой:</p>
49
switch(a) { case 1: //... break; case 2: //... break; case 3: //... break; case 4: //... break; default: //... }<p>Вместо утверждения вы передаёте в <em>switch</em>переменную и проверяете значение. Далее с помощью оператора<em>case</em>обозначаются все значения, для которых нужно выполнить какое-то действие.</p>
49
switch(a) { case 1: //... break; case 2: //... break; case 3: //... break; case 4: //... break; default: //... }<p>Вместо утверждения вы передаёте в <em>switch</em>переменную и проверяете значение. Далее с помощью оператора<em>case</em>обозначаются все значения, для которых нужно выполнить какое-то действие.</p>
50
<p>В конце каждого<em>case</em>должно стоять слово<em>break</em> - оно говорит компилятору, что это конец инструкции. Аналогом<em>else</em>в <em>switch</em>служит<em>default,</em>и после него<em>break</em>уже не нужен.</p>
50
<p>В конце каждого<em>case</em>должно стоять слово<em>break</em> - оно говорит компилятору, что это конец инструкции. Аналогом<em>else</em>в <em>switch</em>служит<em>default,</em>и после него<em>break</em>уже не нужен.</p>
51
<p>Такие конструкции применяются, например, в работе с выпадающими списками.</p>
51
<p>Такие конструкции применяются, например, в работе с выпадающими списками.</p>
52
<p>Ветвление - одна из ключевых особенностей любой программы. Постарайтесь как можно больше практиковаться с условными конструкциями, это поможет лучше закрепить знания.</p>
52
<p>Ветвление - одна из ключевых особенностей любой программы. Постарайтесь как можно больше практиковаться с условными конструкциями, это поможет лучше закрепить знания.</p>
53
<p>В <a>следующей статье</a>мы на практике разберёмся, как работать с пользовательским вводом, и будем активно использовать операторы<em>if</em>и <em>switch</em>.</p>
53
<p>В <a>следующей статье</a>мы на практике разберёмся, как работать с пользовательским вводом, и будем активно использовать операторы<em>if</em>и <em>switch</em>.</p>
54
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
54
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>