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. Подпрограммы и функции