- •Часть 1
- •Содержание
- •Введение
- •1. Структура и принцип действия компьютера
- •2. Алгоритм и программа
- •2.1. Понятия об алгоритме и программе
- •2.2. Типовые алгоритмы
- •2.2.1. Вычисление суммы чисел произвольного ряда
- •Вычисление произведения чисел произвольного ряда
- •2.2.3. Определение наибольшего (наименьшего) числа заданного ряда чисел
- •2.2.4 Определение наибольшего (наименьшего) значения вычисляемой функции
- •2.2.5. Вычисление функции с одновременно изменяющимися несколькими аргументами
- •2.2.6. Итерационные циклы
- •2.2.7. Сортировка ряда чисел
- •Метод смежных пар
- •Метод поиска наименьшего (наибольшего)
- •2.2.8. Алгоритмы решения задач с использованием матриц
- •Общие методические указания по выполнению лабораторных работ
- •4.1. Порядок проведения лабораторных работ
- •4.2. Требования к оформлению отчета по выполненной лабораторной работе
- •5. Цели и содержание лабораторных работ
- •5.1 Лабораторная работа № 1 Вычисление выражений с использованием библиотечных
- •5.1.1. Задание
- •5.1.2. Общие сведения и рекомендации по выполнению работы
- •5.1.3. Контрольные вопросы и задания
- •5.2. Лабораторная работа № 2 Программирование разветвляющихся вычислительных процессов.
- •5.2.1. Задание
- •5.2.2. Общие сведения и рекомендации по выполнению работы
- •5.2.3. Контрольные вопросы и задания.
- •5.3. Лабораторная работа № 3 Программирование разветвляющихся вычислительных процессов с использованием оператора множественного выбора.
- •5.3.1. Задание
- •5.3.2. Общие сведения и рекомендации по выполнению работы
- •5.3.3. Контрольные вопросы и задания
- •5.4. Лабораторная работа № 4 Программирование с использованием простых циклов.
- •5.4.1. Задание
- •5.4.2. Общие сведения и рекомендации по программированию
- •5.4.3. Контрольные вопросы и задания
- •5.5. Лабораторная работа № 5 Программирование с использованием итерационных циклов.
- •5.5.1. Задание
- •Проверочный результат
- •Относительная погрешность, %
- •5.5.2. Общие сведения и рекомендации по программированию
- •5.5.3. Контрольные вопросы и задания
- •5.6. Лабораторная работа № 6 Расчет функций с несколькими одновременно изменяющимися аргументами.
- •5.6.1. Задание
- •5.6.2. Общие сведения и рекомендации по выполнению работы
- •5.6.3. Контрольные вопросы и задания
- •5.7. Лабораторная работа № 7 Программирование с использованием массивов и внешних файлов.
- •5.7.1. Задание
- •5.7.2. Общие сведения и рекомендации по программированию
- •5.7.3. Контрольные вопросы и задания
- •5.8 Лабораторная работа № 8 Программирование с использованием функций.
- •5.8.1. Задание
- •5.8.2. Общие сведения и рекомендации по выполнению работы
- •5.8.3. Контрольные вопросы и задания
- •5.9. Лабораторная работа № 9 Программирование с использованием операций над комплексными числами.
- •5.9.1. Задание
- •5.9.2. Общие сведения и рекомендации по выполнению работы
- •5.9.3. Контрольные вопросы и задания
- •Приложения Приложение 1.
- •Приложение 2.
- •Список литературы
5.4.2. Общие сведения и рекомендации по программированию
В С++ существует три вида операторов цикла:
while (с предусловием);
for (с предусловием);
do…while (с послеусловием).
Наиболее универсальным из них является оператор цикла for, который чаще всего и используют программисты.
В спецификациях цикла for следует использовать не численные значения , и , а их идентификаторы.
Следует помнить, что тело цикла может представляться только одним оператором (простым или составным). Несоблюдение этого правила может привести к искажению результата вычислений.
При выводе результатов на экран следует использовать манипуляторы setw( ), setprecision( ), setiosflags( ) и др.
Хорошим стилем программирования считается запись операторов, использующих рекуррентные формулы, с использованием модификаций оператора присваивания (например, x + = h вместо x = x + h, x++ вместо x = x + 1 и т.д.)
5.4.3. Контрольные вопросы и задания
Какие Вы знаете виды циклов? Каковы правила их записи (синтаксис)?
Перечислите возможности (модификации) заголовка цикла for?
Может ли цикл for использоваться вместо циклов while и do…while?
Как избежать прерывания вычислительного процесса в случае возникновения ситуации деления на нуль, извлечения квадратного корня из отрицательного числа, вычисления логарифма нуля или отрицательного числа?
Запишите оператор цикла for для вычисления функции
,
если
,
k = 1.6, а
изменяется от
до
с шагом
.
Исключение прерывания вычислительного
процесса предусмотреть с помощью
оператора continue.
Напишите фрагмент программы для вычисления функции п.5 с помощью операторов цикла while и do…while.
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.
Относительную погрешность вычислений (в процентах) следует вычислять по формуле:
.
