Массив записей.

Вложенные поля записи.

Запись как статическая структура данных.

Пример задачи выполнения операций над двумерным массивом.

Пример задачи выполнения операций над одномерными массивами.

1. Постановка задачи: реализовать на массивах выполнение строевых команд ряды сдвой и сомкнитесь, т. е. из массива A(2n) элементы с четными индексами нужно перенести в начало массива B(n), а оставшиеся – сдвинуть к началу массива A.

2. Математическая модель — самостоятельно!

3.Блок-схема алгоритма — самостоятельно!

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

2. Математическая модель — самостоятельно!

3. Блок-схемы алгоритма— самостоятельно!

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

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

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

Структура объявления типа:

TYPE

<имя_типа> = RECORD

<список_полей>;

END;

Структура объявления переменной:

VAR

<имя_переменной>:RECORD

<список_полей>;

END;

Например,

Type

person = record

Name: string[15];

Address: string[20];

Index: longint;

end;

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

VAR

A, B: PERSON;

переменные A, B будут содержать записи типа PERSON.

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

A.NAME:=’ИВАНОВ И.И.’;

B.NAME:=’МИРОНОВ А.В.’;

Можно использовать вложенные полязаписи, для этого необходимо продолжить уточнение:

TYPE

BIRTHDAY=RECORD;

DAY, MONTH: BYTE;

YEAR: STRING[4];

END;

VAR

REC: RECORD

NAME: STRING[15];

BIRTH: BIRTHDAY;

END;

BEGIN

IF REC.BIRTH.YEAR=’1982’ THEN

END.

Записи можно объединить в массив.

Например, чтобы использовать данныетипа

Type

person = record

Name: string[15];

Address: string[20];

Index: longint;

end;

необходимо объявить сами данные. Одним из вариантов использования отдельных записей является объединение их в массив.

Var

Persons : array[1..30] of person;

Эти два объявления можно объединить в виде объявления массива записей следующим образом:

Var

Persons : array[1..30] of record

Name: string[15];

Address: string[20];

Index: longint;

end;

Доступ к полям отдельной записи осуществляется через имя переменной и имя поля:

Persons[1] . Name:=’Иванов’;

Persons[2] . Adress:='город Москва …’;

1.7.3. Оператор присоединения WITH … DO используетсядля упрощения доступа к полям записи.

Структура оператора:

WITH <переменная_типа_запись> DO

<оператор>;

Например,

TYPE

BIRTHDAY=RECORD;

DAY, MONTH: BYTE;

YEAR: STRING[4];

END;

VAR

REC: RECORD

NAME: STRING[15];

BIRTH: BIRTHDAY;

END;

BEGIN

WITH REC.BIRTH DO

MONTH:=10;

END.

Следующие записи оператора присоединения будут эквивалентны:

WITH REC.BIRTH DO

MONTH:=10;

или

WITH REC DO

WITH BIRTH DO

MONTH:=10;

или

REC.BIRTH.MONTH:=10;