ТИПЫ ДАННЫХ
• ПРОСТЫЕ ТИПЫ 1. ПОРЯДКОВЫЕ ТИПЫ 2. ВЕЩЕСТВЕННЫЕ ТИПЫ • СТРУКТУРИРОВАННЫЕ ТИПЫ 1. МАССИВЫ 2. ЗАПИСИ 3. МНОЖЕСТВА • СТРОКИ • СОВМЕСТИМОСТЬ И ПРЕОБРАЗОВАНИЕ ТИПОВ
• ЛЮБЫЕ ДАННЫЕ, Т. Е. КОНСТАНТЫ, ПЕРЕМЕННЫЕ, ЗНАЧЕНИЯ ФУНКЦИЙ ИЛИ ВЫРАЖЕНИЯ, В ТУРБО ПАСКАЛЕ ХАРАКТЕРИЗУЮТСЯ СВОИМИ ТИПАМИ. ТИП ОПРЕДЕЛЯЕТ МНОЖЕСТВО ДОПУСТИМЫХ ЗНАЧЕНИЙ, КОТОРЫЕ МОЖЕТ ИМЕТЬ ТОТ ИЛИ ИНОЙ ОБЪЕКТ, А ТАКЖЕ МНОЖЕСТВО ДОПУСТИМЫХ ОПЕРАЦИЙ, КОТОРЫЕ ПРИМЕНИМЫ К НЕМУ. РОМЕ ТОГО, К ТИП ОПРЕДЕЛЯЕТ ТАКЖЕ И ФОРМАТ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ ДАННЫХ В ПАМЯТИ ПК.
ПРОСТЫЕ ТИПЫ • К ПРОСТЫМ ТИПАМ ОТНОСЯТСЯ ПОРЯДКОВЫЕ И ВЕЩЕСТВЕННЫЕ ТИПЫ. ПОРЯДКОВЫЕ ТИПЫ ОТЛИЧАЮТСЯ ТЕМ, ЧТО КАЖДЫЙ ИЗ НИХ ИМЕЕТ КОНЕЧНОЕ ЧИСЛО ВОЗМОЖНЫХ ЗНАЧЕНИЙ. ЭТИ ЗНАЧЕНИЯ МОЖНО ОПРЕДЕЛЕННЫМ ОБРАЗОМ УПОРЯДОЧИТЬ (ОТСЮДА -НАЗВАНИЕ ТИПОВ) И, СЛЕДОВАТЕЛЬНО, С КАЖДЫМ ИЗ НИХ МОЖНО СОПОСТАВИТЬ НЕКОТОРОЕ ЦЕЛОЕ ЧИСЛО - ПОРЯДКОВЫЙ НОМЕР ЗНАЧЕНИЯ. • ВЕЩЕСТВЕННЫЕ ТИПЫ, СТРОГО ГОВОРЯ, ТОЖЕ ИМЕЮТ КОНЕЧНОЕ ЧИСЛО ЗНАЧЕНИЙ, КОТОРОЕ ОПРЕДЕЛЯЕТСЯ ФОРМАТОМ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ ВЕЩЕСТВЕННОГО ЧИСЛА. ОДНАКО КОЛИЧЕСТВО ВОЗМОЖНЫХ ЗНАЧЕНИЙ ВЕЩЕСТВЕННЫХ ТИПОВ НАСТОЛЬКО ВЕЛИКО, ЧТО СОПОСТАВИТЬ С КАЖДЫМ ИЗ НИХ ЦЕЛОЕ ЧИСЛО (ЕГО НОМЕР) НЕ ПРЕДСТАВЛЯЕТСЯ ВОЗМОЖНЫМ.
ПОРЯДКОВЫЕ ТИПЫ • К ПОРЯДКОВЫМ ТИПАМ ОТНОСЯТСЯ: ЦЕЛЫЕ, ЛОГИЧЕСКИЙ, СИМВОЛЬНЫЙ, ПЕРЕЧИСЛЯЕМЫЙ И ТИП-ДИАПАЗОН. К ЛЮБОМУ ИЗ НИХ ПРИМЕНИМА ФУНКЦИЯ ORD(X), КОТОРАЯ ВОЗВРАЩАЕТ ПОРЯДКОВЫЙ НОМЕР ЗНАЧЕНИЯ ВЫРАЖЕНИЯ X. ДЛЯ ЦЕЛЫХ ТИПОВ ФУНКЦИЯ ORD(X) ВОЗВРАЩАЕТ САМО ЗНАЧЕНИЕ X, Т. Е. ORD(X) = X ДЛЯ X, ПРИНАДЛЕЖАЩЕГО ЛЮБОМУ ШЕЛОМУ ТИПУ. ПРИМЕНЕНИЕ ORD(X) К ЛОГИЧЕСКОМУ, СИМВОЛЬНОМУ И ПЕРЕЧИСЛЯЕМОМУ ТИПАМ ДАЕТ ПОЛОЖИТЕЛЬНОЕ ЦЕЛОЕ ЧИСЛО В ДИАПАЗОНЕ ОТ 0 ДО 1 (ЛОГИЧЕСКИЙ ТИП), ОТ 0 ДО 155 (СИМВОЛЬНЫЙ), ОТ 0 ДО 65535 (ПЕРЕЧИСЛЯЕМЫЙ). ТИП-ДИАПАЗОН СОХРАНЯЕТ ВСЕ СВОЙСТВА БАЗОВОГО ПОРЯДКОВОГО ТИПА, ПОЭТОМУ РЕЗУЛЬТАТ ПРИМЕНЕНИЯ К НЕМУ ФУНКЦИИ ORD(X) ЗАВИСИТ ОТ СВОЙСТВ ЭТОГО ТИПА.
К ПОРЯДКОВЫМ ТИПАМ МОЖНО ТАКЖЕ ПРИМЕНЯТЬ ФУНКЦИИ: PRED (X) - ВОЗВРАЩАЕТ ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ ПОРЯДКОВОГО ТИПА (ЗНАЧЕНИЕ, КОТОРОЕ СООТВЕТСТВУЕТ ПОРЯДКОВОМУ НОМЕРУ ORD(X)- 1), Т. Е. ORD(PRED(X)) = ORD(X) - 1; SUCC (X) - ВОЗВРАЩАЕТ СЛЕДУЮЩЕЕ ЗНАЧЕНИЕ ПОРЯДКОВОГО ТИПА, КОТОРОЕ СООТВЕТСТВУЕТ ПОРЯДКОВОМУ НОМЕРУ ORD(X) +1, Т. Е. ORD(SUCC(X)) = ORD(X) + 1. НАПРИМЕР, ЕСЛИ В ПРОГРАММЕ ОПРЕДЕЛЕНА ПЕРЕМЕННАЯ VAR С : CHAR; BEGIN С : = '5' ; END. ТО ФУНКЦИЯ PRED(C) ВЕРНЕТ ЗНАЧЕНИЕ '4', А ФУНКЦИЯ SUCC(C) - ЗНАЧЕНИЕ '6'.
Стандартные процедуры и функции, применимые к целым типам Обращение Тип результата abs (x) x chr(b) Char Действие Возвращает модуль х Возвращает символ по его коду - Уменьшает значение vx на i, а при отсутствии i -на 1 inc(vx[, i] ) - Увеличивает значение vx на i, а при отсутствии i на 1 Hi(i) Byte Hi(w) To же Lo(i) " Возвращает младший байт аргумента Lo (w) " То же odd(l) Boolean dec (vx[, i] ) Random (w) Как у параметра sgr (x) X swap ( i ) Integer Возвращает старший байт аргумента То же Возвращает True, если аргумент - нечетное число Возвращает псевдослучайное число, равномерно распределенное в диапазоне 0. . . (w-l) Возвращает квадрат аргумента Меняет местами байты в слове
ЦЕЛЫЕ ТИПЫ. ДИАПАЗОН ВОЗМОЖНЫХ ЗНАЧЕНИЙ ЦЕЛЫХ ТИПОВ ЗАВИСИТ ОТ ИХ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ, КОТОРОЕ МОЖЕТ ЗАНИМАТЬ ОДИН, ДВА ИЛИ ЧЕТЫРЕ БАЙТА. В ТАБЛИЦЕ ПРИВОДИТСЯ НАЗВАНИЕ ЦЕЛЫХ ТИПОВ, ДЛИНА ИХ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ В БАЙТАХ И ДИАПАЗОН ВОЗМОЖНЫХ ЗНАЧЕНИЙ. Целые типы Название Длина, байт Диапазон значений Byte 1 0. . . 255 Short. Int 1 -128. . . +127 Word 2 0. . . 65535 Integer 2 -32768. . . +32767 Long. Int 4 -2 147 483 648. . . +2 147 483 647
ВЕЩЕСТВЕННЫЕ ТИПЫ В ОТЛИЧИЕ ОТ ПОРЯДКОВЫХ ТИПОВ, ЗНАЧЕНИЯ КОТОРЫХ ВСЕГДА СОПОСТАВЛЯЮТСЯ С РЯДОМ ЦЕЛЫХ ЧИСЕЛ И, СЛЕДОВАТЕЛЬНО, ПРЕДСТАВЛЯЮТСЯ В ПК АБСОЛЮТНО ТОЧНО, ЗНАЧЕНИЯ ВЕЩЕСТВЕННЫХ ТИПОВ ОПРЕДЕЛЯЮТ ПРОИЗВОЛЬНОЕ ЧИСЛО ЛИШЬ С НЕКОТОРОЙ КОНЕЧНОЙ ТОЧНОСТЬЮ, ЗАВИСЯЩЕЙ ОТ ВНУТРЕННЕГО ФОРМАТА ВЕЩЕСТВЕННОГО ЧИСЛА. Диапазон десятичного порядка Длина, байт Название Количество значащих цифр 6 Real 11. . . 12 -39. . . +38 8 Double 15. . . 16 -324. . . +308 10 extended 19. . . 20 -4951. . . +4932 8 comp 19. . . 20 -2*1063+1. . . +2*63 -1
Стандартные математические функции Турбо Паскаля Обращение Тип параметра Тип результата abs (x) Real, Integer Тип аргумента Аrс. Таn (х) Real cos (х) To же То же ехр (х) " " Экспонента frас (х) " " Дробная часть числа int(x) " " Целая часть числа ln(x) " " Логарифм натуральный Pi - " п = 3. 141592653. . . " Псевдослучайное число, равномерно распределенное в диапазоне 0. . . [1] Псевдослучайное целое число, равномерно распределенное в диапазоне 0. . . (х-1) Random - Примечание Модуль аргумента Арктангенс ( значение в радианах) Косинус, угол в радианах Pandom(x) Integer Randomize - - Инициация генератора псевдослучайных чисел sin(x) Real Синус, угол в радианах sqr (x) To же То же Квадрат аргумента sqrt (x) " " Корень квадратный
СТРУКТУРИРОВАННЫЕ ТИПЫ • ЛЮБОЙ ИЗ СТРУКТУРИРОВАННЫХ ТИПОВ (А ВТУРБО ПАСКАЛЕ ИХ ЧЕТЫРЕ: МАССИВЫ, ЗАПИCИ, МНОЖЕСТВА И ФАЙЛЫ) ХАРАКТЕРИЗУЕТСЯ МНОЖЕСТВЕННОСТЬЮ ОБРАЗУЮЩИХ ЭТОТ ТИП ЭЛЕМЕНТОВ, Т. Е. ПЕРЕМЕННАЯ ИЛИ КОНСТАНТА СТРУКТУРИРОВАННОГО ТИПА ВСЕГДА ИМЕЕТ НЕCКОЛЬКО КОМПОНЕНТОВ. КАЖДЫЙ КОМПОНЕНТ, В СВОЮ ОЧЕРЕДЬ, МОЖЕТ ПРИНАДЛЕЖАТЬ CТРУКТУРИРОВАННОМУ ТИПУ, ЧТО ПОЗВОЛЯЕТ ГОВОРИТЬ О ВОЗМОЖНОЙ ВЛОЖЕННОСТИ ТИПОВ. В ТУРБО ПАСКАЛЕ ДОПУСКАЕТСЯ ПРОИЗВОЛЬНАЯ ГЛУБИНА ВЛОЖЕННОСТИ ТИПОВ, ОДНАКО СУММАРНАЯ ДЛИНА ЛЮБОГО ИЗ НИХ ВО ВНУТРЕННЕМ ПРЕДСТАВЛЕНИИ НЕ ДОЛЖНА ПРЕВЫШАТЬ -5520 БАЙТ. • В ЦЕЛЯХ СОВМЕСТИМОСТИ СО СТАНДАРТНЫМ ПАСКАЛЕМ В ТУРБО ПАСКАЛЕ РАЗРЕШАЕТСЯ ПЕРЕД ОПИСАНИЕМ СТРУКТУРИРОВАННОГО ТИПА СТАВИТЬ ЗАРЕЗЕРВИРОВАННОЕ СЛОВО PACKED, ПРЕДПИСЫВАЮЩЕЕ КОМПИЛЯТОРУ, ПО ВОЗМОЖНОСТИ, ЭКОНОМИТЬ ПАМЯТЬ, ОТВОДИМУЮ ПОД ОБЪЕКТЫ СТРУКТУРИРОВАННОГО ТИПА; НО КОМПИЛЯТОР ФАКТИЧЕСКИ ИГНОРИРУЕТ ЭТО УКАЗАНИЕ: «УПАКОВКА» ДАННЫХ В УРБО ПАСКАЛЕ ОСУЩЕСТВЛЯЕТСЯ Т АВТОМАТИЧЕСКИ ВЕЗДЕ, ГДЕ ЭТО ВОЗМОЖНО.
МАССИВЫ • МАССИВЫ В ТУРБО ПАСКАЛЕ ВО МНОГОМ СХОЖИ С АНАЛОГИЧНЫМИ ТИПАМИ ДАННЫХ В ДРУГИХ ЯЗЫКАХ ПРОГРАММИРОВАНИЯ. ОТЛИЧИТЕЛЬНАЯ ОСОБЕННОСТЬ МАССИВОВ ЗАКЛЮЧАЕТСЯ В ТОМ, ЧТО ВСЕ ИХ КОМПОНЕНТЫ СУТЬ ДАННЫЕ ОДНОГО ТИПА (ВОЗМОЖНО, СТРУКТУРИРОВАННОГО). ЭТИ КОМПОНЕНТЫ МОЖНО ЛЕГКО УПОРЯДОЧИТЬ И ОБЕСПЕЧИТЬ ДОСТУП К ЛЮБОМУ ИЗ НИХ ПРОСТЫМ УКАЗАНИЕМ ЕГО ПОРЯДКОВОГО НОМЕРА, НАПРИМЕР:
TYPE DIGIT =ARRAY[0. . 9] OF HAR ; C MATRIX =ARRAY[ YTE] OF SINGLE; B VAR M : MATRIX; D : DIGIT; I : INTEGER; BEGIN . . . . M[17] . . . . END. : = ORD(D[I-L])/10 ;
ОПИСАНИЕ ТИПА МАССИВА ЗАДАЕТСЯ СЛЕДУЮЩИМ ОБРАЗОМ: <ИМЯ ТИПА> =ARRAY [ <СП. ИНД. ТИПОВ> ] OF <ТИП > ЗДЕСЬ <ИМЯ ТИПА> - ПРАВИЛЬНЫЙ ИДЕНТИФИКАТОР ; ARRAY, OF - ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА (МАССИВ, ИЗ ); <СП. ТД. ТИПОВ> - СПИСОК ИЗ ОДНОГО ИЛИ НЕСКОЛЬКИХ ИНДЕКСНЫХ ТИПОВ, РАЗДЕЛЕННЫХ ЗАПЯТЫМИ; КВАДРАТНЫЕ СКОБКИ, ОБРАМЛЯЮЩИЕ СПИСОК, - ТРЕБОВАНИЕ СИНТАКСИСА ; <ТИП> - ЛЮБОЙ ТИП ТУРБО ПАСКАЛЯ. В КАЧЕСТВЕ ИНДЕКСНЫХ ТИПОВ В ТУРБО ПАСКАЛЕ МОЖНО ИСПОЛЬЗОВАТЬ ЛЮБЫЕ ПОРЯДКОВЫЕ ТИПЫ, КРОМЕ LONGINT И ТИПОВ-ДИАПАЗОНОВ С БАЗОВЫМ ТИПОМ LONGINT. ОПРЕДЕЛИТЬ ПЕРЕМЕННУЮ КАК МАССИВ МОЖНО И НЕПОСРЕДСТВЕННО ПРИ ОПИСАНИИ ЭТОЙ ПЕРЕМЕННОЙ, БЕЗ ПРЕДВАРИТЕЛЬНОГО ОПИСАНИЯ ТИПА МАССИВА, НАПРИМЕР : VAR А, B : ARRAY [1. . 10] OFEAL; R
Обычно в качестве индексного типа используется тип-диапазон, в котором задаются границы изменения индексов. Так как тип <тип>, идущий за словом OF, - любой тип Турбо Паскаля, то он может быть, в частности, и другим массивом, например: type mat = array [0. . 5] of array [-2. . 2] of array [Char] of Byte; Такую запись можно заменить более компактной: type mat = array [0. . 5, -2. . 2, Char] of Byte;
ГЛУБИНА ВЛОЖЕННОСТИ СТРУКТУРИРОВАННЫХ ТИПОВ ВООБЩЕ, А СЛЕДОВАТЕЛЬНО, И МАССИВОВ ПРОИЗВОЛЬНАЯ, ПОЭТОМУ КОЛИЧЕСТВО ЭЛЕМЕНТОВ В СПИСКЕ ИНДЕКСНЫХ ТИПОВ (РАЗМЕРНОСТЬ МАССИВА) НЕ ОГРАНИЧЕНО, ОДНАКО СУММАРНАЯ ДЛИНА ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ ЛЮБОГО МАССИВА, КАК УЖЕ ГОВОРИЛОСЬ, НЕ МОЖЕТ БЫТЬ БОЛЬШЕ 65520 БАЙТ. ПАМЯТИ ПК ЭЛЕМЕНТЫ В МАССИВА СЛЕДУЮТ ДРУГ ЗА ДРУГОМ ТАК, ЧТО ПРИ ПЕРЕХОДЕ ОТ МЛАДШИХ АДРЕСОВ К СТАРШИМ НАИБОЛЕЕ БЫСТРО МЕНЯЕТСЯ САМЫЙ ПРАВЫЙ ИНДЕКС МАССИВА. ЕСЛИ, НАПРИМЕР, VAR А : ARRAY[1. . 2, 1. . 2] OF ; BYTE BEGIN A [1, 1]: =1; A [2, 1]: =2; A [L, A 2]: =3; [2, 2]: =4; END. ТО В ПАМЯТИ ПОСЛЕДОВАТЕЛЬНО ДРУГ ЗА ДРУГОМ БУДУТ РАСПОЛОЖЕНЫ БАЙТЫ СО ЗНАЧЕНИЯМИ 1, 3, 2, . ЭТО ОБСТОЯТЕЛЬСТВО МОЖЕТ ОКАЗАТЬСЯ ВАЖНЫМ ПРИ ИСПОЛЬЗОВАНИИ СТАНДАРТНОЙ ПРОЦЕДУРЫ КОПИРОВАНИЯ ПАМЯТИ MOVE. 4
В ТУРБО ПАСКАЛЕ МОЖНО ОДНИМ ОПЕРАТОРОМ ПРИСВАИВАНИЯ ПЕРЕДАТЬ ВСЕ ЭЛЕМЕНТЫ ОДНОГО МАССИВА ДРУГОМУ МАССИВУ ТОГО ЖЕ ТИПА, НАПРИМЕР : VAR А, B: ARRAY [1. . 5] OF INGLE; S BEGIN . . . A : = B ; . . . END. ПОСЛЕ ЭТОГО ПРИСВАИВАНИЯ ВСЕ ПЯТЬ ЭЛЕМЕНТОВ МАССИВАА ПОЛУЧАТ ТЕ ЖЕ ЗНАЧЕНИЯ, ЧТО И В МАССИВЕ ОПЕРАЦИИ ОТНОШЕНИЯ. НЕЛЬЗЯ, НАПРИМЕР, ЗАПИСАТЬ IF A = B THEN. . . СРАВНИТЬ ДВА МАССИВА МОЖНО ПОЭЛЕМЕНТНО, НАПРИМЕР : VAR A, B: ARRAY [1. . 5] OF INGLE; S EQ: BOOLEAN; I: BYTE; BEGIN . . . EQ : =TRUE; FOR I : = 1 TO 5 DO IF A[I] EQ <> B[ITHEN ] : =FALSE; IF EQ THEN . . . END. В. ОДНАКО НАД МАССИВАМИ НЕ ОПРЕДЕЛЕНЫ
ЗАПИСИ • ЗАПИСЬ - ЭТО СТРУКТУРА ДАННЫХ, СОСТОЯЩАЯ ИЗ ФИКСИРОВАННОГО ЧИСЛА КОМПОНЕНТОВ, НАЗЫВАЕМЫХ ПОЛЯМИ ЗАПИСИ. В ОТЛИЧИЕ ОТ МАССИВА, КОМПОНЕНТЫ (ПОЛЯ) ЗАПИСИ МОГУТ БЫТЬ РАЗЛИЧНОГО ТИПА. ТОБЫ МОЖНО БЫЛО Ч ССЫЛАТЬСЯ НА ТОТ ИЛИ ИНОЙ КОМПОНЕНТ ЗАПИСИ, ПОЛЯ ИМЕНУЮТСЯ.
СТРУКТУРА ОБЪЯВЛЕНИЯ ТИПА ЗАПИСИ ТАКОВА: <ИМЯ ТИПА> = RECORD <СП. ПОЛЕЙ> END ЗДЕСЬ <ИМЯ ТИПА> - ПРАВИЛЬНЫЙ ИДЕНТИФИКАТОР; RECORD, END - ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА (ЗАПИСЬ, КОНЕЦ); <СП. ПОЛЕЙ> СПИСОК ПОЛЕЙ; ПРЕДСТАВЛЯЕТ СОБОЙ ПОСЛЕДОВАТЕЛЬНОСТЬ РАЗДЕЛОВ ЗАПИСИ, МЕЖДУ КОТОРЫМИ СТАВИТСЯ ТОЧКА С ЗАПЯТОЙ.
КАЖДЫЙ РАЗДЕЛ ЗАПИСИ СОСТОИТ ИЗ ОДНОГО ИЛИ НЕСКОЛЬКИХ ИДЕНТИФИКАТОРОВ ПОЛЕЙ, ОТДЕЛЯЕМЫХ ДРУГ ОТ ДРУГА ЗАПЯТЫМИ. ЗА ИДЕНТИФИКАТОРОМ (ИДЕНТИФИКАТОРАМИ) СТАВИТСЯ ДВОЕТОЧИЕ И ОПИСАНИЕ ТИПА ПОЛЯ (ПОЛЕЙ), НАПРИМЕР: TYPE BIRTHDAY = RECORD DAY, MONTH YEAR : BYTE; : WORD END; VAR A, B : BIRTHDAY; . . . . В ЭТОМ ПРИМЕРЕ ТИП BIRTHDAY (ДЕНЬ РОЖДЕНИЯ) ЕСТЬ ЗАПИСЬ С ПОЛЯМИ DAY, MONTH И YEAR (ДЕНЬ, МЕСЯЦ И ГОД); ПЕРЕМЕННЫЕ А И В СОДЕРЖАТ ЗАПИСИ ТИПА BIRTHDAY.
КАК И В МАССИВЕ, ЗНАЧЕНИЯ ПЕРЕМЕННЫХ ТИПА ЗАПИСИ МОЖНО ПРИСВАИВАТЬ ДРУГИМ ПЕРЕМЕННЫМ ТОГО ЖЕ ТИПА, НАПРИМЕР А : = B ; К КАЖДОМУ ИЗ КОМПОНЕНТОВ ЗАПИСИ МОЖНО ПОЛУЧИТЬ ДОСТУП, ЕСЛИ ИСПОЛЬЗОВАТЬ СОСТАВНОЕ ИМЯ, Т. Е. УКАЗАТЬ ИМЯ ПЕРЕМЕННОЙ, ЗАТЕМ ТОЧКУ И ИМЯ ПОЛЯ : А. DAY : = 27; B. YEAR : = 1939 ; ДЛЯ ВЛОЖЕННЫХ ПОЛЕЙ ПРИХОДИТСЯ ПРОДОЛЖАТЬ УТОЧНЕНИЯ : TYPE BIRTHDAY = RECORD DAY, MONTH: BYTE; YEAR : WORD END; VAR С : RECORD NAME BD : STRING; : BIRTHDAY END; BEGIN . . . IF C. BD. YEAR END. = 1939 THEN. . .
МНОЖЕСТВА • МНОЖЕСТВА - ЭТО НАБОРЫ ОДНОТИПНЫХ ЛОГИЧЕСКИ СВЯЗАННЫХ ДРУГ С ДРУГОМ ОБЪЕКТОВ. ХАРАКТЕР СВЯЗЕЙ МЕЖДУ ОБЪЕКТАМИ ЛИШЬ ПОДРАЗУМЕВАЕТСЯ ПРОГРАММИСТОМ И НИКАК НЕ КОНТРОЛИРУЕТСЯ ТУРБО ПАСКАЛЕМ. КОЛИЧЕСТВО ЭЛЕМЕНТОВ, ВХОДЯЩИХ В МНОЖЕСТВО, МОЖЕТ МЕНЯТЬСЯ В ПРЕДЕЛАХ ОТ 0 ДО 256 (МНОЖЕСТВО, НЕ СОДЕРЖАЩЕЕ ЭЛЕМЕНТОВ, НАЗЫВАЕТСЯ ПУСТЫМ). ИМЕННО НЕПОСТОЯНСТВОМ КОЛИЧЕСТВА СВОИХ ЭЛЕМЕНТОВ МНОЖЕСТВА ОТЛИЧАЮТСЯ ОТ МАССИВОВ И ЗАПИСЕЙ. • ДВА МНОЖЕСТВА СЧИТАЮТСЯ ЭКВИВАЛЕНТНЫМИ ТОГДА И ТОЛЬКО ТОГДА, КОГДА ВСЕ ИХ ЭЛЕМЕНТЫ ОДИНАКОВЫ, ПРИЧЕМ ПОРЯДОК СЛЕДОВАНИЯ ЭЛЕМЕНТОВ В МНОЖЕСТВЕ БЕЗРАЗЛИЧЕН. ЕСЛИ ВСЕ ЭЛЕМЕНТЫ ОДНОГО МНОЖЕСТВА ВХОДЯТ ТАКЖЕ И В ДРУГОЕ, ГОВОРЯТ О ВКЛЮЧЕНИИ ПЕРВОГО МНОЖЕСТВА ВО ВТОРОЕ. ПУСТОЕ МНОЖЕСТВО ВКЛЮЧАЕТСЯ В ЛЮБОЕ ДРУГОЕ.
ПРИМЕР ОПРЕДЕЛЕНИЯ И ЗАДАНИЯ МНОЖЕСТВ : TYPE DIGITCHAR= SET OF DIGIT '0'. . '9 '; = SET OF 0. . 9; VAR SL, S 2, S 3 : DIGIT HAR; C S 4, S 5, S 6 : DIGIT ; BEGIN . . . S 1: =['1', '2', '3 ']; S 2: =['3', '2', '1 ']; S 3: =['2', '3 ']; S 4: =[0. . 3, 6 ]; S 5: =[4, 5 ]; S 6: =[3. . 9 ]; . . . END. В ЭТОМ ПРИМЕРЕ МНОЖЕСТВА S 1 И S 2 ЭКВИВАЛЕНТНЫ, А МНОЖЕСТВО S 3 ВКЛЮЧЕНО В S 2 , НО НЕ ЭКВИВАЛЕНТНО ЕМУ ОПИСАНИЕ ТИПА МНОЖЕСТВА ИМЕЕТ ВИД : <ИМЯ ТИПА> = SET OF <БАЗ. ТИП > ЗДЕСЬ <ИМЯ ТИПА> - ПРАВИЛЬНЫЙ ИДЕНТИФИКАТОР ; SET, OF - ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА (МНОЖЕСТВО, ИЗ ); <БАЗ. ТИП> - БАЗОВЫЙ ТИП ЭЛЕМЕНТОВ МНОЖЕСТВА, В КАЧЕСТВЕ КОТОРОГО ИСПОЛЬЗОВАТЬСЯ ЛЮБОЙ ПОРЯДКОВЫЙ ТИП, КРОМЕWORD, INTEGER, LONGINT. МОЖЕТ .
СТРОКИ • ТИП STRING (СТРОКА) В ТУРБО ПАСКАЛЕ ШИРОКО ИСПОЛЬЗУЕТСЯ ДЛЯ ОБРАБОТКИ ТЕКСТОВ. ОН ВО МНОГОМ ПОХОЖ НА ОДНОМЕРНЫЙ МАССИВ СИМВОЛОВARRAY[O. . N] OF CHAR, ОДНАКО, В ОТЛИЧИЕ ОТ ПОСЛЕДНЕГО, КОЛИЧЕСТВО СИМВОЛОВ В СТРОКЕ-ПЕРЕМЕННОЙ МОЖЕТ МЕНЯТЬСЯ ОТ 0 ДО N, ГДЕ N - МАКСИМАЛЬНОЕ КОЛИЧЕСТВО СИМВОЛОВ В СТРОКЕ. ЗНАЧЕНИЕ N ОПРЕДЕЛЯЕТСЯ ОБЪЯВЛЕНИЕМ ТИПА STRING [N] И МОЖЕТ БЫТЬ ЛЮБОЙ КОНСТАНТОЙ ПОРЯДКОВОГО ТИПА, НО НЕ БОЛЬШЕ 255. УРБО ПАСКАЛЬ РАЗРЕШАЕТ НЕ УКАЗЫВАТЬ N, В ЭТОМ СЛУЧАЕ ДЛИНА СТРОКИ Т ПРИНИМАЕТСЯ МАКСИМАЛЬНО ВОЗМОЖНОЙ, А ИМЕННОN=255. СТРОКА В ТУРБО ПАСКАЛЕ ТРАКТУЕТСЯ КАК ЦЕПОЧКА СИМВОЛОВ. К ЛЮБОМУ СИМВОЛУ В СТРОКЕ МОЖНО ОБРАТИТЬСЯ ТОЧНО ТАК ЖЕ, КАК К ЭЛЕМЕНТУ ОДНОМЕРНОГО МАССИВА ARRAY [0. . N] OF CHAR, НАПРИМЕР: VAR ST : STRING; BEGIN . . . IF ST[5] END. =A' THEN. . . '
СОВМЕСТИМОСТЬ И ПРЕОБРАЗОВАНИЕ ТИПОВ • ТУРБО ПАСКАЛЬ - ЭТО ТИПИЗИРОВАННЫЙ ЯЗЫК. ОН ПОСТРОЕН НА ОСНОВЕ СТРОГОГО СОБЛЮДЕНИЯ КОНЦЕПЦИИ ТИПОВ, В СООТВЕТСТВИИ С КОТОРОЙ ВСЕ ПРИМЕНЯЕМЫЕ В ЯЗЫКЕ ОПЕРАЦИИ ОПРЕДЕЛЕНЫ ТОЛЬКО НАД ОПЕРАНДАМИ СОВМЕСТИМЫХ ТИПОВ. РИ П ОБСУЖДЕНИИ ОПЕРАЦИЙ НАД ВЕЩЕСТВЕННЫМИ ДАННЫМИ МЫ УЖЕ ЗАТРАГИВАЛИ ПРОБЛЕМУ СОВМЕСТИМОСТИ ВЕЩЕСТВЕННЫХ И ЦЕЛЫХ ТИПОВ. АНАЛОГИЧНЫЕ ПРОБЛЕМЫ ВОЗНИКАЮТ ПРИ ОПЕРАЦИЯХ НАД СТРОКАМИ РАЗНОЙ ДЛИНЫ, СТРОКАМИ И СИМВОЛАМИ И Т. Д. НИЖЕ ПРИВОДИТСЯ БОЛЕЕ ПОЛНОЕ ОПРЕДЕЛЕНИЕ СОВМЕСТИМОСТИ ТИПОВ.
• ДВА ТИПА СЧИТАЮТСЯ СОВМЕСТИМЫМИ, ЕСЛИ: • • • ОБА ОНИ ЕСТЬ ОДИН И ТОТ ЖЕ ТИП; • ОБА ЯВЛЯЮТСЯ УПАКОВАННЫМИ СТРОКАМИ (ОПРЕДЕЛЕНЫ С ПРЕДШЕСТВУЮЩИМ СЛОВОМ PACKED) ОДИНАКОВОЙ МАКСИМАЛЬНОЙ ДЛИНЫ; • • • ОДИН ТИП ЕСТЬ ТИП-СТРОКА, А ДРУГОЙ • ОБА ЕСТЬ ПРОЦЕДУРНЫЕ ТИПЫ С ОДИНАКОВЫМИ ТИПОМ РЕЗУЛЬТАТА (ДЛЯ ТИПА-ФУНКЦИИ), КОЛИЧЕСТВОМ ПАРАМЕТРОВ И ТИПОМ ВЗАИМНО СООТВЕТСТВУЮЩИХ ПАРАМЕТРОВ. ОБА ВЕЩЕСТВЕННЫЕ; ОБА ЦЕЛЫЕ; ОДИН ТИП ЕСТЬ ТИП-ДИАПАЗОН ВТОРОГО ТИПА; ОБА ЯВЛЯЮТСЯ ТИПАМИ-ДИАПАЗОНАМИ ОДНОГО И ТОГО ЖЕ БАЗОВОГО ТИПА; ОБА ЯВЛЯЮТСЯ МНОЖЕСТВАМИ, СОСТАВЛЕННЫМИ ИЗ ЭЛЕМЕНТОВ ОДНОГО И ТОГО ЖЕ БАЗОВОГО ТИПА; - ТИП-СТРОКА, УПАКОВАННАЯ СТРОКА ИЛИ СИМВОЛ; ОДИН ТИП ЕСТЬ ЛЮБОЙ УКАЗАТЕЛЬ, А ДРУГОЙ - НЕТИПИЗИРОВАННЫЙ УКАЗАТЕЛЬ; ОДИН ТИП ЕСТЬ УКАЗАТЕЛЬ НА ОБЪЕКТ, А ДРУГОЙ ОБЪЕКТ; - УКАЗАТЕЛЬ НА РОДСТВЕННЫЙ ЕМУ
http: //pascal. dnovo. ru/index. html