Циклы в C: for, while и do-while — подробное объяснение с практическими примерами
Что такое цикл в C?
Цикл повторяет блок операторов до тех пор, пока указанное условие не станет ложным. В C цикл состоит из тела и управляющего оператора, определяющего, сколько раз выполняется тело. Освоение циклов необходимо для написания эффективных и читаемых программ на C.
В этом уроке вы узнаете:
- Определение и цель циклов в C
- Типы циклов: с предусловием и постусловием
- Основы цикла while
- Основы цикла do-while
- Основы цикла for
- Использование
breakиcontinue - Выбор правильного цикла для заданного сценария
Типы циклов в C
Циклы в C классифицируются по положению контрольного условия:
- Циклы с предусловием (entry-controlled) — условие проверяется перед запуском тела (например,
whileиfor). - Циклы с постусловием (exit-controlled) — условие проверяется после выполнения тела (например,
do-while).
Бесконечный цикл возникает, когда цикл никогда не удовлетворяет условию завершения. Типичные причины: отсутствие проверки завершения или всегда истинное условие.
Цикл while в C
Цикл while — самая простая форма цикла с предусловием. Его синтаксис:
while (condition) { statements; }
Условие вычисляется первым; если оно истинно, выполняется тело. После каждого выполнения условие пересчитывается, пока не станет ложным.
Пример — вывод чисел от 1 до 10:
#include <stdio.h> int main() { int num = 1; while (num <= 10) { printf("%d\n", num); num++; } return 0; }
Вывод:
1 2 3 4 5 6 7 8 9 10
Цикл do-while в C
Цикл do-while гарантирует, что тело выполнится хотя бы раз, делая его циклом с постусловием. Синтаксис:
do { statements; } while (condition);
Пример — вывод таблицы умножения на 2 до 10:
#include <stdio.h> int main() { int num = 1; do { printf("%d\n", 2 * num); num++; } while (num <= 10); return 0; }
Вывод:
2 4 6 8 10 12 14 16 18 20
Цикл for в C
Цикл for высокоэффективен для итераций с известным началом, концом и шагом. Синтаксис:
for (initialization; condition; increment) { statements; }
- Инициализация выполняется один раз.
- Условие проверяется перед каждой итерацией.
- Инкремент обновляет переменную цикла.
Пример — вывод чисел от 1 до 10:
#include <stdio.h> int main() { for (int number = 1; number <= 10; number++) { printf("%d\n", number); } return 0; }
Вывод:
1 2 3 4 5 6 7 8 9 10
Сложные циклы for могут включать множественные выражения и даже пустые компоненты:
for (int i = 0, j = num; i < j; i++, j--) { // statements }
Вложенные циклы распространены, особенно для многомерных массивов. Пример — таблицы умножения:
#include <stdio.h> int main() { int i, j; int table = 2; int max = 5; for (i = 1; i <= table; i++) { for (j = 0; j <= max; j++) { printf("%d x %d = %d\n", i, j, i * j); } printf("\n"); } return 0; }
Вывод:
1 x 0 = 0 1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 1 x 4 = 4 1 x 5 = 5 2 x 0 = 0 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10
Оператор break в C
Ключевое слово break немедленно выходит из ближайшего заключающего цикла или оператора switch. Пример — остановка цикла while, когда значение достигает 3:
#include <stdio.h> int main() { int num = 5; while (num > 0) { if (num == 3) break; printf("%d\n", num); num--; } return 0; }
Вывод:
5 4
Оператор continue в C
Ключевое слово continue пропускает остаток текущей итерации и переходит к следующему циклу. Пример — пропуск вывода числа 5:
#include <stdio.h> int main() { int nb = 7; while (nb > 0) { nb--; if (nb == 5) continue; printf("%d\n", nb); } return 0; }
Вывод:
6 4 3 2 1
Выбор правильного цикла
Решайте на основе того, когда условие должно проверяться:
- Предварительная проверка нужна — используйте
whileилиfor. - Проверка после выполнения нужна — используйте
do-while.
Резюме
- Цикл повторяет блок кода до тех пор, пока его условие не станет ложным.
- C предлагает три основных цикла:
while,do-whileиfor. - Циклы с предусловием проверяют условие перед каждой итерацией; с постусловием — после.
- Используйте
breakдля раннего выхода из циклов иcontinueдля пропуска итераций. - Выбирайте цикл, который лучше соответствует требованиям потока управления вашего алгоритма.
Язык C
- Циклы while и do-while в C#: синтаксис, примеры и лучшие практики
- Цикл for в C#: синтаксис, поток выполнения и практические примеры
- Цикл foreach в C#: перебор массивов и коллекций легко
- Освоение цикла for в C++: пошаговое руководство
- Fluke 772/773 зажимные мультиметры: современный подход к устранению неисправностей автоматических контуров
- Циклы while и do-while: наглядное сравнение с практическими примерами
- Java-программа для идентификации чисел Армстронга с использованием for-цикла
- Java-проверка чисел-палиндромов: алгоритмы с while и for циклами
- Освоение циклов Python: for, while, break, continue и enumerate
- Освоение циклов WHILE в программировании SINUMERIK 840D