Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
58
Добавлен:
30.05.2015
Размер:
411.14 Кб
Скачать
      1. Операторы циклов

Циклом называется последовательность операторов, которая выполняется несколько раз в процессе выполнения программы при различных значениях некоторой переменной или при выполнении какого-то условия. Например, необходимо вычислить среднее значение последовательности а0, а1, а2, … а10.

В этом случае в программе можно написать следующее:

float a[10], sum, sr;

sum = 0;

sum = sum + a[0];

sum = sum + a[1];

. . .

sum = sum + a[9];

sr = sum/10;

Собственно для подсчета суммы необходимо написать 10 операторов присваивания, имеющих одинаковый вид и отличающихся только индексами текущих элементов массива. А что делать, если длина последовательности не 10, а 100? Или конкретное количество обрабатываемых элементов вводится пользователем уже в ходе выполнения вашей программы? В последнем случае просто неизвестно заранее, сколько операторов присваивания нужно выполнить. В этом случае на помощь и приходит такой инструмент, как цикл.

В этом случае алгоритм для расчета суммы первых N элементов последовательности А и вычисления затем среднего значения можно записать следующим образом:

  1. Задаём начальное значение для суммы, равное нулю (СУММА = 0).

  2. Задаем начальный номер элемента массива, например, 1 (ИНДЕКС = 1).

  3. К сумме добавляем значение элемента массива с номером ИНДЕКС (СУММА = СУММА + А[ИНДЕКС]).

  4. Увеличиваем ИНДЕКС на 1 (ИНДЕКС = ИНДЕКС + 1).

  5. Проверяем, не вышли ли за пределы массива (ИНДЕКС<=N ?).

  6. В случае результата “истина” возвращаемся к п.№3, в случае результата “ложь” переходим к следующему пункту (в нашем случае №7).

  7. Вычисляем среднее (СРЕДНЕЕ = СУММА / N).

Блок-схема алгоритма приведена на рисунке 4.

Рисунок 4 – Алгоритм расчета суммы последовательности А длиной N

Повторяющиеся действия (п.3, 4, 5) и будут выполняться циклически.

В языке Си реализовано три вида циклов: while(), for() и do ... while(). С учетом этого, вместо приведенного выше примера можно привести следующие варианты реализации:

С использованием оператора for()

С использованием оператора while()

С использованием оператора do... while()

С использованием операторов if и goto

sum = 0;

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

{

sum = sum + a[i];

}

sr = sum/10;

i = 0; sum = 0;

while ( i < n )

{

sum = sum + a[i];

i++;

}

sr = sum/10;

i = 0; sum = 0;

do

{

sum = sum + a[i];

i++;

}

while ( i < n );

sr = sum/10;

i = 0; sum = 0;

m:

sum = sum + a[i];

i++;

if ( i < n ) goto m;

sr = sum/10;

        1. Оператор цикла while

Структура оператора (рисунок 5):

while (выражение)

оператор;

Рисунок 5

Оператор while определяет операции, которые циклически выполняются до тех пор, пока проверяемое "выражение" не станет ложным, или равным нулю, т.е. если "выражение" истинно (или а общем случае не равно нулю), то "оператор" (или "тело цикла") выполняется один раз, а затем "выражение" проверяется снова. Эта последовательность действий, состоящая из проверки и выполнения тела цикла, периодически выполняется до тех пор, пока "выражение" не станет ложным. Каждый такой шаг называется "итерация".

Оператор while – это цикл с предусловием; решение, выполнять ли в очередной раз тело цикла, принимается перед началом его прохождения. Поэтому вполне возможно, что тело цикла не будет выполнено ни разу. "Оператор", образующий тело цикла, может быть либо простым (одиночным, заканчивающимся символом "точка с запятой"), либо составным, тогда группа составляющих его операторов заключается в фигурные скобки.

Примеры:

while ( n++ < 100 )

printf(" %d %d \n",n,2*n+1);

int far = 0, step = 2;

while ( far < 1000 )

{

far = far + step;

printf(" far = %d\n", far);

}

Не забудьте о том, что при построении цикла while вы должны включить в него какие-то конструкции, изменяющие величину проверяемого выражения так, чтобы в конце концов оно стало ложным. В противном случае выполнение цикла никогда не завершится.

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

Соседние файлы в папке Методические указания