Типы данных

Любые данные, т.е. константы, переменные, свойства, значения функции или выражения, в Object Pascal характеризуются своими типами.

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

Выделяют две группы типов:
– простые (порядковые, вещественные типы и тип дата-время);
– структурированные (строки, массивы, записи, файлы, классы).
Порядковые типы. Делятся на стандартные (целые числа – Integer, Byte, Word, Longint, логические дан­ные – Boolean, символы – Char) и пользовательские (перечисляемый пользовательский тип и тип-диапазон).
Некоторые операции над целыми числами

Операция

Описание

Abs (X) Возвращает абсолютное целое значение Х
Х Div Y Возвращает целую часть частного деления Х на Y
Х Mod Y Возвращает остаток частного деления Х на Y
Odd (X) Возвращает булево True (истина), если Х — нечетное целое, и False (ложь) — в противном случае
Sqr (X) Возвращает целый квадрат Х (т.е. Х*Х)
Перечисляемый пользовательский тип – это один из типов, определяемых программистом, который задается перечислением тех значений, которые он может получать. Каждое значение именуется идентификатором и располагается в списке, в круглых скобках:
В общем виде объявление перечисляемого типа имеет вид:
Type имя типа = (имя1, имя2, …, имяN);

Согласно принятому в Delphi соглашению, имена типов должны начинаться с латинской буквы Т (от слова Туре-тип).

После объявления типа можно объявить переменную, относящуюся к этому типу в разделе Var.

Переменные любого перечисляемого типа можно объявлять и без предвари­тельного описания этого типа, например: Var TCol: (black, red, green);

Тип-диапазон (или интервальный тип). Это один из типов данных, определяе­мых программистом.

Интервальные типы описываются путем задания двух констант, определяющих границы допустимых для данных типов значений. Интервал можно задать только для порядкового типа, т.е. для любого простого типа, кроме вещественного. Формат описания интервального типа:
Type имя типа = константа1 … константа2;
Например:
Type Tdig1: = ‘0’..’9′;

Операции над порядковыми типами

Операция
Описание
Low (T)
Минимальное значение порядкового типа Т
High(T)
Максимальное значение порядкового типа Т
Ord(X)
Порядковый номер значения выражения порядкового типа. Для целого выражения — просто его значение. Для остальных порядковых типов Ord возвращает физическое представление результата выражения, трактуемое как целое число. Возвращаемое значение всегда принадлежит одному из целых типов
Pred(X)
Предыдущее по порядку значение. Для целых выражений эквивалентно Х-1
Succ(X)
Следующее по порядку значение. Для целых выражений эквивалентно Х+1
Dec(V)
Уменьшает значение переменной на 1. Эквивалентно V := Pred(V)
Inc(V)
Увеличивает значение переменной на 1. Эквивалентно V := Succ(V)
Вещественный тип. В Object Pascal определены следующие типы Real, Single, Double, Extended. Эти типы различаются между собой диапазоном допустимых значений и возмож­ным количеством цифр (точностью).

Функции действительных типов

Операция

Описание

Abs (x) Абсолютная величина х
АгсТаn(х) Арктангенс х
Cos (х) Косинус х (х выражается в радианах, а не в градусах)
Ехр (х) Экспоненциальная функция от х
Frac(x) Дробная часть х
Int (х) Целая часть х. Несмотря на название, возвращает действительное значение (с плавающей запятой), т.е. просто устанавливает нуль в дробной части
Ln (х) Натуральный логарифм от х
Pi Число Пи (3.1416…)
Round (х) Ближайшее к х целое значение. Возвращает значение целого типа. Условие «ближайшее к х» не работает, если верхнее и нижнее значения оказываются равноудаленными (например, если дробная часть точно равна 0,5). В этих случаях Delphi перекладывает решение на операционную систему. Обычно процессоры Intel решают эту задачу в соответствии с рекомендацией IEEE округлять в сторону ближайшего четного целого числа. Иногда такой подход называют «банкирским округлением»
Sin(x) Синус х
Sqr(x) Квадрат х, т.е. X*X
Sqrt (х) Квадратный корень от х
Тrunc (х) Целая часть х. В отличие от Int, возвращающей действительное значение, Trunc возвращает целое
Тип дата-время. Тип дата-время определяется идентификатором TdateTime и предназначен для одновременного хранения и даты, и времени. Во внутреннем представлении он за­нимает 8 байт и представляет собой вещественное число с фиксированной дробной частью: в целой части числа хранится дата, в дробной — время.

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

Функция

Назначение

Function Date: TdateTime; Возвращает текущую дату
Function

DateToStr(D: dateTime):String;

Преобразует дату в строку символов
Function DateTimeToStr(D:TdateTime):String; Преобразует дату и время в строку символов
Function Time: TdateTime; Возвращает текущее время
Function

TimeToStr(T:TDateTime): String;

Преобразует время в строку
Строки. Переменная строкового типа должна быть объявлена в разделе описания пере­менных:
Имя: String; или Имя: String[длина];

