Язык программирования C. Управляющие конструкции. Безусловные переходы

Страницы работы

Фрагмент текста работы

Язык программирования C (продолжение)

Управляющие конструкции

  • Управляющие конструкции (операторы) позволяют нарушить естественный порядок выполнения инструкций языка.
  • Условные переходы
  • Циклы
  • Безусловные переходы

Условные переходы

Формат: if (условие) инструкции; else инструкции; Здесь в качестве инструкций может быть одна инструкция, блок инструкций или пустая инструкция. Фраза else может вообще отсутствовать. Если условие истинно (т.е. принимает любое значение, отличное от нуля), то выполняется инструкция (или блок инструкций) следующий за if. В противном случае выполняется инструкция (или блок инструкций), следующий за else (если эта фраза присутствует).

Условные переходы

Условное выражение, входящее в if, должно иметь скалярный результат. Разрешается вложение условных переходов. Во вложенном условном переходе фраза else всегда ассоциирована с ближайшим if в том же блоке, если этот if не ассоциирован с другой фразой else. Пример: if (i != 0 ) { if (j) j++; if(k) k++; else if(p) k--; } else i--;

Условные переходы

Стандарт С89 допускает 15 уровней вложенности условных переходов, С99 – 127 уровней вложенности. В настоящее время большинство компиляторов допускает значительно большее количество уровней вложенности. Однако на практике необходимость в глубине вложенности большей, чем несколько уровней, возникает довольно редко, т.к. увеличение глубины вложенности быстро запутывает программу и делает ее нечитаемой.

Условные переходы

Тернарная конструкция ? : , альтернативная if – else. Его общая форма следующая: Выражение1 ? Выражение2 : Выражение3 Сначала вычисляется Выражение1. Если оно имеет значение ИСТИНА, вычисляется Выражение2 и его значение становится результатом операции. Если Выражение1 имеет значение ЛОЖЬ, вычисляется Выражение3 и его значение становится результатом операции. Конструкцию ? : можно использовать вместо if-else только в операторе присваивания Пример. x = 10; y = x > 9 ? 100 : 200;

Конструкция выбора (переключатель)

  • Формат:
  • switch (выражение) { case константное_выражение1:
  • инструкции;
  • break;
  • case константное_выражение2:
  • инструкции;
  • break;
  • … default: набор инструкций;
  • }

Конструкция выбора (переключатель)

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

Конструкция выбора (переключатель)

Метка default также может отсутствовать. В этом случае при отсутствии совпадения не выполняется ни одна инструкция. Согласно Стандарту С89, переключатель switch может иметь как минимум 257 меток case. Стандарт С99 требует поддержки как минимум 1023 меток case. Case – это метка, однако она не может быть использована сама по себе, вне переключателя switch. Разрешено использование вложенных переключателей. Метки case внутреннего и внешнего переключателя могут иметь одинаковые константы, в этом случае они не конфликтуют между собой.

Циклы

  • С предусловием:
  • while (условие) инструкции;
  • С постусловием:
  • do инструкции; while (условие);
  • Пересчетного типа:
  • for(инициализация;условие;приращение)инструкции;

Безусловные переходы

В языке С определены четыре инструкции безусловного перехода: break, continue, goto и return. Инструкции break и continue можно использовать в любом из циклов. Инструкцию break можно использовать также в переключателе switch. Инструкции goto и return можно использовать в любом месте внутри функции. Инструкция break немедленно прекращает выполнение цикла без проверки его условия и передает управление инструкции, следующей после цикла. Инструкция continue прерывает текущую итерацию цикла и осуществляет переход к следующей итерации.

Безусловные переходы

  • break;
  • Пример:
  • for(i=0; i<10; i++) { printf(“%i \n”, i); if( i==5) break; }

  • continue;
  • Пример:
  • for(;;) { scanf(“%i”,&i); if(i>0) continue; goto loop_exit; }
  • loop_exit: …

Инструкция безусловного перехода goto

Формат: goto метка;

Используется только в случаях крайней необходимости! Без него можно

Похожие материалы

Информация о работе