информации, например, о человеке: его имя, фамилия, адрес, год рождения, пол и т.д. Мы не смогли бы завести эту информацию в массив, поскольку имя и адрес это строки, пол - символ, а год рождения - число.
Таким образом, такую информацию можно оформить в виде записи. При этом, элементы (компоненты) записи называются полями. При этом поля в одной и той же записи могут быть различного типа и при объявлении должны быть указаны имя и тип каждого поля.
В тоже время, следует иметь в виду, что если элементы (поля) записи одного и того же типа, то можно использовать для их хранения и массивы.
Таким образом запись- структура данных (сложный тип данных), состоящая из фиксированного числа (набора) компонентов, называемых полями записи.
Структура объявления типа записи такова:
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 0
9;
Var