Тип данных запись паскаль — Мир ПК

Pascal-Паскаль

Программирование. Записи Pascal-Паскаль

  • Скачено бесплатно: 9293
  • Куплено: 414
  • Pascal-Паскаль->Программирование. Записи Pascal-Паскаль

Программирование. Записи Pascal-Паскаль

Объединение разнородных элементов (Запись)

Как мы уже выяснили, массивы объединяют однородные единицы информации – элементы одного и того же типа. Но многообразие информации нельзя свести только к какому-то одному типу данных. Например, указывая положение точки в пространстве, мы можем воспользоваться одним и тем же типом для указания ее координат, но, описывая человека, мы должны указать его имя, рост, цвет глаз и волос, то есть в одном описании объединим разнородную информацию. Точно так же, описывая автомобиль, мы укажем не только его марку, но и год выпуска, модификацию, да и цвет кузова может нас заинтересовать. Составляя автоматизированный каталог книгохранилища, мы для каждой книги должны указать ее название, имя автора, область знания, количество страниц, год издания, а также, возможно, признак нахождения на руках или в хранилище.

Данные такого рода, описывающие существенные стороны того или иного объекта путем включения в описание нескольких, часто разнотипных, элементов, называют записью (record). В языке Паскаль запись определяется путем указания служебного слова record и перечисления входящих в запись элементов с указанием типов этих элементов.

Запись Паскаля – структурированный комбинированный тип данных, состоящий из фиксированного числа компонент (полей) разного типа.

Например, анкетные данные о студенте вуза могут быть представлены в виде информационной структуры

Такая структура называется двухуровневым деревом. В Паскале эта информация может храниться в одной переменной типа record (запись). Задать тип можно следующим образом:

где record – служебное слово, а и — правильные идентификаторы языка Паскаль.

Описание анкеты студента в Паскале будет выглядеть так:

Пример фрагмента программы описания записи Паскаля

Такая запись Паскаля, так же как и соответствующее ей дерево, называется двухуровневой.

Поля записи Паскаля могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в том случае, когда требуется представить многоуровневое дерево (более 2 уровней). Например, те же сведения о студентах можно отобразить трехуровневым деревом.

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

Пример фрагмента программы описания записи Паскаля

После того, как определен тип записи Паскаля, можно определять переменную этого типа. Переменная определяется путем задания ее идентификатора и указания типа.

Теперь нам нужно узнать, как правильно получать доступ к элементам записи Паскаля. Элементы записи называются полями, а обращение к ним производится через использование их имен – идентификаторов полей. Практически, поля записи обрабатываются точно так же, как и любые другие переменные. Но в отличие от обычной переменной имена полей должны предваряться ссылкой на идентификатор записи Паскаля и отделяться от него точкой. Такая запись называется уточняющий идентификатор:

Например, чтобы обратиться к полю curs переменной student , необходимо указать следующее составное имя:

Для того чтобы обратиться к полю god в записи student 1, необходимо записать уточняющий идентификатор, состоящий из трех имен:

Использование полей записи Паскаля в выражениях и условиях идентично использованию обычных переменных.

Операции над записями Паскаля (это важно!)

Единственная операция, которую можно произвести над однотипными записями Паскаля – это присваивание.

Все другие операции производятся над отдельными полями записи.

Пример решения задачи с использованием записей Паскаля

Рассмотрим для начала простейший пример заполнения записи Паскаля и вывода ее на экран.

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

Пример программы c записью Паскаля

А теперь слегка усложним задачу. Пусть нам необходимо иметь сведения о многих студентах, например, нашего факультета. Следовательно, необходимо организовать массив записей Паскаля. А затем из общего списка вывести фамилии студентов 2-го курса.

Пример программы c записью Паскаля

Оператор присоединения или как избавиться от префикса

