Любые данные, т.е. константы, переменные, свойства, значения функции или выражения, в Object Pascal характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти ПК. Выделяют две группы типов:
– простые (порядковые, вещественные типы и тип дата-время);
– структурированные (строки, массивы, записи, файлы, классы).
Порядковые типы. Делятся на стандартные (целые числа – Integer, Byte, Word, Longint, логические данные – Boolean, символы – Char) и пользовательские (перечисляемый пользовательский тип и тип-диапазон).
Некоторые операции над целыми числами
Перечисляемый пользовательский тип – это один из типов, определяемых программистом, который задается перечислением тех значений, которые он может получать. Каждое значение именуется идентификатором и располагается в списке, в круглых скобках:
В общем виде объявление перечисляемого типа имеет вид:
Type имя типа = (имя1, имя2, …, имяN);
Согласно принятому в Delphi соглашению, имена типов должны начинаться с латинской буквы Т (от слова Туре-тип). После объявления типа можно объявить переменную, относящуюся к этому типу в разделе Var. Переменные любого перечисляемого типа можно объявлять и без предварительного описания этого типа, например: Var TCol: (black, red, green); Тип-диапазон (или интервальный тип). Это один из типов данных, определяемых программистом. Интервальные типы описываются путем задания двух констант, определяющих границы допустимых для данных типов значений. Интервал можно задать только для порядкового типа, т.е. для любого простого типа, кроме вещественного. Формат описания интервального типа:
Type имя типа = константа1 … константа2;
Например:
Type Tdig1: = ‘0’..’9′;
Операции над порядковыми типами
Вещественный тип. В Object Pascal определены следующие типы Real, Single, Double, Extended. Эти типы различаются между собой диапазоном допустимых значений и возможным количеством цифр (точностью).
Функции действительных типов
Тип дата-время. Тип дата-время определяется идентификатором TdateTime и предназначен для одновременного хранения и даты, и времени. Во внутреннем представлении он занимает 8 байт и представляет собой вещественное число с фиксированной дробной частью: в целой части числа хранится дата, в дробной — время.
Для работы с датой и временем используются следующие функции:
Строки. Переменная строкового типа должна быть объявлена в разделе описания переменных:
Имя: String; или Имя: String[длина];
В тексте программы последовательность символов, являющаяся строкой, заключается в ординарные кавычки. К строкам можно применить операции =,<,>, <, >,<>. С помощью этих операций переменную типа string можно сравнить с другой строковой переменной или строковой константой. Строки сравниваются посимвольно. Равными считаются строки, в которых все символы одинаковые, большей считается та строка, у которой в одинаковых позициях стоит символ с большим кодом, например:
‘Иванов’ = ‘Иванов’; ‘петров’ > ‘Петров’; ‘Алексеев’ < ‘Петров’;
К строкам можно применять операцию «+» — сцепка, например:
StS: = ‘а’ + ‘b’;
Если длина сцепленной строки превысит максимально допустимую длину N, то «лишние » символы отбрасываются. Встроенные строковые функции и процедуры:
Стандартные функции и процедуры преобразования строк в другие типы:
Стандартные функции и процедуры обратного преобразования:
Массивом называется упорядоченная индексированная совокупность однотипных элементов, имеющих общее имя. Таким образом, каждый элемент массива однозначно определяется именем массива и индексом (номером этого элемента в массиве) или индексами, если массив многомерный. Для обращения к отдельному элементу массива указываются имя этого массива и индекс (индексы) элемента, заключенный в квадратные скобки. Различают массивы статические и динамические. Статический массив представляет собой массив, границы индексов и, соответственно, размеры которого задаются при объявлении, т.е. они известны еще до компиляции программы. Формат описания типа статистического массива: 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;
Для обращения к конкретному полю необходимо указывать имя записи и имя поля, разделенные точкой. Файл представляет собой именованную последовательность однотипных элементов, размещенных на внешнем устройстве. Для выполнения операций с конкретным файлом в программе обычно используется так называемая файловая переменная или логический файл. В зависимости от типа элементов различают текстовые, типизированные и нетипизированные файлы. |