HTML Diff
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>&gt;</strong> - больше;</li>
18 <ul><li><strong>&gt;</strong> - больше;</li>
19 <li><strong>&lt;</strong> - меньше;</li>
19 <li><strong>&lt;</strong> - меньше;</li>
20 <li><strong>==</strong> - равно;</li>
20 <li><strong>==</strong> - равно;</li>
21 <li><strong>! =</strong> - не равно;</li>
21 <li><strong>! =</strong> - не равно;</li>
22 <li>&gt;= - больше или равно;</li>
22 <li>&gt;= - больше или равно;</li>
23 <li>&lt;= - меньше или равно.</li>
23 <li>&lt;= - меньше или равно.</li>
24 </ul><p>Вот несколько примеров:</p>
24 </ul><p>Вот несколько примеров:</p>
25 bool result = 5 &gt; 6; //false result = 5 &lt; 6; //true result = 5 == 6; //false result = 5 != 6; //true<p>При попытке вывести значение переменной result программа выведет 1 или 0.</p>
25 bool result = 5 &gt; 6; //false result = 5 &lt; 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 &gt; b) { std::cout &lt;&lt; "a is bigger than b \n"; } if (a &lt; b) { std::cout &lt;&lt; "b is bigger than a \n"; } if (a == b) { std::cout &lt;&lt; "a equals b \n"; }<p>Программа работает корректно, но такой код сложно читать из-за большого количества условных конструкций. Чтобы упростить запись, можно использовать оператор<em>else</em><em>(иначе)</em>.</p>
29 int a = 5; int b = 6; if (a &gt; b) { std::cout &lt;&lt; "a is bigger than b \n"; } if (a &lt; b) { std::cout &lt;&lt; "b is bigger than a \n"; } if (a == b) { std::cout &lt;&lt; "a equals b \n"; }<p>Программа работает корректно, но такой код сложно читать из-за большого количества условных конструкций. Чтобы упростить запись, можно использовать оператор<em>else</em><em>(иначе)</em>.</p>
30 if (a &gt; b) { std::cout &lt;&lt; "a is bigger than b \n"; } else { std::cout &lt;&lt; "a is not bigger than b \n"; }<p><em>Else</em>используется, чтобы сказать компьютеру, какие инструкции нужно выполнить, если проверяемое утверждение было ложным.</p>
30 if (a &gt; b) { std::cout &lt;&lt; "a is bigger than b \n"; } else { std::cout &lt;&lt; "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 &gt; b) { if(a &gt; 100) { //Какие-то инструкции } else { //Какие-то инструкции } }<p>Есть и более короткие варианты записи. Например, если должна быть выполнена только одна инструкция, то фигурные скобки лучше опустить:</p>
34 if(a &gt; b) { if(a &gt; 100) { //Какие-то инструкции } else { //Какие-то инструкции } }<p>Есть и более короткие варианты записи. Например, если должна быть выполнена только одна инструкция, то фигурные скобки лучше опустить:</p>
35 if(a == 5) std::cout &lt;&lt; "a == 5 \n"; else std::cout &lt;&lt; "a != 5 \n";<p>Запись можно сократить ещё сильнее, если вы используете условие, чтобы указать значение для переменной:</p>
35 if(a == 5) std::cout &lt;&lt; "a == 5 \n"; else std::cout &lt;&lt; "a != 5 \n";<p>Запись можно сократить ещё сильнее, если вы используете условие, чтобы указать значение для переменной:</p>
36 int result = 2 &gt; 1 ? 1 : 0;<p>Получается запись вида:</p>
36 int result = 2 &gt; 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>&amp; &amp;</strong> - логическое "И" или логическое умножение<em>(конъюнкция)</em>. Оператор И возвращает истину, если верны оба утверждения.</li>
40 <ul><li><strong>&amp; &amp;</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>&amp;&amp; (И)</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>&amp;&amp; (И)</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 &gt;= price &amp;&amp; goodsLeft &gt; 0; //Чтобы убедиться, что человек может дышать, проверяем, что он не мёртв bool canBreath = !isDead; //Запрещаем доступ к сайту, если человек забанен или если проводятся технические работы bool forbidAccess = isBanned || techWorks;<p>Также вы можете использовать скобки:</p>
46 //Проверяем, чтобы денег было больше или равно цене, а также чтобы товар был в наличии bool canBuy = money &gt;= price &amp;&amp; goodsLeft &gt; 0; //Чтобы убедиться, что человек может дышать, проверяем, что он не мёртв bool canBreath = !isDead; //Запрещаем доступ к сайту, если человек забанен или если проводятся технические работы bool forbidAccess = isBanned || techWorks;<p>Также вы можете использовать скобки:</p>
47 bool goodChoice = (a == 1 || a == 2) &amp;&amp; b != 3;<p>Если вам нужно проверить какую-то переменную на определённое значение, то лучше использовать конструкцию<em>switch</em>. С её помощью превращаем такой код:</p>
47 bool goodChoice = (a == 1 || a == 2) &amp;&amp; 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>