..

Сайт города Попасная.
 

 

 

Интернет издания:

ПОПАСНЯНСКАЯ ПРАВДА

 


Натяжные потолки Канев: окно сервис каневская натяжные потолки.

 

 

 

 

2.3. Стандартные функции для числовых типов

При вычислении периметра в программе 2.2 предыдущего раздела мы использовали константу я с тремя значащими цифрами. Для повышения точности вычислений можно задать больше значащих цифр или обратиться к определенной в TurboPascal стандартной функции pi. Программа в этом случае будет выглядеть следующим образом:

Программа 2.3.

Var r,p: Real;
Begin
Writeln('Введите радиус'); Readln(r); p:=2*pi*r;
Writeln('Периметр окружности = ',p);
End.

Функция pi вычисляет значение числа ж с точностью 20 знаков, из которых при использовании переменной типа Real возвращается (используется) 11. Поэтому если мы введем число 10, то получим результат "Периметр окружности = 6.2831853072Е+01". В TurboPascal определено еще 10 функций, которые можно использовать только с величинами целого или вещественного типов. Перечень функций и типы получаемых результатов приведены в таблице 2.5. Аргументы функций Cos и Sin должны быть заданы в радианах. Результатом выполнения функции Arctan является главный угол в радианах.

Таблица 2.5 Стандартные функции

Функция
Назначение
Тип результата
Abs(x)
Абсолютное значение
Совпадает с типом х
Arctan(x)
Арктангенс
Вещественный
Cos(x)
Косинус
Вещественный
Exp(x)
Степень
Вещественный
Frac(x)
Дробная часть
Вещественный
Int(x)
Целая часть
Вещественный
Ln(x)
Натуральный логарифм
Вещественный
Pi
3,1415926535897932385
Вещественный
Sin(x)
Синус
Вещественный
Sqr(x)
Квадрат
Совпадает с типом х
Sqrt(x)
Квадратный корень
Вещественный

 

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

Программа 2.4.