Префикс – обязательная предшествующая часть составного идентификатора для имен полей в структуре типа запись Паскаля. Очень часто у программиста возникает желание не указывать префикс в имени полей, например, когда идет постоянное использование одних и тех же записей. В языке Паскаль предусмотрена такая возможность, реализуемая при помощи оператора присоединения, который в общем виде выглядит так:

Читать еще:  Объявление массива паскаль

with do ;

Следует обратить внимание на то, что после служебного слова do может стоять только один оператор, но он может быть составным (любая последовательность операторов, заключенная в операторные скобки begin end ).

Например, фрагмент из предыдущей программы с использованием оператора присоединения будет выглядеть так:

Пример фрагмента программы c записью и префиксом Паскаля

Программирование

Исходники Pascal (127)

Справочник

Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

ЗАПИСИ. ТИП ДАННЫХ RECORD.

В описании данных и связей между ними используют понятия: запись логическая и запись физическая. Физическое описание данных определяет способ их хранения во внешней памяти ЭВМ. Логическое описание данных указывает на то, в каком виде эти данные представляются прикладному программисту или пользователю данных. Здесь и далее под записью будем понимать — логическую запись, или структурную переменную, состоящую из нескольких компонент, доступ к которым осуществляется по имени.

Компоненты записи (иногда их называют полями или элементами) могут быть разных типов: скалярные переменные, массивы, записи, множества, указатели.
Запись является фундаментальным понятием, основой информационной модели предметной области и широко используется при описании структур данных. Запись характеризуется именем (идентификатором) и содержит произвольную комбинацию полей, каждое из которых отражает соответствующий реквизит формализуемого информационного объекта.
Эти поля (компоненты) могут описываться данными разных типов, именно поэтому записи иногда называют комбинированными типами.
Описание записи в разделе TYPE включает:
= RECORD < список полей >
: ;
: ;
:
END;
Имя типа записи — представляет собой идентификатор, который может использоваться при конструировании новых типов или описания типов переменных в разделе VAR. Имена компонент записи соответствуют реквизитам информационного объекта, а типы компонент выбираются на основании форматов реквизитов, диапазонов изменения их значений. Кратность в экземплярах обеспечивается использованием регулярных структур ARRAY выбранных типов данных. Связи с другими объектами могут быть реализованы указателями (ссылками), включаемыми состав компонент рассматриваемой записи. Запись в целом и каждая ее компонента имеют свои имена, к которым можно обращаться в программе.
Число компонент L фиксировано и в процессе выполнения программы меняться не может. Имя компоненты должно быть уникальным только в пределах записи. Обращение к значению поля осуществляется через составное имя путем указания через точку имени переменной типа запись и имени поля этой записи.

Использование записей для описания таблиц.

При решении на ЭВМ широкого круга информационных задач формализуется мифологическая модель, описывающая множество взаимосвязанных объектов, каждый из которых характеризуется своими признаками. При этом формализуется имя информационного объекта и его реквизитный состав (в том числе: имя реквизита, формат реквизита, диапазон изменения, кратность в экземплярах) и связи с другими информационными объектами. Эта модель ложится в основу построения информационной внутримашинной базы данных. Используется два пути программирования алгоритмов ведения баз данных: средствами типовых СУБД (систем управления базой данных, например ACCESS) или с применением универсальных языков типа Паскаль, Фортран, Бейсик, СИ и других.

СУБД обеспечивает:

  • организацию, ведение базы данных и словарей (генерацию структуры базы, коррекцию и удаление данных);
  • макетный ввод данных в базу;
  • запрос на поиск и обработку информации об объектах;
  • макетный вывод результатов;
  • сервисные функции СУБД (дублирование, защиту, восстановление, сжатие данных и другие).

При использовании универсального языка программирования эти функции должен реализовать программист в своих программах.
Использование СУБД рекомендуется для больших разнородных баз с меняющейся в процессе эксплуатации структурой данных, словарей, справочников, входных и выходных форм. А так же в тех случаях, когда время на разработку мало, а быстродействие системы и емкость магнитных накопителей не являются критичными.
При простой структуре данных, не изменяющихся в процессе эксплуатации справочников, макетов входных/выходных форм, запросов на обработку и высоких требованиях к защите от несанкционированного доступа к данным используется второй путь, при котором, как правило, программы и данные занимают меньше памяти, а быстродействие выше.

