Циклы в C: for, while, do-while для начинающих

Три типа циклов в C

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

Цикл for

Цикл for используется для итерации по последовательности значений. Его синтаксис:

for (инициализация; условие; изменение) {
  // Блок кода, который выполняется многократно
}
  • Инициализация: выполняется один раз перед началом цикла. Обычно здесь объявляется и инициализируется счётчик цикла.
  • Условие: проверяется перед каждой итерацией. Если условие истинно, цикл продолжает работу; иначе — завершается.
  • Изменение: выполняется после каждой итерации. Обычно здесь изменяется значение счётчика цикла.

Пример: Вывод чисел от 0 до 9:

for (int i = 0; i < 10; i++) {
  printf("%d ", i);
}

Пример: Вывод чисел от 1 до 10:

for (int i = 1; i <= 10; i++) {
  printf("%d ", i);
}

Пример: Деление числа на 2 до тех пор, пока оно не станет меньше 10:

float n = 100.0f;
for (; n > 10; n /= 2) {
  printf("%.2f ", n);
}

Если внутри цикла только одна строка кода, фигурные скобки можно опустить.

Цикл while

Цикл while выполняет блок кода, пока условие истинно. Синтаксис:

while (условие) {
  // Блок кода, который выполняется многократно
}

Пример: Цикл с выходом при вводе числа 1:

bool isRunning = true;
int x;
while (isRunning) {
  printf("Введите число: ");
  scanf("%d", &x);
  if (x == 1) {
    isRunning = false;
  }
  printf("Вы ввели: %d\n", x);
}

Цикл do-while

Цикл do-while похож на while, но условие проверяется в конце каждой итерации. Поэтому блок кода выполнится хотя бы один раз. Синтаксис:

do {
  // Блок кода, который выполняется многократно
} while (условие);

Пример:

bool isRunning = false;
do {
  printf("Слово 'с'\n");
} while (isRunning);

Операторы break и continue

  • break: прерывает выполнение цикла и переходит к коду, следующему за циклом.
  • continue: пропускает текущую итерацию цикла и переходит к следующей.

Пример break:

for (int x = 0; x < 5; x++) {
  if (x == 3) {
    break;
  }
  printf("%d ", x);
}

Пример continue: Вывод только нечётных чисел:

for (int x = 0; x < 8; x++) {
  if (x % 2 == 0) {
    continue;
  }
  printf("%d ", x);
}

Операторы break и continue могут использоваться совместно в одном цикле.

Работа с массивами

Циклы эффективно используются для обработки массивов.

Пример: Вывод элементов массива:

int arr[] = {1, 5, -2, 6, 10};
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
  printf("%d ", arr[i]);
}

Пример: Поиск минимального и максимального элементов массива:

int arr[] = {1, 5, -2, 6, 10, -67, 6};
int min = arr[0];
int max = arr[0];
for (int i = 1; i < sizeof(arr) / sizeof(arr[0]); i++) {
  if (arr[i] < min) {
    min = arr[i];
  }
  if (arr[i] > max) {
    max = arr[i];
  }
}
printf("Минимум: %d, Максимум: %d\n", min, max);

Мы изучили три основных типа циклов в языке C: for, while и do-while, а также операторы break и continue, позволяющие управлять потоком выполнения цикла. Циклы являются фундаментальным инструментом для написания эффективных и гибких программ. Понимание их работы и умение применять их на практике является важным навыком для любого программиста на C.

Что будем искать? Например,программа