Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикладное программирование.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
439.97 Кб
Скачать

1.8. Пошаговый цикл for

1.8.1 Пример работы оператора for - вычисление суммы чисел (пример 9)

Рассмотрим пример вычисления суммы чисел от 1 до 10.

/////////////////////////////////////////////////////////////////////////////

// Прикладное программирование

// Пример 9. Пример работы оператора for - вычисление суммы чисел

//

// Кафедра Прикладной и компьютерной оптики, http://aco.ifmo.ru

// СПб НИУ ИТМО

/////////////////////////////////////////////////////////////////////////////

// подключение библиотеки ввод-вывода

#include <iostream>

// подключение стандартного пространства имен для использования библиотек

using namespace std;

/////////////////////////////////////////////////////////////////////////////

// функция main начинает исполнение программы

void main()

{

// описание переменных

int sum = 0;

// оператор пошагового цикла

for(int i=1; i<=10; ++i)

{

sum+=i;

}

cout<<"sum="<<sum<<endl;

}

/////////////////////////////////////////////////////////////////////////////

Пошаговый цикл for позволяет выполнять блок операторов, заключенный в фигурные скобки задуманное количество раз.

В данном примере, когда оператор for начинает выполняться, объявляется и инициализируется счетчик цикла i ( i=0). Затем проверяется условие продолжения цикла i < 10. Поскольку начальное значение i равно 0, условие удовлетворяется, и выполняется блок операторов внутри цикла (тело цикла). Затем выражение ++ i выполняет приращение счетчику i ( i=1), и цикл снова начинается с проверки условия продолжения. Этот процесс продолжается, пока тело цикла не будет исполнено 10 раз и управляющая переменная i не увеличится до 10, это приведет к тому, что проверка условия продолжения даст отрицательный результат, и повторение будет прервано. Выполнение программы продолжится с первого оператора, расположенного после оператора for.

1.8.2 Пошаговый цикл for

Общая форма оператора for, и соответствующая ему блок-схема показаны в таблице.

Пошаговый цикл

for(инициализацияусловиеприращение)

{

   блок операторов;

}

 

В заголовке цикла указывается выражение инициализации, которое задает начальное значение счетчику цикла, условие, должен ли цикл продолжать свое выполнение, а выражение приращения модифицирует счетчик цикла.

Если условие продолжения цикла с самого начала ложно, то операторы тела for не исполняются и управление сразу передается оператору, следующему за for.

В большинстве случаев оператор for можно представить эквивалентным оператором while:

инициализация;

while ( условие )

{

блок операторов ;

приращение ;

}

Если выражение инициализации в заголовке оператора for объявляет счетчик цикла (т.е. перед именем переменной указан ее тип), то переменная может использоваться только в теле оператора for – вне оператора for эта переменная будет неизвестна. Такое ограничение на использование имени переменной называют областью действия переменной. Область действия переменной определяет, где в программе она может использоваться.

Переменная-счетчик всегда должна иметь целочисленный тип данных. Если переменная была объявлена в цикле (все равно в каком), по завершении цикла эта переменная будет уничтожена.

Еще несколько примеров заголовков цикла:

  • изменение управляющей переменной от 1 до 100 с шагом 1: for(int i = 1; i <= 100; i++)

  • изменение управляющей переменной от 100 до 1 с шагом -1 (с уменьшением на 1): for(int i = 100; i > 0; i--)

  • изменение управляющей переменной от 7 до 77 с шагом 7: for(int i = 7; i <= 77; i += 7)

  • изменение управляющей переменной от 20 до 2 с шагом -2: for(int i = 20; i >= 2; i -= 2)

  • изменение управляющей переменной в следующей последовательности: 2, 5, 8, 11, 14: for(int j = 2; j <= 20; j += 3)

  • изменение управляющей переменной в следующей последовательности: 99, 88, 77, 66, 55, 44, 33, 22, 11, 0: for(int j = 99; j >= 0; j -= 11)

Выражения инициализации и приращения могут быть списками выражений, разделенных запятыми. Например, в одном операторе for может быть несколько управляющих переменных, которые нужно инициализировать и модифицировать:

for(int x = 0, y=0; x < 10; x++, y++)

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

На самом деле, все три выражения в операторе for являются необязательными. Если опущено выражение для условия продолжения цикла, C++ предполагает, что условие всегда истинно и, таким образом, получается бесконечный цикл. Можно опустить выражение инициализации, если управляющая переменная инициализируется в программе ранее. Можно опустить и выражение приращения, если приращение переменной выполняется в теле цикла или оно вообще не требуется.

Например, цикл for(int i = 0; i < 100; i++) можно записать следующим образом:

int i=0;

for( ; ; )

{

// ...

if(i>=100)

break;

i++;

}