Описание записи.

Пример 16. Описать структуру данных, изображенных в табл. 3.1.

В табл. 3.1 представлены сведения о студентах. Каждому студенту соответствует одна строка в таблице (эти строки пронумерованы: 1, 2, 3). Эта строка на языке программистов называется записью. Запись состоит из реквизитов, расположенных в соответствующих колонках таблицы. Каждая колонка имеет вполне определенное назначение и содержит единую смысловую информацию. Колонки на языке программистов называются полями. Каждое поле имеет имя, которое используется для обращению к данному, и тип данного. Совокупность полей задает структуру записи и отражает шапку (заголовок) таблицы.
Ниже приведена модель табл. 3.1, описанная на языке ПАСКАЛЬ.

Читать еще:  История создания языка паскаль

В этом описании: Student — имя типа записи; Tab, Fio, Data, Grup, Stepa — имена полей (в синтаксисе данных типа RECORD их называют компонентами); Std — одна переменная, соответствующая сведениям об одном студенте; Mstd — массив записей, то есть сведения обо всей группе студентов, перечисленных в табл. 3.1. Поле «номер по порядку» в структуру таблицы не включено, т.к. обеспечивает макетный вывод информации на монитор или бумагу и формируется автоматически в соответствии с указанным критерием упорядочения записей в таблице. Самым эффективным способом усилить сигнал является lte антенна для 4G модема.

Работа с полями записи.

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

Std.Tab:= 910678;
Std.Fio := ‘Петухов И.М.’;
Std.Data:=T3.01.82′;
Std.Group := ‘ИТ-11’;
Std.Stepa:= 550.00;

В этой программе формируются сведения о студенте Петухове. К сожалению оператор присваивания в Паскале не поддерживает инструкцию вида – Mstd[1] := Std, что существенно бы упростило работу с записями.

Тип данных запись паскаль

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

Описание записи в языке Паскаль осуществляется с помощью служебного слова record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом end.

Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи:

Описание записей возможно и без использования имени типа, например:

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

Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содержать не два, а большее количество имен.

Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения with.

Он позволяет заменить составные имена, характеризующие каждое поле, просто на имена полей, а имя записи определить в операторе присоединения:

Здесь rec — имя записи, оператор — оператор, простой или составной. Оператор представляет собой область действия оператора присоединения, в пределах которой можно не использовать составные имена. Например для нашего случая:

Такая алгоритмическая конструкция полностью идентична следующей:

Инициализация записей может производиться с помощью типизированных констант:

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

Например, сконструируем запись, в которой мы будем хранить данные о некоторой геометрической фигуре (отрезок, треугольник, окружность).

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

Заметим, что индивидуальные поля для каждого из типов фигур занимают тем не менее одно адресное пространство памяти, а это означает, что одновременное их использование невозможно.

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

Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики

Тип данных запись паскаль

В Паскале эта информация может храниться в одной переменной типа record (запись).

Читать еще:  Паскаль модули uses

Задать тип можно следующим образом:

где record – служебное слово, а и — правильные идентификаторы языка Паскаль.

Описание анкеты студента в Паскале будет выглядеть так:
Пример фрагмента программы описания записи Паскаля

Type anketa=record
fio: string[45];
pol: char;
dat_r: string[8];
adres: string[50];
curs: 1..5;
grupp: string[3];
end;

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

Поля
После того, как определен тип записи Паскаля, можно определять переменную этого типа. Переменная определяется путем задания ее идентификатора и указания типа.

var
student: anketa;
student1: anketa;

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

Такая запись называется уточняющий идентификатор:

