For (инициализация; выражение; модификации) оператор;
Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько операторов, разделенных запятой (операцией «последовательное выполнение»), например, так:
for (int i = 0, j = 2; ...
int k, m;
for (k = 1, m = 0; ...
Областью действия переменных, объявленных в части инициализации цикла, является цикл. Инициализация выполняется один раз в начале исполнения цикла.
Выражение определяет условие выполнения цикла: если его результат, приведенный к типу bool, равен true, цикл выполняется. Цикл с параметром реализован как цикл с предусловием.
Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую.
Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).
Пример: оператор, вычисляющий сумму чисел от 1 до 100:
for (int i = 1, s = 0; i<=100; i++) s += i;
Пример: программа печатает таблицу значений функции у=х2+1 во введенном диапазоне:
#include <stdio.h>
int main(){
float Xn, Xk, Dx, X;
printf("Введите диапазон и шаг изменения аргумента: ");
scanf("%f%f%f", &Xn, &Xk, &Dx);
printf("| X | Y |\n");
for (X = Xn; X<=Xk; X += Dx)
printf("| %5.2f| %5.2f |\n", X, X*X + 1);
return 0;
}
Пример: программа находит все делители целого положительного числа:
#include <iostream.h>
int main(){
int num, half, div;
cout << "\пВведите число : ";
cin >> num;
for (half = num / 2, div = 2; div <= half; div++)
if (!(num % div)) cout << div <<"\n";
return 0;
}
Два последних примера выполняют те же действия, что и примеры для цикла с предусловием, но записаны более компактно и наглядно: все действия, связанные с управлением циклом, локализованы в его заголовке.
Любой цикл while может быть приведен к эквивалентному ему циклу for и наоборот по следующей схеме:
for (b1; b2; b3) оператор | b1; while (b2){ оператор; b3;} |
Часто встречающиеся ошибки при программировании циклов – использование в теле цикла неинициализированных переменных и неверная запись условия выхода из цикла.
Чтобы избежать ошибок, рекомендуется:
· проверить, всем ли переменным, встречающимся в правой части операторов присваивания в теле цикла, присвоены до этого начальные значения (а также возможно ли выполнение других операторов);
· проверить, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла;
· предусмотреть аварийный выход из цикла по достижению некоторого количества итераций (см. пример в следующем разделе);
· и, конечно, не забывать о том, что если в теле цикла требуется выполнить более одного оператора, нужно заключать их в фигурные скобки.
Операторы цикла взаимозаменяемы, но можно привести некоторые рекомендации по выбору наилучшего в каждом конкретном случае.
Оператор do whileобычно используют, когда цикл требуется обязательно выполнить хотя бы раз (например, если в цикле производится ввод данных).
Оператором whileудобнее пользоваться в случаях, когда число итераций заранее не известно, очевидных параметров цикла нет или модификацию параметров удобнее записывать не в конце тела цикла.
Оператор forпредпочтительнее в большинстве остальных случаев (однозначно — для организации циклов со счетчиками).
Дата добавления: 2015-10-09; просмотров: 2137;