Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Лекция 7. В языке С++ определены три оператора цикла:





 

Операторы цикла

 

В языке С++ определены три оператора цикла:

 

- цикл с предусловием;

- цикл с постусловием;

- итерационный цикл.

 

5.Оператор цикла с предусловием.

1) Синтаксис:

 

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

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

 

Здесь <выражение> - это арифметическое или логическое выражение,

<тело цикла> - это либо один оператор (в том числе и пустой), который заканчивается “;”, либо составной оператор, либо блок.

2) Семантика: сначала вычисляется значение выражения. Если оно #0 или истина, то выполняется тело цикла. Затем повторяется вычисление значения выражения и выполнение тела цикла, пока значение выражения не станет = 0 или false. Как только выражение становится ложным, управление передается оператору, следующему за этим циклом.

Пример. Вычислить сумму первых кнатуральных чисел.

s = 1+2+…+к

 

#include <iostream.h>

#include <conio.h>

void main()

{

int S = 0, k;

cin >> k;

int i = 0;

while (i < k)

S +=++i;

cout << “\n S = “ << S;

getch();

}

Пример. Решить уравнение

 

0,25 x 3 + x – 1,25 = 0; x € [0,2]

 

методом итераций.

 

#include <iostream.h>

#include <conio.h>

#include <math.h>

void main()

{

float x, y, x0, eps;

int n = 1; // счетчик итераций

cout << “\n Введите х0 и eps ”;

cin >> x0 >> eps;

y = x0;

x = 1.25 – 0.25*y*y*y;

while (fabs(y-x)>eps)

{

y = x;

x = 1.25 – 0.25*y*y*y;

n++;

}

cout << “\n x = “ << x << “n= “ << n;

getch();

}

 

6. Оператор цикла с постусловием.

 

1) Синтаксис:

do

<тело цикла>

while (<выражение>);

2) Семантика: Сначала выполняется тело цикла. Затем вычисляется значение выражения. Если оно #0 или истина, то вновь выполняется тело цикла. Если выражение ложно, то осуществляется переход к следующему за циклом оператору.

Решим предыдущие примеры с помощью оператора цикла с постусловием.

......

{ int S = 0, k; { float x, y, x0, eps;

cin >> k; int n = 0;

int i = 1; cin >> x0 >> eps;

do y = x0;

{ S += i; do

i++; { x = y;

} y = 1.25 – 0.25*x*x*x;

while (i<= k); n++;

... }

} while (fabs(y-x) > eps);

cout << “\n y= “ << y << “n= “ << n;

}

 

7.Оператор итерационного цикла

1).Синтаксис:

for (<инициализация цикла>; <выражение-условие>;

<список выражений>)

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

 

Здесь <инициализация цикла> - последовательность определений и выражений, разделенных запятыми; <выражение-условие> - это либо арифметическое выражение, либо отношение, либо пусто (но “;” сохраняется); <список выражений> - последовательность выражений, разделенных запятыми.

2) Семантика: Вначале выполняется инициализация цикла. Затем вычисляется значение выражения-условия. Если оно #0 или истина, то выполняется тело цикла. Затем вычисляются значения выражений из списка. Далее снова вычисляется значение выражения-условия, и цикл повторяется до тех пор, пока это значение не будет равным нулю или false.

Пример. Найти сумму квадратов первых К членов натурального ряда:

 

I вариант

 

 

II вариант

 

В языке С++ разрешается опустить любой элемент заголовка. Например:

for (int i = 0, s = 0; i < k;) s +=++i*i;

Здесь отсутствует список выражений.

Условным выражением, которое управляет циклом, может быть любое выражение, при этом оно может не включать параметр цикла.

Например, реализуем метод итераций с использованием цикла for.

{...

cin >> xo >> eps;

y = xo;

x = 1.25 – 0.25*y*y*y; int n;

for (n = 0; fabs(y-x) > eps; n++)

{ y = x;

x = 1.25 – 0.25*y*y*y;}

cout << x << n;

}

 

При объявлении переменной в заголовке цикла важно помнить: эта переменная видима только в теле цикла.

В языке С++ разрешена любая глубина вложений циклов.

Пример: Найти множители целых чисел в диапазоне от2 до 10.

#include <iostream.h>

void main()

{

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

{ cout << “\nмножители числа “ << i << “:”;

for (int j = 2; j < i; j++)

if ((i%j) == 0) cout << j << “ “;

cout << “\n”;

}

}

Результат:

Множители числа 2:

Множители числа 3:

Множители числа 4: 2

Множители числа 5:

Множители числа 6: 2 3

Множители числа 7:

Множители числа 8: 2 4

Множители числа 9: 3

Множители числа 10: 2 5

 

Вопросы

1 Тело цикла фрагмента программы

int a = 1, b = 1;

while (a + b < 8)

{

a ++;

b = b + 2;

}

выполнится

1. 1 раз;

2. 2 раза;

3. 3 раза;

5. бесконечное число раз.

2. Цикл в блоке

{float p=4.0;

do

p=p * 0.1;

while(p >=0.0001);

}

будет исполнен

1. 0 раз;

2. 1 раз;

3. 4 раза;

4. 5 раз;

5. бесконечное число раз.

3. Определите последовательность выполнения шагов алгоритма, реализующего цикл с предусловием

1. выполняется тело цикла, изменяется параметр цикла, проверяется условие продолжения выполнения цикла;

2. изменяется параметр цикла, проверяется условие продолжения выполнения цикла, выполняется тело цикла;

3. проверяется условие продолжения выполнения цикла, выполняется тело цикла;

4. определяется, сколько раз должен быть выполнен цикл, и далее цикл с предусловием сводится к циклу с параметром.

4. Укажите операторы итерационного цикла, которые правильно вычисляют значение s=1+2+3+…+k:

1. for(int i=1,s=0;i<=k;i++) s+=i;

2. for(int i=1,s=0;i<k;s+=++i);

3. for(int i=0,s=0;i<k)s+=++i;

4. int i=1,s=0;for(;i<=k;i++)s+=i;

 

 

Date: 2015-12-12; view: 491; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию