Лабораторная работа № 3. Использование циклов
Цель работы: овладеть практическими навыками использования итеративных конструкций С++ для повторения одного или нескольких операторов.
Краткие теоретические сведения При разработке циклического алгоритма следует иметь в виду, что в нем практически всегда явно или неявно присутствуют следующие этапы: инициализация (начальные установки) цикла; тело цикла (что повторять?); условие продолжения цикла (до каких пор повторять?). В цикле с параметром надо предусмотреть модификацию параметра. Общий формат оператора for: for (инициализация; проверка; увеличение) { операторы; } Инициализирующее выражение выполняется только один раз в начале выполнения цикла и, как правило, инициализирует счетчик цикла. Условие содержит операцию отношения, которая выполняется в начале каждого цикла. Если условие выполняется, то цикл повторяется, иначе выполняется следующий за телом цикла оператор. Инкрементирующее выражение предназначено для изменения значения счетчика цикла. Модификация счетчика происходит после каждого выполнения тела цикла. Оператор for не обязывает увеличиватьуправляющую переменную на 1 или использовать именно увеличение. Из-за ошибок в программах в некоторых случаях цикл никогда не достигает своего завершающегося условия и зацикливается навсегда. Такие циклы называются бесконечными. По мере усложнения программ понадобиться выполнять группы связанных операторов, пока не реализуется заданное условие. В таких случаях необходимо использовать оператор С++ while, общий формат которого: while (условие) { тело цикла } Сталкиваясь с оператором while, программа будет оценивать условие цикла. Если условие истинно, программа выполняет операторы цикла while. После выполнения последнего оператора цикла программа снова проводит проверку условия. Если условие ложно, программа продолжит свое выполнение с первого оператора, который следует за оператором while. Оператор цикла с постусловием имеет общий вид: do { тело цикла } while (условие); Когда программа встречает оператор do while, она сразу же выполняет операторы, содержащиеся в цикле. Затем программа исследует условие цикла. Если условие истинно, программа повторяет операторы цикла и процесс продолжается. Если условие становится ложным, программа продолжает свое выполнение с первого оператора, следующего за оператором do while.
Задание 1. Составить блок-схему алгоритма и программу циклического вычислительного процесса в соответствии с заданным вариантом. 2. Составить отчет о проделанной работе (аналогично отчету для лабораторной работы №1).
Пример выполнения работы Условие: Вывести на экран таблицу значений функции и ее разложения в ряд для x, изменяющегося от 0, 1 до 1 с шагом h=(b-a)/10, при n=80. Блок схема алгоритма изображена на рисунке 4.
Рис. 4 Блок схема алгоритма
#include < iostream.h> #include < iomanip.h> #include < math.h> #include < conio.h>
void main(void) { double a, b, h, x, y, s, p; int n, i; cout < < " Vvedite a "; cin > > a; cout < < " Vvedite b "; cin > > b; cout < < " Vvedite h "; cin > > h; cout < < " Vvedite n "; cin > > n; x=a; do { p=s=x; for (i=1; i< =n; i++) { p*=(pow(x, 2))/(2*n*(2*n+1)); s+=p; } y=(exp(x)-exp(-x))/2; cout < < setw(15) < < x < < setw(15) < < y < < setw(15) < < s < < setw(15) < < y-s< < endl; x+=h; } while (x< =b+h/2); cout < < endl; cout < < " Vvedite a, b, h, n" < < endl; getch (); }
Задания для самостоятельного выполнения Задано натуральное n, вещественное x. Вычислить значение выражения
Составить программу приближенного вычисления площади фигуры, ограниченной заданными линиями. В вариантах № 9–13 использовать метод прямоугольников. Для построения прямоугольника использовать левый конец отрезка. 9. y = 0, y = 5 x − x 2 +14. 10. y = x 2 + 2 x + 2, y = x 2 + 4 x + 5, y =1. 11. y = − x 2 + 2 x + 2, y = − x 2 − 4 x − 1, y = 3. 12. y = 3 x 2 − 4 x + 2, y = 20 − x. 13. y = − 2 x 2 + 3 x + 6, y = x + 2. В вариантах № 14–17 использовать метод прямоугольников. Для построения прямоугольника использовать правый конец отрезка. 14. y = 0, y = − 2(x − 1)2 + 8. 15. y = 0, y = − 2(x − 3)2 + 2. 16. y = x, x − 3 y + 2 = 0. 17. y = − 2 x 2 + 3 x + 6, y = x + 2. Контрольные вопросы 1. Что такое итерационный циклический процесс? Его отличия от цикла с заданным числом повторений. 2. В чем заключается сущность метода итераций при вычислении интеграла? Как определить число итераций, необходимых для получения значения интеграла с требуемой точностью? 3. Почему при программировании итерационных процессов не используются индексированные переменные для обозначения последовательных приближений к корню? Сколько соседних приближений одновременно используются в вычислениях? 4. Как смоделировать цикл while циклом for? 5. Как смоделировать цикл while циклом do-while? 6. Как открытый цикл for может эмулировать циклы while и do-while? 7. Ограничивает ли С++ вложение циклов разных типов? 8. Представить общий формат инструкции for. 9. Если цикл включает инструкцию switch, то приведет ли к завершению этого цикла инструкция break, принадлежащая инструкции switch? 10. Пояснить назначение инструкции break в цикле.
|