какие операторы ветвления вы знаете

Условные операторы в Си

Условный оператор if

Условный оператор if может использоваться в форме полной или неполной развилки.

какие операторы ветвления вы знаетекакие операторы ветвления вы знаете

В случае неполной развилки если Условие истинно, то БлокОпераций1 выполняется, если Условие ложно, то БлокОпераций1 не выполняется.

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

Основными операциями, проверяемыми внутри условного блока, являются операции отношения.
Пример на C :

Результат выполнения
какие операторы ветвления вы знаете

Оператор if может быть вложенным.

Результат выполнения
какие операторы ветвления вы знаете
какие операторы ветвления вы знаете
какие операторы ветвления вы знаете

Логические операции в условных операторах

Условный оператор может проверять

Пример на Си : Найти максимум из 3 чисел

Пример на С++ : Найти максимум из 3 чисел

Тернарные операции

Тернарная условная операция имеет 3 аргумента и возвращает свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом. Синтаксис тернарной операции в языке Си

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

Приведенный выше пример с использованием тернарных операций можно представить в виде

Оператор ветвления switch (оператор множественного выбора)

Общая форма записи

Оператор ветвления switch выполняется следующим образом:

Константы в опциях case должны быть целого типа (могут быть символами).

Источник

Операторы ветвления

Операторы ветвления позволяют изменить порядок выполнения операторов в программе. К операторам ветвления относятся условный оператор if и оператор выбора switch.

Условный оператор if

Условный оператор if используется для разветвления процесса обработки данных на два направления. Он может иметь одну из форм: сокращенную или полную.

Форма сокращенного оператора if:

где В – логическое или арифметическое выражение, истинность которого проверяется; S – оператор: простой или составной.

При выполнении сокращенной формы оператора if сначала вычисляется выражение B, затем проводится анализ его результата: если B истинно, то выполняется оператор S; если B ложно, то оператор S пропускается. Таким образом, с помощью сокращенной формы оператора if можно либо выполнить оператор S, либо пропустить его.

Форма полного оператора if:

где B – логическое или арифметическое выражение, истинность которого проверяется; S1, S2— оператор: простой или составной.

При выполнении полной формы оператора if сначала вычисляется выражение B, затем анализируется его результат: если B истинно, то выполняется оператор S1, а оператор S2 пропускается; если B ложно, то выполняется оператор S2, а S1 – пропускается. Таким образом, с помощью полной формы оператора if можно выбрать одно из двух альтернативных действий процесса обработки данных.

Рассмотрим несколько примеров записи условного оператора if:

if (a > 0) x=y; // Сокращенная форма c простым оператором

if (++i) // Сокращенная форма c составным оператором

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

Выражение, стоящее за ключевым словом switch, должно иметь арифметический, символьный, строковый тип или тип указатель. Все константные выражения должны иметь разные значения, но их тип должен совпадать с типом выражения, стоящим после switch или приводиться к нему. Ключевое слово case и расположенное после него константное выражение называют также меткой case.

Выполнение оператора начинается с вычисления выражения, расположенного за ключевым словом switch. Полученный результат сравнивается с меткой case. Если результат выражения соответствует метке case, то выполняется оператор, стоящий после этой метки, за которым обязательно должен следовать оператор перехода: break, goto и т.д. При использовании оператора break происходит выход из switch и управление передается оператору, следующему за switch. Если же используется оператор goto, то управление передается оператору, помеченному меткой, стоящей после goto.

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

case ‘+’: res = a + b; break; //1

case ‘*’: res = a * b; break;

res = (float)a / b; break;

default: ok = false; break;

if (ok) Console.WriteLine(» <0> <1> <2>= <3>«, a, oper, b, res);

Результат выполнения программы: oper x y rez

Задания.

1. Замените в строке 1 оператор break, на оператор goto case ‘-‘ и посмотрите, что произойдет, если в качестве операции ввести +.

2. В условном операторе if уберите ветку else и посмотрите, что произойдет.

Если необходимо, чтобы для разных меток выполнялось одно и тоже действие, то метки перечисляются через двоеточие. Например:

case ‘+’: res = a + b; break;

case ‘*’: res = a * b; break;

res = (float)a / b; break;

default: ok = false; break;

Операторы цикла

Операторы цикла используются для организации многократно повторяющихся вычислений. К операторам цикла относятся: цикл с предусловием while, цикл с постусловием do while, цикл с параметром for и цикл перебора foreach..

Цикл с предусловием while

Оператор цикла while организует выполнение одного оператора (простого или составного) неизвестное заранее число раз. Формат цикла while:

Перед каждым выполнением тела цикла анализируется значение выражения В: если оно истинно, то выполняется тело цикла, и управление передается на повторную проверку условия В; если значение В ложно – цикл завершается и управление передается на оператор, следующий за оператором S.

Если результат выражения B окажется ложным при первой проверке, то тело цикла не выполнится ни разу. Отметим, что если условие B во время работы цикла не будет изменяться, то возможна ситуация зацикливания, то есть невозможность выхода из цикла. Поэтому внутри тела должны находиться операторы, приводящие к изменению значения выражения B так, чтобы цикл мог корректно завершиться.

