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

Лабораторная работа №3 Подготовка и решение на пк задач с использованием циклов

Цель лабораторной работы – приобретение практических навыков по подготовке, отладке и выполнению циклических программ.

Перед выполнением лабораторной работы студент должен знать: основы применения стандартных операторов цикла: while, do while, for.

После выполнения лабораторной работы студент должен уметь: разрабатывать типовые циклические программы на языке С++.

Краткие теоретические сведения

Операторы цикла служат для выполнения некоторого фрагмента программы несколько раз. В редких случаях фрагмент выполняется в каждом последовательном шаге цикла без изменений; чаще каждый шаг цикла несколько отличается от предыдущего. Цикл может выполняться заданное заранее число шагов, а может завершаться при наступлении некоторого условия.

Существует три вида циклов: while, for и do.

Оператор цикла while называется циклом с предусловием и имеет следующий формат:

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

Оператор while реализует алгоритм, представленный на рис. 1.

Рис. 1. Алгоритмы работы оператора while

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

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

2. Если выражение false, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение true, то выполняется тело цикла.

3. Процесс повторяется с пункта 1.

Тело цикла выполняется до тех пор, пока значение выражения равно true. Выражение вычисляется перед каждым выполнением оператора.

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

for (выражение1; выражение2; выражение3;) тело цикла;

Оператор for реализует алгоритм, представленный на рис. 2.

Рис. 2. Алгоритмы работы оператора for

Выражение1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.

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

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

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

3. Если значения выражения2 отлично от нуля (true), выполняется тело цикла, вычисляется выражение3 и осуществляется переход к пункту 2, если выражение2 равно нулю (false), то управление передается на оператор, следующий за оператором for.

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

Цикл for является удобной сокращенной записью для цикла while вида

выражение1;

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

тело цикла;

выражение3;

}

Выражение1 служит для задания начальных условий выполнения цикла, выражение2 обеспечивает проверку условия выхода из цикла, а выражение3 модифицирует условия, заданные выражением1. Любое из выражений может быть опущено. Если опущено выражение2, то по умолчанию вместо него подставляется значение true. Например, цикл for

for (;выражение2; ) тело цикла;

с опущенными выражением1 и выражением3 эквивалентен циклу

while (выражение2) тело цикла;

Цикл for

for (;;) тело цикла;

со всеми опущенными выражениями эквивалентен циклу

while (true) тело цикла;

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

Оператор цикла do while называется оператором цикла с постусловием и используется в тех случаях, когда необходимо выполнить тело цикла хотя бы один раз. Формат оператора имеет следующий формат:

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

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

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

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

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

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

Оператор do while реализует алгоритм, представленный на рис. 3.

Рис. 3. Алгоритмы работы оператора do while

В отличие от цикла while, в котором проверка условия окончания цикла делается до выполнения тела цикла, в цикле do while такая проверка имеет место после выполнения тела цикла. Следовательно, тело цикла do while будет выполнено хотя бы один раз, даже если выражение имеет значение false с самого начала.

Задача 1

Вычислить площадь фигуры ограниченной линиями

Для вычисления площади фигуры ограниченной линиями можно использовать итерационное выражение , где , и

Текст программы

#include "stdafx.h"

#include <math.h>

#include <stdio.h>

#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])

{

char buf[80];

double x,dx,f1,f2,s;

s=0.;

x=0.;

dx=1.0e-5;

f1=sqrt(x);

f2=sqrt(4.-3.*x);

for(;f1<f2;x=x+dx)

{

f1=sqrt(x);

f2=sqrt(4.-3.*x);

s=s+(f2-f1)*dx;

}

sprintf(buf," s=%6.2f\n x=%6.2f\n f1=%6.2f\n

f2=%6.2f\0",s,x,f1,f2);

return 0;

}

Результат

Задания к задаче № 1

Задание

Цикл

Задание

Цикл

1.

for

11.

do while

2.

while

12.

while

3.

do while

13.

for

4.

for

14.

for

5.

while

15.

while

6.

do while

16.

do while

7.

while

17.

while

8.

do while

18.

do while

9.

for

19.

for

10.

while

20.

while

Задача 2. Вычисление функции с помощью разложения в ряд

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

Вариант 1

Вариант 2

Вариант 3

x > 0

Вариант 4

Вариант 5

Вариант 6

Вариант 7

Вариант 8

Вариант 9

Вариант 10

Вариант 11

Вариант 12

Вариант 13

Вариант 14

Вариант 15

Вариант 16

Вариант 17

Вариант 18

Вариант 19

Вариант 20

Задача 3(ДОПОЛНИТЕЛЬНО на оценку 12). Составить программу вычисления корней уравнения f(x)=0 с точностью EPS = 0,0001.

Интервал локализации корня [a, b] известен.

Использовать:

а) метод простой итерации;

б) метод половинного деления отрезка [a, b] локализации корня;

в) метод Ньютона.

При составлении программы использовать операторы цикла

WHILE и DO WHILE .

Примечание.

1. Метод простой итерации состоит в том, что по i-му приближению корня находится i+1 приближение по формуле

Процесс продолжается до тех пор, пока относительная ошибка для двух последовательных приближений не станет меньше EPS:

Процесс итерации сходится на [a, b], если при всех .

Для начального значения корня x0 принять .

2. Метод половинного деления.

Всегда локализованный корень находится в том интервале, на концах которого значения функции имеют противоположные знаки. Если нужно определить корень с точностью EPS, то деление интервала пополам продолжают, пока его длина не станет меньше 2*EPS. В этом случае средина последнего интервала дает значение корня с нужной точностью.

3. Метод Ньютона состоит в последовательном вычислении по формуле:

Оценка ошибки k-го приближения корня выполняется так:

Начальное приближение корня можно взять равным .

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

1) (0; 2)

2) (1; 2)

3) (3; 4)

4) (1,5; 2,7)

5) (0,1; 0,6)

6) (0,5; 0,9)

7) (0; 1)

8) (0,5; 1)

9) (0,1; 0,8)

10) (0,1; 0,8)

11) (0,2; 1)

12) (1,5; 2)

13) (0,5; 1)

14) (0; 1)

15) (0,5; 1)

16) (1; 2)

17) (0,5; 1,5)

18) (0; 2)

19) (1; 2)

20) (0; 2)

Контрольные вопросы

1.Что такое циклический вычислительный процесс?

2.Какие операторы используются для организации циклов?

3.Опишите ситуации, когда следует использовать каждый из трех операторов цикла.

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

5.Охарактеризуйте преимущества, которые дает цикл for.

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