25. Типы и структуры данных
1. Простые типы
Типы и структуры данных – фундамент, на котором строится современная технология программирования. Любая константа, переменная, выражение и функция относится к некоторому типу, характеризующему множество значений, к которым относятся константы, которые могут принимать переменные и выражения и которые могут формировать функции.
Система типов данных в языке Турбо-Паскаль показана на рисунке.
Выделяются следующие категории типов.
Простые типы – определяют различные множества атомарных (неделимых) значений. Так, каждое значение типа Integer (целое число) есть объект, не распа-дающийся на отдельные компоненты (цифры).
Стандартные (встроенные) типы данных – типы, предопределенные в языке программирования. К ним относятся: • целые (ShortInt, Integer,LongInt, Byte, Word); • вещественные (Real, Single, Double, Exctended, Comp); • символьный (Char); • логический (Boolean).
Уточняемые (ограниченные) типы данных – предполагают возможность оп-ределения типа на основе встроенного типа данных, значения которого упорядо-чены.. Ограничение задается указанием диапазона (верхней и нижней границ): Type Int = 10 .. 100; Symb = ‘A’ .. ‘Z’;
Перечислимые типы – явно определяемые типы с конечным числом имено-ванных значений. Определяются программистом, который перечисляет значения и указывает имя типа: Type Color = (Red, Yellow, Green);
Составные (структурные) типы задают множества «сложных» значений. Ка-ждое значение из этого множества образует совокупность нескольких значений другого типа (других типов). Составные типы определяют некоторый способ об-разования новых типов из уже имеющихся.
Регулярные типы (массивы) – каждое значение состоит из фиксированного числа элементов одного и того же базового типа. Для определения регулярного типа необходимо задать две характеристики: • тип элементов массива; • количество и способ нумерования (тип индексов). Type Mas = array [1..8] of real; Var A: Mas;
Комбинированные типы (записи) – в отличие от массивов позволяют объеди-нять значения различных типов и поэтому являются наиболее гибкими механиз-мами построения данных. Type Str = record Fam: String [ 15]; B1, B2, B3, B4, B5: 2 .. 5; SB: real; End; Var Tbl: array [1 .. 25] of Str;
Множественные типы – значения строятся из нескольких значений одного (базового) типа. Но, в отличие от массивов и записей, значение множественного типа может содержать любое количество различных элементов базового типа (от 0 до всех возможных значений). Type Integ = set of 1 .. 30; Var A: Integ;
Строковый тип – обобщает понятие символьных массивов. Строки называют-ся динамическими, поскольку могут иметь различные длины в пределах объяв-ленных границ. Var S: String [32];
Файловые типы – используются для объявления специальных переменных, считающихся представителями файлов в программе. Type My_file = file of char; Var F1, F2: My_file;
Процедурные типы – применяются для организации передачи в качестве фак-тических параметров процедур и функций. Существует два процедурных типа: •тип процедуры; •тип функции. Type Proc1 = procedure (a, b, c: real; var d: real); Func1 = function (s: string): real; Var p: Proc1; f: Func1;
Ссылочные типы данных и динамические переменные позволяют реализовать динамические структуры данных. Динамическими структурами данных считают-ся такие, размер которых в процессе работы программы заранее неизвестен или изменяется и для которых место в памяти отводится во время выполнения про-граммы.