|
|||
if (disaster)Стр 1 из 2Следующая ⇒
11. Понятие оператора языка Си. Условный оператор if, его полная форма записи if-else. Вложенный оператор if.
• Выражение наподобие х = 0, i++ или printf(...) становится оператором, если после него поставить точку с запятой: • В языке С точка с запятой является элементом оператора и его завершающей частью. • Фигурные скобки, { и }, служат для группировки объявлений и операторов в составные операторы, или блоки, синтаксически эквивалентные одному оператору. • Все операторы языка С могут быть условно разделены на следующие категории: - условные операторы, к которым относятся оператор условия if и оператор выбора switch;
Оператор if Формат оператора:
Оператор if-else Оператор else-if
if (выражение) оператор;
Эта последовательность операторов if представляет собой самый общий способ записи принятия многовариантного решения. Перечисленные выражения вычисляются по порядку; если какое-нибудь из них оказывается истинным, то выполняется ассоциированный с ним оператор, и цепочка проверки условий прерывается.
Вложенный оператор if. Оператор if может быть включен в конструкцию if или в конструкцию else другого оператора if. Чтобы сделать программу более читабельной, рекомендуется группировать операторы и конструкции во вложенных операторах if, используя фигурные скобки. Если же фигурные скобки опущены, то компилятор связывает каждое ключевое слово else с наиболее близким if, для которого нет else.
12.Условный оператор switch, его полная форма записи и возможности. Сравнение с конструкцией if.
switch(целочисленное выражение) { caseцелочисленное константное выражение1: операторы1; break; caseцелочисленное константное выражение2: операторы2; break; … default: операторы n; breack; }
Оператор switch используется для выбора одного из нескольких вариантов действий в зависимости от того, с какой из набора целочисленных констант совпадает значение некоторого выражения в скобках ( ). В зависимости от найденного соответствия выполняется ветвление программы. Каждый из вариантов (блоков case) имеет метку в виде константы с целочисленным значением или константного выражения. Если одна из меток совпадает со значением выражения, управление передается операторам после этой метки. Все выражения после case должны быть различными.
Блок default выполняется в том случае, если не найдено ни одного соответствия в блоках case. Наличие блока default не обязательно; если его нет и не найдено ни одного соответствия, то не будут выполнены никакие операции. Блоки case и default могут следовать друг за другом в любом порядке.
Оператор break инициирует немедленный выход из оператора switch. Поскольку блоки case — это, по сути, всего лишь метки, после выполнения кода в одном из них продолжается выполнение кода следующего (насквозь через блоки case), пока не будет предпринята какая-нибудь операция для выхода из switch. Для этого чаще всего используются операторы break и return.
С точки зрения хорошего стиля программирования рекомендуется ставить оператор break даже в конце последнего блока (в данном случае default),
Конструкции, использующие вложенные операторы if, являются довольно громоздкими и не всегда достаточно надежными. Недостатком же switch является невозможность использования нецелочисленных значений.
13. Понятие цикла, его назначение. Начальные условия, проверка условия останова и изменение состояния программы. Цикл с проверкой условия в начале и его эквивалентные формы записи с помощью других операторов цикла.
Многократное повторение каких-либо действий (команд) называется циклом. Алгоритм назывется циклическим, если он содержит один или несколько циклов. В языке Си известны три вида операторов цикла: for, while, do-while.
Цикл с проверкой условия в начале (цикл с предусловием) – это цикл while. Имеет следующий вид:
Эквивалентная запись. Оператор цикла вида
14. Цикл с проверкой условия в конце. Цикл for. Их эквивалентные формы записи с помощью других операторов цикла. Выбор типа цикла. Вложенные циклы. Правила вложения.
Цикл с проверкой условия в конце – это цикл do-while. Конструкция do-while проверяет условие в конце, после выполнения тела цикла. Таким образом, тело цикла всегда выполняется как минимум один раз. Имеет следующий вид: do тело while (выражение); Здесь сначала выполняется тело, затем вычисляется выражение. Если оно истинно (не равно нулю), то снова выполняется тело, и т.д. Как только выражение становится ложным, выполнение цикла прекращается.
Оператор for - это наиболее общий способ организации цикла. Он имеет следующий вид: Выражение 2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.
Эквивалентная запись. Оператор цикла вида
Вложенные циклы. Пример: { i++; j--;
15. Оператор перехода к следующей итерации цикла и оператор выхода из цикла. Назначение. Состояние программы после их выполнения. Понятие метки. Оператор безусловного перехода.
Операторы break и continue. • Оператор break вызывает принудительный выход из циклов for, while и do — аналогично выходу из оператора switch. Выход выполняется из ближайшего (самого внутреннего) цикла или оператора switch.
• Оператор continue напоминает break, но используется реже; он передает управление на следующую итерацию (проход) ближайшего цикла for, while или do. В цикле while или do это означает немедленную проверку условия, тогда как в цикле for дополнительно выполняется инкрементирование. Оператор continue применим только к циклам, но не к оператору switch. Если поставить continue внутри switch, в свою очередь находящегося внутри цикла, то управление будет передано на следующий проход этого цикла. Оператор continue часто используется там, где следующая за ним часть цикла слишком длинная и сложная, так что выделение ее отступами в условном операторе ухудшает удобочитаемость.
Оператор goto (оператор безусловного перехода) и метки. В языке С имеется оператор goto (бездонный источник потенциальных неприятностей) и метки для перехода с его помощью. В техническом плане оператор goto никогда не бывает необходим, и на практике почти всегда легче обходиться без него.
Тем не менее, есть несколько ситуаций, в которых и goto может найти свое место под солнцем. Наиболее распространенная— это необходимость прекратить работу управляющей структуры с большим количеством вложений, например выйти сразу из двух и более вложенных циклов. Оператор break тут не применим непосредственно, поскольку он обеспечивает выход только из внутреннего, ближайшего цикла. Поэтому получаем вот что:
for ( ... ) for (...) { if (disaster)
|
|||
|