- •Лекция 7 циклические вычислительные процессы
- •Вопросы лекции:
- •1. Циклические вычислительные процессы
- •2. Оператор цикла for
- •3. Операции инкремента и декремента
- •4. Разработка программ с использованием оператора цикла for
- •Int _tmain(int argc, _tchar* argv[])
- •Int _tmain(int argc, _tchar* argv[])
- •Vvedite celoe chislo: 5
- •Int _tmain(int argc, _tchar* argv[])
- •Int _tmain(int argc, _tchar* argv[])
- •Vvedite celoe chislo: 5
- •Вопросы для самоконтроля:
3. Операции инкремента и декремента
В языке С++ принято операцию приращения цикла i=i+1 записывать как i++, например:
for(i=1; i<=n; i++)
Y =A*i;
Такая запись называется операцией инкремента. Если i=i-1, то записывают i-- и называют операцией декремента.
Эти операции свойственны только языку С++. Унарные (одиночные, одноместные) операции инкремента (декремента) увеличивают (уменьшают) свой операнд (обязательно переменную) на единицу. Они изменяют значение самой переменной, то есть являются скрытой формой операции присваивания. Иногда эти операции применяют как самостоятельный оператор:
i++; i--;
что эквивалентно записи
i = i +1; i = i - 1;
Но эти операции могут использоваться и в выражениях, например,
sum = sum +x *++i ;
Инкремент и декремент реализуются в двух формах: префиксной и постфиксной. Особенности выполнения этих форм следующие.
При префиксной форме ++i (--i) - переменная i сначала увеличивается (уменьшается) на единицу , а затем ее значение используется в выражении.
При постфиксной форме і++ (i--) – значение переменной i сначала используется в выражении и только после вычисления выражения переменная увеличивается (уменьшается) на единицу.
4. Разработка программ с использованием оператора цикла for
Рассмотрим простейший пример оператора цикла for. Необходимо исследовать программу для печати в столбец чисел от 1 до заданного числа n=15 с шагом 1. Использовать оператор for. Блок-схема алгоритма выполнения такого задания приведена на рис. 7.3.
Рис. 7.3. Блок-схема алгоритма для печати в столбец n чисел
Ниже приведен программный код, реализующий данный алгоритм:
Int _tmain(int argc, _tchar* argv[])
{
int i, n ;
cout<<"Vvedite n "<<endl;
cin>>n; //Ввод значения переменной n
for ( i=1; i< n; i++ ) //Оператор цикла for
cout << i <<endl; //Тело цикла – вывод параметра цикла i
getch();
return 0;
}
В результате выполнения программы будет напечатан столбец положительных чисел от 1 до 15. Анализ результатов показывает, что работа оператора цикла for происходит в полном соответствии со схемой вычислительного процесса на рис. 7.1. В данном примере параметром цикла for является переменная i (она же – счетчик). В начале цикла счетчик (переменная i) инициализируется значением 1. Потом выполняется тело цикла (cout << i <<endl;) и проверяется, не достиг ли счетчик значения n=15. После каждого выполнения тела цикла счетчик (i) увеличивается на единицу. Как только i станет равным 15, тело цикла пропускается и управление передается следующему оператору программы.
Пример 1. Исследуем программу вычисления факториалa целого числа n с использованием оператора for. Факториал – это произведение целых чисел от 1 до n. Необходимо проанализировать блок-схемы вычислительного процесса и алгоритма решения задания при помощи оператора цикла for, ввести код программы, построить решение и произвести вычисления для n=10.
Факториал числа n вычисляется по следующей формуле:
n!
= 1*2*3*4* ... *n =
При вычислении факториала начальному значению произведения П необходимо присвоить 1. При каждом выполнении тела цикла Пi-1 будем умножать на i. Примем для обозначения произведения идентификатор р. Блок-схемы вычислительного процесса и алгоритма решения задания при помощи оператора цикла for имеют следующий вид:
а)
б)
Рис. 7.4. Блок-схемы вычисления факториалa целого числа n:
а) вычислительного процесса; б) алгоритма с использованием оператора for
Учитывая блок-схемы на рис. 7.4 программу вычисления факториала можно записать в следующем виде:
