Материал: Алгоритмический язык Turbo Pascal 7.0. Юршин Е.Д., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

информации, например, о человеке: его имя, фамилия, адрес, год рождения, пол и т.д. Мы не смогли бы завести эту информацию в массив, поскольку имя и адрес это строки, пол - символ, а год рождения - число.

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

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

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

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

TYPE < имя типа>= RECORD <список полей> END; Здесь <имя типа> - правильный идентификатор;

RECORD и END – зарезервированные (служебные) обязательные слова (запись и конец);

<список полей> - список полей – перечисления (через запятую) полей одного и того же типа с указанием их типа. При этом список каждого списка полей (раздел записи) должен заканчиваться точкой с запятой. Перед типом полей (поля) ставится двоеточие (после списка идет идентификатор – полей). Например, пусть в отделе кадров одной из фирм информация о работниках имеется в следующем виде:

идентификационный номер:

 

1234 ------------------------

ID

 

Имя : Иванов Иван Иванович ---------

Name

Пол: М ------------------------------------

Gender

 

Число иждивенцев: 2 -------------------

NumDepend

Почасовая справка:6 --------------------

Rate

 

Зарплата за неделю: 240 ----------------

Totwages

 

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

Const

String Length = 20; Type

ID Range =1111...9999;

String Type = String String Length];

Employce = RECORD ID: IDRanger;

Name: StringType;

Gender: Char;

NumDepend: Integer;

Rate, TotWages: Real; END;

Здесь информация будет сохраняться в записи шестью элементами данных ( полей). Для содержания информации из отдела кадров использован тип Emplogee. Этот тип включает два целочисленных значений (ID-IDRange и NumDepend),поле-

строку (Name-Stringtupe), поле (Genger) типа Char и два поля

(Rate,TotWager) для вещественных значений.

Как видно из данного фрагмента описаний программы кроме типа записиEmployee имеются и простые типы

данных(IDRangeтип диапозон и SnringTupe-

структуированныйстроковый тип).

Чтобы для такой записи была выделена память, необходимо объявить переменную соответствующего типа. Например, описание такой переменнойзаписи Clerk может выглядеть следующим образом

Var

Clerk: Employec;

В этом случае переменнаязапись Clerk имеет структуру, которая задана в описатели типазапись Employec. Таким образом, выделенная для содержания этой переменной

память включает пространство для шести значений

Clerk. ID

1234

Clerk. Name

Иванов Иван Иванович

Clerk. Gender

M

Clerk. NumDepend

2

Clerk. Rate

6.00

Clerk. Tot Wager

240.00

Рис.4.2.10. Распределение памяти для переменной

Clerk.

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

поля, например:

Clerk. ID или Clerk. Rate и т.д.

Для того, чтобы в соответствующие поля на рисунке 4 ( в прямоугольникепамять) занести исходные данные необходимо в операторном разделе программы ( в скобках Begin-end) поместить следующие операторы присваивания

Clerk. ID:=1234;

Clerk. Name:= Иванов Иван Иванович ; Clerk. Gender:= M ;

Clerk. NumDepend:=2;

Clerk. Rate:=6.00;

Clerk. Tot Wager:=0.0; Clerk.Tot Wager:= Clerk. Tot Wager+40.0*

Clerk.Rate;

После того, как исходные данные присвоены полям записи этими полями можно манипулировать как и любыми другими переменными. Например, последний оператор присваивания вычисляет новую зарплату служащего, добавляя зарплату текущей недели к его предыдущей зарплате (0.0. в данном случае), число 40 – количество отработанных за неделю часов. Вычисленный результат (в данном случае 240) заносится в поле clerk. TotWages.

Рассмотрим простейший пример составления программы с использованием записи.

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

type complex=record re,im:integer end;

var x,y:complex; begin

x.re:=3;

x.im:=7;

y.re:=6;

y.im:=14;

writeln('x=',x.re,x.im,'y=',y.re,y.im);

writeln('sum=',x.re+y.re,x.im+y.im); writeln('sum=',x.re-y.re,x.im-y.im); writeln('mult=',x.re*y.re-x.im*y.im,x.re*y.im+x.im*y.re); writeln('div=',(x.re*y.re+x.im*y.im)/(sqr(y.re)+sqr(y.im), (y.re*x im.- x.re+y.im) / (sqr(y.re)+sqr(y.im));

end.

Здесь всевозможные вычисления осуществлены с использованием оператора вывода данных Writeln.

Множества.

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

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

фигурные скобки, например{1,3,5,7,9}-это множество нечетных цифр от 1 до 9.

Итак, множества – это структуированные данные, содержащие перечни целочисленных или символьных

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

В отличии от математической формы записи, на языке Pascal все элементы множества заключаются в квадратные

скобки, например: [1,3,5,7,9]. Поскольку элементы множества могут быть не

упорядочены, то [9,7,5,3,1] и [1,3,5,7,9]- это эквивалентные множества.

Количество элементов, входящих в множество, может меняться от 0 до 256. При этом, множество не содержащее элементов, называется пустым.

Поэтому, другим отличием множества от массива и записи является непостоянство количества элементов в массиве.

Следует иметь в виду, что если все элементы одного множества входят такие и в другое, то говорят о включении

первого множества во второе.

В общем виде описание типа множества может иметь вид:

Type

<имя типа>= SET OF <баз.тип>;

здесь <имя типа>- правильный идентификатор (имя множество);

SET и OF –зарезервированные(обязательные служебные ) слова(множество –из);

<баз. тип>- базовый тип элементов множества, в качестве которого, может использоваться любой порядковый

тип, кроме WORD, INTEGER и LONGINT.

Тип – множество или переменнуюмножество можно объявить так же, как объявляются прочие (предыдущие)

структуированные типы и принадлежащие к ним элементы, т.е. сначала объявляется типмножества (Type), а затем переменная этого типа (Var), например:

Type

DigitSet = SET OF 09;

Var

Источник: https://studfile.net/preview/16565609/