Лекция №13. Комбинированные типы - записи
При работе с массивами основное ограничение заключается в том, что все элементы массива должны быть одного типа. Иногда для решения задач необходимо хранить и обрабатывать данные различного типа. Для таких данных применяется комбинированный тип данных – записи.
Запись – это структура данных, состоящая из фиксированного количества компонентов, называемых полями записи. В отличие от массива, компоненты (поля) могут быть разного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Записи объявляются следующим способом:
1. Сначала объявляется тип записи:
Type
ИмяТипа = record
ИмяПоля1:ТипПоля1;
ИмяПоля2: ТипПоля2;
. . .
end;
2. Затем объявляются переменные соответствующего типа:
Var
ИмяПеременной: ИмяТипа;
Например:
Type
Avto = record
Number: integer; {номер автомобиля}
Marka: string[20]; {марка автомобиля}
Fio: string[40]; {фамилия владельца}
Address: string[60]; {адрес владельца}
End;
Var
m,v: avto;
Type
Birthday = record
Day, Month: byte; {день и месяц рождения}
Year: word; {год рождения}
End;
Var
a,b: BirthDay;
Обращение к значению поля осуществляется с помощью имени переменной и имени поля, разделенных точкой. Такая комбинация называется составным именем. Например, чтобы получить доступ к полям записи avto,надо записать:
M.number, m.marka, m.fio, m.address
Составное имя можно использовать везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор присваивания. Например:
m.number:= 1234;
m.marka:= 'Audi – 200';
m.fio:= 'Иванов В.В.';
m.address:= 'ул. Гагарина, 25, кв. 47';
a.day:= 25;
b.year:= 2012;
Составные имена можно использовать в операторах ввода/вывода:
readln(m.number, m.marka, m.fio, m.address);
write(m.number:4, m.marka:10, m.fio:13, m.address:23);
Нельзя использовать в операторах ввода/вывода запись целиком.
Как и в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например:
a:= b;
v:= m;
После выполнения этого оператора значения полей записей vи aстанут равными значениям соответствующих полей записейmи b.
В ряде задач удобно пользоваться массивами из записей. Их можно описать следующим образом:
Type
Person = record
Fio: string[20];
Age: 1..99;
Prof: string[30];
End;
Var
Mas: array [1..50] of Person;
Чтобы упростить доступ к полям записи, используется оператор присоединения with:
With <переменная> do <оператор>;
Здесь With, do - зарезервированные слова, <переменная> – имя переменной типа запись, за которым следует список вложенных полей, <оператор> – любой оператор ТР. Один раз указав переменную типа запись в операторе with, можно работать с именами полей как с обычными переменными.
Например:
With m do
Begin
number:= 1234;
marka:= 'Audi – 200';
fio:= 'Иванов В.В.';
address:= 'ул. Гагарина, 25, кв. 47';
end;
Лекция №14. Методы структурного программирования. Процедуры и функции как средства структурного программирования
Процедуры пользователя
Если в программе возникает необходимость частого обращения к группе операторов, выполняющих определенные вычисления или действия, то рационально сгруппировать эти операторы в блок, к которому можно обратиться по имени.
Такие разработанные программистом самостоятельные блоки называются подпрограммами пользователя. Они являются основой модульного программирования. Использование подпрограмм позволяет сосредоточить в них подробное описание некоторых операций. В основной же программе указываются только имена этих подпрограмм, чтобы выполнить эти операции. Такие вызовы подпрограммы возможны неоднократно из разных участков основной программы.
Достоинства подпрограмм:
Программы, в которых используются подпрограммы, легче отлаживать и тестировать;
Независимость подпрограмм позволяет содержать отдельный алгоритм, поэтому, при изменении его меняется только подпрограмма;
Составление подпрограмм можно поручать другим программистам. Так осуществляется разделение работы по программированию;
Использование подпрограмм позволят экономить память, т.к. память для хранения переменных, используемых в подпрограмме, выделяется только на время ее работы и высвобождается, как только ее выполнение заканчивается.
В ТР подпрограммы реализованы посредством процедурифункций.Все процедуры и функции подразделяются на встроенныеи определенные пользователем. Встроенныепроцедуры и функции являются частью языка ТР. Процедуры и функции пользователя пишутся программистом.