Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль в примерах / учебник по программированию.doc
Скачиваний:
54
Добавлен:
01.05.2014
Размер:
687.62 Кб
Скачать

2.12. Табуляция функций

Оператор FOR следует использовать во всех случаях, когда заранее известно число по­вторений или его можно подсчитать. Для вычисления значений функций при изменении ар­гумента с постоянным шагом h в определенном интервале (от начального xн до конечного xк значения) количество повторений n определяется по формуле

n = \ xк h xн } + 1

Квадратные скобки указывают на то, что результат округляется до целой части путем отбра­сывания дробной.

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

y = x2-2 -1 2

при изменении Х от -4 до +4 с шагом 0.2.

Решение. Определим число повторений n из формулы

41

n=

(- 4 )

0 .2

+ 1= 41

PROGRAM PR16; VAR

X,Y: REAL; I: INTEGER; BEGIN X:=-4; FOR I:=1 TO 41 DO BEGIN Y:=(X*X-2.0*X+2.0)/(X-1.0); Х:=Х+0.2; WRITE(X,Y) END END.

Для данной функции эту программу можно записать в общем виде для различных значе-ний интервалов и величин изменения шага и в наглядном виде. При этом информация выво-дится в удобной форме. PROGRAM PR16a; VAR

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

I,N: INTEGER; BEGIN WRITE(‘ Введите начальное значение Х’); READLN(XN);

WRITE(‘ Введите конечное значение Х’); READLN(XK);

WRITE(‘ Введите шаг изменения Х’); READLN(HX); N:=TRUNC((XK-XH)/HX)+1;

WRITELN(‘ ’);

WRITELN(‘* ХN * Y *’);’ WRITELN(‘ ’);

FOR I:=1 TO N DO

BEGIN

Y:=(XN*XN-2.0*XN+2.0)/(XN-1.0); WRITELN(‘* ‘,ХN:8:3,‘ * ‘,Y:8:3,’ *’);

XN:=XN+HX;

END WRITELN(‘ ’);

END.

Рассмотрим различные формы вывода окончательного результата расчета.

Пример 16б. Необходимо в конечной форме провести линию после каждого шага расче-та.

Фрагмент программы

WRITELN(‘ ’);

WRITELN(‘* ХN * Y *’);’ WRITELN(‘ ’);

42

FOR I:=1 TO N DO BEGIN

Y:=(XN*XN-2.0*XN+2.0)/(XN-1.0); WRITELN(‘* ‘,ХN:8:3,‘ * ‘,Y:8:3,’ *’);

WRITELN(‘ ’);

XN:=XN+HX; END

WRITELN(‘ ’);

END.

Пример 16в. В задаче, рассмотренной в примере 18, вывести только окончательный результат. Фрагмент программы

WRITELN(‘* ХN * Y *’);’ FOR I:=1 TO N DO BEGIN

Y:=(XN*XN-2.0*XN+2.0)/(XN-1.0); XN:=XN+HX; END

WRITELN(‘* ‘,ХN:8:3,‘ * ‘,Y:8:3,’ *’); END.

2.13. Вычисление суммы

Сумма вычисляется по рекуррентному выражению S=S+Y, где S - накапливаемая сумма;

Y - слагаемое. По данному выражению каждое новое значение получается из предыдущего добавле-нием очередного слагаемого. Для первого слагаемого Y начальное значение суммы S = 0.

Пример 17. Составить программу для вычисления среднеарифметического N произ-вольных чисел. Введем обозначения:

S- сумма всех чисел; SR - среднеарифметическое N чисел; A - значение I - го числа; N - количество чисел. PROGRAM PR17; VAR I,N:INTEGER; S,SR,A:REAL: BEGIN WRITE(‘ Введите N’); READLN(N); S:=0; FOR I:=1 TO N DO BEGIN

WRITE(‘ Введите ‘,I,’ число’); READLN(A); S:=S+A: END;

SR:=S/N;

43

WRITELN(‘Ответ: SR = ’,SR:8:3); END.

2.14. Вычисление произведения

Произведение вычисляется по рекуррентному выражению P=P*Y,

где P - промежуточные произведения; Y - сомножители. По данному выражению каждое новое значение получается из предыдущего умножени-ем очередного сомножителя. Для первого сомножителя Y начальное значение произведения P = 1.

Пример 18. Составить программу для вычисления произведения N чисел. Введем обозначения:

P - произведение всех чисел; A - значение I - го числа; N - количество чисел.

PROGRAM PR18; VAR I,N:INTEGER; P,A:REAL: BEGIN

WRITE(‘ Введите N’); READLN(N); P:=1; FOR I:=1 TO N DO BEGIN WRITE(‘ Введите ‘,I,’ число’); READLN(A); P:=P*A: END;

WRITELN(‘Ответ: P = ’,P:8:3); READLN; END.