Принятие решений. Условные операторы в языке С
Теоретическая часть
В языке программирования С используются несколько конструкций для принятия решений:
- оператор if;
- оператор switch;
- условный оператор ? (оператор условия) [4.1].
Для прерывания программного цикла при некотором условии применяется утверждение (оператор) break, для продолжения итераций цикла при выполнении некоторых условий применяется утверждение (оператор) continue, для выхода из функции при выполнении некоторых условий применяется оператор return, для перехода к заданному месту программы применяется оператор goto, хотя считается, что в программировании не существует ситуаций, в которых нельзя обойтись без оператора goto [2; 3]. Утверждение break применяется также в теле оператора switch.
4.1. Оператор if
Общая форма записи оператора if:
if (expression) program statement;
В операторе if используется результат вычисления условия, заключенного в круглые скобки, на основе которого принимается решение. Результат вычисления условия expression может быть арифметическим или логическим. Если результат выполнения условия expression будет истинным, то возможно выполнить несколько утверждений типа program statement. Для этого следует использовать фигурные скобки, например:
if (expression) { program1 statement1; program2 statement2; ... }
4.2. Конструкция if–else
Общая форма записи конструкции if–else:
if (expression) program1 statement1; else program2 statement2;
Если выполняется условие expression, то будет выполняться фрагмент программы program1 statement1, в противном случае будет выполняться program2 statement2.
Каждое из утверждений может быть множественным. В таком случае применяются фигурные скобки:
if (expression) { program1 statement1; program2 statement2; ... } else { program33 statement33; program34 statement34; ... }
4.3. Конструкция if–else if–else if–...–else
Форма записи конструкции if–else if–else if–...–else:
if (expression1) program1 statement1; else if (expression2) program2 statement2; else if (expression3) program3 statement3; ... else program statement;
Приведенная конструкция используется для выбора возможных ситуаций, когда проверяются условия expression1, expression2, expression1,... . Соответственно будут выполняться действия program1 statement1, program2 statement2, program3 statement3 и т.д. В случае, когда ни одно из условий не выполняется, выполняются действия, прописанные после оператора else.
В случае выполнения множественных действий применяются фигурные скобки для каждого из утверждений:
if (expression1) { program1 statement1; ... } else if (expression2) { program2 statement2; ... } else if (expression3) { program3 statement3; ... } ... else { program statement; ... }
4.4. Оператор switch
Общая форма записи оператора switch:
switch (expression) { case value1: program statement; ... break; case value2: program statement; ... break; ... case valuen: program statement; ... break; default: program statement; ... break; }
Выражение заключенного в круглые скобки оператора последовательно сравнивается со значениями value1, value2,..., valuen, которые должны быть простыми константами или константными выражениями. В том случае, когда одно из этих значений равно значению, выполняются утверждения, которые следуют за данным значением.
Утверждение break сигнализирует об окончании выполнения утверждений и приводит к выходу из оператора switch. Утверждение break ставится в конце каждого варианта выбора. Если этого не сделать, то выполнение последовательности утверждений перейдет в следующий вариант выбора и будет выполняться до тех пор, пока не встретится утверждение break [4.1].
Специальный дополнительный вариант default будет выполнен в том случае, когда не будет найдено ни одного совпадения.
Операторы if и switch той или иной синтаксической конструкции существуют практически во всех языках программирования (в первую очередь языках высокого уровня), и их часто называют операторами ветвления.
4.5. Условный оператор ?
В отличие от других операторов языка С, которые могут быть унарными или бинарными, специфический оператор условия является тернарным оператором. Это означает, что у него может быть три операнда [4.1].
Общий формат записи оператора условия:
условие ? выражение_1 : выражение_2
Если в результате вычисления условия будет получено значение TRUE (истина, не нуль), то выполняется выражение_1, и результатом выполнения оператора условия будет значение, полученное при вычислении этого выражения. Если в результате вычисления условия будет получено значение FALSE (ложь, т.е. нуль), то выполняется выражение_2, и результатом выполнения оператора условия будет значение, полученное при вычислении выражение_2.
Оператор условия часто описывают как оператор ?. Тернарный оператор условия ? наиболее часто используется для присвоения переменной одного из двух значений в зависимости от некоторого условия.
4.6. Оператор break (от английского – прерывать)
Оператор или утверждение break служит для немедленного выхода из цикла, будь то while, for или do–while. После выхода из цикла выполнение программы продолжается с утверждения (фрагмента программы), непосредственно следующего за циклом.
Если оператор break встречается во вложенном цикле (вложенных циклах), то будет прекращено выполнение того цикла, в котором этот оператор встретился.
Необходимость в использовании оператора прерывания break в теле цикла возникает тогда, когда условие продолжения итераций нужно проверять не в начале цикла (как в циклах while и for ) и не в конце тела цикла (как в цикле do–while ), а в середине тела цикла [4.2].
Формат записи оператора break:
break;
4.7. Оператор continue (от английского – продолжать)
Оператор или утверждение continue служит для перехода к следующей итерации цикла [4.2].
Оператор continue противоположен по действию оператору break. Оператор continue позволяет в любой точке тела цикла ( while, for или do–while ) прервать текущую итерацию и перейти к проверке условий продолжения цикла. В соответствии с результатами проверки либо заканчивается выполнение цикла, либо начинается новая итерация. При этом все утверждения (фрагменты программы), которые следуют за оператором continue (ключевым словом), автоматически пропускаются.
Формат записи оператора continue:
continue;