Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Turbo Pascal / Stud_1_1 / Part1 / Text1.doc
Скачиваний:
108
Добавлен:
03.03.2016
Размер:
5.39 Mб
Скачать

Ввод и печать переменной n и массива a

P:=0;

For i:=n downto 0 do

P:=P*x+a[i];

Печать значения p

End.

3. Программирование степенной функции.

В Турбо Паскале отсутствует операция возведения в степень, поэтому ее реализация выполняется программным способом.

Если показатель степени n- целое положительное число, то операция возведения в степень может быть заменена многократным умножением (для целочисленного показателя степени на Паскале разработаны эффективные программы возведения в степень, но эти программы имеют сравнительно сложную структуру алгоритма их организации). Если показатель степени - вещественное число, то вычисление функции

выполняется по формуле

.

Здесь следует обратить внимание на случай, когда вычисляемой функцией является корень нечетной степени. Поскольку значение такой функции существует и при положительном, и при отрицательном аргументе, а функция ln(x) определена только для положительного аргумента, то вычисление корня нечетной степени

где n- целое нечетное число, можно организовать, например, таким образом:

If abs(x)<1E-10 then

y:=0

Else

Begin

y:=exp(ln(abs(x))/n);

If x<0 then

y:=-y;

End;

Примечание. Записанную выше программу вычисления корня можно использовать для любого целого положительного показателя степени. При этом для четного показателя гарантируется значение y = 0, если аргумент x достаточно малое число.

4. Сравнение вещественных чисел.

Целочисленные переменные определяют в программе, как правило, объекты, которые по своему физическому содержанию могут иметь только целые значения (например, количество элементов в массиве, порядковый номер элемента и т.п.). Значения таких переменных имеют точное представление на машинном уровне, операции отношения для них всегда выполняются корректно.

Вещественные переменные, как правило, отображают в программе параметры измеряемых объектов (длина, площадь, масса, интервал времени и т.п.). Поскольку измерения всегда выполняются с определенной погрешностью, то значения вещественных переменных в общем случае считаются приближенными. Машинное изображение вещественных переменных также является приближенным, его точность определяется количеством разрядов в мантиссе, что в большинстве случаев ведет к округлению значения такой переменной. Например, десятичное число 0.9 в двоичной системесчисления- это бесконечная дробь 0.1111001100110011… = 0.11(1100). В этом случае машинное изображение числа в формате real равно исходному значению лишь с точностью последнего разряда мантиссы.

Непосредственное сравнение вещественных переменных в большинстве случаев является некорректным. Предположим для примера, что массы идвух грузов измерены с точностью 0.1кг. Если эти массы равны, то в программе нужно выполнить оператор, в противном случае - оператор. Тогда имеем:

Var P1,P2: real;

...................

If P1=P2 then S1 else S2;

Если = 110.301, а= 110.302, результат работы программы будет неверным. Очевидно, в этом случаеинужно считать равными, если они отличаются между собою не более чем на 0.1.

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

x< 0x= 0x> 0

-0

Следовательно, x= 0, еслиabs(x);x> 0, еслиx >;x< 0, еслиx<-.

Аналогично вместо сравнения a > b следует анализировать отношение a - b >0.