1)Определите значение переменной y после выполнения следующей программы и поясните, что она вычисляет:
program zapis;
const N = 3;
type TMyPoint = record
x, y: integer;
end;
var p1, p2: TMyPoint;
y: real;
begin
p1.x := 3; p1.y := 6;
p2.x := 7; p2.y := 9;
y := sqrt( sqr(p2.x - p1.x) + sqr(p2.y - p1.y));
end.
2)Ответьте на вопросы:
a)Верно ли, что все поля записи должны быть разных типов?
b)Могут ли названия полей записи совпадать с именами переменных, констант? С названиями полей других записей?
3)Опишите следующий объект в виде массива и в виде записи. Определите, какой тип более естественен для каждого из объектов:
a)обозначение поля шахматной доски (A5, H8,...);
b)комплексное число;
c)точка в 10-мерном пространстве.
4)type complex = record re, im:real end;
point = record x, y: real end;
var z, w: complex;
p: point;
re: real;
Какие значения будут иметь переменные z, w, p, re после выполнения операторов:
with z do begin re :=0; im:=1 end;
w:=z; re:=2;
with z do re:=1;
with z, w do im:= -im;
with p do begin x:=re; y:=2 end;
5)type circle = record radius:real;
centre: record x,y:real end
end;
var C: circle;
Требуется получить круг С радиуса 2.5 с центром в точке(0, 1.8). Запишите операторы для решения этой задачи.
6)Напишите процедуры DP(d,p), преобразующую координаты точки на плоскости из декартовых координат d в полярные p, и PD(p,d), выполняющую обратные преобразования:
Type dekart = record x, y: real end;
polar = record r, fi: real end;
7)Type Phone = 1000000..9999999;
Aguant = record
Name: string[10];
Number: Phone;
end;
Page = array[1..20] of Aguant;
NoteBook = array ['A'..'Z'] of Page;
Считая, что на каждой странице записной книжки указаны фамилии, начинающиеся с одной буквы (индекса этой страницы), описать логическую функцию:
a)FindNumber(Nb,F,NP) – определяющую, есть ли в записной книжке Nb сведения о знакомом F, и если есть, то возвращающую номер его телефона NP;
b)FindName(Nb,F,NP) – определяющую, есть ли в записной книжке Nb сведения о знакомом c номером телефона NP, и если есть, то возвращающую его фамилию F.
8)Const N= 10;
Type RecData = record
Key: LongInt;
Data: String;
end;
Table = array[1..N] of RecData;
Считая, что в таблице все записи имеют разные ключи, описать:
a)процедуру Sort(T), упорядочивающую записи таблицы Т по возрастанию их ключей;
b)логическую функцию Find(T, K, H), определяющую, есть ли в таблице Т (записи которой упорядочены по ключам) запись с ключом К, и если есть, присваивающую ее номер параметру Н.