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

Порядок выполнения работы

  1. Выберите метод решения задачи.

  2. Выберите стандартные функции, необходимые для решения задачи.

  3. Выберите форму представления данных.

  4. Разработайте алгоритм решения задачи. Для ввода данных

используйте диалоговый режим или вводите с помощью генератора

случайных чисел. Результат решения задачи выведите на экран дисплея.

Теоретические сведения

Записи и селекторы (или комбинированные типы)

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

Распространенным случаем является необходимость описать атрибуты (характеристики) некоторого объекта, например: человека, вычислительного комплекса, письма и т.д.

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

Для описания объекта «человек» могут понадобиться, например, следующие характеристики:

  • ФИО - (символьные массивы или строки)

  • Пол - (перечислимый тип из двух значений)

  • Индекс специальности - (целый тип) и т.д.

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

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

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

Каждое описание похоже на описание простой переменной.

Список полей начинается служебным словом - RECORD

и заканчивается служебным словом - END

Для примера, приведенного выше, описание комбинированного типа PERSON (человек) выглядит следующим образом:

TYPE

PERSON = RECORD

NAME, SECONDNAME, SURNAME : STRING[20];

SEX : ( MALE, FEMALE );

SPECIALITY : WORD; { ; - может быть опущена }

END;

Следует подчеркнуть:

  • уникальность имен, полей требуется только внутри записи;

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

Имея вышеприведенное описание, можно определить в программе переменные данного типа:

VAR

SASHA, MASHA : PERSON;

Доступ к элементам (полям) записей производится с помощью конструкции, называемой селектор записи и имеющей вид:

R, F , где

R - переменная комбинированного типа

F - идентификатор поля

Пример:

SASHA.NAME := ‘ АЛЕКСАНДР ’;

MASHA.NAME := ‘ МАРИЯ ’;

SASHA.SEX := MALE;

MASHA.SEX := FEMALE;

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

Пример:

VAR

GROUP : ARRAY [1 .. 10] OF PERSON;

DATABASE : FILE OF PERSON;

Для переменной доступ к полям записей, составляющих этот массив, производится следующим образом:

GROUP [I].SEX := FEMALY;

IF GROUP [J].NAME = ‘ БОРИС ’ THEN

WRITELN (GROUP [J].SURNAME);

Пример:

Рассмотрим случай, когда в составе записи содержатся поля, имеющие также тип записи.

Пусть для комбинированного типа PERSON необходимо хранить информацию о дате рождения человека. Эту информацию можно представить в виде трех полей в составе типа PERSON.

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

TYPE

DATE = RECORD

MONTH : (JAN, FEB, MAR, APR, MAY, JUN,

JUL, AUG, SEP, OCT, NOV, DEC);

DAY : 1 .. 31;

YEAR : 1900 .. 2000

END;

Теперь введенный таким образом тип можно использовать в записи PERSON:

TYPE

PERSON = RECORD

NAME, SECONDNAME, SURNAME : STRING[20];

SEX : ( MALE, FEMALE );

SPECIALITY : WORD;

BIRTHDAY : DATE

END;

Доступ к полям из элемента BIRTHDAY производится по общим правилам, например:

SASHA. BIRTHDAY.YEAR := 1970;

MASHA. BIRTHDAY.MONTH := FEB;

Таким образом, при записи селектора необходимо помнить, что:

слева от символа «точка» всегда должна находиться переменная типа запись, а справа - идентификатор поля этой записи.

В наших примерах переменными типа запись являются:

GROUP [I], SASHA. BIRTHDAY, и т.д.