85 перечислите типы данных установка типов данных способы фиксирования данных

Pascal. Типы данных

Понятие данных является одним из ключевых в программировании, да и вообще в компьютерных науках. Грубо говоря, данные в информатике это информация, находящиеся в состоянии хранении, обработки или передачи, в какой-то отрезок времени. В машинах Тьюринга информация имеет тип, а он в свою очередь, зависит от рода информации.

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

По способу представления и обработки типы данных бывают:

  • простые
  • структурированные
  • указатели
  • объекты
  • процедуры

В этой статье будут рассмотрены лишь, наиболее простые типы данных, так как на начальных этапах обучения, вашей программе будет проще обойтись, например, без файлов и записей, чем без целочисленных или строковых переменных.

Целочисленный тип

Сюда входят несколько целочисленных типов, которые различаются диапазоном значений, количеством байт отведённых для их хранения и словом, с помощью которого объявляется тип.

Тип Диапазон Размер в байтах
shortint -128…127 1
integer -32 768…32 767 2
longint -2 147 483 648…2 147 483 647 4
byte 0…255 1
word 0…65 535 2

Объявить целочисленную переменную можно в разделе Var, например:

Над переменными этой категории можно выполнять все арифметические и логические операции за исключением деления (/), для него нужен вещественный тип. Также могут быть применены некоторые стандартные функции и процедуры.

Вещественный тип

В Паскале бывают следующие вещественные типы данных:

Тип Диапазон Память, байт Количество цифр
Real 2.9e-39 … 1.7e38 6 11-12
Single 1.5e-45 … 3.4e38 4 7-8
Double 5.0e-324 …1.7e308 8 15-16
Extended 3.4e-4932 … 1.1e493 10 19-20
Comp -9.2e63 … (9.2e63)-1 8 19-20

Над ними может быть выполнено большее количество операций и функций, чем над целыми. Например, эти функции возвращают вещественный результат:

ln(x) – натуральный логарифм;

sqrt(x) – квадратный корень;

Логический тип

Переменная, имеющая логический тип данных может принимать всего два значения: true (истина) и false (ложь). Здесь истине соответствует значение 1, а ложь тождественная нулю. Объявить булеву переменную можно так:

Над данными этого типа могут выполняться операции сравнения и логические операции: not , and, or, xor.

Символьный тип

Символьный тип данных – это совокупность символов, используемых в том или ином компьютере. Переменная данного типа принимает значение одного из этих символов, занимает в памяти компьютера 1 байт. Слово Char определяет величину данного типа. Существует несколько способов записать символьную переменную (или константу):

  1. как одиночный символ, заключенный в апострофы: ‘W’, ‘V’, ‘п’;
  2. указав код символа, значение которого должно находиться в диапазоне от 0 до 255.
  3. при помощи конструкции ^K, где K – код управляющего символа. Значение K должно быть на 64 больше кода соответствующего управляющего символа.

К величинам символьного типа данных применимы операции отношения и следующие функции:

Succ(x) — возвращает следующий символ;

Pred(x) — возвращает предыдущий символ;

Ord(x) — возвращает значение кода символа;

Chr(x) — возвращает значение символа по его коду;

UpCase(x) — переводит литеры из интервала ‘a’..’z’ в верхний регистр.

Для плодотворной работы с символьным типом рекомендую пользоваться таблицей ASCII.

Строковый тип

Строка в Паскале представляет собой последовательность символов заключенных в апострофы, и обозначается словом String. Число символов (длина строки) должно не превышать 255. Если длину строки не указывать, то она автоматически определиться в 255 символов. Общий вид объявления строковой переменной выглядит так:

Читайте также:  Способ крепления мебельных щитов

Каждый символ в строке имеет свой индекс (номер). Индекс первого байта – 0, но в нем храниться не первый символ, а длина всей строки, из чего следует, что переменная этого типа будет занимать на 1 байт больше числа переменных в ней. Номер первого символа – 1, например, если мы имеем строку S=‘stroka’, то S[1]=s;. В одном из следующих уроков строковый тип данных будет рассмотрен подробнее.

Перечисляемый тип данных

Перечисляемый тип данных представляет собой некоторое ограниченное количество идентификаторов. Эти идентификаторы заключаются в круглые скобки, и отделяются друг от друга запятыми.

