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

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

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

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

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

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

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

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

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

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

Комбинированные типы данных являются наиболее гибким механизмом построения структур данных. Любой комбинированный тип задает некоторый образ объектов, каждая часть которых может иметь различные характеристики. 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:=’МИРОНОВ А.В.’;

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

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

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.

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

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

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

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. Оператор присоединения WITHDO используется для упрощения доступа к полям записи.

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

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;

Соседние файлы в предмете Программирование на Pascal