Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР7-С++-05 апреля-2012.doc
Скачиваний:
19
Добавлен:
15.09.2019
Размер:
2.45 Mб
Скачать

1.5.5.6. Пример № 1

Пример № 1. Алгоритм построения таблиц значений различных функций. Это, чаще всего, арифметический цикл. Обычно параметром цикла является аргумент функции. Для функции задана формула вычисления значения y(x) = F(x). Известны диапазон изменения аргумента x ∈ [x0, xn], и шаг изменения Δx.

Общая схема этого алгоритма на основе цикла while ... do выглядит так:

// Печать заголовка таблицы.

x = x0; // Подготовка цикла.

while (x <= xn) // Проверка условия завершения.

{

y = F(x); // Сколь угодно сложный алгоритм вычисления значения.

// Вывод строки таблицы.

x += Δx; // Приращение управляющей переменной.

}; // Выход из цикла.

Общая схема этого алгоритма на основе цикла do ... while выглядит так:

// Печать заголовка таблицы.

x = x0; // Подготовка цикла.

do

{

y = F(x); //Сколь угодно сложный алгоритм вычисления значения.

// Вывод строки таблицы.

x += Δx; // Приращение управляющей переменной.

}

while (x <= xn); // Проверка условия завершения.

Общая схема этого алгоритма на основе цикла for выглядит так:

// Печать заголовка

for (x = x0; x <= xn; x += Δx) // Все составляющие цикла в заголовке.

{

y = F(x); // Сколь угодно сложный алгоритм вычисления значения.

// Вывод строки таблицы.

};

1.8. Оператор цикла do...While

Назначение. Организация многократного повторения фрагмента программы.

Синтаксис:

do

{

// тело цикла;

}

while (Логическое_выражение);

Здесь тело цикла — это в общем случае составной оператор.

Логическое_выражение — это выражение условия. Как правило, логическое выражение или арифметическое, значение которого может быть равно 0 (ложно) или нет (истинно).

Выполнение. Тело цикла (в общем случае блок) выполняется многократно, пока выражение не равно 0. Как только выражение ложно (т.е. = 0), цикл заканчивается, управление передается следующему по порядку оператору.

Пример.

Решим ту же задачу с использованием оператора цикла do.

void main (void)

{

int n, Sum = 0;

int i;

printf ("\nВведите число элементов прогрессии \n");

scanf ("%d", &n);

i = n;

do

Sum += i– –;

while (i); // пока i отлично от 0

printf ("Сумма арифметической прогрессии %d", Sum);

}

Особенности. Проверка условия происходит после выполнения тела цикла. Значит, как бы ни было задано «Логическое_выражение», оператор тела цикла выполнится не менее чем один раз.

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

Оператор цикла do while называется оператором цикла с постусловием.

Формат оператора имеет следующий вид:

do тело while (выражение);

Схема выполнения оператора do while :

1. Выполняется тело цикла (которое может быть составным оператором).

2. Вычисляется выражение.

3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1.

Это важно

т.к. do while – это цикл с постусловием, то инструкции (операторы) тела цикла будут выполнены хотя бы один раз;

чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break (см. п.7);

операторы do while может быть вложенным.

Сравнение циклов показано в таблице 2.

Таблица 2 – Циклы в С/С++

for

while

do while

for (выражение-1; выражение-2; выражение-3)

тело;

выражение-1;

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

{

тело

выражение-3;

}

выражение-1;

do

{

тело

выражение-3;

}

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

Цикл с постусловием имеет следующий формат:

do <тело цикла> whi1e(<условие>);

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

Пример. 3.4

Вычислить сумму чисел от 1 до заданного числа n.

# inc1ude<stdio.h>

void main()

{ int a,s;

printf("Введите n");

scanf("%d",&n);

s=0;

a=1;

do{

s=s+a;

a=a+1;

} whi1e(a<=n);

printf(" Сумма равна %d",s);

}

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

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

do

код цикла

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

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