Как сделать условие в си

Добавил пользователь Валентин П.
Обновлено: 04.10.2024

В программировании проверка условий неизбежна. Мы часто сталкиваемся с ситуациями, когда нам нужно проверить условия (истинны они или ложны), чтобы контролировать выполнение программы. На эти условия могут влиять ввод пользователя, время, контекст, в котором выполняется программа, и т. д.

Мы научимся проверять логические условия с помощью оператора if.

Конструкция if

Конструкция if выполняет блок кода, если заданное условие — истинно, т. е. true .

Синтаксис

Условие может возвращать одно из двух значений: true или false .

Пример

В данном примере инструкция number += 5 выполнится только в том случае, если значение переменной number меньше 5.

Блок-схема

Пример 1. Используем if

Вывод:

Переменной number мы присваиваем значение 2. Это значит, что выражение number равно true . Следовательно, код внутри блока if выполняться будет. Код после оператора if всегда будет выполняться — независимо от результата выражения.

Теперь изменим значение number на значение больше 5: например, 10.

Вывод 2:

Выражение number равно false , следовательно, код внутри блока if выполняться не будет.

Инструкция if. else

Синтаксис

Пример

В этом примере инструкция number += 5 будет выполняться, только если значение number меньше 5. А вот инструкция number -= 5 , напротив, будет выполнять, если значение number больше или равно 5.

Блок-схема

Пример 2. Используем if. else

Вывод:

Переменной number мы присваиваем значение 12. Это значит, что выражение number равно false . Следовательно, код внутри блока else выполняется. Код после инструкции if. else всегда будет выполняться независимо от результата выражения.

Теперь изменим значение number на значение меньше 5: например, 2.

Вывод 2:

Выражение number вернет true , следовательно, код внутри блока if выполнится.

Инструкция if. else if

Когда у нас есть только одно условие для проверки, инструкции if и if. else работают нормально. Но что, если у нас несколько условий, которые нужно проверить?

В таком случае мы можем использовать оператор if. else if .

Синтаксис

Инструкция if. else if выполняется сверху вниз. Как только какое-либо логическое выражение становится истинным, выполняется код внутри этого блока if (или else if). Затем управление выходит из инструкции.

Если ни одно из логических выражений не является истинным, выполняется код внутри блока else.

В качестве альтернативы мы можем использовать оператор switch в подобной ситуации.

Пример 3. Используем if. else if

Вывод:

Переменной number мы присваиваем значение 12. Таким образом, первое условие number равно false . Это значит, что, управление перейдет в блок else if. Условие number > 5 равно true . Значит, выполнится код внутри блока else if.

Примечание. Попробуйте менять значение number и посмотрите, как от этого меняется вывод программы.

Вложенная конструкция if. else

Инструкция if. else может существовать внутри другой инструкции if. else. Такие инструкции называются вложенными.

Синтаксис

Вложенные инструкции if обычно используют, когда нужно последовательно проверить два условия. Если внешний оператор if возвращает true , то управление переходит в тело для проверки вложенного оператора if.

Пример 4. Используем вложенный if. else

Эта программа вычисляет наибольшее число среди 3 чисел, используя вложенный конструкцию if. else.

В программах Си часто нужно реализовать то или иное действие в зависимости от выполнения того или иного условия. Для этого в Си используется оператор условия If
If (условие)
действия в случае выполнения условия
>
Условие в операторе If в программах си обязательно указывается в скобках ()
В операторах условия if используется также конструкция
if ( условие )
действия в случае выполнения условия. Условие истинно
>
else
действия в случае не выполнения условия. Условие ложно
>

В условии используются знаки логических отношений
> b)
>=

else printf("Не правильно\n");
>

Вернуться к содержанию Перейти к следующему уроку Логические операции в Си

В математике есть раздел, который называется “булевая алгебра”. Из неё в программирование пришли вот такие понятия:

  • Значение истина, которое обозначается числом 1
  • Значение ложь, которое обозначается числом 0
  • Оператор НЕ (¬) – этот унарный оператор инвертирует значение
  • Оператор ИЛИ (∨) – этот бинарный оператор возвращает истина если хоть один из операндов равен истина
  • Оператор И (∧) – этот бинарный оператор возвращает истина если все операнды равны истина

Для описания всевозможных результатов булевых операций используются таблицы истинности:

Булевые операции

Булевые операции

В языке Си эти понятия обозначаются так:

  • истина: любое целое или вещественное значение не равное 0
  • ложь: целое или вещественное значение равное 0
  • НЕ: ! (символ восклицательного знака)
  • ИЛИ: || (два символа вертикальный слеш)
  • И: && (два символа имперсант)

Несмотря не то, что значение истина в Си можно обозначить как любое число не равное 0 – обычно программисты используют значение 1.

Операции НЕ, ИЛИ, И всегда возвращают или 0 (ложь), или 1 (истина).

