- •2.1. Алгоритмизация задач
- •2.5. Построение (разработка) программ
- •2.8. Константы
- •2.9. Метки и оператор перехода
- •2.12. Табуляция функций
- •2.13. Вычисление суммы
- •2.14. Вычисление произведения
- •2.15. Определение факториала
- •2.16. Вложенные циклы
- •2.17. Оператор цикла с предусловием
- •2.18. Оператор цикла с постусловием
- •2.19. Символьные переменные
- •2.20. Процедуры и функции
- •2.21. Функции
- •2.22. Сложный тип данных - массивы
- •2.23. Тип массива
- •2.24. Строки
- •2.25. Файлы
- •5. Самостоятельная работа
- •6. Среда программирования турбо паскаль
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.
