Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Замечание1:Порядок частей – именно такой, как показано: фиксированная часть всегда первая (или единственная)



Замечание2: Фиксированная часть может вообще отсутствовать.

Замечание3: Вариантная часть может быть только одна.

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

Вариантная часть начинается со слова case.

Особенности вариантной части:

· Поле селектора может иметь следующие два вида:

1). имя: тип

2). тип

· Каждое вариантное поле предваряется константой, которая отделяется от описания поля двоеточием.

· Каждое описание вариантного поля заключается в круглые скобки.

· В вариантной части каждое поле описывается так же как и в фиксированном.

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

· В ТР не принято использовать имя селектора вообще. Это в старом Паскале для того, чтобы выбрать нужный вариант, надо было присвоить соответствующее значение переменной-селектору.

· Тип селектора может быть любым порядковым кроме longint.

· Если известно, что число возможных значений не больше 2, то обычно используют boolean для типа селектора.

· По поводу того как вариантная запись располагается в памяти. Особенность этого состоит в том, что все вариантные поля разделяют одну и ту же область памяти. Размер этой области выбирается компилятором по размеру наибольшего вариантного поля. (по типу: 1 байт, 2 б, 4б и т.д.).

· В каждый конкретный момент времени вам доступно только одно поле из вариантной части.

· При переходе от одного вариантного поля к другому, значение вариантной части не меняется, меняется лишь та точка зрения на ту область памяти, которая отведена под вариантную часть.

Var

A: record

Case byte of

0: (a1: array [0..3] of byte);

1: (a2: array [0..1] of word);

2: (a3: longint);

3: (a4: string[3]);

end;

младший старший

байт байт

1-й вариант:

a1[0] a1[1] a1[2] a1[3]

2-й вариант:

a2[0] a2[1]

3-й вариант:

  а3  

Здесь изображены три точки зрения на одну память из 4 байтов:

1). Рассмотрим область как массив из 4-х элементов размером 1 байт.

2). Массив из 2-х элементов размером 2-а байта.

3). Одно значение размером в 4-е байта.

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

Примеры:

а.а1[0]: = 1; - в младший байт области памяти записывается значение 1.

а.а1[3]: = 1; - в старший байт области памяти записывается значение 1.

Если бы вместо longint записать string[3], то в этом случае можно было бы с каждым символом строки работать как с целым числом без всяких преобразований типов.

 

Типизированные константы - записи

Четыре примера задания записей как типизированных констант.

1).

const

v: record;

a: byte;

b: char;

end = (a: 1; b: ’2’);

так же как и для массива все заключается в круглые скобки; одно значение от другого выделяется точкой с запятой.

2).

const

v: record;

a: byte;

b: char;

c: record;

d: integer;

e: byte; !!!

end;

end = (a: 1; b: ’2’; c: (d: 3; e: 4));

3).

const

v: record;

a: byte;

b: char;

c: record;

d: integer;

e: byte;

end;

case Boolean of

false: (f: integer); можно инициализировать лишь одно вариантное поле

true: (g: byte);

end = (a: 1; b: ’2’; c: (d: 3; e: 4); f: 5);

4).

const

v: record;

a: byte;

b: char;

c: record;

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

e: byte;

end;

case n: Boolean of

false: (f: integer);

true: (g: byte);

end = (a: 1; b: ’2’; c: (d: 3; e: 4); n: false; f: 5);

Модули (Unit)

Что такое модуль?

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

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

Модуль в TURBO PASCAL представляет собой отдельно хранимую (как файл) и независимо компилируемую программную единицу.

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

- программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне модуля;

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

В соответствии с этим модуль, кроме заголовка, содержит две основные части, называемые интерфейсом и реализацией.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-12; Просмотров: 535; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.027 с.)
Главная | Случайная страница | Обратная связь