Ветвления и циклы
Ветвление (условная инструкция) - это конструкция языка программирования, обеспечивающая выполнение определённой команды или набора команд только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.
Цикл — это разновидность управляющей конструкции, предназначенная для организации многократного исполнения набора инструкций.
В основе ветвления и отдельных циклов лежат логические операторы сравнения, определяющие необходимость выполнение следующих строк кода или перехода к другим.
Операторы сравненияБольшинство операторов сравнения применимы к числовым значениям. Всё это бинарные операторы, имеющие два числовых аргумента, но возвращающие логическое значение.
- > оператор «больше»
- >= оператор «больше или равно»
- < оператор «меньше»
- <= оператор «меньше или равно»
- != оператор «не равно»
- == оператор эквивалентности (равенства)
Последние два оператора сравнения применяются не только для числовых значений, но для логических. Сравнение двух текстовых операторов выполняется с использованием методов equals(String object), equalsIgnoreCase(String object).
Логические операторыПри выполнении операций сравнения или присваивания могут присутствовать логические операторы. Существует один унарный и несколько бинарных логических операторов. В качестве аргументов для всех этих операторов выступают логические литералы (константы), логические переменные и выражения, имеющие логическое значение.
ОператорНазначение !символ отрицания, унарный оператор, меняет значение на противоположное (инвертирует: ложь превращает в истину, а истину — в ложь) &&символ логического «и» («конъюнкция»), бинарная операция, возвращает истинное значение тогда и только тогда, когда оба операнда истины ||символ логического «или» («дизъюнкция»), бинарная операция, возвращает истинное значение, когда хотя бы один из операндов истинный
У логических операторов следующий приоритет: отрицание, конъюнкция, дизъюнкция.
Также, как и с арифметическими операторами, для коррекции приоритета выполнения операции используются круглые скобки. Если одна пара скобок вложена в другую пару скобок, то сначала вычисляется значение во внутренних скобках.
Примеры использования логических операторовОператоры ветвления
Синтаксис оператора ветвления if elseЕсли составной оператор в основной или альтернативной ветви оператора управления содержит только один простой оператор, то фигурные скобки можно опустить. В таком случае синтаксис оператора ветвления примет вид :
Основное предназначение оператора ветвления – это реализация разветвляющихся алгоритмов. Например, фрагмент программы, для вычисления функции: Y(x) = x*x, при x < 0 и Y(x) = 2*x, при x >= 0
При построении программ с несколькими подряд идущими операторами ветвления необходимо учитывать следующее правило: оператор else относится к последнему оператору if. Например, рассмотрим фрагмент программы:
Если необходимо нарушить этот порядок (т.е. ветвь else отнести к первому оператору if), то необходимо второй оператор if включить в составной оператор прямой ветви первого оператора if:
В программировании часто встречается необходимость создания каскадных операторов ветвления. Синтаксис такой структуры имеет вид :
Многовариантное ветвление, оператор switchКонструкция if else может оказаться неудобной, если вы стоите перед необходимостью сделать выбор из нескольких вариантов. Оператор switch обеспечивает ясный способ переключения между различными частями программного кода в зависимости от значения одной переменной или выражения. Общая форма этого оператора такова:
Выполнение кода начинается с метки case, соответствующей значению выражения choice, и продолжается до следующего оператора break или конца оператора switch. Если ни одна метка не совпадает со значением переменной, выполняется раздел default, если он предусмотрен.
Заметим, что метка case должна быть целочисленной. Нельзя проверять строки. Все значения case должны быть уникальными литералами. Если в двух операторах case будут одинаковые значения, то транслятор выдаст сообщение об ошибке.
Отметим, что оператор default необязателен. В случае, когда ни один из операторов case не соответствует значению выражения и в switch отсутствует оператор default выполнение программы продолжается с оператора, следующего за оператором switch.
Если case не заканчивается оператором break, то после текущего раздела case будет выполняться следующий. Иногда бывает удобно иметь в операторе switch несколько смежных разделов case, не разделенных оператором break.
Циклы java
В java существует два типа циклов:
- цикл типа «пока» - while и do…while
- типа «n-раз» - for (инициализация; условие; итерация)
Первый тип «пока» предназначен для повторения какого-то действия до тех пор, пока выполняется некоторое условие. Пример: увеличивать значение переменной на 3 до тех пор, пока оно не станет трёхзначным.
Второй тип «n-раз» предназначен для повторения каких-то действий заранее известное количество раз. Пример: найти факториал числа 6.
Циклы while и do…while
Оператор while повторяет указанные действия до тех пор, пока его выражение имеет истинное значение.
Синтаксис цикла whileПример вывода в консоль значений массива :
Условие необходимости повторения цикла проверяется перед каждым шагом цикла, в том числе перед самым первым.
Java предлагает также возможность использования цикла с постпроверкой условия. Для его записи используется конструкция из операторов do…while.
Следующий цикл будет выполнен 4 раза, и в консоль будет выведено «1 2 3 4 »:
Тело цикла do…while выполняется по крайней мере один раз. Этот оператор удобно использовать, когда некоторое действие в программе нужно выполнить по крайней мере единожды, но при некоторых условиях придётся повторять его многократно.
Цикл for
Оператор for содержит три параметра : параметр инициализации, параметр повторения, параметр итерации.
Синтаксис цикла forВ первом параметре определяют переменную, с помощью которой будет подсчитываться количество повторений цикла. Её называют счетчиком. Счётчику задают некоторое начальное значение (указывают, начиная с какого значения он будет изменяться). Во втором параметре указывают некоторое ограничение на счётчик, т.е. до какого значения он будет изменяться. В третьем параметре указывают выражение, изменяющее счётчик после каждого шага цикла. Обычно это инкремент или декремент, но можно использовать любое выражение, где счётчику будет присваиваться некоторое новое значение.
Представленная программа выводит в консоль значения массива :
В одном цикле можно задавать сразу несколько счётчиков. Для этого необходимо несколько выражений в итерации и в инициализации разделять запятыми. Условие повторения можно задавать только одно, но оно может быть выражением, содержащим сразу несколько счётчиков.
Представленный код выведет в консоль такую последовательность «0 -1 -4 -9 -16 -25»
Прерывание цикла, break
Для досрочного прерывания цикла необходимо использовать оператор break. При этом происходит моментальный выход из цикла; текущий шаг не будет завершен. Т.е. если после break присутствовали какие-то ещё операторы, то они не выполнятся.
Примеры прерывания циклов :
Прерывание цикла, continue
Для прерывания цикла можно использовать оператор continue. В отличие от оператора break, который прерывает цикл, оператор continue прерывает только текущий шаг цикла и передает управление в начало цикла.
В примере при значении s равном 25 очередная итерация цикла будет прервана и управление будет передано в начало цикла.
Если оператор continue используется в цикле for, то он передаст управление оператору увеличения счетчика цикла.