Представление вещественных чисел на ЭВМ.
В математике каждому числу ставится в соответствие точка на числовой оси. При работе на компьютере из-за того, что числа хранятся в ячейках памяти, эта ось ограничена. Границы зависят от формы представления числа и количества разрядов в ячейках памяти машины.
Привычная нам форма записи чисел, например 3.1415 , - это запись десятичных чисел с фиксированной точкой. Однако удобнее при составлении программ пользоваться записью в форме с плавающей точкой. Десятичное число D в этой форме записи имеет вид
где m –мантисса числа, n – его порядок. Мантиссу числа записывают в нормализованной форме
так, чтобы , где – разрядность числа. Например,
В языке Turbo Pascal при записи чисел с фиксированной точкой для обозначения «умножить на десять в степени» вводится буква Е, например
Цифры, предшествующие букве Е, образуют мантиссу числа, а цифры, следующие за ней – порядок.
Компьютер из-за ограниченности его разрядной сетки оперирует лишь с конечным подмножеством действительных чисел. Оно определяется разрядностью , а также границами порядка числа Границы порядка определяют ограниченность действительных чисел по величине, а разрядность - дискретность их распределения на отрезке числовой оси.
В Turbo Pascal имеется пять стандартных вещественных типов, характеристики которых приведены в таблице:
Таблица 4.1
Тип диапазон число значащих цифр формат (байт)
real 2.9E-39..1.7E38 11..12 6
single 1.5E-45..3.4E38 7..8 4
double 5.0E-324..1.7E308 15..16 8
extended 3.4E-4932..1.1E4932 19..20 10
comp -2 H63..2H63 19-20 8
Здесь .
Оператор присваивания
Переменная - это такой "ящичек" с именем, в котором может храниться некое значение. Имя у переменной постоянно и неизменно, значение же может меняться.
Переменную можно изменять при помощи операции присваивания:
< переменная > := < выражение > ;
Выражение справа от символа присваивания состоит из констант, переменных, обращений к функциям и знаков операций. Вначале вычисляется значение выражения. Затем полученное значение заносится в ячейку памяти компьютера, зарезервированную под переменную, имя которой указано в левой части оператора присваивания. Значение выражения должно быть совместимо по типу с указанной переменной.
Важно, чтобы все переменные, стоящие справа от знака оператора присваивания ( := ) были определены. При попытке использовать в вычислениях неопределенную переменную, работа программы может быть прервана.
Что происходит со старыми значениями переменной, когда ей присваивается новое? Оно просто стирается. Например, запись операторов x :=2; x := x+1; увеличивает значение переменной х на единицу. Выражение x := x + 1;-не уравнение. Если рассматривать эту строку как математическое уравнение, оно не имеет решений. На самом деле тут написано:
1) "взять значение переменной ИКС"
2) "прибавить к нему 1"
3) "положить новое значение в переменную ИКС"
В результате, в ячейке памяти с именем х, будет размещаться число 3, а предыдущее значение переменной равное 2 будет утеряно.
Алгебраические выражения.
Выражения строятся из констант, переменных, функций, знаков операций и круглых скобок. Константы, переменные и функции должны быть либо описаны в программе, либо иметь стандартные имена.
В языке имеются следующие математические функции, используемые для выполнения математических операций и возвращающие значения типа real:
Таблица 4.2
abs(x) – модуль аргумента х;
sqr(x) – квадрат аргумента;
sqrt(x)- квадратный корень аргумента;
sin(x) – функция синус;
cos(x) – функция косинус;
arctan(x) – функция арктангенса;
exp(x) – функция экспоненты;
ln(x) – функция натурального логарифма;
frac(x) – дробная часть числа;
int(x) – целая часть числа
Для вычисления значений некоторых других функций следует пользоваться тождествами:
arccos(x) = / 2 – arcsin(x);
arcctg(x) = / 2 – arctg(x);
Порядок выполнения операций определяется их приоритетом: операции умножения и деления ( *, / ) выполняются перед операциями сложения и вычитания ( +, - ). Операции одинакового приоритета выполняются в порядке их написания слева направо. Выражение, заключенное в скобки, вычисляется в первую очередь. Таким образом, скобки позволяют изменять порядок выполнения операций. К примеру, (2 + 3) * 3=15, но 2 + 3*3=11.
Нельзя размещать два знака операций рядом. Знак минус может употребляется для изображения величины, противоположенной данной: -х, -(f+d*s) и т.п.
Не рекомендуется в одном арифметическом выражении использовать данные различных типов. Это приводит к дополнительным затратам машинного времени на преобразование типов и возможны потери в точности.