Чтобы обратиться к полю curs переменной student, необходимо указать следующее составное имя:
student.curs :=3;
Для того чтобы обратиться к полю pol в записи student1, , необходимо указать следующее составное имя:
student.pol :=’ж’;

Использование полей записи Паскаля в выражениях и условиях идентично использованию обычных переменных.

Пример решения задачи с использованием записи

Пример 1
Рассмотрим для начала простейший пример заполнения записи Паскаля и вывода ее на экран.
Н еобходимо заполнить сведения о студенте (Ф.И.О., дата рождения, адрес, курс и группа), а затем вывести эти сведения на экран.

Необходимо иметь сведения о многих студентах одного факультета. Следовательно, необходимо организовать массив записей Паскаля. А затем из общего списка вывести фамилии студентов 2-го курса.

program primer 2 ;
type anketa=record
fio: string[45];
dat_r: string[8];
adres: string[50];
curs: 1..5;
grupp: string[3]
end;
var student: array [1..100] of anketa; // переменная student — массив записей
I: integer;
begin
<последовательно вводим каждую запись>
for I:=1 to 100 do
begin
writeln (‘введите сведения о’, I , ‘-м студенте’);
writeln (‘введите фамилию, имя и отчество’);
readln (student[I].fio);
writeln (‘введите дату рождения’);
readln (student[I].dat_r);
writeln (‘введите адрес’);
readln(student[I].adres);
writeln (‘введите курс’);
readln(student[I].curs);
writeln (‘введите группу’);
readln (student[I].grupp);
end;
writeln (‘ввод закончен’);
writeln ;
<просматриваем массив записей и выбираем только студентов 2-го курса >
for I:=1 to 100 do
if student[I].curs=2 then
writeln(‘ фамилия студента : ’, student[I].fio);
end.

Оператор присоединения

Чтобы сделать обращение к полям записи более коротким используется оператор присоединения with , который в общем виде выглядит так:

Следует обратить внимание на то, что после служебного слова do может стоять только один оператор, но он может быть составным (любая последовательность операторов, заключенная в операторные скобки begin end ).

Например, фрагмент из предыдущей программы с использованием оператора присоединения будет выглядеть так:

Пример фрагмента программы c записью и префиксом Паскаля

for i :=1 to 100 do
with student [ i ] do
begin
writeln (‘введите сведения о’, I , ‘-м студенте’);
writeln (‘введите фамилию, имя и отчество’);
readln ( fio );
writeln (‘введите дату рождения’);
readln ( dat _ r );
writeln (‘введите адрес’);
readln ( adres );
writeln (‘введите курс’);
readln ( curs );
writeln (‘введите группу’);
readln ( grupp );
end ;

Н еобходимо иметь сведения о многих студентах одного факультета. Следовательно, необходимо организовать массив записей Паскаля. А затем из общего списка вывести фамилии студентов 2-го курса. Использовать оператор присоединения.

program primer 2 ;
type anketa=record
fio: string[45];
dat_r: string[8];
adres: string[50];
curs: 1..5;
grupp: string[3]
end;
var student: array [1..100] of anketa; // переменная student — массив записей
I: integer;
begin
<последовательно вводим каждую запись>
for i :=1 to 100 do
with student [ i ] do
begin
writeln (‘введите сведения о’, I , ‘-м студенте’);
writeln (‘введите фамилию, имя и отчество’);
readln ( fio );
writeln (‘введите дату рождения’);
readln ( dat _ r );
writeln (‘введите адрес’);
readln ( adres );
writeln (‘введите курс’);
readln ( curs );
writeln (‘введите группу’);
readln ( grupp );
end ;
writeln (‘ввод закончен’);

Задания
Необходимо заполнить сведения о студенте (Ф.И.О., дата рождения, адрес, курс и группа).
Вывести на экран:

  1. студентов с одного курса
  2. студентов одного года рождения
  3. студентов женского пола из одной группы
Запись опубликована в рубрике Языки программирования. Добавьте в закладки постоянную ссылку.