1. В пределах одной записи имена полей должны быть уникальны.
2. Имена полей могут совпадать с другими идентификаторами в пределах текущего блока, а также с именами полей в других записях.
Рассмотрим случай, когда в составе записи содержатся поля, имеющие также тип записи. Пусть для комбинированного типа Person необходимо хранить информацию о дате рождения человека. Эту информацию можно представить в виде трех полей в составе типа Person. Однако логичнее для этого определить отдельный тип, так как в этом случае он может использоваться в описании других типов и переменных.
Пример:
Type
Date = Record
Month: (Jan,Feb,Mar,Apr,May,June,July,Aug, Sept, Oct, Nov, Decem);
Day: 1..31;
Year: 1900..2000
end;
Person = Record
Name, SecondName, SurName: string [20];
Sex: (Male, Female);
Speciality: Word;
Birthday: Date
end;
Доступ к полям из элемента Birthday производится по общим правилам, например:
Sasha. Birthday. Year:= 1970;
Masha. Birthday. Month:= May;
3. Множественные типы
Множественные типы принадлежат к несколько непривычным и сравнительно редко используемым средствам языка Паскаль. Однако в ряде случаев использование множественных типов позволяет повысить компактность и наглядность программ.
Значения множественного типа так же, как и массивы, строятся из нескольких значений одного (базового) типа. Однако в отличие от массивов и записей значение множественного типа может содержать любое количество различных элементов базового типа - от ноля элементов (пустое множество) до всех возможных значений базового типа. Иными словами, возможными значениями переменных множественного типа являются все подмножества значений базового типа.
Синтаксис описания некоторого множественного типа имеет вид:
Type
<имя типа> = set of <базовый тип>;
Здесь:
<имя типа> - правильный идентификатор языка;
set, of - зарезервированные слова (множество, из);
<базовый тип> - базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме WORD, INTEGER, LONGINT (т.е. типы BYTE и CHAR, перечислимые типы, а также ограниченные типы, образованные из них).
Пример:
Type
digitChar = set of ‘0’..’9’;
digit = set of 0..9;
elemColor = (Red, Yellow, Blue);
color = set of Color;
Var
s1, s2, s3: digitChar;
s4, s5, s6: digit;
myColor: Color;
Примечания
1. Все значения базового типа, образующие конкретные значения множественного типа, должны быть различны.
Например, не может быть множества: 1, 2, 2.
2. Порядок “расположения” элементов в множестве не имеет значения.
Множества:
1, 2, 3
3, 2, 1
одинаковы.
Это соответствует принятой в математике трактовке множества как бесповторной неупорядоченной совокупности объектов.
Для задания множества используется так называемый конструктор множества: список спецификаций элементов множества, отделяемых друг от друга запятыми; список обрамляется квадратными скобками. Спецификациями элементов могут быть константы или выражения базового типа, а также - ограниченный тип из того же базового типа.
Например:
s6:= [1, 2, 3];
s4:= [ 0, 1, 2, 3+4 ];
s5:= [ 0..3, 6 ]; {эквивалентно множеству [0, 1, 2, 3, 6]}
s1:= [ ‘0’..’5’ ];
s2:= []; {пустое множество}
myColor:= [ Red ];
4. Файловые типы
Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. Типом компонентов может быть любой тип Object Pascal, кроме файлов. Иными словами, нельзя создать “файл файлов”. В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти.
Файловый тип можно задать одним из трех способов:
<имя> = File of <тип>;
<имя> = TextFile;
<имя> = File;
Здесь <имя> - имя файлового типа (правильный идентификатор);
File, of - зарезервированные слова (файл, из); TextFile - имя стандартного типа текстовых файлов; <тип> - любой тип Object Pascal, кроме файлов.
5. Указатели
Object Pascal предоставляет в распоряжение программиста гибкое средство управления динамической памятью - так называемые указатели. Указатель - это переменная, которая в качестве своего значения содержит адрес байта памяти. С помощью указателей можно размещать в динамической памяти любой из известных в Object Pascal типов данных. Лишь некоторые из них (Byte, Char, ShortInt, Boolean) занимают во внутреннем представлении один байт, остальные - несколько смежных. Поэтому на самом деле указатель адресует лишь первый байт данных.
Как правило, указатель связывается с некоторым типом данных. Такие указатели называют типизированными. Для объявления типизированного указателя используется значок ^, который помещается перед соответствующим типом, например:
var
p1: ^Integer;
р2: ^Real;
... фактически игнорирует это указание: “упаковка” данных в Object Pascal осуществляется автоматачески везде, где это возможно. 1.2.1 Массивы Массивы в Object Pascal во многом схожи с аналогичными типами данных в других языках программирования. Отличительная особенность массивов заключается в том, что все их компоненты суть данные одного типа (возможно, структурированного). Эти компоненты можно ...
... в среде Delphi). Задачи использовались как с данного сайта, так и из других источников – книг и семинарских занятиях по информатике в МГОУ. Курс завершается разработкой игры. Программное обеспечение: свободно распространяемая версия объектно-ориентированной среды программирования Delphi. Методы обучения: метод проектов, лекции, проблемный метод, частично-поисковый метод. Контроль знаний и умений ...
... F := SomeFunction; напротив, оператор I := F(4); вызывает эту функцию (запускает ее алгоритм) и после обработки возвращает результат вычислений переменной I. 15.6. Формальные и фактические параметры В Object Pascal есть понятия формального и фактического параметров. Формальным называется параметр, который содержится в заголовке описания подпрограммы, а фактическим – параметр в обращении к ...
... . Объясните, для чего служат разрешения и привилегии в Windows NT. Зав. кафедрой -------------------------------------------------- Экзаменационный билет по предмету СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Билет № 22 Перечислите возможности и инструменты системы программирования Microsoft Developer Studio. Укажите для чего предназначается буфер в системах ввода-вывода, ...
0 комментариев