В качестве иллюстрации выполнения цикла while рассмотрим программу вывода на экран целых чисел из интервала от 1 до n.

Инициализация используется для объявления и/или присвоения начальных значений величинам, используемым в цикле в качестве параметров (счетчиков). В этой части можно записать несколько опе­раторов, разделенных запятой. Областью действия переменных, объявленных в части инициализации цикла, является цикл и вложенные блоки. Инициализация выполняется один раз в начале исполнения цикла.

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

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

Оператор (простой или составной) представляет собой тело цикла.

Любая из частей оператора for (инициализация, выражение, модификация, оператор) может отсутствовать, но точку с запя­той, определяющую позицию пропускаемой части, надо оставить.

Источник

Оператор ветвления

Содержание

Общее описание

Виды условных инструкций

Существует две основные формы условной инструкции, встречающиеся в реальных языках программирования: условный оператор (оператор if) и оператор многозначного выбора (переключатель, case, switch).

Условный оператор

Встречаются следующие формы условного оператора:

Условный оператор с одной ветвью

Реализация в Pascal

Реализация в C++

C и C++ (а вслед за ними и Java, C#, PHP и множество других языков) имеют условный оператор, структурно аналогичный Паскалю. Отличие состоит в том, что условие должно быть записано в круглых скобках, а вместо ключевых слов begin и end используются фигурные скобки <> :

Nemerle

Переключатель

Конструкция переключателя имеет несколько (две или более) ветвей. Переключатель выполняет одну заданную ветвь в зависимости от значения вычисляемого ключевого выражения. Принципиальным отличием этой инструкции от условного оператора является то, что выражение, определяющее выбор исполняемой ветви, возвращает не логическое, а целое значение, либо значение, тип которого может быт приведён к целому. В некоторых языках допускается использовать в переключателе выражения некоторых типов, не приводимых к целому (например, текстовые строки).

Прототипом современной синтаксической конструкции была используемая в старых языках программирования команда перехода по вычисляемой метке. В этой команде указывалось выражение-селектор, возвращающее целое значение, и набор меток. При выполнении команды вычислялось выражение, а его значение использовалось как номер метки (в списке команды), на которую производился переход. Такие конструкции были, например, в языках программирования Фортран и Бейсик. Привлекательной стороной конструкции является её достаточно высокая эффективность: для определения нужной ветви (метки перехода) не требуется последовательно сравнивать результат выражения-селектора со многими занчениями, достаточно записать в память массив команд безусловного перехода с нужными адресами, чтобы при выполнении команды вычислять нужный элемент непосредственно из значения выражения. При этом скорость выполнения команды не зависит от количества меток. В современных языках реализация оператора-переключателя также часто выполняется в виде таблицы перехода, состоящей из команд безусловного перехода на соответствующие фрагменты кода. Вычисляемое выражение преобразовывается в значение сдвига по таблице перехода, определяющее выполняемую команду. В языках, где выражение-селектор может иметь нецелое значение, напрямую вычислить нужную ветвь конструкции переключателя можно далеко не всегда, поэтому в них используются другие методы оптимизации исполнения.

Например, в языке Си синтаксис команды следующий:

Синтаксис команды-переключателя Си унаследован множеством языков, но семантика его не всегда аналогична Си. Например, в Java конструкция имеет точно такой же вид, но любая ветвь, кроме default, обязана заканчиваться на break — отсутствие этого ключевого слова является синтаксической ошибкой. В C# допускается использовать выражение-селектор строкового типа и соответствующие метки.

Особенности вычисления логических выражений

На логику исполнения программы с условными операторами может существенно влиять принятая в языке логика вычисления условных выражений. Если утверждение представляет собой сложное логическое утверждение, к примеру «f(x) > 0 и g(y) > 0», существует две стратегии

Второй вариант является наиболее распространённым для промышленных языков (в частности, для Алгола, Фортрана, С++, С, Java, JavaScript, ECMAScript, JScript, C#). В этих языках действует жёсткое правило: «Логическое выражение всегда вычисляется слева направо и его вычисление останавливается сразу же, как только результат всего выражения становится определённым». Это означает, что если выражение состоит из нескольких подусловий, объединённых оператором «И» (AND), то вычисление выражения прекратится, как только одно из подусловий окажется ложным (так как «ложь AND любое значение» в результате всегда даёт «ложь»), и, наоборот, если несколько подусловий объединены оператором «ИЛИ» (OR), вычисление прекратится после первого же истинного подусловия, поскольку в этом случае всё выражение истинно, независимо от дальнейших вычислений. А вот выражение, содержащее оператор «Исключающее ИЛИ» (XOR) неполному вычислению не поддаётся, поскольку в нём одно из значений не может определить результат вычисления всего выражения.

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

Алгоритм, реализуемый программой, совершенно очевиден, но в реализации есть одна тонкость (см. строку, помеченную восклицательными знаками): условие цикла состоит из двух частей, связанных оператором AND. Первое подусловие проверяет, не вышел ли индекс i за пределы массива, второе — не равен ли текущий элемент массива искомому значению. Если массив не содержит искомого значения, то после проверки последнего элемента значение переменной i увеличится на единицу. Если после этого будут вычисляться ОБА подусловия, то второе приведёт к ошибке — ведь i уже вышло за границы массива. Чтобы избежать этого эффекта, пришлось бы записать gоиск примерно в следующем виде:

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

Источник

Операторы ветвления.

Операторы ветвления предназначены для того, чтобы программа могла запускать тот или иной блок кода, в зависимости от верности true или не верности false условия.

На этом уроке 4 вида операторов ветвления:

Оператор if

Этот оператор реализует выполнение (не выполнение) блока кода, при условии, что некоторое выражение равно true (false). Выражение, в зависимости от значения которого код выполняется (не выполняется) пишется в круглых скобках после ключевого слова if. Блок кода, который выполняется (не выполняется) пишется после условия в фигурных скобках.

Напишем скрипт, который выводит сообщение только тогда, когда переменная a содержит значение true.

Но, если в переменной a будет записано значение false, то сообщение не выведется на консоль.

Оператор ветвления if else

Оператор ветвления if else, предназначен для запуска того или иного блока кода, в зависимости от значения которое вернёт условие: true или false.

Он отличается от оператора if тем, что после блока кода, который выполняется, если условие верное, пишется ключевое слово else с блоком кода в фигурных скобках после него. Этот блок выполняется, если условие в круглых скобках после ключевого слова if неверное.

Приведём пример с оператором ветвления if else:

Если присвоить переменной numTwo, число большее чем 5, например 7, тогда условие вернёт false и появится окошко с сообщением Условие возвратило false.

Вот еще пример, демонстрирующий работу операторов if-else, приветствующий пользователя по-разному, в зависимости от времени суток. Попробуйте написать данный код и посмотреть его работу.

Условная тернарная операция

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

если значение booleanValue равно true, то переменной variable присвоится значение value1, иначе значение value2. Этот оператор удобно использовать для сокращение кода вида:

Оператор switch-case

Этот оператор удобно использовать когда у нас много вариантов выбора. Синтаксис его такой:

Если какое-то значение равно значению 1, то выполнится первый блок кода, если значению 2, то второй и так далее. Если какое-то значение не равно ни одному из предложенных вариантов, стоящему после ключевого слова case, то выполнится блок кода, после ключевого слова default. Оператор switch-case часто применяется, чтобы избежать длинных цепочек if-else.

Стоит ещё сказать пару слов о операторе break. Если он опущен в каком-то блоке кода, после case, то выполнения кода продолжится и блок кода, после следующего ключевого слова case так же выполнится и так далее, пока не будет встречено ключевое слово break.

Источник

Операторы ветвления

if-else

В языке программирования C синтаксис оператора ветвления if-else выглядит так:

Как и в других языках ветка else не является обязательной.

В языке С в простых логических выражениях используются следующие знаки операторов: >, =,

Условное выражение

В языке программирования C существует сокращенная запись инструкции if-else в виде условного выражения, которое относится к тернарным операторам. Результат такого выражения может быть присвоен переменной:

Переводится это так. Если логич_выражение вернуло истину, то все выражение возвращает выражение1; если логич_выражение вернуло ложь, то все выражение возвращает выражение2. Например:

Здесь z получит значение 15. Такое условное выражение бывает очень удобно, однако область его применения ограничена простейшими случаями ветвления, т. к. невозможно создавать сложные «тела» в такой конструкции.

Операторы И (&&) и ИЛИ (||)

Как известно логическое выражение может быть сложным. Логические операторы И и ИЛИ в языке программирования C обозначаются соответственно парными знаками амперсанда (&&) и вертикальной черты (||). Их приоритет меньше, чем у простых логических операторов, поэтому простые логические операции при их объединении в сложные логические выражения можно не заключать в скобки. Пример сложного логического выражения на языке C:

Проверьте и объясните, что выводит функция printf(), если ей передать простые или сложные логические выражения. Например:

Оператор switch

При организации множественного выбора, когда проверяется значение переменной на соответствие тому или иному значению, бывает удобно использовать не условный оператор if-else, а оператор переключения switch. Его синтаксис можно описать так:

В скобках после слова switch может стоять не только переменная, но и выражение, результат выполнения которого возвращает целое значение (может быть символ). Константы при case также могут быть результатом выполнения выражений. Константы можно группировать в одном case (например, case 12, 13, 18 ). Ветка default не обязательна.

При выполнении оператора switch, заданное значение в круглых скобках сравнивается с константами. Как только совпадение будет найдено, все последующие вложенные во все case операции начинают выполняться. Другими словами, выполняется не только кейс, где произошло совпадение, но и все нижележащие ветки case (и default тоже), константы которых не совпадают со значением при switch. Например, в результате выполнения вот такой программы:

на экране будет выведено:

, т. к. как только совпадение было обнаружено, все нижеследующие инструкции были выполнены.

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

выведет только единицу, т. к. выполнение всей инструкции switch прервется после выполнения инструкции break при case 1.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *