Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИГА_Учимся программировать TURBO PASCAL 7.doc
Скачиваний:
32
Добавлен:
19.08.2019
Размер:
1.62 Mб
Скачать

Var X,y. Z, е : real;

I: integer;

BEGIN

REPEAT

WRITE('BBEДИTE ПЕРЕМЕННУЮ РЯДА X, |X|<1 X = ');

READLN(X);

WRITE('ВВЕДИТЕ ТОЧНОСТЬ ВЫЧИСЛЕНИЯ Е = ');

READLN(E);

UNTIL (ABS (X) <1) AND (E < 1 ) AND (E <= X);

Y :- 1; Z := 1; I:= 2;

REPEAT

Z:= Z*X;

Y:= Y+Z/l;

I:=I+1

UNTIL ABS (Z/(l - 1)) < E;

WRITELN('ИСКОМАЯ СУММА РЯДА Y = ', Y);

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- вводим точность вычисления Е и переменную X;

- в цикле порождаем очередной член ряда и прибавляем его к сумме Y;

- выводим результат.

Переменные:

X - переменная ряда;

Z - вспомогательная переменная;

I - переменная цикла;

Y - сумма ряда;

Е - точность вычисления.

Задача 2.14 Найти сумму знакопеременного ряда Y= 1+ Х2/2! – Х4/3! + Х6/4! ... при

|Х | <= 1. Расчет продолжать до тех пор, пока приращение | y | будет больше заданной точности е, е < = | Х |.

PROGRAM PRG2_14;

Var X, y, z, e : real;

I: integer;

BEGIN

REPEAT

WRITE('BBEДИTE ПЕРЕМЕННУЮ РЯДА X, |X|<= 1 X = ');

READLN(X);

WRITE('BBEДИTE ТОЧНОСТЬ ВЫЧИСЛЕНИЯ Е =' );

READLN(E);

UNTIL (ABS (X) <= 1) AND (E < 1 ) AND (E <= X);

Y := 1; Z := 1;l := 2;

REPEAT

Z := (Z*X*X)/I; IF I MOD 2 = 0 THEN Y := Y+Z

ELSE Y := Y- Z;

I := I+1

UNTIL ABS (Z) <= E;

WRITELN('ИСКОМАЯ СУММА РЯДА Y = ', Y);

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- вводим точность вычисления Е и переменную X;

- в цикле порождаем очередной член ряда и прибавляем его

к сумме Y или вычитаем его из суммы, в зависимости от его номера;

- выводим результат.

Переменные:

X - переменная ряда;

Z - вспомогательная переменная;

I - переменная цикла;

Y - сумма ряда;

Е - точность вычисления.

Задача 2.15 Найти сумму первых N членов ряда Y = 1– 1/X + 2/Х2 – 3/Х3 +... при > 1.

PROGRAM PRG2_15;

Var X, y, z : real;

N, I: INTEGER;

BEGIN

REPEAT

WRITE('BBEДИTE ПЕРЕМЕННУЮ РЯДА X, |X| >1 X = ');

READLN(X);

WRITE('BBEДИTE ЧИСЛО ЧЛЕНОВ РЯДА N = ');

READLN(N);

UNTIL (ABS (X) >1) AND (N > 0);

Y := 1; Z := 1;

FOR I := 1 TO N-1 DO

BEGIN

Z := Z*X;

IF I MOD 2 = 0 THEN Y := Y + I/Z

ELSE Y := Y-l/Z

END;

WRITELN('CYMMA ПЕРВЫХ N ЧЛЕНОВ РЯДА Y = ', Y);

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- вводим точность вычисления Е и переменную X;

- в цикле порождаем очередной член ряда и прибавляем его к сумме Y или вычитаем его из суммы, в зависимости от его номера;

- выводим результат.

Переменные:

X - переменная ряда;

Z- вспомогательная переменная;

I - переменная цикла;

Y - сумма ряда;

N - количество членов ряда.

Практические задания

1. Вывести на экран все простые трехзначные числа.

2. Дано натуральное число. Вывести на экран все его делители, меньшие чем оно само, через запятую.

3. Найти сумму первых N членов знакопеременного ряда

Y = 1 – Х/(Х + 1) + Х3/(Х + I)2 - Х5/(Х + 1)3 +...

Тема 3 Обработка числовых последовательностей

Обработка числовых последовательностей всегда основывается на использовании оператора цикла. Это может быть безусловный цикл FOR I := N1 ТО N2 DO

<тело цикла>;

где I - переменная цикла, которая должна быть перечисляемо­го типа (целая, символьная и т. д.); N1 - начальное значение пе­ременной цикла; N2 - конечное значение переменной цикла.

Безусловный цикл выполняется заданное число раз. Чтобы прервать выполнение досрочно, необходимо увеличить I до ко­нечного значения (I := N2) либо использовать оператор BREAK.

В языке PASCAL предлагаются к использованию циклы, испол­нение которых зависит от какого-либо условия. Таких циклов два:

С постусловием С предусловием

REPEAT WHILE <условие> DO

<тело цикла>; <тело цикла>

UNTIL <условие>;

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

REPEAT

WRITE('ВВЕДИТЕ ДЛИНУ ПОСЛЕДОВАТЕЛЬНОСТИ N = ');

READLN (N);

UNTIL N >0;

Цикл выполняется до тех пор, пока пользователь не введет по­ложительное число.

Для цикла с предусловием проверка проводится до начала очередной итерации:

READLN(N);

WHILE N<= 0 DO

BEGIN

WRITE('BBEДИTE ДЛИНУ ПОСЛЕДОВАТЕЛЬНОСТИ N = ');

READLN (N);

END;

Алгоритмы для обработки последовательностей обычно отно­сятся к одному из двух типов;

- поиск;

- проверка условий.

Для последовательностей характерно, что в каждый момент времени нам доступен только один элемент последовательности. Поэтому все алгоритмы строятся с учетом однократного последо­вательного просмотра.

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

Задача 3.1 Вводится последовательность из N целых чисел. Найти сумму всех отрицательных чисел.

PROGRAM PRG3_1;