- •Разработка программы нахождения максимального или минимального элементов в массиве
- •Основные операции, операторы ветвления и циклов
- •Арифметические выражения
- •Логические выражения
- •Приоритеты (порядок) выполнения операций
- •Порядок вычислений
- •Выбор вариантов
- •Условные операторы
- •Оператор ветвления (проверки условия) if
- •If (выражение1)
- •If (выражение2)
- •Операция условия
- •Выражение1 ? выражение2 : выражение3
- •Множественный выбор: оператор switch
- •Операторы циклов
- •Оператор цикла while
- •Оператор цикла for
- •Оператор цикла do while
- •Вложенные циклы
- •Другие управляющие операторы
- •Оператор break
- •Оператор continue
- •Оператор goto
- •Организация ввода элементов массивов
- •Задача поиска минимального (максимального) значения
-
Оператор цикла for
Структура оператора:
|
for (инициализация; проверка условия; коррекция) оператор; |
Рисунок 6 |
В операторе for используются три выражения, управляющие работой цикла; они разделены символами "точка с запятой". Инициализирующее выражение вычисляется только один раз до начала выполнения какого-нибудь из операторов цикла. Если проверяемое выражение оказывается истинным (или не равным нулю), тело цикла выполняется один раз. Затем вычисляется величина корректируемого выражения, и значение проверяемого выражения определяется вновь. Таким образом, тело цикла выполняется до тех пор, пока проверяемое условие не станет ложным, или равным нулю. В виде блок-схемы порядок этих действий отображен на рис.Error: Reference source not found.
Оператор for – это цикл с предусловием: решение, выполнить в очередной раз тело цикла или нет, принимается до начала его прохождения. Поэтому может случиться так, что тело цикла не будет выполнено ни разу. Оператор, образующий тело цикла, может быть как простым, так и составным.
Примеры:
for ( n=0; n < 10; n++)
printf(" %d %d \n",n,2*n+1);
В "инициализации" и "коррекции" могут находиться несколько операций, разделяемых между собой запятыми. Например:
for (sum = 0.0, x = 1.0, count = 1; count <= 10; count++, x *= 2.0)
{
sum += 1.0/x;
printf(" sum = %f ,когда count = %d\n", sum, count);
}
В заголовке цикла for ни одно из трех выражений не является обязательным, однако два символа "точка с запятой" обязаны присутствовать.
Ниже приведено описание "вечного" цикла для ввода любого символа и вывода его и его кода на экран:
char c;
for ( ; ; )
{
printf("Введите любой символ: ");
scanf("%s",&c);
printf("Симовол = %c; его код = %d\n", n, n);
if ( c == 'q' ) break; // break – оператор выхода из цикла
}
Выход из цикла осуществляется, если введен символ 'q'. По-другому то же самое можно было записать так:
char c='a';
for ( ; c != 'q'; )
{
printf("Введите любой символ: ");
scanf("%s",&c);
printf("Симовол = %c; его код = %d\n", n, n);
}
Цикл for очень удобно использовать при работе с массивами. Пример:
float g[10], f[10];
int i;
for (i = 0; i < 10; i++)
{
printf("Введите %d-ый элемент массива: ", i);
scanf("%f",&g[i]);
printf("g[%d] = %f\n", i, g[i]);
f[i] = 2 * g[i];
}
Здесь организован ввод и вывод десяти элементов вещественного одномерного массива g и заполнение соответствующих элементов массива f по формуле fi = 2gi.
ВНИМАНИЕ!!! Как известно, символ ";" используется там, где соответствующий оператор ЗАКАНЧИВАЕТСЯ, поэтому фрагмент
for (i = 0; i < 10; i++); // №1
{
printf("Введите %d-ый элемент массива: ", i); // №2
scanf("%f",&g[i]);
printf("g[%d] = %f\n", , g[i]);
f[i] = 2 * g[i];
}
не является правильным: так как сразу после заголовка цикла (№1) стоит символ окончания оператора, то к моменту, когда начнёт выполняться оператор (№2), параметр i уже примет "плохое" значение 10, и повторений тела цикла никаких не будет (ведь собственно цикл уже закончился!!!).