Вот пример использования этих операций:

Хитрая задача на собеседовании

В связи с тем, что булевые операции всегда возвращают или 1, или 0, программисты придумали хитрую задачку, которую любят задавать на собеседованиях.

Сейчас я её покажу, объясню, и ты никогда на ней не провалишься :)

На собеседовании тебе дают такой код:

И спрашивают – “Что выведет программа?”.

Давай развернём операцию “!!a” на отдельные этапы выполнения:

  • Сначала выполняем крайний правый “!”: !a -> !42 -> 0
  • Затем выполняем оставшийся “!” на то, что получилось после предыдущего этапа: !0 -> 1

Ответ на собеседовании: выведется 1.

Операции сравнения

Ещё в языке Си есть операции сравнения, которые ничем не отличаются от аналогичных в математике:

  • Равно: ==
  • Не равно: !=
  • Больше: >
  • Больше или равно: >=
  • Меньше:

Встречаются ситуации, когда программе нужно выбрать, какую операцию ей выполнить, в зависимости от определенного условия.

К примеру, мы вводим с клавиатуры целое число. Если это число больше десяти, то программа должна выполнить одно действие, иначе — другое. Реализуем этот алгоритм на C++ с помощью конструкции ветвления.

Оператор if

Оператор if служит для того, чтобы выполнить какую-либо операцию в том случае, когда условие является верным. Условная конструкция в С++ всегда записывается в круглых скобках после оператора if .

Внутри фигурных скобок указывается тело условия. Если условие выполнится, то начнется выполнение всех команд, которые находятся между фигурными скобками.

Пример конструкции ветвления

Здесь мы проверяем три условия:

  • Первое — когда введенное число меньше 10-ти
  • Второе — когда число равно 10-ти
  • И третье — когда число больше десяти

Заметьте, что во втором условии, при проверке равенства, мы используем оператор равенства — == , а не оператор присваивания, потому что мы не изменяем значение переменной при проверке, а сравниваем ее текущее значение с числом 10.

  • Если поставить оператор присваивания в условии, то при проверке условия, значение переменной изменится, после чего это условие выполнится.

Каждому оператору if соответствует только один оператор else . Совокупность этих операторов — else if означает, что если не выполнилось предыдущее условие, то проверить данное. Если ни одно из условий не верно, то выполняется тело оператора else .

Если после оператора if , else или их связки else if должна выполняться только одна команда, то фигурные скобки можно не ставить. Предыдущую программу можно записать следующим образом:

Такой метод записи выглядит более компактно. Если при выполнении условия нам требуется выполнить более одной команды, то фигурные скобки необходимы. Например:

Хорошенько потренируйтесь, попробуйте придумать свой пример с ветвлением. Когда поймете, что поняли эту тему, можете смело приступать к следующему уроку.

На этом уроке мы рассмотрим операторы условного ветвления if/else, а также то, как их можно использовать.

Условные ветвления if/else

Самыми простыми условными ветвлениями в языке С++ являются стейтменты if/else. Они выглядят следующим образом:

if (выражение)
стейтмент1

if (выражение)
стейтмент1
else
стейтмент2

Использование нескольких операций в ветвлениях if/else

Оператор if выполняет только одну операцию, если выражение является true, и также только одну операцию else, если выражение — false. Чтобы выполнить несколько операций подряд, используйте блок стейтментов:

Неявное указание блоков

Если программист не указал скобки для блока стейтментов if или else, то компилятор неявно сделает это за него. Таким образом, следующее:

if (выражение)
стейтмент1
else
стейтмент2

Будет выполняться как:

if (выражение)
<
стейтмент1
>
else
<
стейтмент2
>

По сути, это не имеет значения. Однако начинающие программисты иногда пытаются сделать что-то вроде следующего:

Программа не скомпилируется, и в итоге мы получим ошибку, что идентификатор a не определен. А произойдет это из-за того, что программа будет выполняться следующим образом:

В этом контексте становится понятным, что переменная a имеет локальную область видимости и уничтожается в конце блока, в котором выполняется её инициализация. И, когда мы дойдем до строчки с std::cout, переменная a уже перестанет существовать.

Связывание стейтментов if

Стейтменты if/else можно использовать в связке:

Вложенные ветвления if/else

Одни стейтменты if могут быть вложены в другие стейтменты if:

Обратите внимание, в программе, приведенной выше, мы можем наблюдать потенциальную ошибку двусмысленности оператора else. К какому if относится оператор else: к внешнему или к внутреннему?

Дело в том, что оператор else всегда относится к последнему незакрытому оператору if в блоке, в котором находится сам else. Т.е. в программе, приведенной выше, else относится к внутреннему if.

Чтобы избежать таких вот неоднозначностей при вложенности операторов условного ветвления, рекомендуется использовать блоки стейтментов (указывать скобки). Например, вот та же программа, приведенная выше, но уже без двусмысленности:

Читайте также: