Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Паскаль в среде Turbo Pascal версии 6 и 7 (Курс лекций). Воронов Г.И.Санкт-Петербург 2010г.doc
Скачиваний:
64
Добавлен:
15.04.2015
Размер:
754.69 Кб
Скачать

Структуры

Вторым, принципиально отличающимся от массива составным типом, является структура.

Структурой называется совокупность разнотипных простых (или составных) данных, объединенных общим именем и расположенных в памяти ЭВМ подряд; обращение к элементам, составляющим структуру, осуществляется с помощью указания, как общего имени структуры, так и внутреннего имени каждого элемента структуры. Имена записываются подряд, разделяясь точкой.

В языке Паскаль этот тип данных носит название "запись". Для его задания используется ключевое слово "record". Примеры описаний переменных типа запись:

TYPE

book = record { задаем описатель записи - book (книга) }

Title : string; { поле названия }

Author: string[20]; { поле для фамилии автора }

Pages: word; { поле для количества страниц -

целого числа без знака }

Price: word; { поле для цены (в рублях) }

end;

VAR

Instruction,Dictionary : book; { заводим две переменные типа book

Library :array[1..30000] of book; { и массив из 30000 структур типа

book }

Имена полей не должны повторяться в пределах записи, но могут совпадать с именами полей в записях других типов или с именами простых переменных. Общий объем памяти для одной структуры равен сумме объемов, занимаемых отдельными полями этой структуры.

Для переменных и констант типа запись как единого целого, возможны операции чтения или записи, присваивания и операции сравнения на равенство

- тождественность (но только для двух переменных, описанных одним общим типом). Каждое отдельное поле переменной типа запись может использоваться в операциях, предусмотренных для данных этого конкретного типа. Таким способом выполняется и заполнение полей операторами присваивания или ввода:

BEGIN

. . . {присваивание значений полям}

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 можно выполнить так:

with Dictionary do

begin

Title:='Толковый словарь по вычислительным системам';

Author:='В.Иллингуорт';

Pages:=560;

Price:=180;

end;

Язык Паскаль разрешает использовать в записи в качестве полей массивы и другие записи (описанные раньше). В этом случае внутреннее поле может вызываться с помощью составного имени, состоящего из цепочки имен вложенных структур разделенных точками:

Dictionary.Author.Name, Dictionary.Author.SecondName и т.д.

Так как при работе со структурами обычно используются типизированные файлы, примеры программ с использованием структур приведены в последующих лекциях.