Type Day=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Переменная A может принимать лишь значения определенные в разделе Type. Также можно объявить переменную перечисляемого типа в разделе Var:

Var A: (Monday, Tuesday);

К данному типу применимы операции отношения, при этом заранее определенно, что Monday = .. ;

Источник

10. Типы данных

Переменные бывают разных типов. Тип переменной определяет набор допустимых значений и операций. Типы делятся на простые, составные, строковые, варианты и классы.

Простые типы

Простые типы делятся на порядковые, вещественные и дата-время.

Порядковые типы имеют конечное множество возможных значений, их можно определенным образом упорядочить (отсюда и название) и сопоставить некоторое целое число.

Вещественные типы, строго говоря, тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однако количество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным.

Тип дата-время предназначен для хранения даты и времени. Фактически для этих целей он использует вещественный формат.

Порядковые типы

К порядковым типам относятся целые, логические, символьный и перечисляемый. К любому из них применима функция Ord(x), которая возвращает порядковый номер значения выражения X.

Для целых типов функция Ord(x) возвращает само значение х, т. е. Ord(X) = х для х, принадлежащего любому целому типу. Применение Ord(x) к логическому, символьному и перечисляемому типам дает положительное целое число в диапазоне от 0 до 1 (логический тип), от 0 до 255 (символьный), от 0 до 65535 (перечисляемый).

К порядковым типам можно также применять функции:

Например, если в программе определена переменная:

то функция Pred(C) вернет символ ‘4’, а функция Succ(C) — символ ‘6’.

Если представить себе любой порядковый тип как упорядоченное множество значений, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция pred(x) не определена для левого, a succ(X) – для правого конца этого отрезка.

Целые

Ниже приведена таблица поддерживаемых целых типов и диапазон допустимых значений:

Тип данных Длина, байт Диапазон допустимых значений
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
Cardinal 4 0 .. 4 294 967 295
LongWord 4 0 .. 4 294 967 295
Int64 8 -9*10 18 .. +9*10 18

При использовании процедур и функций с целочисленными параметрами следует руководствоваться «вложенностью» типов, т. е. везде, где может использоваться Word, допускается использование Byte (но не наоборот), в Longint «входит» Smallint, который, в свою очередь, включает в себя Shortint.

Логические

Логический тип может принимать 2 значения: True или False. К логическим типам относят: Boolean, ByteBool, WordBool, LongBool. Первый тип является стандартным типом Паскаля, а последние три введены для совместимости с Windows. В данной реализации языка функция Ord вернет для True – 1, для False – 0.

В Pascal Script функция Ord для переменной типа Boolean также возвращает результат типа Boolean.

Читайте также:  Двигатель постоянного тока способы изменения скорости

Символьный

К символьному типу относится тип Char, вмещает в себя 1 байт, символы с кодом 0..255. Переменной этого типа можно присвоить один символ:

Код Символ Код. Символ Код. Символ Код Символ
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 94 Л 126

31 US 63 f 95 _ 127 r

Символы с кодами 0..31 относятся к служебным кодам. Если эти коды используются в символьном тексте программы, они считаются пробелами.

Перечисляемый тип

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

Применение перечисляемых типов делает программы нагляднее. Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе — 1 и т. д. Максимальная мощность перечисляемого типа составляет 65536 значений, поэтому фактически перечисляемый тип задает некоторое подмножество целого типа Word и может рассматриваться как компактное объявление сразу группы целочисленных констант со значениями 0, 1 и т. д.

В Object Pascal присваивание переменным разных перечисляемых типов значений не своего типа приводит к ошибке несовместимости типов.

Однако компилятор Pascal Script не увидит ошибку и код будет работать. Будьте внимательны.

Вещественные типы

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

Тип данных Длина, байт Количество значащих цифр Диапазон допустимых значений
Single 4 7-8 1.5*10e-45 .. 3.4*10e38
Double 8 15-16 5.0*10e324 .. 1.7*10e308
Extended 10 19-20 3.4*10-4951 .. 1.1*10e4932
Currency 8 19-20 +/-922 337 203 685 477,5807

В DataExpress числовые поля имеют тип Double.

Сравнение вещественных чисел

Из-за того, что вещественные числа хранят приблизительное значение числа, их нельзя проверять на равенство с числовыми константами. Для сравнения используйте функцию SameValue. Пример:

Тип дата-время

