Dictionary.Author.Name, Dictionary.Author.SecondName и т.д.
Begin
With Dictionary do
. . .
BEGIN
VAR
TYPE
Структуры
Лекция 20
Вторым, принципиально отличающимся от массива составным типом, является структура.
Структурой называется совокупность разнотипных простых (или составных) данных, объединенных общим именем и расположенных в памяти ЭВМ подряд; обращение к элементам, составляющим структуру, осуществляется с помощью указания, как общего имени структуры, так и внутреннего имени каждого элемента структуры. Имена записываются подряд, разделяясь точкой.
В языке Паскаль этот тип данных носит название "запись". Для его задания используется ключевое слово "record". Примеры описаний переменных типа запись:
book = record{ задаем описатель записи - book (книга)}
Title : string;{ поле названия}
Author: string[20]; { поле для фамилии автора }
Pages: word; { поле для количества страниц -
целого числа без знака }
Price: word; { поле для цены (в рублях) }
end;
Instruction,Dictionary : book; {заводим две переменные типа book
Library :array[1..30000] of book; {и массив из 30000 структур типа
book }
Имена полей не должны повторяться в пределах записи, но могут совпадать с именами полей в записях других типов или с именами простых переменных. Общий объем памяти для одной структуры равен сумме объемов, занимаемых отдельными полями этой структуры.
Для переменных и констант типа запись как единого целого, возможны операции чтения или записи, присваивания и операции сравнения на равенство
- тождественность (но только для двух переменных, описанных одним общим типом). Каждое отдельное поле переменной типа запись может использоваться в операциях, предусмотренных для данных этого конкретного типа. Таким способом выполняется и заполнение полей операторами присваивания или ввода:
. . . {присваивание значений полям}
Dictionary.Title:='Толковый словарь по вычислительным системам'; Dictionary.Author:='В.Иллингуорт';
Dictionary.Pages:=560;
Dictionary.Price:=180;
{ вывод названия книги на экран}
Writeln('Название: ',Dictionary.Title);
for i:=1 to 3000 do { печать фамилий авторов дорогих книг библиотеки }
if Library[i].Price > 1000 then Writeln(Library[i].Author);
Как видно из примера, обращение к отдельным полям записи может иметь довольно громоздкий вид. Для некоторого удобства предусмотрено использование специального оператора "with", в котором можно указать общее имя переменной. Например, то же заполнение полей переменной Dictionary можно выполнить так:
Title:='Толковый словарь по вычислительным системам';
Author:='В.Иллингуорт';
Pages:=560;
Price:=180;
end;
Язык Паскаль разрешает использовать в записи в качестве полей массивы и другие записи (описанные раньше). В этом случае внутреннее поле может вызываться с помощью составного имени, состоящего из цепочки имен вложенных структур разделенных точками:
Так как при работе со структурами обычно используются типизированные файлы, примеры программ с использованием структур приведены в последующих лекциях.
Глава 8. Подпрограммы и функции