Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инфа.docx
Скачиваний:
80
Добавлен:
14.03.2016
Размер:
389.3 Кб
Скачать

Заметки

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

  • В цикле doилиwhileследующая итерация начинается путем повторного вычисления управляющего выражения оператораdoилиwhile.

  • В цикле for(в котором используется синтаксисfor(init-expr;cond-expr;loop-expr)) выполняется предложениеloop-expr.Затем повторно выполняется предложениеcond-exprи, в зависимости от результата, цикл завершается или начинается другая итерация.

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

Копировать

// continue_statement.cpp

#include <stdio.h>

int main()

{

int i = 0;

do

{

i++;

printf_s("before the continue\n");

continue;

printf("after the continue, should never print\n");

} while (i < 3);

printf_s("after the do loop\n");

}

перед continue

перед continue

перед continue

после цикла do

3.3.3

Оператор gotoбезусловно передаёт управление в инструкцию с меткой заданным идентификатором.

Синтаксис

Копировать

goto identifier;

Заметки

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

Метка оператора имеет значение только для оператора goto; в остальных случаях метки операторов игнорируются. Повторно объявлять метку нельзя.

Вместо breakво всех случаях, когда это возможно, рекомендуется использовать операторыcontinue,returnиgoto.Однако, поскольку операторbreakвыполняет выход только из одного уровня цикла, возможны ситуации, когда для выхода из глубоко вложенного цикла может потребоваться использовать операторgoto.

Дополнительные сведения о метках и операторе gotoсм. в разделахОператоры с меткамииИспользование меток с оператором goto.

В этом примере оператор gotoпередает управление в точку с меткойstop, когда значение переменнойiравно 3.

Копировать

// goto_statement.cpp

#include <stdio.h>

int main()

{

int i, j;

for ( i = 0; i < 10; i++ )

{

printf_s( "Outer loop executing. i = %d\n", i );

for ( j = 0; j < 2; j++ )

{

printf_s( " Inner loop executing. j = %d\n", j );

if ( i == 3 )

goto stop;

}

}

// This message does not print:

printf_s( "Loop exited. i = %d\n", i );

stop:

printf_s( "Jumped to stop. i = %d\n", i );

}

Outer loop executing.i = 0

Inner loop executing.j = 0

Inner loop executing.j = 1

Outer loop executing.i = 1

Inner loop executing.j = 0

Inner loop executing.j = 1

Outer loop executing.i = 2

Inner loop executing.j = 0

Inner loop executing.j = 1

Outer loop executing.i = 3

Inner loop executing.j = 0

Jumped to stop.i = 3

№4

Алгоритмы с ветвлением.

4.1

Смотри пункт 3.1

4.2

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

Операция проверки условия в языке Си осуществляется с использованием оператора if. Общая форма записи

if(выражение){

  блок операций 1; } else {

  блок операций 2; }

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

Такая структура представляет собой полную развилку.

Оператор if может также применяться в случае неполной развилки. При этом форма записи этого условного оператора будет следующей:

if(выражение){ блок операций 1; }

Пример

#include <stdio.h> int main() {

  int k;

  printf("k= ");

  scanf("%d",&k);

  if(k >= 5) {

    printf("%d >= 5", k);

  } else {

    printf("%d < 5", k);

  }

  getchar(); getchar();

  return 0; }

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

Пример:

#include <stdio.h> #include <stdlib.h> int main() {

  int key;

  system("chcp 1251");

  system("cls");

  printf("Введите номер пункта, 1 или 2: ");

  scanf("%d",&key);

  if (key == 1)

    printf("\n Выбран первый пункт");

  else if (key == 2)

    printf("\n Выбран второй пункт");

  else

    printf("\n Первый и второй пункты не выбраны");

  getchar(); getchar();

  return 0; }

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

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

if (key!= 1) {

  if (key == 2)

    printf("\n Выбран второй пункт");

  } else

    printf("\n Выбран первый пункт");