§3.2. Вещественные типы
В Паскале есть только один вещественный тип – Real. В Турбо-Паскале это группа из пяти типов, обозначающих множества вещественных чисел в разных диапазонах и с различной точностью, ориентированных на представление информации в конкретных процессорах – фирмы Intel. Их характеристики приведены в табл. 3.2.
Таблица 3.2. Вещественные типы данных
Обозначение типа | Диапазон значений | Число десятичных цифр мантиссы | Размер памяти в байтах |
Real | 2.9*10-39 ... 1.7*10+38 | 11-12 | 6 |
Single | 1.5*10-45 ... 3.4*10+38 | 7-8 | 4 |
Double | 5.0*10-324 ... 1.7*10+308 | 15-16 | 8 |
Extended | 3.4*10-4932 ... 1.1*10+4932 | 19-20 | 10 |
Comp | -9.2*10+18 ...9.2*10+18 | 19-20 | 8 |
Использование последних четырех типов возможно только с использованием математического сопроцессора (должна быть включена соответствующая опция транслятора). Тип Comp хотя и считается вещественным, но на самом деле содержит целые числа из весьма большого диапазона.
Вещественные константы имеют две формы представления: с фиксированной и плавающей точкой. В первом случае число представляется как целая и дробная часть:
[<знак>]<целая часть>.<дробная часть>
Наличие точки является признаком вещественного типа числа.
В представлении с плавающей точкой, или экспоненциальном, число условно разбивается на две части: мантиссу и порядок (иначе называемый характеристикой), поэтому в общем виде число выглядит как:
[<знак мантиссы>]<целая часть мантиссы> [.<дробная часть мантиссы>] E [<знак порядка>]<порядок>
Здесь буква Е является разделителем, отделяющим мантиссу от порядка или характеристики. Числа представляются только в десятичной системе счисления, например
1234.5610 = 1.23456E3 ( 1,23456×103) = 1234.56E0 ,
то есть положение десятичной точки зависит от значения порядка и может изменяться.
Таким образом, признаком вещественного числа является наличие точки или разделителя. Так, число «единица» может быть представлено в трех разных форматах:
1Е0 – вещественное число с плавающей точкой;
1.0 – вещественное число с плавающей точкой;
1 – целое число.
Над вещественными значениями допустимы следующие операции:
+ сложение;
- вычитание;
* умножение;
/ деление.
Все они дают вещественный результат, если хотя бы один операнд вещественный.
Применение операций отношения дает логический результат.
§3.3. Логический тип
Логический тип основан на правилах Булевой алгебры, широко используемой в цифровой электронике. Этот тип определяет всего два значения True (истина) и False (ложь), которые и являются константами. Описывается этот тип словом Boolean, определенным как
Type Boolean = (False, True);
Над значениями логического типа определены следующие операции:
NOT – «НЕ», логическое отрицание или инверсия, в отличие от остальных выполняется над одним операндом (унарная операция);
OR – «ИЛИ», логическое сложение или дизъюнкция;
AND – «И», логическое умножение или конъюнкция;
XOR – «исключающее ИЛИ», сложение по модулю 2 (в стандартном Паскале отсутствует).
Пусть А и В – логические значения, тогда результат операций будет определяться по табл. 3.3:
Таблица 3.3. Логические операции
А | В | not A | A or B | A and B | A xor B |
True | True | False | True | True | False |
True | False | False | True | False | True |
False | True | True | True | False | True |
False | False | True | False | False | False |
В Паскале, как и в цифровой электронике, True кодируется единицей, а False – нулем (0 – низкое напряжение, 1 – высокое; при использовании обратной логики – наоборот). Поэтому логические операции разрешены не только над логическими значениями, но и над целыми, представляемыми в двоичной системе счисления. Например, если А=21 (101012), а В=9 (10012), и они описаны как байты, то:
not A = 111010102 = 23410
A or B = 000111012 = 2910
A and B = 00000001
Обычно их используют над беззнаковыми целыми типа Byte или Word.
Шесть операций отношения или сравнения:
> < = ¹ ³ £ ,
применимые ко всем простым типам и многим структурированным, всегда дают логический результат. Более того, и над логическими значениями допускается выполнение операций отношения:
True > False ® True,
True < False ® False.
Возможны даже такие записи:
Var i:boolean;
...
For i:=False to True do
<оператор>;
Здесь оператор выполнится два раза, сначала со значением i = False, затем i = True.
§3.4. Литерный тип
В качестве данных в Паскале могут выступать отдельные символы или литеры. Этот тип данных описывается словом Char и занимает 1 байт. Значениями здесь являются 256 символов кодировочной таблицы ASCII (American Standard Code for Information Interchange – Стандартный американский код обмена информацией), используемой в ОС DOS.
При записи констант, если символьное значение имеет графическое представление, то оно изображается символьным знаком, заключенным в апострофы, например:
'*' 'A' '!'
Если символ нельзя отобразить в тексте программы (служебные и неотображаемые символы), то можно воспользоваться эквивалентной формой записи
#<целочисленный код символа>.
Например:
#$7F – Delete, стереть последний символ. Символом DEL, состоящим в двоичном коде из всех единиц, можно было забить любой символ. Устройства и программы игнорировали DEL так же, как NUL. Код этого символа происходит из первых текстовых процессоров с памятью на перфоленте: в них удаление символа происходило забиванием его кода дырочками (обозначавшими логические единицы).
#7 – Bell, звонок, звуковой сигнал. Имеет отношение не к монитору, а ко встроенному динамику.
Если используются специальные символы, называемые управляющими кодами (то есть с использованием префиксной клавиши Ctrl), то можно использовать запись, например вида ^C (символ с кодом 3: ext – конец текста). Все коды с номерами 0-31 являются управляющими, и их можно представить в таком виде. Например, BEL можно записать как ^G.
Над значениями литерного типа можно выполнять только операции отношения.
§3.5. Перечисляемый тип
Часто в программах число используется не в качестве арифметической величины, а как указатель некоторого элемента множества. В Паскале предусмотрена возможность называть элементы множества своими именами, то есть можно определить новый тип путем явного перечисления всех его возможных значений, причем каждое такое значение будет определяться только именем. Считается, что значения перечисляемого типа указаны в порядке возрастания, начиная с нулевого, поэтому над этими элементами можно выполнять операции отношения. Причем наиболее часто используются операции = и ¹.
При описании этого типа используется список, заключенный в круглые скобки, а его значения (константы) являются именами:
(<имя1>[,<имя2>...])
Например:
Type
Color = (Red, Yellow, Green); {Светофор}
Day = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
Var c:Color;
d:day;
...
If d>Fri Then Writeln ('Выходной день');
Для любого перечисляемого типа Т, определенного записью
T = (w0,w1,...,wn) ,
справедливы свойства:
1. Различимости
wi ¹ wj , если i ¹ j.
2. Упорядоченности
wi < wj, если i < j.
Причем значениями типа Т могут быть только w0, w1, ..., wn. Более того, эти имена должны быть уникальны, то есть не должны повторяться ни в других типах, ни при описании переменных.
§3.6. Диапазоны (интервальный тип)
Часто при описании переменных известно, что они будут принимать ограниченное множество значений, например часы, дни недели и др. Для облегчения восприятия программы и введения дополнительного контроля используются диапазоны, иначе интервальный тип.
Диапазоны можно задавать для любого простого, но дискретного типа. Дискретными или счетными типами являются такие, для которых можно указать два соседних значения, между которыми нельзя добавить еще одно. Например, для целого 1 и 2, для перечисляемого Sat и Sun и т. д. Единственным исключением здесь являются вещественные числа. В дальнейшем будет показано, что вещественные числа не могут использоваться в некоторых операторах и конструкциях языка Паскаль, в том числе и в диапазонах.
Для указания диапазона используются 2 точки:
Type C = '0'..'9';
Var Min, Sec:0..59;
Hour:0..23;
Так как диапазоны есть подмножества других типов, то для них определены и соответствующие операции.
Дополнительные типы в Delphi
В Delphi определен новый тип данных – денежный, описываемый словом Currency. Он аналогичен вещественному формату Comp, не имеющему дробной части. Здесь же добавлено 4 значащих цифры после запятой, то есть точность вычислений составляет 0.0001.
К логическому типу добавлено еще 3 разновидности для совместимости со стандартами Windows: ByteBool, WordBool, LongBool, с занимаемой памятью соответственно 1, 2 и 4 байта.
К символьному типу добавлены типы AnsiChar и WideChar. Первый полностью аналогичен Char, хотя в Windows и используется кодировка ANSI вместо АSСII. Второй же используется для хранения символов в кодировке UNICODE с размером таблицы 65 536 символов, поэтому под каждый символ выделяется 2 байта.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Основные порталы (построено редакторами)
