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

Пример 3.3.1

Вычислить и вывести на печать значения функции

при значении x, изменяющемся от O до 3 с шагом 0,1.

Можно использовать цикл с заданным числом повторений, вычисляемым по выражению

где xk и Xn - конечное и начальное значение аргумента;

h - шаг изменения аргумента;

скобки ] [ означают, что берется целая часть от деления.

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

PROGRAM TABULl ;

VAR XN, XK, HX, A, X, Y: REAL

I, N: ENTEGER;

BEGIN

READLN (XN, XK, HX, A) ;

N:=TRUNC(XK-XN) / HX) + 1; {Выделение целой части числа} X:=XN;

FOR I:=1 TO N DO

BEGIN

Y:=(A * A * A) / (SQR(A)+X * X);

WRITELN (X, Y);

X:=X+HX

END

END.

22

При использовании других операторов цикла для реализации данной задачи будут отсутствовать описания переменных целого типа I, N и оператор присваивания, вычисляющий число повторений N. Т.к. заранее неизвестно число повторений, то здесь имеет место итерационный цикл. Выход из цикла выполняется по некоторому критерию. B данном случае критерием выхода из цикла будет являться условие сравнения текущего значения аргумента X с его конечным значением X к.

Программа, использующая оператор цикла WHILE:

PROGRAM TABUL2 ;

VAR XN, XK, HK, A, X, Y: REAL ;

BEGIN

READLN(XN, XK, NX, A); X:=XN ;'

WHILE X<=XK DO

BEGIN

Y:=(A* A* A) / (SQR(A)+X * X);

WRITELN(X, Y);

X:=X+HX

END

END.

Программа, использующая оператор цикла REPEAT: PROGRAM TABUL3;

VAR XN, XK, HX, A, X, Y: REAL ;

BEGIN

READLN(XN, XK, HK, A);

X:=XH;

REPEAT

Y:=(A* A * A) / (SQR(A) + X * X);

WRITELN(X, Y);

23

X:=X + HX

UNTIL X>XK

END.

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

Ниже приводится программа, содержащая операторы управления и реализующая пример 3.3.1.

PROGRAM TABUL4;

VAR XN, XK, HX, A, Y: REAL;

LABEL 10;

BEGIN

READLN (XN, XK, HK, A);

X:=XN;

10: Y:=(A*A*A)/(SQR(A) + X*X); WRITELN(X:4:1, Y:8:4);

X:=X + HX;

IF Х<=ХК THEN GOTO 10

END.

3.3.2. Вычисление суммы членов бесконечного ряда

с заданной точностью

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

24

Пример 3.3.2.1

Составить программу для вычисления суммы бесконечного ряда

Здесь имеет место итерационный цикл, т.к. заранее неизвестно , при

каком n выполняется условие .

Обозначим переменные: Е-заданная точность, S - сумма ряда, N -номер члена ряда, Y - значение члена ряда.

PROGRAM SUMMA1;

VAR Y, S, E: REAL;

N: MTEGER;

LABEL 10, 20;

BEGIN

READLN (E);

S:=0;

N:=0; 10:Y:=l/(EXP(5*LN(N)); {Y=l/N^5}

S:= S + Y:

IF ABS(Y)<E THEN GOTO 20;

N:=N+ 1;

GOTO 10;

20: WRITELN (‘SUMMA=’, S:10:5,‘N=‘, N)

END.

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

PROGRAM SUMMA2;

VAR Y, S: REAL;

25

N: INTEGER,

ВЕGIN

READLN (E);

S:=0;

N:=0;

REPEAT

Y:=l/EXP(5*LN(N));

S:=S + Y;

N:=N + 1

UNTIL Y<E;

WRITELN(‘SUMMA=’, S, ‘N=’, N)

END.

Пример 3.3.2.2

Определить количество членов ряда C1=1; Cn=4n+Cn-1 (n=2, 3,...), которые не превышают 180.

Параметром, изменяющимся в этом цикле, является номер члена ряда n. Переменную C будем считать простой переменной. Тогда формула для вычисления текущего члена ряда имеет вид C = 4n +C. Чтобы использовать эту формулу для вычисления второго члена ряда, необходимо задать перед циклом начальное значение C равное 1.

PROGRAM KOLICH;

VAR C, N: ITEGER;

CONST M=180;

BEGIN

C:=1;

N:=1;

WRITE (C);

REPEAT

N:=N+1;

26

C:=4*N+C;

WRITE (C)

UNTIL C>180;

WRITELN;

WRTTELN(‘KOLICH=’, N)

END.

Задачи 41-50

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

Таблица 1

Исходные

Диапазон и шаг

вариан

Функция

Условие

данные

изменения

та

аргумента

1

2

3

4

5

41

t 2

t>2

а = -0,5

b = 2

t [0,2;3]

t =0,15

42

a=l,5

x [0,8;2]

x = 0,1

43

а = 2,8

b = -0,3

x [l;2]

х = 0,05

44

x l,4

x>l,4

а= 1,65

х [0,7; 2]

х = 0,1

45

x 2

х>2

а = 2,3

х [0,2; 2,8]

х = 0,2

27

Окончание табл. 1

1

2

3

4

5

46

x>a

х а

а = 2,5

x [l;5]

x = 0,5

47

bx<l

bx 1

b=l,5

x [0,l;l]

х = 0,1

48

x>3

x 3,5

а =1,2

x [2;5]

х = 0,25

49

x>l

x l

а =20,3

х [0,5; 2]

x =0,1

50

x 0,5

x>0,5

t = 2,2

x [0,2;2]

x = 0,2

Задачи51-60

5 1 . Вычислить сумму ряда, члены которого находятся по формуле

и превышают 0,01, где c= 10; i=l,2,....

52. Определить сумму членов ряда а1, =1 ak =ak-1·5k, (где k = 2,3,...), которые не превышают 200.

53. Определить, через сколько итераций члены ряда , (где a = 47;

i= 1,2,...) станут меньше 1.

28

54. Найти сумму членов ряда ( где i = 1, 2, ..,), меньших 1.

Вычислить сумму членов для следующих рядов с точностью до

члена ряда, меньшего E (заданная точность):

55. E=0,001; x=1,726.

56. , E=0,0021; х=0,374.

57. E=0,002; х=0,118.

58. E=0,002; х=0,241.

59. E=0,001; х=0,645.

60. E=0,0001; ч=0,103.

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

  1. Что такое итерационный циклический процесс? Его отличия

от цикла с заданным числом повторений.

  1. Каково условие выхода из цикла при вычислении значения суммы бесконечного ряда?

  2. Почему при вычислении значения текущего члена по формуле an = an-1 + 3n используется простая переменная, а не индексная?

  3. Какой цикл лучше использовать для реализации следующей задачи?

Задача

C клавиатуры вводятся произвольные числа. После ввода каждого числа нажимается клавиша Enter. Выбрать среди введенных чисел наибольшее 29

(наименьшее, найти среднее арифметическое, сумму квадратов чисел и т.д.). Критерием окончания ввода чисел является число 9999.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

  1. Фараонов В.В. Программирование на ПЭВМ в среде ТУРБО-ПАСКАЛЬ. - M., 1992.

  2. Епанешников A. M., Епанешников B.A. Программирование в среде TP версия7.0.-М.,1998.

  3. ПоляковД.Б., Круглое И.Ю. Программирование в среде TP. - M., 1992.

30