Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие_С++_new.docx
Скачиваний:
69
Добавлен:
11.04.2015
Размер:
741.96 Кб
Скачать

Оператор цикла с параметром

Общий вид записи

for( i = ml; i<= m2; i=i+шаг)

{ <тело цикла>;}

i - параметр, управляющий работой цикла;

ml, m2 - выражения, определяющие соответственно начальное и конечное значения параметра цикла.

Замечание. Тело цикла состоит по стандарту из одного оператора. В случае выполнения в цикле нескольких операторов надо воспользоваться обязательно операторными скобками {...}.

Работа оператора цикла for...

Тело цикла выполняется для каждого значения параметра i, начиная от ml до конечного значения m2. После каждого выполнения тела цикла значение параметра i автоматически увеличивается на шаг (шаг – это любое, но заданное число).

Графическая интерпретация оператора цикла for...

В схемах алгоритма оператору цикла for..., как и в случае цикла while, соответствует структура ЦИКЛ-ПОКА.

Однако, из-за особенностей работы оператора и его широко­го применения при программировании задач обработки массивов данных, для оператора for... имеется специальная структура следующего вида:

Замечание 1. Оператор цикла for...допускает применение любого шага для изменения своего параметра.

Правила использования оператора цикла с параметром

  1. Параметр цикла i, а также его значения ml и m2 могут быть любого типа.

  2. Параметр i, а также значения ml и m2 не должны пере­определяться (менять значения) в теле цикла.

  3. При завершении работы оператора for па­раметр i становится неопределенным и переменную i можно использовать в других целях.

  4. Тело цикла может не выполниться ни разу, если m1>m2 для цикла for... с положительным шагом, или m1<m2 для отрицательного шага.

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

Схема алгоритма Программа

#include "stdafx.h"

#include<math.h>

int main()

{

float a, b, x, y;

printf("введите а и b ");

scanf("%f%f",&a,&b);

printf(" x y(x)\n");

for( х=-0.5; x<=2.5; x=x+0.1)

{

y=log(fabs(x))/(a*a+b*b);

printf("%8.1f %8.1f\n",x,y);

}

return 0;

}

Замечание 2. Оператор цикла while, как указывалось выше, наиболее универсальный из трех операторов цикла, используе­мых в языке С++. Однако конструкция оператора цикла for является наиболее простой. Поэтому рекомендуется там, где возможно, использовать оператор for.

2.9. Базовые алгоритмы

Для реализации циклических вычислительных процессов часто используются следующие базовые алгоритмы:

  • табулирование функций;

  • организация счетчика;

  • накопление суммы или произведения;

  • поиск минимального или максимального члена последо­вательности.

Ниже приводятся примеры программирования задач на осно­ве базовых алгоритмов.

Задача 1. Алгоритм организации счетчика

Дана последовательность:

cos 1, cos 3, cos 5, ..., cos 99.

Определить количество положительных членов последова­тельности.

Решение

Представим последовательность в общем виде:

а = cos(2n -1), где п =.

Для организации счетчика в памяти компьютера выделяется ячейка, содержимое которой должно увеличиваться на 1 каждый раз, когда встречается положительный член последовательности. В программе ячейке (счетчику) соответствует переменная целого типа, например переменная L. Работа счетчика реализуется с по­мощью оператора присваивания L=L+1. В начальный момент содержимое ячейки должно быть равно нулю. С этой целью пред­варительно осуществляется очистка ячейки оператором присваи­вания L=0.

#include "stdafx.h"

#include<math.h>

int main()

{

float a;

int n,L; // описание переменных

L=0; // очистка счетчика

for(n=1;n<=50;n++) // запуск цикла

{

a = cos(2*n – 1.0); // тело цикла

if(a>0) L = L + 1; // тело цикла

}

printf("L=%d", L); // вывод значения счетчика

return 0;

}