Язык программирования Си является функциональным, он используется для создания как крупных проектов, так и небольших приложений/игр. В процессе решения задач по разработке, программистам нередко приходится сталкиваться с циклами и ветвлениями. Эти два элемента тесно связаны между собой. Пример – в языке Си «конструкция» if часто встречается в циклах.
Далее предстоит разобраться с ветвлением более подробно. Предложенная ниже информация в большей степени ориентирована на начинающих разработчиков. Опытные программисты отлично знают, что собой представляют условные и тернарные операторы в Си, а также как их грамотно использовать при написании программ.
Условный оператор – определение
Условный оператор – выражение, которое помогает реализовать ветвление. Оно позволяет проверить заданное условие, а затем выполнить тот или иной алгоритм. «Решение» зависит от истинности выбранного выражения.
Условные операторы являются фундаментальными концепциями разработки программного обеспечения. Через них разработчик может манипулировать потоком имеющегося исходного кода, опираясь на истинность/ложность имеющегося выражения.
Классификация
Ветвление может быть разным. На данный момент разработчики выделяют следующие варианты рассматриваемой функции:
- с одной веткой;
- двойное ветвление;
- множественное ветвление;
- с выбором (switch-конструкции).
Рассматриваемые операторы поддерживаются не только C, но и большинством других языков программирования. Далее каждый вариант будет изучен более детально. Отдельное внимание предстоит уделить тернарному оператору.
Одна ветвь
Оператор if в Си – это простейший вариант реализации выбора условия в зависимости от истинности заданного программистом выражения. Данная функция часто внедряется в цикл.
If работает элементарно – алгоритм выполняется, если результат произведенных расчетов является логической истиной. В противном случае система завершает блок кода и передает управление функции, написанной после if.
Синтаксическая форма записи:
Система вычисляет (условие), а затем проверяет его, приводя к булевому результату. Соответствующий вариант выбора алгоритма является элементарным. Он используется в основном для мелкий задач и циклов.
Пример реализации
А вот – наглядный пример работы с if в рассматриваемом ЯП:
Здесь:
- Используются две отдельные условные функции с if.
- В качестве инструкции в обоих случаях будет выполняться операция printf. Она отвечает за вывод текста на консоль.
- В обоих случаях условие – это простое число.
- При первом варианте «условие» равно единице. Соответствующее значение – это простое число, а значит, система выведет в консоли на печать «Hello C».
- Во втором if «условие» – ложное. Печать на вывод выражения «Hello World» не будет отправляться.
В качестве выражения, относительно которого будет производиться проверка на истинность, может выступать любая функция или операция. Чаще всего – это булева «команда» или сравнение.
Рекомендуется обратить внимание на то, что фигурные скобки можно опустить, если блок кода для реализации – это одна функция. Делать так не рекомендуется из-за нарушения общей концепции читабельности исходного файла.
Двойное ветвление
Оператор if может использоваться с дополнениями, расширяющими его принципы работы. Пример – «двойная ветвь». Это более сложный алгоритм. Он имеет в своем составе несколько блоков кода:
- то, что выполняется, если if condition – истина;
- else выражение – алгоритм, который реализуется системой, если результатом расчетов является ложное «высказывание».
Выглядит оператор «с двумя ветками» так:
После else в предложенной записи можно определить набор инструкций, выполняемых, если проверка истинности показала ложное значение «рассчитываемого» выражения.
Ниже можно увидеть наглядный пример использования if … else в C:
Соответствующая конструкция позволяет вкладывать в приложение больше детализированных алгоритмов. А именно – выбирать дальнейшие операции из двух предложенных вариантов. Написанный код (один из алгоритмов) в соответствующей ситуации будет реализован не меньше одного раза.
Множественные «ветви»
Более сложная интерпретация if – когда предлагаются несколько алгоритмов для реализации. Множественное ветвление в C применяется в наиболее сложных программах. Оно дает возможность проверять несколько условий в пределах одного единственного оператора. Для реализации используется elseif.
Синтаксис будет похож на предыдущий рассмотренный вариант if конструкции:
Данный прием называется «лестницей». В нем:
- Сначала проводится проверка первого условия. Если оно истинно – система выполнит характерный алгоритм. Остальные блоки кода Си с if else будут пропущены.
- При результате проверки, равном false, система перейдет к изучению значения следующего блока elseif.
- Соответствующие переходы и проверки осуществляются до тех пор, пока не будет обнаружено значение true.
- Когда истины в elseif не обнаружено, система if перейдет к реализации алгоритма, написанному после else, без if.
Выше – наглядный пример реализации множественного ветвления через elseif.
Оператор Switch
Рассмотренные условные операторы – не исчерпывающие. В процессе разработки программного обеспечения пользователи могут столкнуться с выборкой из алгоритма из нескольких доступных на основании полного соответствия значения вычисленного выражения. Для этого в C и некоторых других языках программирования используется switch-case.
Это – достойная замена в Си if конструкциям. Она имеет следующую форму записи:
После ключевого слова switch в скобках указывается сравниваемое выражение. Его значение последовательно сравнивается с тем, что идет после оператора case. При обнаружении совпадений выполняется характерный блоку кода алгоритм. В противном случае система реализовывает инструкции default.
В виде констант после case могут использоваться значения типов:
- unsigned;
- int;
- char.
Default может отсутствовать. Этот блок является необязательным.
Тернарный оператор
Тернарный оператор – сокращенная форма записи простейших блоков с if. Он имеет такую форму записи:
Здесь используются сразу три операнда. В зависимости от имеющегося условия оператор вернет второй или третий операнд.
Выше – пример реализации тернарной команды в Си без дополнительных условий.
P. S. Интересует разработка? Обратите внимание на курс «Программист C». Также в Otus доступно множество других современных курсов.