Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Структурированный тип данных – записиСодержание книги
Поиск на нашем сайте Записи Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быт различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются. Структура объявления записи такова: <имя типа>= record <список полей> end; Здесь <имя типа> – правильный идентификатор; record, end – зарезервированные слова; <список полей> – список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой. Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей), например:
Type Birthday=record day, month: byte; year: word; end; var a,b: Birthday; ...
В этом примере тип Birthday (день рождения) содержит три поля с именами day, month и year (день, месяц и год); переменные a, b сидержат записи типа Birthday. Как и в массиве, значения переменных типа запись можно присваивать другим переменным того же типа, например A:=b; К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя переменной, затем точку и имя поля:
a.day:=27; b.year:=1939;
Для вложенных полей приходится продолжать уточнения:
var c: record name: string; bd: Birthday; end; ... if c.bd.year=1939 then...
Оператор WITH Если в программе содержится большое число обращений к компонентам записи (полям), то указание имени записи и имени поля с помощью сочленяющей точки будет громоздким. Для упрощения вводится оператор WITH - присоединение. Его еще называют оператором над записями. Общая форма
WITH имя переменной-записи DO оператор
Тогда в операторе или составном операторе следующем за DO имя переменной записи можно опускать, а использовать только имя поля. Пример обращения к полям:
gl.price:= 200; with gl do begin price:= 200; number:= 10 end;
Оператор with удобнее использовать, если требуется обращаться к нескольким полям одной и той же записи. Пример. Сведения о товарах на складе хранятся в текстовом файле. Для каждогс товара отводится одна строка, в первых 20 позициях которой записано наименование товара, а затем через произвольное количество пробелов его цена и количе ство единиц. Программа по запросу выдает сведения о товаре или сообщение о тол что товар не найден.
program store; const Max_n = 100; type str20 = string [20]; goods = record name: str20; price: real; number: integer; end; var stock: array[l..Max_n] of goods; i, j, len: integer; name: str20; found: boolean; count: integer; begin write('Введите количество товаров: '); readln(count); for i:=1 to count do begin writeln(‘Введите в отдельных строках наимен., цену и кол-во’); with stock[i] do readln(name, price, number); … end.
Рассмотрим пример программы с использованием массива структур. В ведомости, содержащей фамилии группы студентов, оценки по физике, математике и программированию определить средний балл каждого студента и средний балл в группе. В программе использованы следующие обозначения: n1 – максимальное количество студентов в группе; n – реальное количество студентов в группе; student – идентификатор типа, представляющий запись с полями fam, fiz, mat, pr и ss; fam – поле записи, содержащее фамилию студента; fiz, mat, pr – поле записи, содержащее оценки по физике, математике и программированию соответственно; ss – поле записи, содержащее средний балл студента; ved – массив, содержащий элементы типа student; sg – средний балл группы; i – индекс элемента массива ved; Программа выглядит следующим образом: program stud; const n1=30; type student=record fam:string[10]; fiz,mat,pr:integer; ss:real; end; var ved:array[1..n1] of student; i,n:integer; sg:real; begin writeln('сколько студентов в группе?'); read(n); for i:=1 to n do with ved[i] do begin writeln('введите фамилию студента'); read(fam); writeln('введите оценки'); read(fiz,mat,pr) end; sg:=0; for i:=1 to n do with ved[i] do begin ss:=(fiz+mat+pr)/3; {вычисление среднего балла студента} sg:=sg+ss; end; sg:=sg/n;{вычисление среднего балла группы} writeln('ведомость группы'); write('! фамилия! физика! матем! прогр!'); writeln('! cp. балл!') for i:=1 to n do with ved[i] do begin write('!',fam:10,'!',fiz:10,'!',mat:10,'!',pr:10); writeln('!',ss:10:2,'!'); end; writeln('средний балл в группе =',sg); end. Иногда бывает необходимо иметь в программе несколько родственных, но не совсем идентичных записей. Такая необходимость возникает, например, для программы, которая обрабатывает информацию о человеке и тогда, в зависимости от значения поля sex (мужской или женский), появляются поля: · время прохождения очередных военных сборов; · род войск, в которых проходил военный сбор; или же: · любимые цветы. Для таких случаев в Турбо-Паскале предусмотрены записи с вариантами. Такие записи содержат фиксированную и вариантную часть, которая начинается с ключевого слова case. Рассмотрим пример: type personsex=(male,female); person = record name,secondname,surname: string[20]; birthday: date; case sex: personsex of male: (army1: date; army2: string[20]); female: (flower: srting[20]); end; Следует отметить, что вариантная часть всегда располагается после фиксированной части, а отводимая память вычисляется по самому большому варианту, т.е. различные варианты одной записи как бы "накладываются" друг на друга.
|
||
|
Последнее изменение этой страницы: 2017-02-19; просмотров: 427; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.005 с.) |