Что такое переменная вещественного типа
Что такое переменная вещественного типа
Все, что необходимо начинающему и опытному программисту
Как представляются переменные вещественного типа в памяти компьютера
Вы познакомились с экспоненциальной формой представления числа. В ней можно выделить две части: мантиссу, то есть значащие цифры числа, и порядок — степень десятки (в общем случае это степень основания системы счисления, в которой записано данное число).
Ячейка памяти, выделенная для переменной вещественного типа, должна содержать следующие элементы: знак числа, знак порядка, значение порядка и значение мантиссы — естественно, все в двоичном представлении (рис. 2.7).
Рис. 2.7. Распределение двоичных разрядов (бит) при хранении числа типа real
Порядок и знак порядка занимают вместе 8 бит и хранятся, вообще говоря, немного хитрее. Но это нам сейчас не важно.
Главное — понять принцип хранения чисел с плавающей точкой.
Таблица 2.2. Вещественные типы данных языка Паскаль
Формат (длина)
в байтах
Примерный диапазон
абсолютных значений
Количество значащих десятичных цифр
Как совместить переменные целого и вещественного типа
В программе могут одновременно встречаться переменные разных типов. Как их совместить?
Преобразование типов
Пример 2.7.
Одновременное использование вещественных и целых типов
При запуске программа выведет на экран следующее:
Еще раз уточним правила преобразования типов: для хранения данных типа integer используется 2 байт, а для real необходимо 6 байт. Это значит, что число типа integer можно поместить в ячейку типа real (целая часть будет равна этому числу, а дробная будет равна нулю). А вот число типа real в ячейку типа integer никак не поместится. Чтобы все-таки поместить его туда, нужно явно указать, что делать с дробной частью числа. Для этого прёдусмотрены функции trunc и round. Обе они возвращают результат типа integer.
Что делать, если в программе нужно записать сложное математическое выражение? В каком порядке будут выполняться действия?
Правила приоритета в выполняемых действиях
1. Действия над переменными, стоящими в скобках, выполняются в первую очередь.
2. После вычисления значений всех скобок вычисляются все функции.
3. После функций выполняются умножение и деление. Они имеют одинаковый приоритет.
4. Следующие по приоритету — сложение и вычитание.
5. Операции одинакового приоритета выполняются слева направо.
Действия над данными разных типов
Сведем воедино операции и функции по работе с вещественными и целыми величинами (табл. 2.3).
Поясним написанное в таблице. Мы разделили все функции/операции на 6 категорий:
Таблица 2.3.Операции и функции для типов integer и real
Вещественные типы
В языке Паскаль существует несколько типов для представления действительных (вещественных) чисел. Чаще всего используется тип Real.
Вещественные типы в Pascal
Число цифр определяет точность, с которой будет храниться вещественное число. Например, для Real разрядность мантиссы может составлять не более восьми десятичных знаков. Тип Comp содержит только целые значения, которые представляются в вычислениях как вещественные.
Над действительными числами выполнимы операции сложения (+), вычитания (-), умножения (*) и деления (/). Результатом этих операций является также действительное число. Даже если хотя бы один из операндов вещественный, то результат этих операций также будет вещественным.
Операция деления (/) дает вещественный результат и в случае двух целых операндов. Например, 6 / 2 = 3.0.
Для действительных чисел допустимы такие же операции отношения (сравнения), что и для целых чисел.
Функции, которые дают вещественный результат, как для вещественного, так и для целого аргумента:
Функция int возвращает в виде действительного значения целую часть аргумента, frac возвращает дробную часть аргумента.
Функции trunc и round возвращают результат целого типа. Первая отсекает дробную часть от аргумента, а вторая выполняет округление до ближайшего целого.
Функция random без аргументов возвращает равномерно распределенное случайное число от 0 до 1.
Не имеющая аргументов функция pi возвращает число Пифагора.
Нельзя использовать переменные и константы вещественного типа:
Что такое переменная вещественного типа
Или в экспоненциальной форме, например:
5.0000000000E + 00 = 5 * 10 0 = 5.0
5.0000000000E + 01 = 5 * 10 1 = 50.0
6.3710421431E + 03 = 6.3710421431 * 10 3 = 6371.0421431
2. Представление вещественных чисел в компьютере. Форматный вывод вещественных чисел
Представление вещественных чисел в компьютере не является точным. Эти числа приближенные с определенной степенью точности, достаточной для получения удовлетворяющего практическим целям результата.
2.1. Представление вещественных чисел в компьютере
Вещественные числа в компьютере обычно представляются в форме с плавающей точкой, т.е, число представляется в виде его цифровой части (мантиссы ) и порядка (показателя степени 10). Количество разрядов, отводимых на изображение порядка, определяет диапазон допустимых чисел, а количество разрядов, отводимое под мантиссу определяет точность числа.
Машинное число представляет собой с некоторой точностью некоторый диапазон вещественных чисел (см. рис.1) и арифметические операции над ними производятся не точно, как это бывает с целыми числами, а по правилам действий над приближенными числами. По этой причине следует избегать логических операций сравнения вещественных чисел на их точное равенство.
Рис. 1. Представление машинного числа в формате с плавающей точкой.
При выводе на экран дисплея вещественных чисел оператором Write (); индицируются числа в формате с плавающей точкой (экспоненциальная форма).
2.2. Форматный вывод вещественных чисел
Для вывода вещественного числа на экран дисплея или на твердый носитель (бумага) необходимо определить формат выводимого числа, т.е количество цифр до десятичной точки и количество цифр после десятичной точки.
Форматный вывод вещественных чисел определяет количество выводимых чисел, включая десятичную точку и количество чисел после десятичной точки.
Все необходимые инструкции для этого описываются в операторе Write (), например, Write ( c :5:2);, а это значит, что выводится переменная ‘ c ’ в виде пяти цифровых символов, один из которых точка, две цифры выводится до десятичной токи и две после точки.
2.3. Арифметические операции над вещественными числами.
Pascal. Простые типы данных
При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип.
Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).
Стандартные типы
Турбо-Паскаль имеет четыре встроенных стандартных типа: integer (целое), real (вещественное), boolean (логический) и char (символьный).
Целочисленный тип (integer)
В Турбо-Паскале имеется пять встроенных целочисленных типов: shortint (короткое целое), integer (целое), longint (длинное целое), byte (длиной в байт) и word (длиной в слово). Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей Таблице.
Встроенные целочисленные типы.
Диапазон
Формат
16 битов со знаком
16 битов без знака
Арифметические действия над операндами целочисленного типа осуществляются в соответствии со следующими правилами:
Операции совершаемые над целыми числами:
RANDOM(X)-получение случайного числа от 0 до Х
Описываются переменные целого типа следующим образом:
var список переменных: тип;
Например: var а,р,n:integer;
Вещественный тип(real)
Имеется пять видов вещественных типов: real, singlе, duble, exnende, comp. Вещественные типы различаются диапазоном и точностью связанных с ними значений
Диапазон и десятичные цифры для вещественных типов
Диапазон
Цифры
2.9×10Е-39 до 1.7×10Е 38
1.5×10Е-45 до 3.4×10Е 38
5.0×10Е-324 до 1.7×10Е 308
3.4×10Е-493 до 1.1×10Е 403
Операции совершаемые над вещественными числами:
Описываются переменные вещественного типа следующим образом:
Символьный тип(char)
K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф:’’’’.
Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.
К символьным данным применимы знаки сравнения:
Можно выполнить такие операторы присваивания:
но нельзя выполнять смешанные присваивания:
К переменным перечислимого типа применимы следующие функции:
Переменные перечислимого типа можно сравнить, так как они упорядочены и пронумерованы. Так выражения: север запад и бак Будет полезно почитать по теме:
Урок 18. Вещественный тип данных
Урок из серии: «Язык программирования Паскаль»
На этом уроке мы заканчиваем знакомиться с простыми (скалярными) типами данных языка программирования Паскаль. Остался вещественный тип данных.
Данные вещественного (действительного) типа используются значительно чаще целого типа. Они необходимы в тех случаях, когда числовые значения могут содержать дробные части.
Описание данных вещественного типа
Например описания величин вещественного типа:
Константа вещественного типа может быть представлена в двух видах: числом с фиксированной и плавающей точкой.
Число с плавающей точкой имеет вид mEp, где m — мантисса, а p — порядок числа. В качестве m могут быть целые числа и действительные числа с фиксированной точкой, в качестве p — только целые числа. Как мантисса, так и порядок могут содержать знаки «+» и «-«.
Над данными вещественного типа определены следующие арифметические операции:
» + » — сложение;
» — » — вычитание;
» * » умножение;
» / » — деление.
Результат выполнения этих операций получается также вещественного типа.
Над данными вещественного типа определены следующие операции отношения:
» = » — равно;
» <> » — не равно;
» » — больше;
» = » — больше или равно (не меньше).
Операции отношения вырабатывают результат логического типа
Язык программирования Паскаль имеет набор встроенных процедур и функций, называемых стандартными. Перечислим наиболее часто встречающиеся из них:
Имя и параметры | Действие |
abs(x) | вычисление абсолютного значения Х |
sqr(x) | вычисление квадрата Х |
sqrt(x) | вычисление квадратного корня из Х |
sin(x) | вычисление синуса x |
cos(x) | вычисление косинуса Х |
arctan(x) | вычисление арктангенса Х |
exp(x) | вычисление е х |
ln(x) | вычисление натурального алгоритма x |
trunc(x) | вычисление целой части Х |
round(x) | округление Х в сторону ближайшего целого |
Примечание. Аргумент функции следует за именем функции и заключается в круглые скобки. В тригонометрических функциях синуса и косинуса аргумент задается только в радианной мере угла.
Вывод данных вещественного типа
Вывод данных вещественного типа допускается с форматом и без него. Если при выводе данных вещественного типа отсутствует формат, то число выводится с плавающей точкой — мантисса и порядок. На изображении числа отводится 17 позиций, при этом в целой части мантиссы присутствует только одна значащая цифра.
Изменить стандартную форму вывода можно, используя формат:
где х — величина вещественного типа (константа, переменная, выражение);
m — общее поле выводимого числа (включая знак числа, целую часть, точку и дробную часть);
n — поле дробной записи.
Пример 1. Напечатать таблицу значений функции y = sin(x) на отрезке [0,1] с шагом 0.1
Постановка задачи наталкивает нас на использование цикла с вещественным параметром, но цикл с параметром предполагает использование переменной порядкового типа, а тип Real таковым не является.
Сравним два решения этой задачи, представленные ниже.
На первый взгляд, работа этих программ должна быть одинаковой, но, запустив программы, мы обнаружим, что первая программа выдает значения функции sin(x) для всех значений х от 0 до 0.9, а вторая программа — для всех значений х от 0 до 1.
Первая программа работает не так, как нам бы хотелось — это происходит в силу приближённого представления вещественного числа. Поэтому при решении задач следует избегать использования циклов с изменяющейся вещественной переменной.
с заданной точностью Е.
Нужная точность считается полученной, если очередное слагаемое оказалось по модулю меньше, чем данное малое положительное число Е (это и все последующие слагаемые учитывать не надо).
y — сумма ряда;
e — заданная точность вычислений
sl — очередное слогаемое;
st — степень;
z — переменная, отвечающая за знак.
Программа должна вычислять очередное слагаемое х n /n и прибавлять его к сумме, полученной на предыдущем этапе.
При нахождении значения степени х n можно воспользоваться циклом с параметром, но, с другой стороны, чтобы вычислить значения х n достаточно значение х n-1 (найдено на предыдущем шаге) умножить на х.
Итак, решение будет выглядеть следующим образом: