|
Я завершила экзамен 90 баллов на 5. Сертификат не заказала. Сейчас пытаюсь найти как его заказать. у меня указано экзамен пройден баллы оценка видно, а чтоб заказать сертификат нигде не видно. |
Типы данных, определяемые программистом
Записи
В программах часто возникает необходимость логического объединения разнородных данных (например, база данных предприятия содержит для каждого сотрудника его фамилию, дату рождения, должность, оклад и т. д.). Для этого предназначен тип 'запись'. Он вводится с помощью ключевого слова record. Элементы записи называются полями.
type имя_типа = record
описание 1-го поля записи;
описание 2-го поля записи;
...
описание n-го поля записи;
end;Поля записи могут быть любого типа, кроме файлового. Например, для каждого товара на складе требуется хранить его наименование, цену и количество единиц:
type goods = record
name : string[20];
price : real;
number : integer;
end;Переменные типа 'запись' описываются обычным образом. Можно задавать описание типа при описании переменной, создавать массивы из записей, записи из массивов, и т. д.
var g1, g2 : goods;
stock : array [1 .. 100] of goods;
student : record
name : string [30];
group : byte;
marks : array [1 .. 4] of byte;
end;С записями целиком можно делать то же, что и с массивами: присваивать одну запись другой, если они одного типа, например:
g1 := g2; g2 := stock[3];
Все остальные действия выполняются с отдельными полями записи. Есть два способа доступа к полю записи: либо с помощью конструкции имя_записи.имя_поля, либо с использованием оператора присоединения with, например:
g1.price := 200;
with g1 do begin
price := 200; number := 10
end;Пример. Сведения о товарах на складе хранятся в текстовом файле. Для каждого товара отводится одна строка, в первых 20 позициях которой записано наименование товара, а затем через произвольное количество пробелов его цена и количество единиц. Программа по запросу выдает сведения о товаре или сообщение о том, что товар не найден ( пример 3.5).
program store;
const Max_n = 100;
type str20 = string [20];
goods = record
name : str20;
price : real;
number : integer;
end;
var stock : array[1 .. Max_n] of goods;
i, j, len : integer;
name : str20;
found : boolean;
f : text;
begin
assign(f, 'stock.txt'); reset(f);
i := 1;
while not Eof(f) do begin
with stock[i] do readln(f, name, price, number);
inc(i);
if i > Max_n then begin { 1 }
writeln('Переполнение массива'); exit end;
end;
while true do begin { 2 }
writeln('Введите наименование'); Readln(name);
len := length(name);
if len = 0 then break; { 3 }
for j := len + 1 to 20 do name := name + ' '; { 4 }
found := false;
for j := 1 to i – 1 do begin { 5 }
if name <> stock[j].name then continue;
with stock[j] do writeln (name:22, price:7:2, number:5);
found := true;
break;
end;
if not found then writeln ('Товар не найден'); { 6 }
end;
end.
Листинг
3.5.
Инициализация записей выполняется в разделе констант, при этом для каждого поля задается его имя, после которого через двоеточие указывается значение.
const g : goods = (name : 'boots'; price : 200; number : 10);
Множества
Множественный тип данных в языке Паскаль соответствует математическому представлению о множествах: это ограниченная совокупность различных элементов. Множество создается на основе элементов базового типа — это может быть перечисляемый тип, интервальный или byte. В множестве не может быть более 256 элементов, а их порядковые номера должны лежать в пределах от 0 до 255.
Множество описывается с помощью служебных слов set of.
type имя_типа = set of базовый_тип;
Примеры описания множественных типов:
type Caps = set of 'A' .. 'Z';
Colors = set of (RED, GREEN, BLUE);
Numbers = set of byte;Принадлежность переменных к множественному типу может быть определена прямо в разделе описания переменных, например:
var oct : set of 0 .. 7;
Тип 'множество' задает набор всех возможных подмножеств его элементов, включая пустое. Если базовый тип, на котором строится множество, имеет k элементов, то число подмножеств, входящих в это множество, равно 2k.
Константы множественного типа записываются в виде заключенной в квадратные скобки последовательности элементов или интервалов базового типа, разделенных запятыми, например:
['A', 'D'] [1, 3, 6] [2, 3, 10 .. 13].
Порядок перечисления элементов базового типа в константах не имеет значения. Константа вида [ ] означает пустое подмножество. Переменная типа 'множество' содержит одно конкретное подмножество значений множества. Пусть имеется переменная b интервального типа:
var b : 1 .. 3; { переменная может принимать три различных значения: 1, 2 или 3 }
Переменная m типа 'множество'
var m : set of 1 .. 3;
может принимать восемь различных значений:
[ ] [1] [2] [3] [1, 2] [1, 3] [2, 3] [1, 2, 3]