Тип дата-время определяется стандартным идентификатором TDateTime и предназначен для одновременного хранения и даты, и времени. Во внутреннем представлении он занимает 8 байт и подобно Currency представляет собой вещественное число с фиксированной дробной частью: в целой части числа хранится дата, в дробной — время.

Дата определяется как количество суток, прошедших с 30 декабря 1899 года, а время — как часть суток, прошедших с 0 часов, так что значение 36444,837 соответствует дате 11.10.1999 и времени 20:05. Количество суток может быть и отрицательным, однако значения меньшие -693594 (соответствует дате 00.00.0000 от Рождества Христова) игнорируются функциями преобразования даты к строковому типу.

Над данными типа TDateTime определены те же операции, что и над вещественными числами, а в выражениях этого типа могут участвовать константы и переменные целого и вещественного типов. Например, можно без труда определить дату, отстоящую от заданной на сколько-то дней вперед или назад: для этого достаточно соответственно прибавить к заданной дате или отнять от нее нужное целое число. Например, оператор:

поместит в метку IbOutput дату, соответствующую текущей дате плюс 3 недели. Чуть сложнее с исчислением времени. Например, чтобы добавить к текущему времени полтора часа, следует использовать выражение:

Составные типы

К составным типам относятся: массивы, записи и множества. Они характеризуется множественностью образующих этот тип элементов. Каждый элемент, в свою очередь, может принадлежать структурированному типу, что позволяет говорить о возможной вложенности типов. В Object Pascal допускается произвольная глубина вложенности типов, однако суммарная длина любого из них во внутреннем представлении не должна превышать 2 Гбайт (в реализации от RemObjects не проверялось).

Строковые типы

Строки представлены типами String, AnyString, AnsiString, WideString и PChar. Для всех типов строк, кроме PChar, память выделяется динамически, по мере необходимости. Типы String, AnyString, AnsiString являются синонимами. Тип String можно представить, как массив символов. Подобно массиву можно обращаться к отдельным символам строки по их индексу. Первый символ строки имеет индекс 1. Примеры работы со строками:

UTF-8 является основной кодировкой, база данных и скрипты используют именно эту кодировку.

К строкам применимы операции сравнения. Сравнение происходит посимвольно.

Тип WideString хранит строки в кодировке UTF-16. Каждый символ кодируется двумя байтами (за исключением символов с номерами больше FFFF — для обозначения таких символов используется четыре байта). Несмотря на то, что каждый символ занимает 2 байта, вы можете обратиться к символу по индексу, как если бы для кодирования использовался 1 байт. Строки этого типа используются OLE-объектами и функциями Windows API .

Символы, кодируемые четырьмя байтами всегда состоят из пары двухбайтовых слов (т.наз. «суррогатной пары»), первое из которых принадлежит диапазону D800..DBFF, а второе — диапазону DC00..DFFF. Символы, кодируемые двумя байтами не могут входить ни в один из этих диапазонов. Что позволяет при посимвольном обходе строки легко отличать двухбайтовые символы от частей четырёхбайтовых

Тип PChar представляет строки с завершающим нулем. Переменная типа PChar содержит указатель на массив строк. Концом строки считается символ с кодом #0. В чистом виде тип PChar не используется, т. к. Pascal Script не работает с указателями. Предположительно, он введен только для совместимости с функциями Windows API .

Pascal Script автоматически преобразует строку из одного типа в другой, так что работа со строками разных типов является прозрачной для разработчика.

Варианты

Переменная вариантного типа может принимать хранить значение следующих типов: целый, вещественный, логический, строка, дата-время, OLE-объект. Вариант представляет собой структуру, в которой хранятся сведения о типе и значении переменной. В выражениях и при передаче параметров в процедуры происходит попытка преобразования варианта к нужному типу. Если это не удается, будет ошибка “invalid variant type cast”. Вариант может хранить специальное значение Null (пусто, неизвестно).

Любая арифметическая операция с null даст в результате null. Попытка автоматического преобразования null к какому-либо типу (кроме Variant) приведет к ошибке ‘could not convert variant of type (Null) into type (…)’.

Варианты широко используются при работе с OLE-объектами. С помощью специальных функций можно узнать значение какого типа хранится в варианте или преобразовать значение к нужному типу.

Источник

Читайте также:  Способы отопления зимней теплицы
Оцените статью
Разные способы