Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VOPROS_331.doc
Скачиваний:
21
Добавлен:
04.08.2019
Размер:
297.98 Кб
Скачать

Вопрос №46

Записи в языке программирования ПаскальВ своих уроках «Типы данных в языке программирования Паскаль» и «Одномерные статические массивы в языке программирования С» я упоминал о структурных типах данных в целом и о примере этих типах данных, которым являются массивы. Конечно, в уроке по массивам мы убедились, что их использование полезно и хорошо, но вопрос в том, а если хранимые данные представляют собой разные типы, что делать тогда? Вот тогда нам на помощь и приходят записи. Запись – это структурированный тип данных, состоящий из определенного числа компонентов, называемых полями записи. При этом число этих полей ограничено, и поля записи могут иметь разный тип данных. Ну, раз мы разобрались с теорией, перейдет к практической реализации в языке программирования Паскаль. Синтаксис записей в языке программирования ПаскальЛюбая запись начинается со строк type <идентификатор записи> = recordЭта строка говорит о том, что мы объявляем новый тип данных, и он будет являться записью. Ниже идет описание полей записи, которое заканчивается словом end; причем полями записи могут являться переменные как базовых, так и конструируемых типов данных. Рассмотрим на примере:Type work = recordId:integer;Name:string;Money:real;End;В этом примере мы описали запись сотрудников фирмы, в которой отражены порядковый номер рабочего, имя рабочего и его зарплата, как видите строка – это конструируемый тип данных, но, тем не менее, мы смогли использовать ее в качестве описания поля записи. Так же заметьте использование абсолютно разных типов данных integer и real, вспомните в массивах, мы не могли позволить себе такую роскошь. Но пока мы не можем из программы обратиться к полям записи, об этом и о применении записей мы поговорим дальше.Использование записей в программеЧтобы нам смочь использовать записи в программе нам сначала нужно объявить переменную такого же типа, как и называется наша запись. Это делается так, я буду использовать запись из примера выше: var worker:work; теперь у нас есть запись, правда поля у нее пустые и нам надо их заполнить, чем мы сейчас и займемся.Обращение к полям записиПосле того как у нас есть переменная записи, мы можем обратиться к полям записи это делается следующим образом: <имя записи>.<имя поля записи в объявлении> то есть в нашем примере это будет делаться так worker.id это мы обратились к номеру нашего служащего. Теперь о том, как заполнять поля записи. Для этого достаточно обратиться к полю записи и присвоить ему определенное значение. Например, worker.id:=2Организация массивов записейВ уроке по типам данных я сказал, что конструируемые типы данных могут состоять из базовых типов данных или других конструируемых типов данных, поэтому мы вполне вправе объявить массив записей, в этом уроке будут рассматриваться только одномерные статические массивы. Это делается например так: a:array[1..10] of worker; Для того чтобы в данном случае обратиться к полю нам нужно написать такой оператор, например a[1].id, то есть мы обратились к номеру первого служащего в нашем массиве служащих. Теперь перейдем к примерам.Примеры решения задач1Учитель школы определяется следующими признаками: предмет, который он ведет, именем, фамилией, отчеством, и зарплатой, создайте базу данных об учителях вашей школы и выведете имена всех ваших учителей информатики.Как мы видим из условия задачи, записи применяются в основном для создания баз данных, и чаще всего они идут массивами, поэтому рассмотрим один пример и достаточно сложный, который отражает все аспекты работы с записями, смотрите на код.ype teacher = record Name:string; Father:string; Lname:string; Money:real; Lesson:string; End; Var a:array[1..100] of teacher; Begin For i:=1 to 100 do Readln(a[i].name,a[i].father,a[i].lname,a[i].money,a[i].lesson); For i:=1 to 100 do If a[i].lesson=’информатика’ then writeln(a[i].nameEnd.I:integer; If a[i].lesson=’информатика’ then writeln(a[i].name);End.I:integer;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]