В тексте программы последовательность символов, являющаяся строкой, заклю­чается в ординарные кавычки.

К строкам можно применить операции =,<,>, <, >,<>. С помощью этих опера­ций переменную типа string можно сравнить с другой строковой переменной или строковой константой. Строки сравниваются посимвольно. Равными считаются строки, в которых все символы одинаковые, большей считается та строка, у кото­рой в одинаковых позициях стоит символ с большим кодом, например:
‘Иванов’ = ‘Иванов’; ‘петров’ > ‘Петров’; ‘Алексеев’ < ‘Петров’;
К строкам можно применять операцию «+» — сцепка, например:
StS: = ‘а’ + ‘b’;

Если длина сцепленной строки превысит максимально допустимую длину N, то «лишние » символы отбрасываются.

Встроенные строковые функ­ции и процедуры:

Функция / процедура

Описание

Function Concat(sl, s2, s3: String): String; Возвращает последовательное соединение строк. Эквивалентна оператору si + s2 + s3
Function Copy(s: String, pos, len: Integer): String; Возвращает подстроку длиной максимум len символов, начинающуюся в позиции pos строки s
Procedure Delete(s: String, pos, len: Integer); Удаляет максимум len символов из строки s, начиная с позиции pos
Procedure Insert(sourse:String, target, pos: Integer); Вставляет строку source в строковую переменную target, начиная с позиции pos
Function Length (s:String): Integer; Возвращает динамическую длину строки
Function Pos(substring, s: String): Integer; Возвращает место первого вхождения подстроки substring в строку s

Стандартные функции и процедуры преобразования строк в другие типы:

Функция, процедура

Описание

Functoin StrToDate(st: String): TdateTime; Преобразует символы строки в дату
Functoin StrToDateTime (st: String): TdateTime; Преобразует символы строки в дату и время
Functoin StrToFloat(st: Sting): Extended; Преобразует символы строки в вещественное число
Functoin StrToInt(st: String): Integer; Преобразует символы строки в в целое число
Functoin StrToInt(St: String; Default: Integer); Преобразует символы строки St в целое число. Если строка не содержит правильного представления целого числа, возвращается значение Default
Functoin StrToTime (st: String): TdateTime; Преобразует символы строки st во время. Строка должна содер­жать два-три числа, разделенных символом «:» (двоеточие)
Procedure Val(St: String; var x; Code: Integer; Преобразует строку символов во внутреннее представление целой или вещественной переменной X, которое определяется типом этой переменной

Стандартные функции и процедуры обратного преобразования:

Функция / процедура

Описание

Function DateToStr(Value: TDateTime): String; Преобразует дату из параметра Value в строку символов
Function DateTimeToStr (Value:TDateTime): String; Преобразует дату и время из параметра Value в строку символов
Procedure DateTimeToString(var St: String; Format: String; Value: TDateTime); Преобразует дату и время из параметра Value в строку St в соответствии со спецификаторами даты/времени параметра Format
Function FloatToStr(Value: Extended): String; Преобразует вещественное значение Value в строку символов
Function lntToStr(Value: Integer): String; Преобразует целое значение Value в строку символов
Function TimeToStr(Value: TDateTime):String; Преобразует время из параметра Value в строку символов
Procedure Str(X[: Width[: Decimals]]; var St:String); Преобразует число X любого вещественного или целого типа в строку символов St; параметры Width и Decimals, если они присутствуют, задают формат преобразования. (Width — ширина поля, Decimals — количество символов в дробной части)

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

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

Array [тип индексов] of <тип элементов>;

Например,
Type tm=array[1..10,1..10] of real;
Var
arr1, arr2:tm;
arr3:array[20..100] of char;
Динамический массив представляет собой массив, для которого при объявлении указывается только тип его элементов, а размер массива определяется при выполнении программы. Формат описания типа динамического массива:
Array of <тип элементов>;
Во время выполнения программы размер динамического массива задается процедурой SetLength, которая для динамического массива устанавливает новый размер. Например,
Var m:array of real;
SetLength(m,100);
For i:=0 to 99 do m[i]:=I;

Здесь после описания динамического массива определяется его размер, равный 100. Каждому элементу присваивается значение, равное номеру этого элемента в массиве.

Множество представляют собой совокупность элементов, выбранных из заранее определенного набора значений. Все элементы множества принадлежат одному порядковому типу, число элементов в множестве не может превышать 256. Значение множественного типа заключается в квадратные скобки.

Формат описания множественного типа:
Set of тип элементов;
Например:
Type Days=set of 1..31;
Var Dn1:Days;
Dn2: Set of (1,2,3);
Dn1:=[2];

Записи объединяют фиксированное число элементов данных других типов. Отдельные элементы записи имеют имена и называются полями. Имена полей должны быть уникальными в пределах записи.

Формат объявления записи:
Record
Поле1:тип;
Поле2:тип;
End;

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

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

Добавить комментарий