Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5.DOC
Скачиваний:
0
Добавлен:
09.11.2018
Размер:
102.4 Кб
Скачать

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

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

WHILE B DO S , где B - выражение булевского типа; S - оператор (называемый телом цикла). Тело цикла выполняется, пока B=TRUE.

В этом цикле тело цикла может не выполниться ни разу.

Пример 5.2.15. Ввести число целого типа. Вычислить сумму цифр, из которых оно состоит.

PROGRAM Cif;

VAR a,s : integer;

BEGIN

Write('Число= '); ReadLn(a);

a:= Abs(a);

s:=0;

WHILE a<>0 DO

BEGIN

s:=s+a MOD 10;

a:=a DIV 10

END;

WriteLn('Сумма цифр= ', s) END.

ввод(a);

a:=½a½;

s:=0;

пока a ¹ 0

s:=s+a MOD 10;

a:=a DIV 10;

печать (s)

Рис.5.11. Схема к примеру 5.2.15

Пример 5.2.16. Известно, что функция f(x) - убывающая и имеет корень при x³0. Найти этот корень с точностью e. (Пусть f(x) = 1- x3).

Поясним суть применяемого метода с помощью рис.5.12.

Начиная с некоторого значения (в данном случае x=0) перемещаемся по оси x с шагом e до тех пор, пока значение функции не станет отрицательным или равным нулю. Текущее значение x и будет принято в качестве корня функции.

f(x)

x

0 e

Рис.5.12. К определению корня функции

ввод (e)

x = 0

пока f(x) > 0

x = x + e

печать (x)

Рис.5.13. Схема к примеру 5.2.16

PROGRAM Root;

VAR x,eps : real;

BEGIN

Write('Точность= '); ReadLn(eps);

x:=0;

WHILE 1-x*Sqr(x) > 0 DO x:=x+eps;

WriteLn('Корень= ',x)

END.

Задачи

5.2.17. Определить с точностью e точку пересечения функции y=ln(x2+1) с прямой y=1 .

5.2.18. Вычислить сумму всех элементов последовательности , n = 1,2, ... , которые не превосходят заданной величины m .

5.2.19. Ввести число целого типа. Определить, из скольких цифр оно состоит (используя цикл WHILE).

5.2.20. Вычислить (Результат для справки: y = cosx ).

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