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

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

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

TYPE < ИМЯ ТИПА>= RECORD <список полей> END;

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

RECOR и 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 может выглядеть следующим образом

VarClerk: Employee;

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

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

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))/(s qr(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 <баз.тип>;

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

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