Философия программирования на C++ Выпуск 14. Условия - завершение.
Всем привет! Завершаем наши статьи об условиях в программах.
Сначала немного об условном операторе. В общем случае он выглядит так:
if(<условие>){
<команда1>;
<команда2>;
}else{
<команда3>;
<команда4>;
}
Можно писать и без фигурных скобочек (но тогда только одна команда внутри оператора if):
if(<условие>)
<команда1>;
else
<команда2>;
И даже так:
if(<условие>){
<команда1>;
<команда2>;
}else
<команда3>;
<дальнейшаяпрограмма>;
То есть скобочки после if и после else независимы. Но я рекомендую писать их одинаково и там и там, либо не писать нигде.
Просто так код выглядит более понятным и красочным. В некоторых стилях кода (Code Style, например у гугла) это четко прописано - либо ставить скобочки либо не ставить - но только
одновременно и после if и после else.
Теперь рассмотрим, что может быть под условием. Это по сути может быть все, что угодно - умеющее возвращать истинность (true) или ложность (false). Например, операторы сравнения:
- равенство (==)
- меньше (<)
- больше (>)
- меньше или равно (<=)
- больше или равно (>=)
Их смысл не отличается от математического и довольно очевиден. Например, если в равенстве
слева и справа одно и то же число - то это является истиной (1 == 1). А вот 10 >= 11 - ложь.
Когда в условии стоит значение true (истина) - то выполняется код после if, если стоит значение false (ложь) - то выполняется код после else (если он есть - а его может и не быть).
Теперь - составные условия. Мы уже проходили оператор ИЛИ (|| - две вертикальные палочки). Выглядит он примерно так:
Его смысл довольно очевиден. Если хотя бы одно из условий выполняется, то и составное условие выполнится. Более того - можно составлять из него и более сложные и длинные конструкции:
if(a==10||a==20||a==30||a==40)
Здесь это выполнится тогда, когда a будет равно одному из значений: 10, 20, 30 или 40.
Давайте сделаем небольшую табличку. Условия возвращают только два значения. Поэтому сверху таблицы будет два значения первого условия, а слева - второго условия. Внутри таблицы на пересечении мы запишем, чему будет равно результат оператора ИЛИ для этих двух условий.
Оператор
ИЛИ.
Условия
true (истина)
false(ложь)
true(истина)
true(истина)
true(истина)
false(ложь)
true(истина)
false(ложь)
Итак, результат false у оператора ИЛИ будет ТОЛЬКО тогда, когда не выполняется ни одно из условий.
Кстати, я так подробно разжевываю эту тему потому, что многим не понятно действительно такая логика. Поэтому не удивляйтесь.
Далее, рассмотрим еще один оператор И (&& - два амперсанда).
if(a>10&&a<20)
Это условие звучит так - если a больше 10 и меньше 20. То есть когда a будет равно 21, то условие НЕ выполнится, несмотря на то, что условие слева a > 10 будет истинным (true). Здесь все очень похоже, только для того чтобы выполнялось условие итоговое, должны выполняться ОБА условия слева и справа.
Его также можно писать до бесконечности:
if(a>10&&b>20&&c>30&&d>40)
Кстати, очевидно условие if(a==10&&a==20) не выполнится НИКОГДА. Просто потому, что a не может быть одновременно равно и 10, и 20.
Вот табличка для этого оператора:
Оператор И:
Условия
true (истина)
false(ложь)
true(истина)
true(истина)
false(ложь)
false(ложь)
false(ложь)
false(ложь)
И последнее - оператор отрицания НЕ (! - восклицательный знак). Он очевидно инвертирует значение условия (то есть true переводит в false, а false в true).
if(!(a>10))
Это условие - отрицание условия что a больше 10. То есть по сути это эквивалентно условию a <= 10. Кстати, здесь мы
поставили скобочки. Они позволяют разделять приоритеты для сложных конструкций. Например:
if((!(a>10)&&!(b<=20))||!((a!=10)&&(b>45)))
Вот так можно писать достаточно сложные условия. Это условие можно прочитать так:
Если а не больше 10 и b больше (не меньше_или_равно - больше) 20 ИЛИ не выполнятся одновременно условия, что a не равно 10 И b будет больше 45.
Да, есть специальный оператор НЕ РАВНО (!=). Его мы проходили в прошлых выпусках - думаю понятно что он означает и
как работает.
На этом мы завершаем наши статьи по условиям. Сегодня никаких программ мы не написали, поскольку это было подведение итогов. Здесь было больше теоретических сведений, но в следующих выпусках мы вернемся к нашему обычному формату.