Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
method_1_ru.doc
Скачиваний:
19
Добавлен:
10.11.2019
Размер:
2.67 Mб
Скачать

5.4.2. Общие сведения и рекомендации по программированию

В С++ существует три вида операторов цикла:

  • while (с предусловием);

  • for (с предусловием);

  • do…while (с послеусловием).

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

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

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

При выводе результатов на экран следует использовать манипуляторы setw( ), setprecision( ), setiosflags( ) и др.

Хорошим стилем программирования считается запись операторов, использующих рекуррентные формулы, с использованием модификаций оператора присваивания (например, x + = h вместо x = x + h, x++ вместо x = x + 1 и т.д.)

5.4.3. Контрольные вопросы и задания

  1. Какие Вы знаете виды циклов? Каковы правила их записи (синтаксис)?

  2. Перечислите возможности (модификации) заголовка цикла for?

  3. Может ли цикл for использоваться вместо циклов while и dowhile?

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

  5. Запишите оператор цикла for для вычисления функции

,

если , k = 1.6, а изменяется от до с шагом . Исключение прерывания вычислительного процесса предусмотреть с помощью оператора continue.

  1. Напишите фрагмент программы для вычисления функции п.5 с помощью операторов цикла while и dowhile.

5.5. Лабораторная работа № 5 Программирование с использованием итерационных циклов.

Цель работы: закрепление навыков программирования итерационных циклов.

5.5.1. Задание

Разработать алгоритм и составить программу вычисления выражения, представленного в табл.5.3.

На экран выводить номер итерации и значения переменной , а после окончания цикла – значение результата циклического процесса (сумму значений ), количество итераций, значение проверочной функции и относительной погрешности. Результаты вычислений представить в следующем виде:

ИТЕРАЦИОННЫЙ ЦИКЛ

РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЙ

I Y

… …

… …

РЕЗУЛЬТАТ ЦИКЛИЧЕСКОГО ПРОЦЕССА

S = …

Проверочный результат

Sp=…

Относительная погрешность, %

d = …

5.5.2. Общие сведения и рекомендации по программированию

Итерация – это последовательное приближение к чему-либо.

Циклы, использующие итерации, называют итерационными. Окончанием итерационного цикла является достижение какого-либо определенного условия (чаще всего – условия требуемой точности). Количество шагов в итерационных циклах, в отличие от простых, установить наперед практически невозможно. Оно становится известным после завершения работы цикла.

В этой работе рекомендуется использовать операторы циклы while и do…while, хотя приведенные задачи можно решать и с помощью цикла for, так как язык С++ это позволяет.

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

В приведенных примерах часто встречаются случаи вычисления степенных функций, у которых показатель степени, являясь параметром цикла, изменяется с определенным шагом. Например, , где – параметр цикла. Вычислять такую функцию при каждом выполнении цикла с помощью библиотечной функции pow( ) или exp( ) нерационально и не всегда удобно. Более простым и рациональным способом является использование рекуррентной формулы, в которой последующее значение степенной функции вычисляется путем умножения его предыдущего значения на некоторый коэффициент. Как это делать видно на общем примере.

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

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

b *= k;

Аналогично можно организовать текущее значение факториала

по рекуррентной формуле.

При записи условия выполнения цикла часто допускается характерная ошибка, когда в качестве него используется указанное в табл.5.3 условие завершения цикла. В этом случае, поскольку в С++ в заголовке любого цикла указывается условие его выполнения, цикл завершает свою работу, даже не начав ее (в случае цикла с предусловием), или едва начав (в случае цикла с послеусловием). Например, если условие завершения циклического процесса имеет вид (т.е. при достижении этого вычисления следует прекратить), то в заголовке цикла в качестве условия выполнения процесса следует указать обратное условие , а не приведенное в табл.5.3.

Относительную погрешность вычислений (в процентах) следует вычислять по формуле:

.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]