Условные операторы (if, switch).



Условный оператор ifиспользуется для разветвления процесса выполнения кода программы на два направления.

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

{caseконстанта1:        список операторов 1

caseконстанта2:          список операторов 2...

caseконстантаN:         список операторов N

default:                             список операторов N+1 – необязательная ветвь;

}Выполнение оператора начинается с вычисления выражения, значение которого должно быть целого или символьного типов. Это значение сравнивается со значениями констант, и используется для выбора ветви, которую нужно выполнить. В данной конструкции константы фактически выполняют роль меток. Если значение выражения совпало с одной из перечисленных констант, то управление передается в соответствующую ветвь. Все константы должны иметь разные значения, но быть одного и того же типа. Несколько меток могут следовать подряд, и тогда переход в указанную ветвь будет происходить при совпадении хотя бы одной из них. Порядок следования ветвей не регламентируется.В случае несовпадения значения выражения ни с одной из констант выбора происходит переход на метку default, либо, при ее отсутствии, к оператору, следующему за оператором switch.

 

16. Тернарная операция "?".

Если одно и то же выражение (или переменная) вычисляется по-разному в зависимости от некоторого условия, вместо оператора if можно использовать более короткую запись - условную операцию. Эта операция – тернарная, т.е. в ней участвуют три операнда.

Формат написания условной операции следующий: выражение1?выражение2:выражение3. если выражение 1 (условие) отлично от нуля (истинно), то результатом операции является значение выражения 2, в противном случае – значение выражения 3. Каждый раз вычисляется только одно из выражений 2 или 3. Запишем оператор if :

 if (a > b)z = a;else z = b;

Используя условную операцию:z = a > b ? a : b; Условную операцию можно использовать так же, как и любое другое выражение. Если выражения 2 и 3 имеют разные типы, то тип результата определяется по правилам преобразования. Например, если f имеет тип double, а nint, то результатом операции: (n > 0) ? f : n; по правилам преобразования типов будет double, независимо от того, положительно n или нет.

 

17. Операция последовательного вычисления ",". Операция «запятая» связывает два выражения в одно и гарантирует, что самое левое выражение будет вычисляться первым. В циклической структуре for может использоваться операция «запятая». Она позволяет включать в его выражения несколько операторов. Тогда рассмотренный пример суммирования первых N натуральных чисел можно записать в следующем виде:

for ( sum = 0 , i = 1; i<=N; sum+= i , i++); Оператор for имеет следующие возможности: .можно вести подсчет с помощью символов, а не только чисел: for (ch = 'a'; ch <= 'z'; ch++) ... ; . можно проверить выполнение некоторого произвольного условия: for (n = 0; s[i] >= '0' && s[i] < '9'; i++) ... ; или: for (n = 1; n*n*n <= 216; n++) ... ;

18. Операторы передачи управления: goto, continue, break, return.В языке Си предусмотрен оператор goto, общий вид которого: goto метка ;Он предназначен для передачи управления оператору, помеченному указанной меткой. Метка представляет собой идентификатор с символом «двоеточие» после него, например, пустой помеченный меткой m1 оператор: m1: ; Циклы и переключатели можно вкладывать вдруг в друга, и наиболее характерный оправданный случай использования оператора goto – выполнение прерывания (организация выхода) из вложенных циклов. Например, при обнаружении грубых смысловых ошибок необходимо выйти из двух (или более) вложенных циклов (где нельзя использовать непосредственно оператор break, т.к. он прерывает только самый внутренний цикл):for (...) for (...) { ... if (ошибка) goto error; } ... error: операторы для устранения ошибки; Второй оправданный случай: организация переходов из нескольких мест программы в одно, например, когда перед завершением работы функции необходимо сделать одну и ту же операцию .В определенных случаях вместо оператора goto удобнее использовать операторы continue или break.Оператор continue может использоваться во всех типах циклов (но не в операторе-переключателе switch). Наличие оператора continue вызывает пропуск "оставшейся" части итерации и переход к началу следующей, т.е. досрочное завершение текущего шага и переход к следующему шагу.

В циклах while и do-while это означает непосредственный переход к проверочной части. В цикле for управление передается на шаг коррекции, т.е. модификации выражения 3.

Оператор continue часто используется, когда последующая часть цикла оказывается слишком сложной, так что рассмотрение условия, обратного проверяемому, приводит к слишком высокому уровню вложенности программы.Оператор break производит досрочный выход из цикла или оператора-переключателя switch, к которым он принадлежит, и передает управление первому оператору, следующему за текущим оператором. Т.е. break обеспечивает переход в точку кода программы, находящуюся за оператором, внутри которого он (break) находится.

Оператор return производит выход из текущей функции

 


Дата добавления: 2018-08-06; просмотров: 340; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!