Типы данных в Паскале
Федеральное агентство по образованию Реферат «ТИПЫ ДАННЫХ В ПАСКАЛЕ» 2008 1. Типы данных Любые данные, т.е. константы, переменные, свойства, значения функций или выражения характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти ПК. Вообще язык Object Pascal характеризуется разветвленной структурой типов данных (рис. 1.1). В языке предусмотрен механизм создания новых типов, благодаря чему общее количество используемых в программе типов может быть сколь угодно большим. Обрабатываемые в программе данные подразделяются на переменные, константы и литералы: Константы представляют собой данные, значения которых установлены в разделе объявления констант и не изменяются в процессе выполнения программы. Переменные объявляются в разделе объявления переменных, но в отличие от констант получают свои значения уже в процессе выполнения программы, причем допускается изменение этих значений. К константам и переменным можно обращаться по именам. Литерал не имеет идентификатора и представляется в тексте программы непосредственно значением. Тип определяет множество значений, которые могут принимать элементы данных, и совокупность допустимых над ними операций. В этой и четырех последующих главах приводится подробное описание всех типов. 1.1 Простые типы К простым типам относятся порядковые, вещественные типы и тип дата-время. Порядковые типы отличаются тем, что каждый из них имеет конечное количество возможных значений. Эти значения можно определенным образом упорядочить (отсюда - название типов) и, следовательно, с каждым из них можно сопоставить некоторое целое число - порядковый номер значения. Вещественные типы, строго говоря, тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однако количество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным. Тип дата-время предназначен для хранения даты и времени. Фактически для этих целей он использует вещественный формат.
1.1.1 Порядковые типы К порядковым типам относятся (см. рис. 1.1) целые, логические, символьный, перечисляемый и тип-диапазон. К любому из них применима функция Ord(x), которая возвращает порядковый номер значения выражения X. Рис. 1.1 - Структура типов данных Для целых типов функция ord(x) возвращает само значение х, т. е. Ord(X) = х для х, принадлежащего любому целому типу. Применение Ord(x) к логическому, символьному и перечисляемому типам дает положительное целое число в диапазоне от 0 до 1 (логический тип), от 0 до 255 (символьный), от 0 до 65535 (перечисляемый). Тип-диапазон сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции ord(х) зависит от свойств этого типа. К порядковым типам можно также применять функции: pred(x) - возвращает предыдущее значение порядкового типа (значение, которое соответствует порядковому номеру ord (х) -1, т. е. оrd(рred(х)) = оrd(х) - 1; succ (х) - возвращает следующее значение порядкового типа, которое соответствует порядковому номеру ord (х) +1, т. е. оrd(Succ(х)) = оrd(х) + 1. Например, если в программе определена переменная var с : Char; begin с := '5'; end; то функция PRED(с) вернет символ '4', а функция SUCC(с) - символ '6'. Если представить себе любой порядковый тип как упорядоченное множество значений, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция pred(x) не определена для левого, a succ (х) - для правого конца этого отрезка. Целые типы. Диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать один, два, четыре или восемь байтов. В табл. 1.1 приводятся названия целых типов, длина их внутреннего представления в байтах и диапазон возможных значений. Таблица 1.1 - Целые типы |
Название | Длина, байт | Диапазон значений | | Cardinal | 4 | 0. .. 2 147 483 647 | | Byte | 1 | 0...255 | | Shortint | 1 | -128...+127 | | Smallint | 2 | -32 768...+32 767 | | Word | 2 | 0...65 535 | | Integer | 4 | -2 147 483 648...+2 147 483 647 | | Longint | 4 | -2 147 483 648...+2 147 483 647 | | Int64 | 8 | -9*1018...+9*1018 | | LongWord | 4 | 0. . .4 294 967 295 | | |
Типы LongWord и Int64 впервые введены в версии 4, а типы Smallint и Cardinal отсутствуют в Delphi 1. Тип integer для этой версии занимает 2 байта и имеет диапазон значений от -32768 до +32767, т. е. совпадает с Smallint. При использовании процедур и функций с целочисленными параметрами следует руководствоваться “вложенностью” типов, т.е. везде, где может использоваться word, допускается использование Byte (но не наоборот), в Longint “входит” Smallint, который, в свою очередь, включает в себя Shortint. Перечень процедур и функций, применимых к целочисленным типам, приведен в табл. 1.2. Буквами b, s, w, i, l обозначены выражения соответственно типа Byte, Shortint, Word, Integer и Longint, х - выражение любого из этих типов; буквы vb, vs, vw, vi, vl, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр. Таблица 1.2 - Стандартные процедуры и функции, применимые к целым типам |
Обращение | Тип результата | Действие | | abs (x) | x | Возвращает модуль x | | chr(b) | Char | Возвращает символ по его коду | | dec (vx [, i] ) | - | Уменьшает значение vx на i, а при отсутствии i - на 1 | | inc(vx[,i]) | - | Увеличивает значение vx на i, а при отсутствии i -на 1 | | Hi(w) | Byte | Возвращает старший бант аргумента | | Hi(I) | То же | Возвращает третий по счету байт | | Lo(i) | “ | Возвращает младший байт аргумента | | Lo(w) | “ | То же | | odd(l) | Boolean | Возвращает True, если аргумент-нечетное число | | Random(w) | Как у параметра | Возвращает псевдослучайное число, равномерно распределенное в диапазоне 0...(w-l) | | sqr(x) | X | Возвращает квадрат аргумента | | swap(i) | Integer | Меняет местами байты в слове | | swap (w) | Word | Тоже | | |
При действиях с целыми числами тип результата будет соответствовать типу операндов, а если операнды относятся к различным целым типам - общему типу, который включает в себя оба операнда. Например, при действиях с shortint и word общим будет тип integer. В стандартной настройке компилятор Delphi не вырабатывает код, осуществляющий контроль за возможной проверкой выхода значения из допустимого диапазона, что может привести к недоразумениям. Логические типы. К логическим относятся типы Boolean, ByteBool, Bool, wordBool и LongBool. В стандартном Паскале определен только тип Boolean, остальные логические типы введены в Object Pascal для совместимости с Windows: типы Boolean и ByteBool занимают по одному байту каждый, Bool и WordBool - по 2 байта, LongBool - 4 байта. Значениями логического типа может быть одна из предварительно объявленных констант False (ложь) или True (истина). Поскольку логический тип относится к порядковым типам, его можно использовать в операторе цикла счетного типа. В Delphi 32 для Boolean значение Ord (True) = +1, в то время как для других типов (Bool, WordBool и т.д.) Ord (True) = -1, поэтому такого рода операторы следует использовать с осторожностью! Например, для версии Delphi 6 исполняемый оператор showMessage (' --- ') в следующем цикле for не будет выполнен ни разу: var L: Bool; k: Integer; begin for L:= False to True do ShowMessage ('--); end; Если заменить тип параметра цикла L в предыдущем примере на Boolean, цикл будет работать и сообщение дважды появится на экране. [Для Delphi версии 1 и 2 ord (True) =+1 для любого логического типа.] Символьный тип. Значениями символьного типа является множество всех символов ПК. Каждому символу приписывается целое число в диапазоне 0...255. Это число служит кодом внутреннего представления символа, его возвращает функция ord. Для кодировки в Windows используется код ANSI (назван по имени American National Standard Institute - американского института стандартизации, предложившего этот код). Первая половина символов ПК с кодами 0... 127 соответствует таблице 1.3. Вторая половина символов с кодами 128...255 меняется для различных шрифтов. Стандартные Windows-шрифты Arial Cyr, Courier New Cyr и Times New Roman для представления символов кириллицы (без букв “ё” и “Ё”) используют последние 64 кода (от 192 до 256): “А”... “Я” кодируются значениями 192..223, “а”... “я” - 224...255. Символы “Ё” и “ё” имеют соответственно коды 168 и 184. Таблица 1.3 - Кодировка символов в соответствии со стандартом ANSI |
Код | Символ | Код. | Символ | Код. | Символ | Код | Символ | | 0 | NUL | 32 | BL | 64 | @ | 96 | ' | | 1 | ЗОН | 33 | ! | 65 | А | 97 | а | | 2 | STX | 34 | “ | 66 | В | 98 | b | | 3 | ЕТХ | 35 | # | 67 | С | 99 | с | | 4 | EOT | 36 | $ | 68 | D | 100 | d | | 5 | ENQ | 37 | % | 69 | Е | 101 | е | | 6 | ACK | 38 | & | 70 | F | 102 | f | | 7 | BEL | 39 | ' | 71 | G | 103 | д | | 8' | BS | 40 | ( | 72 | Н | 104 | h | | 9 | HT | 41 | ) | 73 | I | 105 | i | | 10 | LF | 42 | * | 74 | J | 106 | j | | 11 | VT | 43 | + | 75 | К | 107 | k | | 12 | FF | 44 | F | 76 | L | 108 | 1 | | 13 | CR | 45 | - | 77 | М | 109 | m | | 14 | SO | 46 | | 78 | N | 110 | n | | 15 | SI | 47 | / | 79 | 0 | 111 | о | | 16 | DEL | 48 | 0 | 80 | Р | 112 | P | | 17 | DC1 | 49 | 1 | 81 | Q | 113 | q | | 18 | DC2 | 50 | 2 | 82 | R | 114 | r | | 19 | DC3 | 51 | 3 | 83 | S | 115 | s | | 20 | DC 4 | 52 | 4 | 84 | Т | 116 | t | | 21 | NAK | 53 | 5 | 85 | U | 117 | u | | 22 | SYN | 54 | 6 | 86 | V | 118 | v | | 23 | ETB | 55 | 7 | 87 | W | 119 | W | | 24 | CAN | 56 | 8 | 88 | х | 120 | x | | 25 | EM | 57 | 9 | 89 | Y | 121 | У | | 26 | SUB | 58 | : | 90 | Z | .122 | z | | 27 | ESC | 59 | ; | 91 | t | 123 | { | | 28 | FS | 60 | < | 92 | \ | 124 | 1 | | 29 | GS | 61 | = | 93 | ] | 125 | } | | 30 | RS | 62 | > | 94 | Л | 126 | ~ | | 31 | US | 63 | F | 95 | | 127 | r | | |
Страницы: 1, 2
|