Var sn,csn,tg,x: Real;
Begin
Writeln('Задайте значение-аргумента в градусах1);
Readln(x);
x:=x*pi/180;
sn:=sin(x'T;
csn:=cos(x);
tg:=sn/csn;
Writeln ( 'Синус ','Тангенс ');
Writeln(sn,tg);
End.

После того как в ответ на приглашение "Задайте значение аргумента в градусах" мы введем значение угла, например число 45, введенное число будет переведено из градусов в радианы. Оператор x:=x*pi/180 выполняется следующим образом: сначала вычисляется арифметическое выражение, расположенное справа от операции присваивания, а затем полученное значение запишется в переменную х, заменив находившееся там до этого ранее введенное число 20. После этого последовательно вычисляются синус, косинус и тангенс от полученного значения аргумента. Так как тангенс непосредственно вычислить нельзя, предварительно приходится вычислять косинус. Два последних оператора программы выводят на экран строку пояснений и под ней строку вычисленных значений функций. Каждое значение, выводимое в экспоненциальной форме, занимает по 16 позиций - 12 под мантиссу и 4 под порядок. Поэтому, чтобы значение располагалось под своим пояснением, нам пришлось дополнять каждое пояснение пробелами. В результате на-экран выводится следующая таблица:

Синус Тангенс
7.071067 8119Е-01 1.0000000000Е-01

Значения тригонометрических функций вычисляются с высокой точностью, однако такое количество знаков требуется не всегда. К тому же и читать числа, представленные в экспоненциальной форме, не всегда удобно. Поэтому при выводе чисел, особенно в таблицах, целесообразно указывать формат выводимой информации. В этом случае числа можно вывести не в экспоненциальной форме, а в форме с плавающей запятой, причем определяется число позиций на экране, отведенных для вывода числа. Если процедуры вывода предыдущей программы заменить следующими:

Writeln('Синус':8,'Тангенс':8); Writeln(sn:8:2,tg:8:2);
то таблица примет вид:
Синус Тангенс 0.71 1.00

Запись sn:8:2 означает, что под значение переменной sn выделяется 8 позиций на экране, две из которых отведены под дробную часть числа. Из оставшихся шести позиций одна отводится под точку, а в пяти помещается целая часть числа. Размещение числа начинается справа, поэтому если числа выводить в столбце, то они будут выровнены по правому полю. В указанное количество позиций может не вместиться как дробная, так и целая часть. Как видно из приведенной таблицы, лишние цифры дробной части отбрасываются, причем по первой отбрасываемой цифре производится округление до ближайшего значения последней сохраняемой цифры. Например, вместо вычисленного значения синуса 0.70710678119, на экран выведено 0.71. Если же отведенного места недостаточно для размещения целой части, то она выводится полностью, причем необходимое количество позиций для ее вывода определяется автоматически с учетом знака числа (знак «+» не выводится). Для вещественных значений можно указать формат и в таком виде: sn:8. В этом случае вывод осуществляется в экспоненциальной форме, но в заданном количестве позиций. То же самое значение синуса будет выведено в виде 7.07Е-01. Правила округления дробной части и вывода знака числа сохраняются, знак порядка выводится обязательно. Для целых переменных, символов и строк также можно указать формат. Однако в этом случае указывается только одно целое значение, которое определяет, сколько позиций экрана отводится под число, символ или строку, например:
Writeln(‘Синус’:5,’Тангенс’:8). Если отведенное
количество позиций больше реального числа символов, то выводимая информация располагается в правой части отведенного для нее поля. Если реальное количество выводимых символов превышает число позиций в отведенном поле, то, тем не менее, будут выведены все символы. При этом следует иметь в виду, что одна строка экрана состоит из 80 позиций, а всего на экране помещается 25 строк. При указании формата вывода можно использовать не только целые константы, допустимо применение выражений целого типа. Вводить вещественные значения можно как в экспоненциальной форме, так и в формате с плавающей запятой, причем число цифр в целой части не ограничивается, а знак «+» для числа и в его порядке можно не указывать.

2.4. Преобразование типов

При выполнении расчетов целые и вещественные числа часто используются одновременно. Так, допустим, что при вычислении периметра окружности в программе 2.3 мы будем задавать только целые значения радиуса и периметр нам надо знать с точностью до целого числа. Тогда г и р можно объявить переменными одного из целых типов, например типа Word, поскольку ни радиус, ни периметр не могут быть отрицательными, однако полученная программа выполняться не будет, поскольку строка p:=2*pi*r; теперь содержит ошибку. Ошибка возникла из-за того, что в арифметическом выражении 2*pi*r используется функция pi, которая вычисляет вещественное число. По правилам языка TurboPascal в одном арифметическом выражении допускается использовать переменные различных числовых типов, однако если хотя бы одна переменная или константа относится к вещественному типу, результат вычисления выражения будет вещественного типа. Таким образом, результат вычисления арифметического выражения будет вещественным числом. Непосредственно присваивать вещественное значение переменной целого типа в TurboPascal запрещено (а наоборот - можно). Если возникает необходимость присвоить переменной целого типа вещественное значение, необходимо использовать одну из двух функций, выполняющих преобразование вещественного значения в целое: с помощью округления - Round или отбрасывания дробной части - Trunc. Аргументы этих функций имеют вещественный тип, а результат -целый. Примеры использования функций приведены в таблице 2.6.

Таблица 2.6.

Функция
Х
У
Y:=TRunc(x)
2.67
2
Y:=Round(x)
2.67
3

Задания:

1. Составьте программу, вычисляющую дробную часть частного двух целых положительных чисел, не превышающих 50000. (Так, для чисел 5 и 4 результат должен быть равен 0.25).
2. Составьте программу, выводящую на экран главное значение арктангенса в градусах с точностью до одного градуса для произвольного вводимого значения тангенса. Исходное значение задается в виде вещественного числа с точностью до двух цифр после запятой. Результат должен быть получен в виде целого числа.


 
Popasnaya.com.ua Web-Source 2003 - 2004 / babelyuk jr / All Rights Reserved